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:
- 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.
- Monitor GPS position directly (via a “y” cable from the GPS). If location is outside a predetermined geofence, shut down mower.
- 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.
- 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!
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.
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.
- Weed detection.
- Herbicide spray
- Aerating the lawn bed.
- Plant grass seeds
- Can draw lines for Tennis court, football court etc.
- Self cleaning and self loading of herbicide and pesticides.
- Self charging and docking.
- Watch what your rover is doing remotely.
- Can recognize animals and humans and will say hi to you.
- 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
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.
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.
Thank you for this input!
I also wonder if this has been done before. I an working on a simplistic solution based on MAVLink using a microcontroller based companion computer. I would appreciate any comments, discussion about scenarios, or additional possible considerations. I have a beta release at Restraining Bolt.
If anyone develops features in other projects I would be willing to try and adapt them for Restraining Bolt.
Restraining Bolt is good enough for some real world testing on the rover. I am going to create one or two artificial failure scenarios. Not sure how just yet. https://youtu.be/QM2f_M2HsgQ
Restraining Bolt Beta Release 2 is out. I have included the compiled binary that be loaded directly on a Teensy 4.1. No compilation required!
This release is able to watch GPS signal strength and put the rover in hold mode if the signal degrades past a configurable level. It will also monitor for continuous progress towards the next way point, if progress stops or goes in wrong direction, the rover power will be stopped. It also monitors for MAVLink loss and will kill the power if it cannot communicate with the flight controller.
The Restraining Bolt watchdog computer and software sounds great. I am very interested but I have to build my mower and get it working first. I am probably 6 months away from having a hopefully reliable mower. I have been talking a lot to Kenny and others and I am just starting to roundup the parts. Actually, I am also depending a lot on what you did with your build. To see that you blew out 2 computers due to surge or noise conditions of the power system on the mower was an eye opener. Mine is a zero-turn conversion and I will be running a very protected dc power system for my electronics. When I get up and running I will be happy to help you test your watchdog computer.