Servers by jDrones

Ideas for Co-processor for Ardurover Autonomous Mower

I have retained the services of two rising senior computer science students as an unpaid internship this summer. I have planned for a long time to add a co-processor to my automated lawn mower to function as a supervisor but other priorities have prevented any progress. I plan for these students to develop code for such a device.

Some of the functions I would like to implement are:

  1. If Ardurover is in auto mode, monitor GPS status. If status drops below 6 (RTK Fix), put machine in hold and perhaps notify operator in some way.
    1A. More complex alternative: If Ardurover is in auto mode, monitor GPS status. If status drops below 6 (RTK Fix), put machine in hold until RTK Fix returns and is stable for some number of seconds. Tricky part: must not switch back to auto if mode was changed by operator. Needs a way for operator to easily disable the feature at any time.
  2. Monitor GPS position directly (via a “y” cable from the GPS). If location is outside a predetermined geofence, shut down mower.
  3. Store missions and download to Ardurover upon command from the user. This feature may involve a web interface for user to select from a list of missions or perhaps a local user interface on the mower.
  4. Implement the ability for the coprocessor to drive the mower via Ardurover when in manual. This feature is the first step toward a later advanced application.

I am interested in ideas from the community. I have my thoughts on the items above, but would be interested in any thoughts. Decisions I need to make:

First, has all this been done already? Or is there at least a framework to use?

What board to use for a coprocessor?

Should I use Robot Operating System?

Any comments/suggestions appreciated!

1 Like

Im not have experience in rover…yet, but in copter you can configure what to do when , for example lost gps, or compass issues, to land, I dont know what rover do when lost gps but logic is to simply stop, if not, we can open a request in github, my next proyect is going to be a rover so follow your nice work with your mower, thanks for share.

1 Like

Thanks. I have a lot to learn but am getting good use of the mower. I will look more closely at what is built into Ardurover in the way of an action when GPS status drops off.

The companion computer can override the predefined firmware features.

I am currently working on the following for my 2 acre backyard but no mowing capabilities. The reason, mowing is messy, complicated and requires maintenance and there are solutions already out there in the market.

Assembling it. It will do the following all in one solution.

  1. Weed detection.
  2. Herbicide spray
  3. Fertilizer
  4. Aerating the lawn bed.
  5. Plant grass seeds
  6. Can draw lines for Tennis court, football court etc.
  7. Self cleaning and self loading of herbicide and pesticides.
  8. Self charging and docking.
  9. Watch what your rover is doing remotely.

Safety features:

  1. Can recognize animals and humans and will say hi to you.
  2. If its rains it goes back and waits.

The trickiest part is weed detection so its not rock solid yet. This will be work in progress.

It can carry 200 lbs.

The next AI is auto detection of anyones landscape layout to develop waypoints on its on and avoiding planted tree/bushes etc. Basically a self learning robot. You draw the boundary rest it figures it out on its own like iRobot vacuum I have. It works flawlessly.

Thanks. You are way ahead of me on making the rover more intelligent and those are very cool features. What are you using for a co-processor? And are you programming from scratch?

As a starter I am using Rasberry Pi. My technical strength is mechanical and electronics Engineering. For software I am going to force couple of my software engineer Nieces to work on it rather play video games :slight_smile:

Interestingly, on eBay you can buy iRobot mother boards for 30 dollars. Maybe buy one to learn the electronics behind it and see what type of processor power has been used and then reverse engineer to find an equivalent companion computer for the final product.

We can work together if you like.

My main focus right now is to first get over with mechanical and electronic design Such as all the above features and control it manually. Should be easy. Then comes sensors and inputs and the Required AI.

1 Like


You can do pretty much all of it with a raspberry, and a bit of python using pymavlink or dronekit. Dronekit is a bit behind and not supported, i think it is better if you go with pymavlink, it is a bit harder at the beginning but better in the long term.
All you need is parsing the nmea for the status param and instruct the rover based on the status you receive.



1 Like

Thank you for this input!

Servers by jDrones