警告
您正在阅读的 ROS 2 文档版本已达到 EOL(生命周期结束),不再受官方支持。如果您想了解最新信息,请访问 Jazzy.
关于 tf2
概述
tf2 是一个变换库,用户可以利用它跟踪多个坐标框架的时间变化。tf2 将坐标框架之间的关系保存在一个以时间为缓冲的树状结构中,用户可以在任意时间点对任意两个坐标框架之间的点、矢量等进行变换。

tf2 的特性
一个机器人系统通常有许多随时间变化的三维坐标框架,如世界框架、基础框架、抓手框架、头部框架等:
5 秒钟前,头部框架相对于世界框架的位置在哪里?
相对于基座,抓取器中物体的姿态是什么?
地图帧中基准帧的当前姿势是什么?
tf2 可以在分布式系统中运行。这意味着系统中任何一台计算机上的所有 ROS 2 组件都能获得机器人坐标系的所有信息。tf2 可以让分布式系统中的每个组件都建立自己的变换信息数据库,也可以有一个中心节点来收集和存储所有变换信息。
教程
我们创建了一套 教程 一步一步教你使用 tf2。您可以从 TF2 简介 教程。要查看所有 tf2 和 tf2 相关教程的完整列表,请访问 教程 page.
用户使用 tf2 主要有两项任务:监听变换和广播变换。
如果要使用 tf2 在坐标框架之间进行变换,节点需要监听变换。您需要做的是接收和缓冲系统中广播的所有坐标框架,并查询框架间的特定变换。查看编写 tf2 监听器教程 蟒蛇 (C++) 了解更多信息。
要扩展机器人的功能,就需要开始广播变换。广播变换意味着向系统的其他部分发送坐标帧的相对姿态。一个系统可以有多个广播器,每个广播器提供机器人不同部分的信息。查看编写 tf2 广播器教程 蟒蛇 (C++) 了解更多信息。
除此之外,tf2 还可以广播不随时间变化的静态变换。这主要节省了存储和查找时间,同时也改善了发布开销。需要注意的是,静态变换只发布一次,并假定不会改变,因此不会存储时间历史。如果您想在 tf2 树中定义静态变换,请参考静态 tf2 广播器的编写方法 蟒蛇 (C++) 教程。
您还可以在添加框架中了解如何在 tf2 树中添加固定和动态框架。 蟒蛇 (C++) 教程。
完成基本教程后,您就可以继续学习 tf2 和时间。tf2 和时间教程 蟒蛇 (C++) 教授 tf2 和时间的基本原理。关于 tf2 和时间的高级教程 蟒蛇 (C++) 教授使用 TF2 进行时空旅行的原理。
纸张
2013 年 TePRA 会议上有一篇关于 tf2 的论文: tf:转换库.