ROS学习04.ROS中的常用组件( 二 )


使用TF功能包 , 总体来说需要以下两个步骤:
4.2.2 TF工具
坐标系统虽然是一个基础理论 , 但是由于涉及多个空间之间的变换 , 不容易进行想象 , 所有TF提供了丰富的终端工具来帮助开发者调试和创建TF变换 。
功能:打印TF树中所有坐标系的发布状态 , 也可以输入参数来查看指定坐标系之间的发布状态 。
roslaunch learning_tf start_demo.launch rosrun tf tf_monitor#可以查看指定坐标系之间的发布状态rosrun tf tf_monitor >
图4-1 使用查看TF树中所有坐标系的发布状态
功能:查看指定坐标系之间的变换关系 。
rosrun tf tf_echo >
功能:发布两个坐标系之间的静态坐标变换 , 这两个坐标系不发生相对位置变化 。
rosrun tf static_transform_publisher x y z yaw pitch roll frame_id child_frame_id period_in_msrosrun tf static_transform_publisher x y z qx qy qz qw frame_id child_frame_id period_in_ms
以上两种命令格式 , 需要设置坐标的偏移参数和旋转参数:偏移参数使用相对于x、y、z三轴的坐标位移;而旋转参数的第一种命令格式使用以弧度为单位的yaw/pitch/roll角度(yaw是围绕z轴旋转的偏航角 , pitch是围绕y轴旋转的俯仰角 , roll是围绕x轴旋转的翻滚角) , 第二种命令格式使用四元数表达旋转角度 。发布频率以ms为单位 。
该命令也可在文件中使用:

是可视化的调试工具 , 可以生成pdf文件 , 显示整颗TF树的信息 。
rosrun tf view_frames#使用如下命令 , 或者使用PDF阅读器查看生成的PDF文件evince frames.pdf
图4-2 使用工具生成TF树的信息
图4-3 可视化的TF树信息
除此之外 , rviz中还提供TF可视化显示的插件 。
4.2.3 乌龟例程中的TF
安装乌龟仿真器中的功能包:
sudo apt-get install ros-melodic-turtle-tf
安装完成后 , 可以运行如下命令:
roslaunch turtle_tf turtle_tf_demo.launch
乌龟仿真器打开后会出现两只小乌龟 , 并且下方的小乌龟会自动向中心位置的小乌龟移动 。
打开键盘控制节点 , 控制中心位置的小乌龟运行:
rosrun turtlesim turtle_teleop_key
另外一只小乌龟总会跟随我们控制的那种乌龟运行 。
在这个例程中的TF是如何运用的呢?
首先使用TF工具来查看TF树:
rosrun tf view_frames
图4-4 乌龟跟随例程中的TF树
如上图所示:在当前系统中存在三个坐标系:world、、 。world是世界坐标系 , 作为系统的基础坐标系 , 其他坐标系都是相对该坐标系建立的 , 所以world是TF树的根节点 。相对于world坐标系 , 又分别针对两只乌龟创建了两个乌龟坐标系 , 这两个坐标系的原点就是乌龟在世界坐标系下的坐标位置 。
现在要让跟随运动 , 等价于坐标系需要向坐标系移动 , 这就需要知道和之间的坐标变换 。三个坐标系之间的变换关系可以使用如下公式描述: