This weekend we have started exploring the ROS world, sensor simulation, mapping and localization. The project has still a long way to go, but its time to start exploring possible solution for mapping & localization in an outdoor environment for the robot. The main difference with an outdoor environment is a non flat “world” and the constant light changes, when working indoors one usually have an “flat world” and a constant light source that does not change too much.
For example when working with RTAB-MAP which uses an appearance based localization small light changes dramatically effect the number of feature points. So in other words, because it’s using the color 2D information of the pixels it’s important the location looks always the same.
Alexander Grau at Grauonline.de helped me get started.
- 3D world, robot and sensor simulation (360 degree LiDAR, depth camera) with gazebo and turtlebot
- 2D mapping with gmapping
- 2D localization with amcl
- 3D mapping with octomap
- 3D localization with humanoid_localization
First I created an 2D map with help of the 360 degree LiDAR mapping the world in 2D and saved the map. Then launched the amcl localization system which uses a particle filter to track the pose of a robot against a known map. The particle filter will not be able to find the real position. Therefore we will perform a ‘global localization’ to distribute the particles all over the map and steer the robot around the world. The particles that don’t match the sensor measurements will be thrown away until finally the particles of the real position survive. The center of all particles is the estimated localized position for the robot.
Mowing on to mapping the world in 3D with depth camera using OctoMap which is an efficient probabilistic 3D mapping framework based on Octrees. Rotating the robot until the 3D map is assembled then saved the map. I started humanoid_localization for localization in the 3D map. At first, the particles will be distributed all over the map. After a short while, the particles that do not match the sensor measurement are gone and the real position is found.
I also tried out 3D mapping with RTAB-Map and OctoMap
Credits to Alexander Grau.