Building A Homebrew Robotic Lawnmower?
mmonkey writes "With the seemingly small amount of summer we get here in the UK, the last thing I want to be doing on a sunny day is mow the lawn. So I started thinking "surely a light-ish lawnmower could 'gain' a couple of motors, and suddenly be computer-controlled?". Then I started thinking about stuff like obstacle avoidance, optimum path planning, guidance system, how to get pretty-looking stripes, and I realised that it's actually a potentially complex (read: fun) thing to do. So, have any Slashdotters done this before? Did you modify an existing lawnmower or build a whole new one from scratch? What motors work best? For that matter, what type of mower works best? I know you can already get these, but that detracts from both my geek-drive and my wallet, both of which I'd prefer to keep as full as possible."
A friend's neighbour decided to build a ride on lawnmover. Problems arose when decided to take the mower for a test drive. The Blade guard was off and halfway through the test the seat collasped and he had to put his foot down. Needless to say he gets around really well on his new leg.
Suppose you made a grill for the bottom of the mower deck similar to that which covers the blades of an electric razor.
I suspect that if this worked, lawnmower manufacturers would have already done it for liability reasons. One thing about a grill is that it would probably clog for any non-trivial amount of wet grass.
-- "Makes Little Debbie look like a pile of puke!" - Moe Szyslak
I think using "Big AI" like that would be the wrong approach, really. It is very difficult to get right and brittle to unexpected change.
:)
Since you are talking about your own lawn only (I assume), you actually have pretty good control over the environment. I would take a page from Rodney Brooks and from toy manufacturers:
First, as other posters have suggested, go for a weed-whacker or other smaller, less dangerous cutting design. Compensate by planning to have it running for long periods of time, like an hour daily, essentially making it a "touch-up" design, relying on manual mowing if you let the grass get away from you.
Second, basically forget about complicated, error-prone sensor packages. Use the minimal amount of sensorics you can get away with, and tailor them specifically for the task at hand. I would use one single front-and-sides bumper, set at exactly the level you want the grass to be cut.
Third, tune the environment. If you have a fence, that will work fine. For flowerbeds, ponds, cobra pits and other garden features that you don't want it to run into, set evenly spaced (rounded!) wooden pegs at the edges, so the bumper has something to run into. If you think pegs will be ugly, be creative: rocks, small fencing, whatever. It needs to be only as high as the bumper - which we alreadey set at the level of the grass.
For control, start out easy. "If we hit something, back up a few centimeters, turn a random amount and go." This can work surprisingly well if the lawn isn't too big. You can even figure out approximately how long you need to run the robot to get reasonable coverage. An added benefit of this Brownian Walk algorithm is that you really need minimal sensors - the bumper is it. You can experiment with some fancier algorithms as well - initiating a turn after some time whether you hit anything or not, for instance, or turning off altogether if you've been going forward for a very long time without hitting anything.
If you want to add some more sensorics, like shaft encoders for the wheels, you can start to play with dead reckoning and do dynaimc map generation and other funs stuff. Even with lousy precision, you can still figure out an approximate average on how much time you've been using to cut a given area, and compensate for it by going (approximately) there for some extra random walking.
As long as you can keep the unit simple, it will tend to be robust, and perhaps inexpensive enough that you can build two or three and cut the time (sorry) by quite a bit.
One important thing: make sure you have a safe, convenient way to turn the thing off. Big red button on top should do it. Have the red top be translucent and add a couple of blinking LEDs inside for that "heavy industry" look that will make you the envy of your neighbours.
And yes, BTW, I am a robot scientist, so I sort of know what I'm talking about
Trust the Computer. The Computer is your friend.