Posted by
matlabbe on
URL: http://official-rtab-map-forum.206.s1.nabble.com/Localization-accuracy-and-some-questions-tp793p797.html
Hi Guido,
1) Visual odometry is not used if you connected directly wheel odometry to rtabmap node. In this case, "Odometry Lost" will never happen (if your wheel odometry always send non-null values), but slipping wheels can happen without "noticing" it! If you want to fuse wheel odometry with visual odometry, you should do that with an external node outputting the odometry fused. See
robot_pose_ekf for an example of such node (note that if you use this node, you will need to convert "geometry_msgs/PoseWithCovarianceStamped" output to "nav_msgs/Odometry").
2) On graph optimizations, only /map -> /odom changes, not /odom -> /base_link. If you want the corrected pose, you have to transform /base_link in /map frame. "RGBD/OptimizeFromGraphEnd" changes this behavior: If true, /map -> /odom will be always identity (no correction) as it is the whole map that is corrected from the latest odometry pose. The effect is that the map will "drift" over time, but it will be always valid relativity to the latest odometry pose. Particularly useful when we have multiple sessions to avoid jumping between session origins on localization.
3) Do you mean "mapData" vs "cloud_map"? "proj_map" is the 2D projection of the "cloud_map" on the ground to create an occupancy grid map. They ("proj_map", "grid_map" and "cloud_map") should be aligned together. "mapData" (used by MapCloud Plugin) is a lightweight topic sending only the latest node data with the graph. The MapCloud plugin incrementally builds the map on the client side. "cloud_map" is pretty heavyweight for network usage as the whole 3D point cloud of the map is published. "cloud_map" may be used locally on the robot for 3D navigation.
4) "reset" deletes the whole database (not odometry). "reset_odom" or "reset_odom_to_pose" reset odometry only. If odometry is reset to Identity (by default), rtabmap will detect it and automatically create a new map in its database.
5) I've found that in some cases, setting "RGBD/OptimizeVarianceIgnored=true" results in better maps. If you have the referenced
change (version 0.10.10), the graph should be optimized only once. Then depending to which node the robot is localizing, the map may oscillate a little even if the robot is stationary.
6) If you send the goal directly to move_base, the goal will not change on optimization. If you send the goal to rtabmap (topic /rtabmap/goal, see
documentation), rtabmap will update the goal if there are optimizations (e.g., the goal will "follow" the map).
7) The accuracy will depend on the capability of the robot to localize. While you are using only an Asus Xtion, the robot may only relocalize if it is "seeing" the same images of the nodes created in the map (camera in the same direction), otherwise it would be pure odometry. While mapping, you can move in many directions to increase the number of nodes in the map with different orientations.
Have great experiments!
cheers