MowgliNext turns an OpenMower-class robot mower into a fully autonomous, GPS-guided lawn robot. It is a single monorepo covering the whole stack — from STM32 motor firmware to a Nav2 navigation stack to a web GUI you drive from your phone.
| Layer | Tech |
|---|---|
| Localization | GTSAM iSAM2 factor graph (fusion_graph) — RTK-GPS lever-arm + wheel/gyro odometry, optional LiDAR scan-matching & loop-closure. Owns both map→odom and odom→base_footprint. |
| Navigation | ROS2 Kilted + Nav2 — MPPI coverage control, RotationShim, collision monitor, opennav_docking. |
| Behavior | BehaviorTree.CPP v4 — mowing / recording / manual / docking / emergency state machine. |
| Coverage | Fields2Cover v3 — headland rings + serpentine swaths, hole-aware continuous paths, blade-off transits around obstacles. |
| Firmware | STM32F103 — motor PID, IMU, blade safety authority, battery. |
| GUI | Go + React over Foxglove — area mapping, live monitoring, config, calibration. |
- 🚀 Install & compose the stack: mowgli.garden
- 📖 Docs, architecture & configuration: the Wiki
- 🧭 First-boot checklist:
docs/FIRST_BOOT.md - 💻 Source:
mowglinext/mowglinext
Issues and pull requests are welcome — see CONTRIBUTING.md. Have a question or an idea? Start a Discussion.
⚠️ Safety first. This robot has spinning blades. The STM32 firmware is the sole blade-safety authority; ROS2 blade commands are fire-and-forget and the firmware decides whether to execute. Never bypass firmware safety checks.