Robot navigation, maps and localization


Homepage | Research | Students | Publications | Applications


More than an active research area for me, I've just restricted myself to implement other's well known techniques inside my JDE robot software environment, both for local and global navigation. In addition, localization is a typical issue in robotics as long as many robot behaviors may depend on the its position in the environment. I've explored several approaches to let the robot autonomously find its pose: based on vision, based on laser, based on wireless signal strength...




Visual localization with particle filter on a real robot


We have coded a particle filter which takes monocular images and encoders readings as input. Our algorithm uses particles for tentative positions and updates the particle weights following an observation model that searches for relevant colors in the image: the colors of doors (brown), of wastepaper basket (blue) and of fire extinguisher (red). The movement of the robot is not taken into account from any motor command, but from the encoder readings, which allows the use of this localization algorithm together with any motion controller of the robot. It has been tested on a real Pioneer robot. Take a look at the following image with the 2D map of the robot world (with rooms, corridors, doors, paperbaskets...). The particles concentrate on the positions compatible with the current monocular image. In this video you can see our algorithm working.


Laser localization with particle filter on a real robot


We have also coded a particle filter which takes laser readings and encoders data as input. It uses particles for tentative positions and updates the particle weights using the distance between the theoretical laser reading if the robot were at the particle location and the real laser reading from the sensor. The movement of the robot is not taken into account from any motor command, but from the encoder readings, which allows the use of this localization algorithm together with any motion controller of the robot. It has been tested on a real Pioneer robot. Take a look at the following image: blue profile is the current laser reading and the red profile is a theoretical one from one particle. Particles concentrate around most compatible locations. In this video you can see our code in action.


Global navigation: Gradient Path Planning

We have coded the Gradient Path Planning from Kurt Konolige and combined it with the Virtual Field Force VFF from Borenstein. They have been assembled as JDE-schemas inside our robot software architecture JDE. Altogether they provide the global and local navigation capability, capable of avoiding dynamic an unexpected obstacles while approaching to a remote target. Currently this program only works on simulator (both SRIsim and Stage), as long as we haven't solved the localization problem in our real Pioneer robot yet. Take a look at this video to see a global navigation example, and at this one to see it combined with local navigation to avoid an unexpected obstacle.
GPP

Global navigation: Visibility Graph

We have also coded several ways to build a visibility graph for a given environment. Over such graph two classical algorithms (A* and Dijkstra) have been used to plan the best route connecting the current robot position and the target destination. Take a look at this video.


Simulated Aibo visual localization


We have coded a particle filter which takes images as input, uses particles for tentative positions and updates the particle weights using a MonteCarlo method. It has been tested for a simulated RoboCup scenario with eight color beacons are placed in the border the rectangular playground (4 at the corners, 2 goals and 2 in the middle of the side lines). The evolution of the particles for a typical run is displayed in the following figure.
     

 


Wireless localization


Second, we have explored the use of Wifi energy as a position sensor. Inside an indoor scenario, such our university floor, there are some wireless communication access points. The wifi card of the PC onboard the robot measures the received energy from such access points. We have developed a Markovian localization algorithm using such data as the main source of localization information.



Local navigation: dynamic window


Regarding local navigation techniques, we have coded the Dynamic Window Approach. Speed estimation in real Pioneer was really a difficult task, so we made the experiments over the SRIsim simulator. Take a look at this video and check the speed window on the botton right.

Dynamic sonar maps

The perceptual system of the robot is a set of processes working in the background that keeps a local environment representation updated as the it walks through the world. This representation merges data coming from different sensors and obtained from different positions, and involves a kind of memory that extends the instantaneous character of sensor data. The target is to build and update a comprehensive information platform representing the robot surroundings to make good motion decisions.

Right now the environment representation is a dynamic map of the space that surrounds the robot, built on real time from sonar and odometry encoders data. The perceptual processes collect sonar measurements and buffer them in a short term memory, the red points cloud in the figure. The contents of this memory around the robot are discretized in a grid image (yellow area) and on-line clustered using a fast statistical approach, the EM algorithm, obtaining the blue fuzzy occupancy segments.

These segments and the grid fuse sensor data coming from different sonar sensors and obtained from different places. Both are suitable for a local planner which could take advantage of the information contained in them. Also they both could be used to better self-localize the robot, specially the segments. The last sonar image is also available to implement quick reactions avoiding obstacles, if needed.

sonar point grouping
More details: