×

SparkFun Support and Front Desk will be closed on Thursday 11/14 from 1-2:30pm for a company event. Please plan to pick up your orders before or after this timeframe.

Autonomous Riding Lawnmower - Am I Crazy?

An introduction to creating an autonomous lawnmower.

Favorited Favorite 1

Jesse Brockmann is a senior software engineer with over 20 years of experience. Jesse works for a large corporation designing real-time simulation software, started programming on an Apple IIe at the age of six and has won several AVC event over the years. Jesse is also a SparkFun Ambassador. Make sure your read today's post to find out where he'll be next!


I recently met a gentleman at a STEM event who wanted to make his John Deere riding mower remote-controlled. He is just interested in driving around, not actually mowing. I've been thinking about making an autonomous lawnmower for years and thought this was a great opportunity to get started on the bigger project. Phase one of the full project is a remote-controlled lawnmower, and I'm going to split this phase into the following sub-components: braking, throttle, steering, kill switch and controller.

Look at that sweet, sweet, J. Deer!

The mower has a rotating brake pedal with a place to rest your foot. The amount of force required to stop the mower is honestly not very much - maybe 10 pounds max - but I want to be safe so I've decided to go with a 35-pound actuator. I think I only need an inch of travel but I'm going to go with four or six inches just to make mounting easier. I'm going to use an actuator with a built-in potentiometer for feedback. This allows me to set the start/endpoints and adds safety to know if the actuator is actually moving.

How to steer your John Deer

Next is steering. When stationary, the steering does require a reasonable amount of force and I had the mechanical advantage of the steering wheel when I tested, so the force on the steering shaft will be higher. When moving, the force will be much less. The plan right now is to have the ability to do a full turn in a second. I'm looking at a motor with a 680 ounce/inch rating and 160 rpm rating. I'll include a gear ratio of 1:3 between the motor and steering shaft. I will have a potentiometer for position feedback on the front steering knuckle.

The throttle is pretty easy. In the stock configuration, the throttle stays at whatever position you set it. This is done by friction, and for my purpose, this friction can be removed. Once that is done I can hopefully use a standard RC car servo to move the throttle. I plan to attach a wire to the potentiometer signal in order again to get feedback on the throttle value; this adds an extra level of safety for autonomous operation.

The kill switch will be a relay across the ignition switch wires. The relay has to be powered or ignition will be off. The ignition switch must be on as well. I'm not currently planning on automatic starting for the remote control mower.

JRover with Teensy 4.0

For the controller, I'm going to use one of my first-generation rover boards with a Teensy 3.2 but I can always switch to a Teensy 4.0 if the extra power is needed for the autonomous version. For control, all that is left is the transmitter and receiver. I'm going to use a car-style transmitter at the request of the client.

The tried and true JRover

Then it's time for phase two, which will be in two parts. Phase 2A will use my existing 1/10th scale rover or 1/5th scale rover with u-blox ZED-F9P RTK GPS, with a second u-blox ZED-F9P RTK GPS as a base station and for correction data. I could also use a NTRIP app on my cell phone and Bluetooth for sending correction data. Starting with a smaller rover allows me to test autonomous functionality in a safer way than a riding lawnmower. For sensors, I'll still include an encoder and a BNO-080 or similar IMU like my previous rovers, and I'll also include a LIDAR-Lite v3 and TFMini Plus for safety. For mower testing, this only needs to work at 5-7 mph maximum. However, I hope eventually to run at much higher speeds; this will end up as a separate project named JRover Racer that will be version two of my JRover project I used to compete at the Sparkfun AVC.

The John Deer 110 Model Mower

Phase 2B is the fully autonomous riding mower. This will be project “JRover Mower.” First, I’m going to make the above John Deere 110 Mower remote-controlled, and use the control hardware and software from phase 2A. I will use a higher-end 1 Watt radio to deliver the correction data for more range. The RC controller will be used to control options/failsafe, but a second, longer-range kill option will also be available. I'm planning to have multiple sensors to detect obstacles for all safety issues. I’ll include everything from low-tech bumper sensors to an RPLidar or similar, and maybe an Intel Realsense D435 as well. This will be powered by an Nvidia Jetson Nano or a Raspberry PI v4 4GB. The low level/real-time controller will use the same style baseboard as the remote control mower, or I may move to a version two rover board due to the higher demands. Eventually, I would like to allow full unattended running, but that will be a long time in the future.

So, am I crazy for attempting this? I see thousands of ways this can go wrong, and many of those I hope I never encounter. I’m seeing this project used at larger properties or farms and not general yard use. It should be in a more controlled environment with lots of room and a minimal number of obstacles to contend with.


Comments 20 comments

  • Yep, you are crazy.. but it's my kind of crazy.. My lawn robot is a 16 year old, fueled by pizza!

    I would include a continuous data stream from the controller to the mower, to quickly detect loss of signal.

    I'm not sure I'd use a pi for the control computer.. Too much else going on.. I might use a pi, talking to an arduinol, with the arduino running the real time stuff.

    The pi can easily run the "real timely" control/ display part.

    I'd add an accelerometer output from your BNO as a check for "track unbecomming", possibly in place of the feedback pots.

    You know that a steering input worked, because the BNO told you, not because a pot saw a king pin turn. Pots are a menace, anyway.. If you feel you must, a magnetic hall effect sensor can see the shaft turn.

    A similar one could do front/rear odometry.

    I think real time rinex correction data can be had from CORS stations to avoid the need for your own RTK source.

    Good luck.

    Signed

    "Stumpy".. In memory of a friend that slipped, going down a kill, and slid his foot under a running mower deck!

    • I've got a teensy for the real-time stuff. I already have heart beat code between pi and teensy and it will shut down if data isn't seen. Bno, GPS heading and gyro will all work together. If anything unexpected happens mower will shut down. The issue with remote correction data is you are reliant on constant data. Local correction source has been unstable lately. So having my own local source should prevent that issue. A lot is ideas right now, and I'll post more blog articles as I proceed. ;)

  • I have two push mowers that are radio controlled. I have mowed with them for the past two summers . Not autonomous but fun and fast. Mowing is time is half of what it takes me to manually push the mowers My favorite is powered by two small 12v, 95w Power Wheels motors salvaged from outgrown kids toys. The thing is so light that I can easily pick it up. The other is powered by wheel chair motors, but they are much heavier. Both mowers are zero turn and the cutting blade is still powered by the original gas engine. Autonomous would be cool but even more dangerous. I stand way back when I mow. Good luck!

    • I considered a push mower and even bought a electric wheelchair for that. But I want to mow large fields so riding mower makes more sense.

  • Here's the result of our Oct 2009 weekend stab at such a project: https://youtu.be/wHyQWShZJ14 The tape around the seat is holding a "baby monitor" camera - you've got to see where you're going.

  • How are you going to accurately detect the line between cut and not cut grass? You have to follow that precisely and I don't know of a sensor that will do that. You also have to detect edges of the yard like where the grass and the driveway meet. Again, what sensor will do that?

    • With a very accurate GPS and sensors to map out the area to be mowed I think this will be possible, but much more work to do. :)

  • Seems like a garden tractor is a poor base platform for a project like this. A Zero turn mower in my mind is more appropriate because speed, turning, forward/back direction is a controlled via two linear motion levers. Lastly a zero turn as the name implies pretty much turns in it's own space.

    Also check out electric power steering motors from some makes of cars to easily add power steering to a garden tractor. That might simplify your steering control.

    • I'm hoping to make a generic controller kit that could be used for any mower. I just happen to have a standard riding lawnmower now, but I am thinking my next one will be a zero turn.
      Thanks for the suggestions about electric steering motors. I think steering is nailed down. Need to do testing to be sure.

    • Indeed, the video below shows such a zero-turn mower.

  • This has been an idea I have been kicking around for a long time. When Sparkfun announced the u-blox ZED-F9P RTK GPS I immediately thought this would be the solution. I have a 1961 Craftsman that I have converted to electric and have had this on my list of projects to at least start on. I'm very interested in following your work. Where will your build-logs be posted? Wishing you the best of luck!

    Also, I think it would be important to have a radius of detection around the mower (maybe 10') where movement of the objects in that zone would trigger a stop. Obviously you will be scanning for environmental objects to avoid, but if something has a rate of change faster or slower than the movement of the object relative to the movement of the mower you could determine that it is moving on its own and trigger a stop. Just a thought after I read the comment above signed "stumpy".

    • I'm looking at various lidar and radar solutions. I certainly will try to account for not only static elements but moving as well. I know what I'm in for with this project. Hence the crazy question? ;)

  • I think it's a nifty idea! I've toyed with the concept myself. A few months ago I happened to attend a presentation by Adam Savage. I was hoping to be called upon during the "Q&A" portion at the end, but no such luck. I wanted to ask where they'd sourced those honking big servo motors that they used to steer cars & trucks...

    • Windshield wiper motors are a good source of dirt cheap (free if you are ripping apart the car anyway..) gear motors. I could have swore there was one out there with built in feedback, but I'm having a hard time finding any info on that. Most people couple a potentiometer to the shaft for feedback it seems.

    • For cars they generally used a similar approach as me which is to use a DC gear motor, a chain to couple to steering wheel and a controller. With power steering you don't need a lot of torque. My friend used it in 2014 to win the Sparkfun AVC. https://youtu.be/etbQ6z2Gxm8

  • Man, it seems like a crime to do anything to an older Deere that is in that nice of shape. Can't you go out and buy a $300 Yard Machine or Craftsmen instead?!

    At the very least, please put kill switches on the front and the back, or ideally on every corner of the vehicle. Those nice big red SLAM ones. Don't skimp on connectors either. The added vibration of the mower deck and large engine is no joke.

    You talked about redundancy on throttle position, which is good, but maybe redundant contactors on the ignition line and PTO clutch line too.

    • I'm going out of my way to not modify/damage the mower in any way. The remote control mower I'm working on now is never going to be used to mow and is going to be a show mower from now on. The JD 110 that I plan to use for autonomous will likely never be used for anything beyond testing/to show off. I'm backing off on it being my end of the project mower. I could end up using a different mower, it's just the current plans and could always change.

      • Phew, that is a relief! I had nightmares last night where and endless stream of nice garden tractors were being crushed into little cubes and melted down to make life size statues of Rob Dyrdek. It was weird...

  • Yep, you're crazy, but in a good way. It will be interesting to see what it actually takes in time and money to pull this off.

    Hey why not autonomize that Golf Cart, less chance of losing a limb with that. Or is that your next project?

    Good luck.

Related Posts

Recent Posts

Tags


All Tags