###1.预览
tf 包的作用就是让用户能够一直保持对多个坐标系的跟踪。tf 按照时间的顺序以树结构缓存了坐标系之间的关系,可以用于转换某个时间点上两个坐标系之间的点、向量。项目地址为:https://github.com/ros/geometry.git (branch: indigo-devel)
!()[http://wiki.ros.org/tf?action=AttachFile&do=get&target=frames2.png]
###2.tf 的作用;为什么要用 tf。
典型的机器人系统有很多变化着的 3d 坐标系,比如世界参考系,底盘参考系,爪子参考系,头部参考系等。tf 一直保持跟踪所有的这些参考系,tf 可以解决以下问题:
1.5 秒钟以前相对世界参考系,头部参考系在哪?
2.爪子里物体的位姿相对于地盘是什么?
3.地盘参考系的位姿在地图参考系是什么样的?
tf 能够应用于分布式系统中。这意味着机器人的所有坐标系的信息对于系统中位于任意电脑中的 ROS 组件都是可用的。转换信息的过程中是没有中心的。
###3.相关论文
链接:https://github.com/lixiang0/demos/blob/master/tf:%20The%20Transform%20Library.pdf
###4.示例
####4.1 安装和运行
执行:
sudo apt-get install ros-indigo-ros-tutorials ros-indigo-geometry-tutorials ros-indigo-rviz ros-indigo-rosbash ros-indigo-rqt-tf-tree
roslaunch turtle_tf turtle_tf_demo.launch
之后可以看到窗口,类似下面所示:
点击命令行窗口,点击方向键可以看到一直乌龟跟着另一只乌龟运动。
本实例中创建了 3 个坐标系:世界参考系、乌龟 1 参考系、乌龟 2 参考系。其中 tf 广播者用于发布乌龟的坐标系,tf 监听者用于计算 2 个乌龟的参考系之间的不同并使得一只乌龟跟着另一只乌龟。
####4.2 相关工具
#####4.2.1.view_frames
rosrun tf view_frames //将图形化的保存tf
evince frames.pdf //打开保存的pdf文件
完成上述操作后可以看到:
#####4.2.2.rqt_tf_tree
rqt_tf_tree 命令也是图形化显示 tf 的一个工具,但是它可以动态的更新 tf。
执行:
rosrun rqt_tf_tree rqt_tf_tree
or
rqt &//然后在plugins里面选择tf tree
执行之后可以看到类似:
#####4.2.3.tf_echo
tf_echo 输出两个参考系之间的转换关系。
用法如下:
rosrun tf tf_echo [reference_frame] [target_frame]
可以看到类似的输出:
At time 1416409795.450
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
in RPY [0.000, -0.000, 2.308]
At time 1416409796.441
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
in RPY [0.000, -0.000, 2.308]
At time 1416409797.450
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
in RPY [0.000, -0.000, 2.308]
At time 1416409798.441
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
in RPY [0.000, -0.000, 2.308]
At time 1416409799.433
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.691, 0.723]
in RPY [0.000, -0.000, 1.526]
#####4.2.4.rviz 和 tf
执行:
rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.rviz
可以看到可视化的世界参考系(下图所示),两只乌龟参考系。并且可视化的各个参考系可以跟着键盘的控制而运动。
###5.总结
本文初步的介绍了 tf 是什么,为什么需要 tf,以及 tf 一些相关可视化工具。
未来还需要细化的是 tf 中各个参考系之间的转换是如何实现的,以及如何实现转换的过程。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于