BETA MowgliNext is under active development — not yet ready for production use. Follow progress on GitHub
🪨

MowgliNext

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.

How It Works

📡

See

LiDAR scans the surroundings 10x/second. Required for obstacle avoidance and optional Kinematic-ICP drift correction. RTK-GPS pinpoints position to centimeter accuracy.

🧠

Think

A behavior tree decides what to do: mow, dock, avoid obstacles, wait for rain to stop. Nav2 plans optimal paths. No random bouncing.

🔄

Mow

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.

What Makes MowgliNext Different

🗺️

RTK Localization, Two Backends

No SLAM needed. By default robot_localization's dual EKF fuses RTK-GPS + IMU + wheel odometry under REP-105. For RTK-Float windows or GPS-denied corners, switch on the opt-in GTSAM iSAM2 factor-graph localizer (fusion_graph) — same inputs, plus LiDAR scan-matching and loop-closure factors. Optional Kinematic-ICP gives an extra LiDAR drift-correction layer to the local EKF in either mode.

📡

Dual-EKF Sensor Fusion

Standard robot_localization stack: local EKF for continuous odometry, global EKF for GPS-anchored map pose. Battle-tested, under two_d_mode, with a tight non-holonomic constraint on the wheel input.

🧠

Behavior Trees

Reactive, composable control logic using BehaviorTree.CPP v4. Emergency guards, docking, coverage — all orchestrated by a single tree.

🚧

Obstacle Avoidance

Real-time collision monitor with polygon stop/slow zones. The robot navigates around obstacles, not just stops.

🐳

Docker Deploy

One-command deployment with Docker Compose. Cyclone DDS for reliable inter-container communication on ARM boards.

🌐

Web GUI & Diagnostics

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.

🗺️

Multi-Area Mowing

Record multiple mowing areas from your phone. The robot mows them all sequentially, optimizing paths across zones. Save unlimited area layouts.

📊

Statistics & History

Automatic session recording with aggregate stats: area covered, time spent, blade hours, battery cycles. Review mowing history anytime.

🔌

Your Existing Hardware

Works with your stock YardForce board — no need to replace electronics. Add sensors and capabilities on top of what you have.

🔓

Fully Open Source

GPLv3 licensed. ROS2 stack, firmware, GUI, Docker configs — everything in one monorepo. Fork it, modify it, contribute back.

Dashboard

State-adaptive hero card, live sparkline telemetry, and contextual actions — from any device.

Dashboard — mowing
Schedule Statistics

System Architecture

Web GUI (:4006) Foxglove (:8765) │ │ ▼ ▼ ┌──────────────────────────────────────────────────────┐ │ ROS2 Kilted Stack │ │ │ │ ┌─────────────┐ ┌──────────┐ ┌─────────────────┐ │ │ │ Nav2 │ │Kinematic │ │ Behavior Tree │ │ │ │ navigate │ │ ICP │ │ main_tree.xml │ │ │ │ dock/undock │ │ (LiDAR) │ │ 10 Hz tick │ │ │ │ coverage │ │ │ │ │ │ │ └─────────────┘ └──────────┘ └─────────────────┘ │ │ ┌─────────────┐ ┌──────────┐ ┌─────────────────┐ │ │ │ Coverage │ │robot_loc│ │ Hardware │ │ │ │ Planner │ │ Dual EKF │ │ Bridge │ │ │ │ (cell-based)│ │GPS+IMU+Odometry│ │ COBS serial │ │ │ └─────────────┘ └──────────┘ └────────┬────────┘ │ └───────────────────────────────────────────┼──────────┘ │ │ │ ┌─────┴─────┐ ┌─────┴─────┐ ┌──────┴──────┐ │ GPS │ │ LiDAR │ │ STM32 │ │ u-blox │ │ LD19 │ │ Firmware │ │ ZED-F9P │ │ /scan │ │ Motors/IMU │ │ RTK+NTRIP │ │ │ │ Blade safety│ └───────────┘ └───────────┘ └─────────────┘

Get Started

Pick your hardware, copy the command, paste it on your mower's board. Done.

Hardware Backend

`mowgli` stays the stable default. `mavros` is an advanced Pixhawk path and disables the direct GNSS/GPS container selection below.

Universal GNSS

Universal GNSS is the only supported direct GNSS stack. Pick the receiver family and serial connection here; the installer will still ask for the exact device path and detect the receiver baud.

LiDAR Sensor

Required for obstacle avoidance and optional Kinematic-ICP drift correction

TF-Luna Rangefinders Unavailable

Temporarily disabled on this branch. The installer keeps TF-Luna support off until the runtime services are production-ready again.

Release Channel

`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.

Your install command

SSH into your Raspberry Pi and paste this command:

The installer will still ask for mower-specific settings (GPS datum, NTRIP, dock position) interactively.

1

Configure & Copy

Pick your sensors above. The composer generates a one-line install command tailored to your hardware.

2

Run on Your Board

SSH into your mower's Raspberry Pi and paste the command. It installs Docker, drivers, and the full ROS2 stack.

3

Open the GUI

Once running, open the web interface to define mowing areas, monitor the robot, and fine-tune settings.

http://<mower-ip>:4006

Standing on the Shoulders of OpenMower

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.

Thank You

🔧

cloudn1ne

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.

🌙

nekraus

For the countless late nights spent together getting things to actually work. Debugging hardware at 2am is better with a friend.

🌍

OpenMower

For proving that robot mowers can be truly intelligent. You showed us what's possible and inspired an entire community of builders.

🇫🇷

Mowgli French Community

For all your efforts — testing, feedback, bug reports, encouragement. You kept us going when things got hard.

💚

Every Mowgli User

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.

Community Powered

MowgliNext is built by the community. Join us — report bugs, suggest features, or contribute code. Every contribution makes autonomous mowing better for everyone.