ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

[kesuke, I have only recently started understanding how to manipulate transforms. I enjoy working with them now but I do not consider myself an expert. I recently modified the driver for my INS (inertial navigation system) to output a transform for its pose. This was amazingly helpful and was the key to all of the progress I have made recently. I think I understand what you're asking from this perspective but please understand I'm still a novice in this area.]

The TF between /base_link and /map is the position and orientation of your robot with respect to the map. It is not static. It's likely that you'll get your position from wheel odometry or GNSS, and your orientation from an IMU or visual system.

I notice you have an odom frame so you might almost be done. I get my odometry from GNSS so my /odom is the pose of my antenna (fused with IMU data). I then make a static transform from the antenna to base_link (a spot on the ground in the middle of my tractor).

I suspect that you do not need to specify a TF between base_link and map. Instead, create a static transform between /odom (which is dynamic and likely defined with respect to /map or /world) and your base_link. For example, the origin of /odom might be the midpoint of an axle, and /base_link might be the center of mass of your robot.

Once you have the transform between /odom and /base_link, ROS will compute the transform between /map and /base_link.