Confused about coordinate frames. Can someone please explain?
I've read:
- http://wiki.ros.org/navigation/Tutori...
- http://www.ros.org/reps/rep-0105.html
- http://ros.org/wiki/tf
- http://wiki.ros.org/tf/Design
However I'm still quite confused about the different coordinate frames map, odom, and base_link. Below I'll explain what my current understanding of these frames is, along with some questions.
map
- I think this one makes the most sense conceptually.
- I consider this the "ground truth" which is the real world.
- REP-0105 calls this a "world fixed frame", which makes sense, because it's tied to the real world.
odom
- REP-0105 calls this a "world fixed frame". What? How is this fixed? Isn't this supposed to represent the movement of a mobile robot?
- This frame is computed from an odemetry source like wheels or an IMU. Makes sense.
base_link
- Why is base_link a separate frame? Shouldn't odom and base_link be the same thing? Doesn't odom represent the robot base and its movement?
I feel like I partially understand frames and tf. For example if you have sonar sensors mounted on a robot, you may want to know what the sensor value is from the base_link frame instead of the sonar sensor frame. I get that.
But the odom and base_link frames confuse me. Can someone please explain what the difference is?