Rosanswers logo

I‘m using slam_gmapping to create a map.I can successfully created a map,but I don't know the relationship between odom coordinate and map coordinate.

In my opinion,both map and odom coordinate frame is fixed,but when I move my robot,the position of odom coordinate frame changed.!

I want to know why odom frame is changed and how to compute odom's value? Can anyone help me?

Originally posted by Damo on ROS Answers with karma: 7 on 2016-04-29

Post score: 0


1 Answer 1


Rosanswers logo

In an ideal world, odom and map will both be fixed and, when doing SLAM, at the same place. However, the world is not ideal. [citation needed]

When running SLAM (or any localization algorithm, for that matter), you account for errors in the odometry using the respective algorithm. In ROS, the typical way to do this is to adjust the map->odom transform. This allows you to publish the transform from odom->base_link from your robot and other nodes to access it.

So the transform odom->base_link is what the robot thinks it has traveled based on the (noisy and inaccurate) odometry, the transform map->odom is the correction of the noisy odometry provided by the localization algorithm, resulting in the robot pose in the world displayed by the map->odom->base_link transform.

Originally posted by mgruhler with karma: 12390 on 2016-04-29

This answer was ACCEPTED on the original site

Post score: 3

Original comments

Comment by Damo on 2016-04-29:
Thanks for your answer! And,do you know the theory of map-->odom transform?

Comment by mgruhler on 2016-04-29:
What do you mean by "theory of map->odom transform"? This is the classical robot localization/SLAM problem... Note, though, that localization/SLAM actually estimates map->base_link and then you "subtract" odom->base_link to get map->odom as tf requires a tree structure...


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.