I was a bit unsure where to put this, but didn’t want to put it under exhibition since it is not even started!
My aim is to create an autonomous lawn mowing robot. Before I even think about automatic charging and scheduling, I’ve got to think about the lawn mowing algorithm.
I want my robot to mow the lawn effectively and efficiently every time. No random roomba crap.
In order to mow the lawn methodically, I would say that the lawn must be broken down into a grid of some sort so that the Robot knows where things are.
If it uses the parallax GPS receiver (which has an accuracy of +/- 5m) then it could know its approximate location on a map, and perhaps head towards the nearest object to confirm the location?
The bot would use sonar to detect objects.
I’ve bought an electric (battery) mower for the project. I haven’t given it a great deal of thought yet, but I’m thinking perhaps the GPS is a bad idea - the robot should start in the same position each time, get its bearing by running into the nearest object with a corner, and then mark off areas as “mowed” after it has been past them. Then the question becomes - how does it know how far it has moved.
I think I need some help on this one
wheel encoders are the way to tell distance but they have problems with slippage if the mower hits an object and the wheels are still driven. You will probably end up with several forms of location like beacon points, gps and dead reconing. You could use compass, gyro and accelerometers to get better readings on turns so you can turn 180 deg to cut the next swath. Take a look at this site, it has always impressed me espesially this video
Take a look at this for some ideas.
fornzix, but that one is RC not autonomous which I think is what the OP is looking to create.
Hrm yes - the compass will be very useful for the 180 turns. The accelerometer could be used for detecting when the robot has been stopped by an object.
But I wonder how the robot can determine where the grass stops and the garden bed begins. I’d rather not have to run a wire around the perimeter of the grass area.
I wonder if I need something which can look at what is in front of it, although that is only going to work effectively during the day, and I don’t know it could tell the difference between grass and, dirt or bark etc.
But that kind of thing is thinking of a non-mapping robot. A mapping robot would already know where that is. Perhaps the “mapping” part is not fully automatic - ideally I’d like this robot to be able to “learn” a yard in a short time and record that data so that it can use it when it is mowing.
So wheel encoders are things that I can put on any wheels? Or are they built into electric motors? I can see that would be useful - infact, the compass + wheel encoder + sonar might be all that it needs to keep track of its position on the map.
Just thinking out loud here…
Hrm, the next problem would be data storage. Maybe mapping = bad idea. I don’t like the idea of a “stupid” robot roaming around mowing places twice though. Perhaps I can connect it to a PC (or more likely, a motherboard with a flash memory card) and have a program do the hard word while arduino just gathers data from the sensors… then I wonder - why wouldn’t I connect the sensors directly into the PC’s parallel port in the first place.
You see how these things can mushroom on you? Yes encoders can be added to almost anything. They can be as simple as a peg that trips a switch to electrical or optical code readers that can sense movement in single degrees. wiki is a great place to get overviews of almost anything just don’t rely on it to be totally accurate.
If you use a BT arduino, then you can do all your AI on the PC side ;D, then again, I don’t know how far the PC would go away from the lawn mower :-?
A couple of things to think about:
Do you want something that is spinning a blade around, just roaming the yard unattended??? Seems that this might be a safety hazard / liability.
What about setting boundaries in the yard with lasers and light sensors??? I made a project that tripped a timer using a laser pointer and an analog light sensor. When a tire broke the beam, it started the timer… I placed the light sensor inside a small length of PVC pipe so that it was always dark, even in the daylight and the laser would shine into the PVC from some distance away and a beam break was detected. You could use a beam break to keep the mower within the boundary of the yard.