TF Frames

The TF2 transform library is used in ARIAC to describe the transformation between all the relevant coordinates systems in the environment. The transformations describe the positions and orientations of various frames relative to a parent frame.
To visualize the TF tree:
Install the rqt-tf-tree package
sudo apt install ros-iron-rqt-tf-tree
Run the rqt_tf_tree node
ros2 run rqt_tf_tree rqt_tf_tree
This will show the entire tree with all frames that are published. Many of the frames are static, meaning that they do not change over the course of the simulation. Others, such as the robot links and AGVs will update based on the actual positions.
For information on how to get the transformations in your ROS node see the TF2 tutorials.
List of TF Frames
World: The
world
frame is the root frame of the TF tree. It is located at the origin of the competition arena.AGV Trays: When placing kit trays onto AGVs competitors should use the
agv{n}_tray
frame where n is the agv number.world └─── agv1_track | | | └─── agv1_base | | | └─── agv1_tray └─── agv2_track | | | └─── agv2_base | | | └─── agv2_tray └─── agv3_track | | | └─── agv3_base | | | └─── agv3_tray └─── agv4_track | └─── agv4_base | └─── agv4_tray
Robots: The robot state publisher updates the the tf frames for all the robot links
world └─── long_rail_1 (frames for the ceiling robot) | | | └─── ... └─── slide_bar (frames for the floor robot) | └─── ...
Sensors: A tf frame is published for all user added sensors. The naming convention is
{sensor_name}_frame
. All data reported from the sensor will be relative to this frame. The robot camera’s will also have frames published if enabled. The naming convention isceiling_robot_camera_link
andfloor_robot_camera_link
.world └─── right_bins_camera_frame | └─── left_bins_camera_frame | └─── ceiling_robot_camera_link
Bins: The tf frames for the bins are located in the center of the bin surface. The frames are named as
bin{n}_frame
where n is the bin number.world └─── bin1_frame | └─── bin2_frame | └─── bin3_frame | └─── bin4_frame | └─── bin5_frame | └─── bin6_frame | └─── bin7_frame | └─── bin8_frame
Assembly inserts: The tf frames for the inserts are located at the center of each insert. The frames are named as
as{n}_insert_frame
where n is the assembly station number. All pose data for assembly and combined tasks are relative to these frames. These frames are updated when the assembly stations are rotated.world └─── as1_table_frame | | | └─── as1_insert_frame | └─── as2_table_frame | | | └─── as2_insert_frame | └─── as3_table_frame | | | └─── as3_insert_frame | └─── as4_table_frame | └─── as4_insert_frame
Kit Tray Stations/Tool Changer: Each of the kit tray stations have tf frames for the center of the table surface which is useful for picking trays. These are name
kts{n}_table_frame
where n is the table number. TF frames are also provided for the tool changers attached to the table:kts{n}_tool_changer_parts_frame
is the frame of the tool changer for the parts gripper, where n is the table number.kts{n}_tool_changer_trays_frame
is the frame of the tool changer for the trays gripper, where n is the table number.
world | └─── kts1_table_frame | | | └─── kts1_tool_changer_parts_frame | | | └─── kts1_tool_changer_trays_frame | └─── kts2_table_frame | └─── kts2_tool_changer_parts_frame | └─── kts2_tool_changer_trays_frame
Conveyor Belt: There are two tf frames for the conveyor belt:
conveyor_belt_base_frame
is the frame located below the conveyor belt.conveyor_belt_part_spawn_frame
is the frame origin where parts are spawn on the conveyor belt. This frame is located at one end of the conveyor belt.
world | └─── conveyor_belt_base_frame | └─── conveyor_belt_part_spawn_frame