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

How to fuse Rtabmap localization data into robot_localization package?

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

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 answers.org.org , 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
2

answered 2018-05-30 05:05:18 -0500

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

Comments

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 -0500 )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 -0500 )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 -0500 )edit

Question Tools

1 follower

Stats

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

Seen: 791 times

Last updated: May 30 '18