第 5 章 ROS多坐标系关系查看(自学二刷笔记)
重要参考:
课程链接:https://www.bilibili.com/video/BV1Ci4y1L7ZZ
讲义链接:Introduction · Autolabor-ROS机器人入门课程《ROS理论与实践》零基础教程
5.1.5 坐标系关系查看
在机器人系统中,涉及的坐标系有多个,为了方便查看,ros 提供了专门的工具,可以用于生成显示坐标系关系的 pdf 文件,该文件包含树形结构的坐标系图谱。
1.准备
首先调用 rospack find tf2_tools 查看是否包含该功能包,如果没有,请使用如下命令安装:
sudo apt install ros-noetic-tf2-tools
2.使用
2.1生成 pdf 文件
启动坐标系广播程序之后,运行如下命令:
rosrun tf2_tools view_frames.py
会产生类似于下面的日志信息:
[INFO] [1592920556.827549]: Listening to tf data during 5 seconds...
[INFO] [1592920561.841536]: Generating graph in frames.pdf file...
查看当前目录会生成一个 frames.pdf 文件
2.2查看文件
可以直接进入目录打开文件,或者调用命令查看文件:evince frames.pdf
内如如图所示:
另请参考:
5.1.7 TF2与TF
1.TF2与TF比较_简介
-
TF2已经替换了TF,TF2是TF的超集,建议学习 TF2 而非 TF
-
TF2 功能包的增强了内聚性,TF 与 TF2 所依赖的功能包是不同的,TF 对应的是 tf 包,TF2 对应的是 tf2 和 tf2_ros 包,在 TF2 中不同类型的 API 实现做了分包处理。
-
TF2 实现效率更高,比如:在TF2 的静态坐标实现、TF2 坐标变换监听器中的 Buffer 实现等
2.TF2与TF比较_静态坐标变换演示
接下来,我们通过静态坐标变换来演示TF2的实现效率。
2.1启动 TF2 与 TF 两个版本的静态坐标变换
TF2 版静态坐标变换:rosrun tf2_ros static_transform_publisher 0 0 0 0 0 0 /base_link /laser
TF 版静态坐标变换:rosrun tf static_transform_publisher 0 0 0 0 0 0 /base_link /laser 100
会发现,TF 版本的启动中最后多一个参数,该参数是指定发布频率
2.2运行结果比对
使用 rostopic 查看话题,包含 /tf 与 /tf_static , 前者是 TF 发布的话题,后者是 TF2 发布的话题,分别调用命令打印二者的话题消息
rostopic echo /tf :当前会循环输出坐标系信息
rostopic echo /tf_static :坐标系信息只有一次
2.3结论
如果是静态坐标转换,那么不同坐标系之间的相对状态是固定的,既然是固定的,那么没有必要重复发布坐标系的转换消息,很显然的,tf2 实现较之于 tf 更为高效