Hello group,
I've got my robot's new navigation software working. Auto mapping. Breadth first efficient exploration. Just set it in a house and It will map it all out.
I want to take wheel slippage, sensor inaccuracies into consideration. What if the robots wheels slip while it is traveling? It's memory representation of where it is at in its map will be incorrect.
I am getting a compass sensor to help keep track of how precise the turns are. I would like to add a software routine to make sure the robot is where it is at in it's memory.
I have done some research and see that some people use "landmark recognition". I see that this will work for me. I move the robot around, and once every couple of minutes have him do a sonar scan. Store the points found in the scan, and see if those points match the memory of his previous exploration. If they do, he is in the right spot. If they don't, he needs to reposition himself in his memory.
I may have trouble with the routine because the map in his memory may be rotated at a different angle than the angle that his scan has found the "landmakrks". So to match the landmark in memory with the scanned points, I would have to figure out how to match "shapes", or a group of points, which are at a different rotation from eachother.
With a compass I will be able to turn the robot to a definite direction, scan, and then check the landmarks in memory against the scan points. This sounds like the best idea to me.
Anybody have any C or BASIC code that will do this? I'll figure it out eventually. I have some really SLOW basic code that I got from a book.
Are there any other techniques to navigate and take slippage/sensor inaccuracies into consideration? I do NOT want GPS, radio/ir beacons.
Where can I get a compass sensor with decent accuracy? I was thinking maybe point a gameboy camera at a real compass mounted on the robot, and do line detection to find out where the compass is pointing. It would cost me about $20, but lots of CPU time compared to how other compass's work.
Rich aiiadict AT hotmail DOT com