Ask Your Question

How to fuse Rtabmap localization data into robot_localization package?

asked 2018-05-29 23:19:28 -0600

raewu gravatar image

Hi there,

I was working on a project using CLEARPATH Jackal UGV as the platform to do the indoor test. So I did not use GPS data. The sensors I used are wheel encoder, onboard IMU, and Kinect v2 as the only external sensor. The mobile robot has the robot_localization package inside and I used Rtabmap to generate the map. When I switched to localization mode, I want to use r_l to generate a better and high rate pose output since the frequency of rtabmap is very low. I have a Vicon motion capture system as the ground truth.

I checked the published topic of rtabmap. Only visual_odometry has the nav_msgs/Odometry topic which meets the r_l supported fusing topic type. And rtabmap has a published topic called rtabmap/mapGraph which contains the geometry_msgs/Pose. But this topic does not contain covariance.

I am wondering if there is a way to fuse rtabmap into robot_localization. Or it is impossible to do that. I read a lot of questions on , and most of them used r_l as the odometry filter fusing wheel encoder and IMU, the output odometry/filtered topic will then be fused into the rtabmap.

Thanks a lot!

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted

answered 2018-05-30 05:05:18 -0600

Tom Moore gravatar image

I'm not really familiar with rtabmap, but if the message is a geometry_msgs/Pose, then it won't work with the state estimation nodes in r_l. Timestamps and covariances are critical to state estimation, so it's impossible for the filter to fuse measurements from those sources without having that data. The only option would be to just assume a timestamp and make up arbitrary covariances, which would not be a great idea.

However, modifying the package to output the right message type (a PoseWithCovarianceStamped) ought to be pretty straightforward. Just make sure the time stamp you use is the time stamp of the sensor data that was used to generate the pose, and if you have to make up covariance values, I'd err on the side of over-inflation. If you have the resources to do proper analysis and generate realistic covariances, then that's obviously better, but that probably won't be a trivial task.

edit flag offensive delete link more


Hi Tom,

Thank you very much for your reply! Sorry I have one more question. In the ROSCON 2015 video, you mentioned we can fuse gmapping as the global pose estimate into r_l. The output topic of gmapping also does not contain PoseWithCovariance. So is it the same way to get the right message type?

raewu gravatar image raewu  ( 2018-05-30 12:15:16 -0600 )edit

Can you point me do the time stamp in the video where I said that? It's been a while. :)

Tom Moore gravatar image Tom Moore  ( 2018-05-31 10:25:42 -0600 )edit

In the video, it is at around 3:30. Also, I just checked the package of rtabmap_ros yesterday, they updated a new version which adds localization_pose output topic (geometry_msgs/PoseWithCovarianceStamped)! It seems I can fuse this output into r_l. But I am still curious how to fuse gmapping.

raewu gravatar image raewu  ( 2018-05-31 11:43:47 -0600 )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

1 follower


Asked: 2018-05-29 23:19:28 -0600

Seen: 623 times

Last updated: May 30 '18