I am pondering on building a practical learning lawnmower robot (could be Arduino based) and I am wondering if this will work.

The robot will be both autonomous and RC (radio controlled). Given some specific lawn, the robot will first learn the path it will have to take via RC. So initially the user has to use RC to control the bot to mow the lawn completely. Necessary data will be recorded by the bot, to be used in later autonomous sessions.

To keep things simple, the RC controller will have only a 2 buttons: rotate (0 radius) and go (forward). The path will then be made up of straight segments (i.e. in a zig-zag manner).

So basically, when learning the path, the bot will record the angle (by mean of an onboard IMU) and length of every straight segment taken. In an autonomous session, the bot will first be placed at the START point, and will just re-play whatever has been recorded. It will ensure recorded angles are maintained, and segment lengths are covered precisely.

I understand that using this strategy, if there are new obstructive objects that emerge on the lawn (lamps, sprinklers...) , re-learning will be required. But I guess that this is still much better than the bot having to improvise everytime it mows the lawn (very likely the same lawn). The advantage of this approach is that it will be much cheaper than fully-autonomous approaches, and might even be more efficient.

My questions:

  • Do you think this strategy will work, or there are deal-breakers I haven't thought of? What else do I need to consider for this to work?
  • What kind of motors (stepper, servo, DC with encorder) will be most suitable for this application?

If you can even recommend a specific motor model, that would be great.

I am obliged to any thoughts that you could share.

Cheers, Dave

  • \$\begingroup\$ How will it know its xy position and orientation at any given time? \$\endgroup\$
    – Chu
    Jun 26, 2015 at 9:27
  • \$\begingroup\$ There are automated Lawn movers already. You can do it. \$\endgroup\$
    – User323693
    Jun 26, 2015 at 9:41
  • \$\begingroup\$ Orientation will be determined by means of an onboard MPU sensor. For my strategy we don't need XY \$\endgroup\$
    – Dave
    Jun 26, 2015 at 9:42
  • \$\begingroup\$ @Umar: the commercial fully automated movers cost thousands of dollars, and still many of them don't do a good job. And I don't think I can make something like the Honda or Bosch mowers. Trying to make some home-made thing \$\endgroup\$
    – Dave
    Jun 26, 2015 at 9:46
  • 1
    \$\begingroup\$ I recommend leaving the blades unpowered until everything else is working ;) Either that, or shoot for battlebot instead of mower. \$\endgroup\$ Jun 26, 2015 at 12:28

2 Answers 2


I don't think it will work in that simple form. There will be variations of the turns and distances despite your best efforts at recording them. Even on a flat, smooth surface you will have problems with repeating a particular course perfectly. Add in bumps, dips, and varying rolling resistance and I really doubt your robot could follow an arbitrary course perfectly every time.

I would suggest trying it out with a simple robot first.
There are many simple (and cheap) wheeled robots available. Just program one to follow a set course (forward so far, turn right so many degrees, forward so far, turn ,etc.,) then run it several times to see how consistently it can repeat it and how far off course it can get. If it does tolerably well on a smooth floor, start adding bumps or other small variations and see what happens.

What you are proposing is based on dead reckoning, and depends on very precise control of distance and turning angles. Any variations will compound with time and distance traveled, until at some point you are completely lost.

If you equip your robot with a navigation system, and record the commands as waypoints, then you might get some where. It knows where it belongs and where it is allowed to mow, and does its best to stay there and follow the given track.
You would, however, have to have some kind of way for the robot to know where it is. A GPS receiver is a start, but it isn't precise enough. Maybe differential GPS, with a separate receiver as a reference and bluetooth/wifi to connect with your robot.
Inertial tracking might help. Costs are going up, however.
A smartphone would have all of the bits needed for tracking and navigating and would be cheap but is has %$&$% all in the way of outputs - you might misuse the earphone or use bluetooth for the phone to send commands to the hardware - and just as little for inputs - again, bluetooth is a possiblity but its bandwidth isn't unlimited.

Building your own controller means interfacing with all the needed sensors and navigation tools, and so might be more expensive.

All in all, you've picked yourself a fun project with lots to learn.
Motor control, battery management, programming, control systems, feed back loops, systems integration, safety considerations, navigation and lions and tigers and bears, oh my!


I recommend ISBN 0-9681830-1-8 Electric Motors and Mechanical Devices for Hobbyists and Engineers. It outlines how you determine the specs you will need for a motor drive. It also gives a thorough run down on making a prony brake. This will allow you to buy or salvage motors to use in your projects where you are choosing what you need rather than taking someone else's recommendation. I would also suggest that you plan to monitor the rpm and motor winding(s) current so that you may detect a sudden change in RPM or a sudden increase in motor drive current. Either condition might be used as an indication that motor drive current be stopped until a human operator has verified that it is safe to allow autonomous operation to continue. When you build a robot to do a job with power tools, there should be some consideration given to how the programming will check for and respond to conditions that would make a human operator stop the tool.

  • \$\begingroup\$ Before selecting motors, there's a more fundamental question to answer: how do you get a mobile robot to move in a prescribed path on a random surface? \$\endgroup\$
    – Chu
    Jun 26, 2015 at 9:49
  • \$\begingroup\$ @chu Since the posters question detailed taking an angle and length of segment for mowing from RC control, it is very feasible that the RC controller might be used as a reference point for the mower to compare with its stored map for corrections. So the RC controller serves to drive or sit near the lawn as a stationary reference. This is similar to the approach used by commercially sold robot mowers using stakes with RFIDs to mark mowing boundaries. A little more trouble in software, to be sure but also cheaper. \$\endgroup\$
    – steverino
    Jun 26, 2015 at 10:14
  • \$\begingroup\$ Recording and resending the commands is no problem. It is only slightly more difficult to record the actual angles and distances rather than just the commands. The problem lies in repeatability. Just replaying won't actually get you very far. Granted that the type of motor and the feedback you can get (servo or encoding disk or waht have you) affects how and what you record, you still have the problem that the method itself won't work. Perfect playback with no monitoring capabilty will get lost in just about no time on anything but a smooth, flat, level surface - which my yard sure ain't. \$\endgroup\$
    – JRE
    Jun 26, 2015 at 11:48
  • \$\begingroup\$ Other than that, though, that's good info about the book and good suggestions in general. Plus 1 for answering the second part of the question. \$\endgroup\$
    – JRE
    Jun 26, 2015 at 11:50
  • \$\begingroup\$ @steverino: your answer to part 2 of the question is very valid and valued. I thank all of you for your input and thoughts. Will give it some further serious research and consideration before any attempt to implement anything. \$\endgroup\$
    – Dave
    Jun 30, 2015 at 2:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.