Ask Your Question

How to make rtabmap use both visual odometer and wheel odometer?

asked 2020-03-30 21:39:18 -0500

willzoe gravatar image

I use RTABmap algorithm on my robot.

I only have a ZED stereo camera, and the robot can publish odometer information(nav_msgs/Odometry, sensor_msgs/Imu) using acceleration sensors and wheel encoders.

When I only use the visual odometer for mapping, I found that the odometer will be lost when the robot bumps over the ground cracks or encounters a scene with a lack of texture.

I want to know if it is possible to use both the wheel odometer and the visual odometer in the above situation to reduce the loss of the odometer?

If so, how should I fuse them?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2020-03-30 23:55:43 -0500

hashirzahir gravatar image

Hi this is definitely possible.

RTABMAP Recommended robot configuration: 
A 2D laser which outputs sensor_msgs/LaserScan messages.

Odometry (IMU, wheel encoders, ...) which outputs nav_msgs/Odometry message.

A calibrated Kinect-like sensor compatible with openni_launch, openni2_launch or freenect_launch ros packages.

You can take a look at RTABMAP RGBD + Odometry where they specify how this is done using roslaunch configs.

The crucial part of this config is this:

<node name="rtabmap" pkg="rtabmap_ros" type="rtabmap" output="screen" args="--delete_db_on_start">
      <param name="frame_id" type="string" value="base_link"/>

      <param name="subscribe_depth" type="bool" value="false"/>
      <param name="subscribe_rgbd" type="bool" value="true"/>

      <remap from="odom" to="/base_controller/odom"/>

      <remap from="rgbd_image" to="rgbd_image"/>

where /base_controller/odom is the wheel enconder based external odometry.

However do take note that the merging/fusion of acceleration sensors and wheel encoder odometry has to be done before passing it RTABMAP since RTABMAP is only expecting 1 external odometry source from the robot. You can implement your own simple fusion methods or use packages like robot_localization to help fuse the data using Extended Kalman Filters over the covariances of the input streams.

Hope that clears your doubts.

edit flag offensive delete link more


Although turtlebot2 published the odom topic, I am not sure whether IMU and wheel enconder are merged. I have raised a question here and hope to get your answer.

willzoe gravatar image willzoe  ( 2020-05-02 10:25:44 -0500 )edit

answered 2020-03-31 00:41:55 -0500

Ye be looking for Robot localization to fuse multiple data sources into a smooth post estimation.

edit flag offensive delete link more


matlabbe gravatar image matlabbe  ( 2020-04-03 16:45:27 -0500 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools



Asked: 2020-03-30 21:39:18 -0500

Seen: 384 times

Last updated: Mar 31 '20