introlab / rtabmap_ros

RTAB-Map's ROS package.
http://wiki.ros.org/rtabmap_ros
BSD 3-Clause "New" or "Revised" License
916 stars 549 forks source link

Using a different frame for mapping #1163

Open astef3 opened 1 month ago

astef3 commented 1 month ago

Hi,

I would like to ask a simple question related to the mapping part of the package. So, in my system I am using Velodyne VLP-16 3D LiDAR for estimation of the lidar odometry based on ICP implementation in RTAB-Map. The odometry estimation is then an input to a sensor fusion algorithm based on EKF. However, the EKF implementation is custom and written by us (it is not performed through robot_localization package). So, once the final pose is estimated by the EKF algorithm, its broadcasted on TF as odom -> base_link_ekf.

So, my question here is: is it possible to keep the part of ICP estimation the same as now (odom -> base_link), but instead of building the map relative to this transformation, to build it relative to the transformation odom -> base_link_ekf. So, to sum up I am interested if I can make RTAB-Map, to used my corrected pose estimation for the mapping part.

I hope I have explained our issue in a understandable way. If, any further clarification is need or additional files/code, I would instantly provide it.

I am using ROS Noetic, on Ubuntu 20.04 OS.

Best regards, Aleksandar

matlabbe commented 3 weeks ago

Hi Aleksandar,

Set publish_tf to false for icp_odometry (you can also remap the output odom topic name), feed the odometry topic published by icp_odometry to your EKF node, and make rtabmap node subscribing to output odometry topic of your node while keeping odom->base_link TF (published by your node). That should do it!

Mathieu