0
$\begingroup$

Rosanswers logo

I Am struggling to understand where TF and URDF fit it. Also, while consulting the tutorial on costmap_2d I came across the static_transform_publisher which is confusing me as well.

Firstly, I am trying to produce a 2d map of an environment on ROS (indigo). I am planning on using the range_sensor_layer as a costmap_2d plugin to enable the use of Sonar sensors.

I understand that a URDF places all the robot components in perspective, for example my sensors are placed in the front of the robot each 45 degrees apart, and a URDF allows me to "place" these sensors i.e Tell ROS how they are placed.

Now where does TF come into play (I understand it is the transform from my robot base (base_link) and the so called laser scan), Do I need both TF and URDF and how do they link?

Also with reference to the costmap_2d tutorial and the static_transform_publisher, it says that a static transform publisher tells the package the transformation from the /map and the base_link, what would this be? Is it the TF or an addition to the TF?


Originally posted by miguel on ROS Answers with karma: 170 on 2015-06-30

Post score: 6

$\endgroup$

1 Answer 1

0
$\begingroup$

Rosanswers logo

In your use case, it's easy to get the two confused. But consider a multi-DOF arm.

The urdf describes all the things about the arm that don't change: how long the links are, where the joints are in reference to the link, how the joints can move. None of this depends on where the arm is in 3d space.

tf is a library to keep track of where the arm is in 3d space. It gives you the relative position of from one frame to another. If you look up the tf from your base to the end effector, then move the shoulder joint of the arm, then look up the tf again, it will now reflect the new relative position of your end effector. The urdf hasn't changed, though, because the arm is still the same arm.

Typically there will be a robot_state_publisher node that looks at the urdf of your robot and a message of all its joint states. It then calculates where each link of your robot is and broadcasts that to the rest of the network.

urdf is also used for calculating inverse kinematics.

If the joints between the links of your robot can't move, then the tf is static. Frequently, though, tf is dynamic. urdf is always static.


Originally posted by thebyohazard with karma: 3562 on 2015-06-30

This answer was ACCEPTED on the original site

Post score: 14


Original comments

Comment by miguel on 2015-06-30:
I see, thank you my understanding is slowly coming together, it gets quite overwhelming haha. Thank you for your response!

$\endgroup$

Your Answer

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