Hi, I am using the RGBD odometer provide by the rtabmap with my L515 sensor,
The following result is what I got.
The blue arrow is the rgbd-odom.
The orange is the wheel-odom.
The white one is the ekf_localization final output.
I only perform simple rotation at the beginning of mapping. Yet the RGBD-odometer starts to drift. According to the ROS WIKI Rtabmap rgbd-odometry only provide image and imu input. As far as the tf tree I make it publish by ekf_localization node only so that the rgbd-odometry can reference to the correct one, which I specified with frame_id "odom."
It feels the visual odometry is not in the same frame than wheel odometry. Note also that rgbd_odometry is not very accurate with L515 because the RGB camera is poorly synchronized with lidar and has a lot of motion blur. I would use only wheel odometry if I was you. Otherwise, using icp_odometry (see this post) would be already better with Reg/Force3DoF=true.
Thank you for your reply.
The frame_id are the same.
They are all "odom". Also, I did config accordingly to the example for icp_odometry but it did not perform well in my case.
I will try to find other alternative solutions then. In my case, my wheel odometry did not perform well when it comes to rotation. Therefore, I want to use visual odometry to correct it, but icp_odometry performs relatively poorly in a monotonous environment and rotation movement. That's why I want to use rgbd_odometry to suppress the error. However, it seems with L515, this is the best I can get.
Hi, the frame_id should be base_link or base_footprint (the base frame of your robot), not odom frame. Also make sure TF is not published by your odometry nodes (for rtabmap's odometry node, we can set publish_tf parameter to false), as ekf_localization will publish it.
rgbd_odometry works poorly with L515, too much motion blur. Why not fusing wheel odometry with an IMU to get better rotation estimation? Actually the L515 has an IMU in it.
Wait, I am confused.
Shouldn't the topic of wheel_odom with the frame_id "odom", so is the icp_ocom and rgbd_odom?
Because my default wheel_odom is with frame_id odom.
And in my rtabmap I have the following setting
<arg name="frame_id" default="base_footprint"/> <!-- Fixed frame id, you may set "base_link" or "base_footprint" if they are published -->
<arg name="odom_frame_id" default="odom"/> <!-- If set, TF is used to get odometry instead of the topic -->
<node pkg="nodelet" type="nodelet" name="rgbd_sync" args="standalone rtabmap_ros/rgbd_sync" output="$(arg output)">
<param name="frame_id" type="string" value="$(arg frame_id)"/>
<param name="odom_frame_id" type="string" value="odom"/>
Did I misconfig any of them? Please correct me. Thanks
I thought you meant "all frame_id" are "odom". Your args are correct. frame_id of your wheel odometry topic should be indeed odom (and its child_frame_id set to the base link).
rgbd_sync doesn't use frame_id or odom_frame_id parameters, only rtabmap node does. Also, you don't need to set odom_frame_id parameters, unless your wheel odometry doesn't have valid covariance (see doc of odom_frame_id on http://wiki.ros.org/rtabmap_ros). You may have to remap the topic though: