Hi,

I am working on amcl recently, I have some questions about it. The tf tree is like the picture below.

1. I found in other questions that amcl receives information from tf between odom and base_link frames, then broadcast tf between map and odom frames after correcting to implement localization. I am not sure if I understand correctly.
2. Suppose the coordinate of odom under map frame is (x1, y1), base_link under odom is (x2, y2). So if I understand correctly, the coordinate of base_link under map frame is (x, y), i.e. x=x1+x2, y=y1+y2. Is it right?
3. What role does base_footprint frame play?

Thanks.

edit retag close merge delete

Sort by » oldest newest most voted

First of all, it seems your picture about tf tree doesnt have amcl, so I'm not sure if the picture is related to the questions.

1. You are right. AMCL keeps transform between map and odom. Some node will keep transform between odom and base_link. This node could use difference ways to calculate the transform: motor encoder, laser odometry, imu, fusion of different sensors, etc.
2. Not always true. The reason is it depends on the rotational transform between odom and map. In your example, there is no information about the rotation, so we cant conclude easily. If the odom and map frame have same orientation (meaning no rotational transform between them), then you can conclude x=x1+x2, y=y1+y2.
3. base_link frame represents the robot body. It varies from different type of robots.
more

Hi MINGLIBRIAN,

1. Yes, your understanding is correct.
3. The base_footprint is the projection of the base_link onto the ground plane and is co-planar with map and odom frames. The role of this frame is to bring the base_link to the same plane as map and odom when base_link is not co-planar with map and odom. If base_footprint frame does not exist and base_link is not co-planar with map and odom, when you visualize your world with rviz it seems that your robot is "sinking" in the ground.
more