ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
I've been trying to understand this for quite some time already, please correct me if I am wrong.
The whole tf tree is as "old" as the oldest tf update from any frame in the entire tree. For example: odom -> base_link transform updates at frequency of 100hz (encoder + imu), but map -> odom is only updated with frequency of 10hz (amcl). Position of the robot in the map frame has update frequency of 10hz (so amcl is the bottleneck).
Now if the amcl algorithm update takes 1s to compute new position, our tf broadcaster will not publish anything for 1s (since it's computing a new update and amcl run in the same loop as tf broadcaster). Therefor we need to stamp map->odom transform "in the future" (aprox as much as it takes for amcl algorithm to calculate new position update). Otherwise, we would introduce a lag in the system due to this amcl processing time, and map->base_link tf will not be updated.
Am I missing something in my reasoning? Is there any way to make a map->odom tf always true until new measurement comes in?