ROS Basics – ROS Transformations

One of the most important packages a ROS robot should implement is TF (Transformations), because it enables the robot to keep track of multiple coordinate systems (frames) and their relations between each other over time. Following the ROS Enhancement Proposal s (REPs) especially REP105 the most global frame should be the world frame. Every other frame derives from it in a tree structure and can be transformed back into world coordinates by using the same units of measurement defined in REP103.

Another important frame tree is the robot itself. Starting with a mobile base_link further attached elements called links like wheels or cameras have their own frame and are connected via relations, also called joints. Those joints can be static or dynamic. A sample configuration can be seen in the following images:

To define a robot, ROS offers a special XML description file using the Unified Robot Description Format (URDF) which is further improved by special markups and an additional interpreter called XML Macros (XACRO). In ROS, all not time-related relations can be defined in a single file and can be published periodically by the robot_state_publisher for example for simulation purposes. In advanced setups, publishing the robots joint states and especially the relation of the base_link is a complex task. Therefore it gets divided into separate processes like navigation, mapping or the hardware controllers.