Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Mapping-with-multiple-stereocameras-localization-with-multiple-monochrome-monocular-cameras-tp6647p6659.html
Hi Artem,
1. multicam can be used for odometry, mapping and localization.
1.1 I was inspired from MCPTAM, but the same idea that we need at least one camera seeing features to work is there. In mapping mode, rtabmap requires stereo/RGBD cameras unlike MCPTAM that can work with monocular cameras that are sharing some of their field of view.
1.2 All cameras are used for odometry, mapping the occupancy grid and for localization. It will recognize a place from a camera seen by another camera. For example, if you have a backward and forward camera, if the robot comes back in opposite direction on the same path, it should be able to localize.
1.3 yes, color is just for visualization
1.4 They are used for localization. Graph optimization is independent of the features.
Note that there are limitations with multicam setup:
a) Vis/EstimationType should be 0 (3D->3D) instead of default 1 (3D->2D or PnP). This may limit the range of cameras and decrease the number of features used for localization and odometry. We are based on
cv::solvePnPRansac() function from OpenCV for 3D->2D estimation, I am still not aware if someone implemented it for multicameras.
b) OdomF2M/BundleAdjustment should be also disabled, local bundle adjustment has not been implemented for multicam setup (it could be implemented, g2o supports it). This will reduce odometry accuracy.
2. As we cannot use Vis/EstimationType=1 in multicam setup, it won't work.
2.1 We can feed external odometry while doing RGB-only localization (well with any sensors used)
2.2 With Vis/EstimationType=1, we only need 3D position of features in the map, and use only 2D features from the image during localization. Actually, the localization is done exactly the same than with a stereo camera or rgb-d camera. The advantage to use a stereo or rgbd camera is when the transform after PnP is refined by local bundle adjustment (Vis/BundleAdjustment=1), in which the 3D features from the current frame can be used to better refine the transform.
cheers,
Mathieu