Rossum -> Papers and RFC's -> Localization and Exploration

NOTE: The results described here are obtained from an older version of the positioning software, for more up to date results see this page.

Here is a brief description of some of the tests that I performed using the positioning algorithm and my robot. These tests were done some time ago, I will update this page when I have the time to make a new one. Bellow is a hand drawn figure of the room that the tests were performed (not to scale and some objects missing).
Each test consists of a total of five steps, one for each of the dots in the figure above. The initial state of the global map is empty. In other words no predefined map of the room is given to the controller, the map is created 'on the fly' while the robot changes positions and sweeps its range sensor (sonar). The green dot at the center of the room (position 1) is the starting point. As I said at this point the map is empty so obviously no localization can be performed (since there is no map to compare with), instead the range sensor is swept and the result is used to update the global map at a pre-defined point. For this test I choose to use the center cell of the map (125,125).

A total of two tests are presented here, in one test (Single Map Update) a sweep is taken at position 1 and the global map is updated. Thereafter all other sweeps will not be used to update the map but only to localize. In the second test (Multiple Map Update) a higher resolution map was used and the map was updated after every localization. Each approach has its pros and cons.

The single map update is pretty accurate (typically ~4cm accuracy), when the robot's orientation is not changed compared to position 1. When the robot is rotated a large error was observed (~15cm). This is due to the fact that only one sweep was used to update the map, hence the robot only has a view of the room from a single point, when the perspective is changed errors are introduced. In addition only a 180deg sweep is used to localize giving only a limited view of the local map.

Some of the problems seen in the single map update approach were solved in the multiple map update test. In this test every sweep was used to update the global map, thus keeping it up to date. Also by increasing the map resolution a considerable increase in accuracy was seen. In same cases sub-centimeter errors were seen! In addition when the robot was rotated, a smaller localization error was seen (~8cm). The disadvantage of this approach is that small positioning errors tend to distort the map, thus producing further errors later on.

There are a number of ways to battle the problems seen in the two tests, see the to-do page for more details. One more thing to keep in mind is that my robot sensors are not perfect (well they could be better), the following may introduce considerable errors in the sensor readings:
The following images are screenshots from the positioning controller GUI. On the left you see the occupancy representation of the grid map, black cells are occupied, white are free and gray are unexplored. In the middle you see the location certainty map (zoomed in). Different colors are used for each certainty value, starting from white then yellow, shades of red and finally black cells are the ones with the maximum certainty. Since usually there will be more than one black cell, the algorithm will select the average location (that could be done more elegantly if an approximate position was available). On the right you see an overlay of the occupancy and location certainty map. On all map views a blue target is used to display the current position (green targets are past locations).

More information on the tests can be found by following the links bellow.

If you have any questions or suggestions about these pages please drop me an email
Copyright Vassilis Varveropoulos
Last updated 20 Apr 2001