Your mower, but smarter. Open-source autonomous navigation built on ROS2 — so your robot mower actually knows where it is, where it's going, and what's in the way.
LiDAR scans the surroundings 10x/second. Required for obstacle avoidance and optional scan-matching + loop-closure factors in the localizer. RTK-GPS pinpoints position to centimeter accuracy.
A behavior tree decides what to do: mow, dock, avoid obstacles, wait for rain to stop. Nav2 plans optimal paths. No random bouncing.
Cell-based strip coverage generates efficient mowing patterns. The robot follows them with sub-centimeter accuracy, tracking progress and replanning around obstacles in real time.
No SLAM needed. A single GTSAM iSAM2 factor-graph localizer (fusion_graph) fuses RTK-GPS + IMU + wheel odometry under REP-105, holding a centimetre-accurate map pose. In RTK-Float windows or GPS-denied corners it folds LiDAR scan-matching and loop-closure factors into the same graph to keep the estimate stable.
One iSAM2 factor graph owns both the odometry and map frames. RTK-GPS, IMU heading, wheel odometry, and optional LiDAR all enter as factors — with a tight non-holonomic constraint on the wheel input for smooth, drift-resistant tracking.
Reactive, composable control logic using BehaviorTree.CPP v4. Emergency guards, docking, coverage — all orchestrated by a single tree.
Real-time collision monitor with polygon stop/slow zones. The robot navigates around obstacles, not just stops.
One-command deployment with Docker Compose. Cyclone DDS for reliable inter-container communication on ARM boards.
State-adaptive dashboard with hero card, live sparkline telemetry, radial gauges, and health checks. Weekly schedule grid, statistics with bar charts, and full map editor. Dark & light themes, responsive mobile layout. React + Go + WebSocket.
Record multiple mowing areas from your phone. The robot mows them all sequentially, optimizing paths across zones. Save unlimited area layouts.
Automatic session recording with aggregate stats: area covered, time spent, blade hours, battery cycles. Review mowing history anytime.
Works with your stock YardForce board — no need to replace electronics. Add sensors and capabilities on top of what you have.
GPLv3 licensed. ROS2 stack, firmware, GUI, Docker configs — everything in one monorepo. Fork it, modify it, contribute back.
State-adaptive hero card, live sparkline telemetry, and contextual actions — from any device.
Pick your hardware, copy the command, paste it on your mower's board. Done.
`mowgli` stays the stable default. `mavros` is an advanced Pixhawk path and disables the direct GNSS/GPS container selection below.
Universal GNSS is the only supported direct GNSS stack. Pick first-boot defaults for the receiver family and serial connection here; the active runtime GNSS config later lives in the GUI/YAML, and the installer will still ask for the exact device path and detect the receiver baud.
Required for obstacle avoidance and optional scan-matching + loop-closure localization
`main` is the stable channel. `dev` tracks the dev branch and pulls `:dev` container images — pick this if you want to iterate alongside upstream development.
SSH into your Raspberry Pi and paste this command:
The installer will still ask for mower-specific settings (GPS datum, NTRIP, dock position) interactively.
Pick your sensors above. The composer generates a one-line install command tailored to your hardware.
SSH into your mower's Raspberry Pi and paste the command. It installs Docker, drivers, and the full ROS2 stack.
Once running, open the web interface to define mowing areas, monitor the robot, and fine-tune settings.
http://<mower-ip>:4006
MowgliNext exists because of OpenMower. They proved that robot mowers can be truly intelligent — not just bouncing randomly or following a buried wire, but actually knowing where they are and planning where to go. That inspiration sparked everything you see here.
We're not trying to replace OpenMower — we're taking a different path. OpenMower replaces the stock electronics with custom boards designed for the job. Mowgli works with your existing hardware, adding capabilities on top. As our ambitions grew, we needed a fresh ROS2 foundation to keep evolving — and by going our own way, we give OpenMower more freedom to iterate too.
Different paths, same goal: smarter mowers for everyone.
Thank you, OpenMower team.
For the original Mowgli reverse engineering work — cracking open the YardForce hardware and showing us what's inside. None of this would exist without that first step.
For the countless late nights spent together getting things to actually work. Debugging hardware at 2am is better with a friend.
For leading the MowgliNext stack — the factor-graph localizer, Nav2 navigation, coverage, behavior trees, and the web GUI. The engine room of the project.
For the Universal GNSS & Unicore integration and relentless field testing — chasing down GPS and coverage bugs on real hardware, in real gardens.
For steady testing, feedback, and bug reports that keep the rough edges honest and push the project forward release after release.
For proving that robot mowers can be truly intelligent. You showed us what's possible and inspired an entire community of builders.
For all your efforts — testing, feedback, bug reports, encouragement. You kept us going when things got hard.
Every person who installed our firmware, filed a bug, asked a question, or just said "it works!" — you give us the courage to keep spending nights on this project.
…and everyone else who has contributed code, issues, and ideas — see all contributors on GitHub.
MowgliNext is built by the community. Join us — report bugs, suggest features, or contribute code. Every contribution makes autonomous mowing better for everyone.