Meet Precision Mule

posted in: Uncategorized | 6

Once you’ve got your autonomous mower running, you’ll likely take a substantial time-hit defining and adjusting the precise path that you want it to cover as it mows the lawn.

In ArduPilot world, the set of coordinates (or waypoints) that your rover is scheduled to visit is often called a mission (and this mission is stored in a plain text file called a waypoints file). If you inhabit that world, you know that the de facto standard tool for basically all robot configuration and mission building is the superb Mission Planner (Windows) application written and actively maintained for nearly a decade as an open source project by Michael Oborne, an Australian super-dev. (Incidentally, the Australian people seem to be making a disproportionately big contribution to the advancement of open source autonomous robotics.)

Mission Planner

Mission Planner is a Swiss Army knife for ArduPilot-based robots — it provides dozens (if not hundreds) of functions — but for building the kind of centimeter-level side-by-side pass missions that I like to use for mowing, I don’t think it yet has functionality to fill that exact niche.

For a while I’ve wished for some browser-based / Google Maps-based / highly zoomable (i.e. for cm-level adjustments) app that will let you define a region via a standard Google Maps polygon and then magically generate a side-by-side pass (i.e. think parallel lines instead of concentric circles) mission for a mower to completely cover the user-defined area.

Not finding exactly this anywhere else, I’ve taken a rough stab at such an application and here present it to you for your enjoyment and critique:

Precision Mule: Serving up centimeter-level missions for your mowing rover
Precision Mule: Serving up centimeter-level missions for your mowing rover

What is Precision Mule?

Precision Mule is a centimeter-level mowing robot mission path generator. I say “mowing robot” because the motivational use case for the routes it generates is a mowing autonomous rover.

You use Precision Mule like this:

Please note that I have only tested Precision Mule with Google Chrome — if anyone would like to tweak the code to work on your fav browser, feel free to submit a PR on GitHub.


So, for example, here is a mission I built with Precision Mow to mow the west lot:


Here’s a time-lapse of the mowing rover we’ve been using lately running that mission yesterday:


Here’s a mission covering basically the same area, but instead of north-to-south passes, we’re doing east-to-west, i.e.:


Just as a reminder, the heading of the waypoints is determined by the line between the first and second points of your polygon.

Here’s a time-lapse from yesterday running that mission:


Here’s a mission covering the north part of my property:


And here’s a time-lapse from earlier this morning mowing that mission:

Look closely and you’ll see Cousin Jason dropped by to check out the run.

Precision Mule Deep Dive

If you’re still reading at this point, you must have a use for this software. Here’s a video I threw together to (hopefully) make your precision path generating experience as enjoyable as humanly possible:


It’s all Open Source

The backend java server:

The ui web client:


Look forward to hearing your feedback.

Till we meet again,




Follow Roby:

Latest posts from

6 Responses

  1. Awesome work!

  2. Wow I was just thinking about this. I was wondering if there was a automatic way to generate waypoints? Just enter the boundary points and go!
    Nice work

  3. John Dolecki

    It would be a nice feature if you could set your boundaries (polygon) then draw circles or squares inside the boundary map like around trees and stuff were you would not want the mower to go. I don’t know how hard that would be but it would make autonomous mowers a lot easier.

    Nice work so far.

    • Hi John — PrecisionMule now supports obstacles (circle and square) as you mentioned —

      Take care,


Leave a Reply