Rosanswers logo


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!!

Originally posted by quentin on ROS Answers with karma: 123 on 2016-08-13

Post score: 1

Original comments

Comment by gvdhoorn on 2016-08-23:
@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.


1 Answer 1


Rosanswers logo

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).


Originally posted by matlabbe with karma: 6409 on 2016-08-22

This answer was ACCEPTED on the original site

Post score: 4

Original comments

Comment by quentin on 2016-08-23:
Thanks a lot for these answers! I edited my initial post with two additional questions @matlabbe might be able to answer!

Comment by h66 on 2018-04-05:
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!

Comment by matlabbe on 2018-04-06:
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.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.