1
$\begingroup$

I would like to clarify a doubt about the management of odom->base_link transform in ROS.

In REP 105 it is stated that

the pose of a robot in the odom frame is guaranteed to be continuous, meaning that the pose of a mobile platform in the odom frame always evolves in a smooth way, without discrete jumps.

What should happen in the case of a loop closure correction?

Let's consider a simple 1D case. The robot estimate that it is in position 5 (odom->base_link TF correspond to 5), it moves by 1 and then it detect through a loop closure that it is instead in position 10. The new odom->base_link TF should be 6 (with a corrected map->odom TF) or 10?

In other words, should the odom->base link TF be continous in time (by updating frequently), in space, or both?

The same concepts should apply in the same way to the topic containing the odometry message, right?

$\endgroup$

1 Answer 1

1
$\begingroup$

In the case you mention, odom->base_link will be 6 and map->odom will be 4, so overall map->base_link will indeed be 10.

The localization / loop closure node will take in the odom->base_link (comes from some odometry), compute its own map->base_link pose and report all changes in the map->odom TF. This transform might thus be jumping, while odom->base_link should not.

$\endgroup$
1
  • $\begingroup$ Thank you! very clear $\endgroup$ Commented Nov 21 at 9:40

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.