ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Paper related to RTABMAP odometry

asked 2016-08-13 06:15:19 -0600

quentin gravatar image

updated 2021-08-09 10:29:00 -0600

matlabbe gravatar image


Is there any paper related to the rtabmap_odometry node, especially presenting the various algorithms used (SURF features and RANSAC matching function according to this paper

I only found papers about the back end solutions... As well as info in the official forum

Thanks a lot! Quentin


1) In the case of the ICP refining, is it possible to use a "known" 3D point cloud and then to use it as a "skeleton" in which the odometry is computed? ICP should align the local point cloud and this known global point cloud.

2) As I am not an expert in image processing, could you advice me the most efficient solution for odometry tracking? My system should run on a UAV - computing power limited - with airborn 2D laser scanner and kinect.

Thanks for your advice!!

edit retag flag offensive close merge delete


@quentin: please don't post answers, unless you are actually answering your own question. For everything else, use comments or edit your original question. You can use the edit button/link for that (below your question). Thanks.

gvdhoorn gravatar image gvdhoorn  ( 2016-08-23 02:50:52 -0600 )edit

1 Answer

Sort by ยป oldest newest most voted

answered 2016-08-22 09:06:55 -0600

matlabbe gravatar image

updated 2021-08-09 10:29:28 -0600

At that time, RTAB-Map's related papers use wheel odometry instead of visual odometry. Unfortunately, there is no paper about RTAB-Map's visual odometry approaches.

  • The default one is Frame-to-Map with OpenCV's GFTT/BRIEF features, correspondences by descriptors matching, 3D->3D PCL's RANSAC registration with known correspondences.

  • Another combination I use sometime (with car-like motions): Frame-to-KeyFrame with OpenCV's GFTT features, correspondences by optical flow, 2D->3D OpenCV's Perspective-n-Points (cv::solvePnPRansac).

It is also possible to add ICP refining if you have 2D laser scans or 3D point clouds. The choice of features are SIFT, SURF, ORB, BRIEF, FREAK, FAST or BRISK. ORB and FAST are also good fast choices. GFTT is nice because it can detect uniformly distributed features across the image. SIFT/SURF are slow for odometry, but really good for loop closure detection.

Another post related to Frame-to-Frame vs Frame-to-Map approaches used.


  1. No, it is not possible.
  2. You may want to look at Visual Inertial Odometry (VIO) approaches, though you would need hardware synchronized IMU/camera. In RTAB-Map, you cannot use a 2D laser scan to refine 6DoF odometry, only 3DoF (in case of a ground vehicle on flat surface).


edit flag offensive delete link more


Thanks a lot for these answers! I edited my initial post with two additional questions @matlabbe might be able to answer!

quentin gravatar image quentin  ( 2016-08-23 03:09:57 -0600 )edit

Hi @matlabbe, is there any paper now (2 years after the original post), explaining how the rgbd_odometry works?. Looking at the source code of 'OdometryROS.cpp' It seems that the map is generated and then the transformations between frames are estimated and converted to odometry?. Thanks!

h66 gravatar image h66  ( 2018-04-05 11:55:38 -0600 )edit

OdometryROS is a wrapper of Odometry from rtabmap library. The two standard ones are F2M (frame-to-map) and F2F (frame-to-frame). For F2M, the map is a temporary feature map used only for odometry, it is independent from the map of rtabmap.

matlabbe gravatar image matlabbe  ( 2018-04-06 10:59:17 -0600 )edit

Question Tools



Asked: 2016-08-13 06:15:19 -0600

Seen: 1,152 times

Last updated: Aug 09 '21