# Relationsship between map, odom and base_link coordinate frames

Hello ROS community,

in descriptions of the different coordinate frames I read, that they can change with time. For example the odom system can drift and is therefore not suitable for long time/path experiments. I know try to implement that fact into my simulation. The goal is to get the position coordinates that would also be received by the real robot.

Here, the first question arises due to the drifting of the wheels in relation to the ground. If I had a super sticky wheel without any drifting, would the odom system always be the same like the map system? And the other way round, the change from the odom system to the map system would be in a real case exactly the change of coordinates due to drifting movement?

In order to get coordinates in my simulation, I have a second question. If I transfer my algorithm to a real robot, I get my robot pose data again from the integration of the wheel movements (encoder). That would mean, that the only coordinates I have are those in the odom system? Other way round again, do I have to add the drift of the odom system on top of the map coordinates, to get the coordinates, that would be measured in reality?

Is there any chance (without any additional sensors but a Lidar) and without having a map. I have to navigate in an unknown environment and thus can´t use amcl etc.. Is there any other chance to get the absolut position in the map frame?

Best regards and thanks in advance!

Originally posted by Tima1995 on ROS Answers with karma: 17 on 2019-08-03

Post score: 0

Comment by spiritninja on 2019-08-03:
If I had a super sticky wheel without any drifting, would the odom system always be the same like the map system?

An ideal environment would imply that the map and odom system would have had the same relations. But this isn't usually the case as the real world scenario would have many factors other than drifting that would act on the wheel.

the change from the odom system to the map system would be in a real case exactly the change of coordinates due to drifting movement?


Drifting would contribute a major part to the factors which you say are the real cause for the change of co-ordinates.

That would mean, that the only coordinates I have are those in the odom system?


Yes . You can still verify if there are any compensations added on to the navigation stack to compensate drift and other factors, but they aren't usually done as it would be different for each and every robot.

Try asking the last part as a separate question as it might have a better change of being answered.

If I had a super sticky wheel without any drifting, would the odom system always be the same like the map system?

An ideal environment would imply that the map and odom system would have had the same relations. But this isn't usually the case as the real world scenario would have many factors other than drifting that would act on the wheel.

the change from the odom system to the map system would be in a real case exactly the change of coordinates due to drifting movement?

Drifting would contribute a major part to the factors which you say are the real cause for the change of co-ordinates.

That would mean, that the only coordinates I have are those in the odom system?

Yes. You can still verify if there are any compensations added on to the navigation stack to compensate drift and other factors, but they aren't usually done as it would be different for each and every robot.

Try asking the last part as a separate question as it might have a better change of being answered.

Originally posted by spiritninja with karma: 48 on 2019-08-03

This answer was ACCEPTED on the original site

Post score: 1

Question 1 - Yes, perfect odometry with zero slip would yield no difference between ODOM and MAP provided ODOM was initialized to be correct in the MAP when the robot was started. When robot comes on assume the odometry starts at 0,0,0 and 0,0,0,0 but that isn't where the robot really is.

Question 2 - Yes, The expression you're looking for is the MAP->ODOM Transform. It is the correction vectors between MAP and ODOM frames.

Question 3 and 4 - You haven't said what your algorithm is supposed to do so I can't answer these. Is your algo for localizing or navigating? AMCL generates the pose of the robot in the MAP and then subtracts off the ODOM data, then published the MAP -> ODOM correction. But it starts with the pose of robot in the map.

Question 5 - There are two questions I think in last paragraph. You can navigate without a map using Navigation stack. I don't know however what the path planners use for feedback. I guess they would use another localization method like robot_localization or just ODOM, but not sure. If there are features in the environment for your laser scanner to see, Laser_scan_matcher could be used in place of encoders and it would not suffer from unlimited drift. In that case you could set the MAP->ODOM TF as {0} and Navigation stack should work. I've never tried this use case.

Originally posted by billy with karma: 1850 on 2019-08-03

This answer was NOT ACCEPTED on the original site

Post score: 1