introlab / rtabmap_ros

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

How to set Odometry Covariance #231

Open aseyfi opened 6 years ago

aseyfi commented 6 years ago

Hello,

I am using TangoRosStreamer and it is publishing Odometry information using TF. Is there a way to set the odometry co-variance in rtabmap_ros?

Thanks, Ahmad

matlabbe commented 6 years ago

Hi,

with latest version from source, rtabmap node has parameters odom_tf_angular_variance and odom_tf_linear_variance that can be used to define a fixed odometry covariance when odometry from TF is used (i.e., odom_frame_id is set). The covariance will be set as:

a = odom_tf_angular_variance;
n = odom_tf_linear_variance;
covariance = 
[n 0 0 0 0 0; 
 0 n 0 0 0 0; 
 0 0 n 0 0 0; 
 0 0 0 a 0 0; 
 0 0 0 0 a 0; 
 0 0 0 0 0 a];

With RTAB-Map Tango app, it is set to a = n = 0.0001

These new parameters are also now exposed to rtabmap.launch, so based on the RTAB-Map+Tango ROS Streamer tutorial, we could launch rtabmap.launch like this: $ roslaunch rtabmap_ros rtabmap.launch rtabmap_args:="--delete_db_on_start --Mem/ImagePreDecimation 2 --Mem/ImagePostDecimation 2" visual_odometry:=false odom_frame_id:="start_of_service" frame_id:="device" rgb_topic:=/tango/camera/color_1/image_raw depth_topic:=/image camera_info_topic:=/tango/camera/color_1/camera_info compressed:=true depth_image_transport:=raw approx_sync:=false odom_tf_angular_variance:=0.0001 odom_tf_linear_variance:=0.0001

cheers, Mathieu