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

Revision history [back]

click to hide/show revision 1
initial version

Hi,

You should use TF /map -> /base_link (or /camera_link depending of your camera frame id). When reseting odometry, it restarts to pose (0,0). The poses from /rtabmap/odom are in /odom frame, not /map frame. What you want are the coordinates in /map frame (including localization):

$ rosrun tf tf_echo /map /base_link

cheers

Hi,

You should use TF /map -> /base_link (or /camera_link depending of your camera frame id). . When reseting odometry, it restarts to pose (0,0). The poses from /rtabmap/odom are in /odom frame, not /map frame. What you want are the coordinates in /map /map frame (including localization):

$ rosrun tf tf_echo /map /base_link
/camera_link

EDIT

The $ rosrun tf tf_echo /map /camera_link should have worked, but it seems you have a problem with the clock. Your requested time is 1459949359.363947774 (06 Apr 2016 13:29:19 GMT) and the earliest TF frame is 1460911947.649899845 (17 Apr 2016 16:52:27 GMT). Do you use a rosbag? If so, don't forget to set use_sim_time to true and do $ rosbag play --clock my_bag.bag.

The output of $ rosrun tf tf_echo /map /odom is ok, in your case it may be Identity transform (0 everywhere) as no loop closures (or relocalization) were detected yet. For example, if the robot didn't close a loop yet (odometry not yet corrected), /map -> /odom will be Identity.

Note that you can show up /TF in RVIZ to help visualize the transforms (set general option "Fixed Frame" to /map). You can see also the TF tree with:

$ rosrun tf view_frames
$ evince frames.pdf

cheers