tf介绍
安装demo
sudo apt-get install ros-humble-rviz2 ros-humble-turtle-tf2-py ros-humble-tf2-ros ros-humble-tf2-tools ros-humble-turtlesim
运行demo
# 终端2
ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py # 你会看到两只乌龟

# 终端2
ros2 run turtlesim turtle_teleop_key # 在终端中控制一只乌龟运动 会发现另一只跟着它运动
# 原理
此演示使用tf2库创建三个坐标系:世界坐标系、海龟1坐标系和海龟2坐标系。本教程使用tf2广播器发布乌龟坐标系,使用tf2监听器计算乌龟坐标系的差异,并移动一只乌龟跟随另一只。
tf2 tools
view_frames
view_frames
创建了由tf2通过ROS广播的帧的图表。
ros2 run tf2_tools view_frames
在这里我们可以看到tf2广播的三个坐标系:world
、turtle1
、turtle2
。
tf2_echo
tf2_echo
报告通过ROS广播的任何两个帧之间的转换。
# 语法
ros2 run tf2_ros tf2_echo [source_frame] [target_frame]
# use
ros2 run tf2_ros tf2_echo turtle2 turtle1
# 当侦听器接收通过ROS2广播的帧时,您将看到显示的转换。
At time 1622031731.625364060
- Translation: [2.796, 1.039, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.202, 0.979]
At time 1622031732.614745114
- Translation: [1.608, 0.250, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.032, 0.999]
rviz2 & tf2
rviz2是一个可视化工具,可用于检查tf2帧。让我们通过-d
选项选择配置文件,使用rviz2来查看我们的乌龟框架。
ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz
在侧边栏中,您将看到tf2广播的帧。 当驾驶乌龟时,你会看到帧在同步移动。
编写静态广播程序
发布静态变换对于确定各个坐标系非常有用。
在本节独立教程中,第一部分将编写代码以将静态转换发布到tf2;在第二部分中,我们将解释如何在tf2_ros中使用static_transform_publisher
。
crate pkg
cd <the_work_ws>/src/
ros2 pkg create --build-type ament_cmake