In this video, it starts with two full circles to calibrate the compass. This does not have to be done frequently, but for the purpose of completeness, I've included it here. After compass calibration, Bottwo attempts to find a couple distinct landmarks that it can use to presume it's location. Yeah... it pretty much guesses based on shape/angle/orientation of a couple local features.
Localization assumes that you have some prior knowledge of the surroundings. In this case, I have provided the rover with a compass oriented bitmap of my floorplan as a base. Any object detected, but NOT on the floorplan will be added to a second map of transient objects, which is superimposed upon the floorplan.
This next video is Bottwo sitting idle, waiting for a command. On the pan servo, is a pair of MaxSonar EZ0 Ultrasound range finders 180 degrees apart. It is simply doing a Left, Right, Center Sonar scan front and rear. The rover also has front, rear, left and right Sharp Infrared range finders for collision avoidance.
Below, this video shows Bottwo instructed through it's web interface, to go to a location that is obstructed by a wall....
Using Sonar scanning left to right, Bottwo attempts to go directly to the destination. It get's obstructed by a wall, and then backtracks to find an exit. It then repositions itself to complete the task.
You will notice a couple little corrections of path when it is heading down the hallway. I am still (*STILL*) having problems keeping both motors running at the same speed. The PID routine monitors left and right encoders, attempts to correct for left count verso right count, but ultimately get's overridden by Compass bearing if it is too far out.
(I refuse to upload the dozen or so videos where it crashed into office chairs, clipped the door frame, etc... LOL)
http://rossum.sourceforge.net/papers/Localization/PosPosterv4.pdf <----- READ THIS!!!