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."
I'd make sure its plenty safe. I'm not concerned about you, but picture a mis-programmed robotic lawnmower chasing the neighbors dog, or worse, trying to run over a child... :|
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.
Those big trak programmable toys really didn't do all that good a job of making ninety degree turns. They worked best on floors and poorly on everything else - my cousins had one and I got to play with it like once but it didn't do what it was supposed to do. It was still neat, though.
There are other problems with your plan, such as the fact that most lawns are not perfect, empty rectangles. Even if you can accurately track how far you are traveling and how far you have rotated, it's going to be a little more complex than just making a couple of right angle turns. If the problem were that simple, meaning you had a level, flat, even rectangular yard with nothing in it but grass which had already been carefully mowed not more than a day before, you wouldn't even need robotics :P
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
That's an interesting idea, but I doubt you could get the grill fine enough to prevent fingers from entering without.
The underlying problem is the amount of kinetic energy you have in a spinning blade. The less kinetic energy, the safer. A spinning fishline is going to be safer than what amounts to a giant spinning knife.
Of course the reason you need the kinetic energy is so you can cut a lot of grass very quickly. With a conventional lawn mower, you can probably mow about a square meter or more per second. It cuts down on the drudgery time. But since the author is building a robot, drudgery is not an issue. So why not go slow?
I am imagining something that is very, very slow. Something that moves slowly from place to place gently cropping a tiny amount of grass at a time. In other words, an electric sheep (with apologies to Phillip K Dick). You'd calibrate the jaw strength so that it is enough to rip up a mouthful of grass easily, but not so strong it would sever a finger. You could get a nasty robot bite, but it wouldn't require a trip to the neurosurgeon.
I like the sheep idea because it leads off in more interesting directions. I'd think you'd run out of ideas for a robotized conventional mower. With the electric sheep, you can set a number of more interesting goals than having it walk a predetermined path. For starters, you could give your robot sheep a simple vision system so it could perceive the edge of your walk and touch up the edges. What would be interesting is to train it to visually recognize certain objects: it perhaps could recognize common lawn pests like dandelions or plantains and give them an extra close crop. Maybe it could retrieve the paper the paper boy threw onto the lawn and put it on your front porch. Maybe you could teach it to recognize beer cans and throw them in a recycling bin. You could make several of them and have a flock and begin to program them to interact in interesting ways.
Post may contain irony: discontinue use if experiencing mood swings, nausea or elevated blood pressure.
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.