您正在阅读的是开发版本的文档。有关最新发布的版本,请访问 Jazzy.

Tf2

概述

tf2 是一个变换库,用户可以利用它跟踪多个坐标框架的时间变化。tf2 将坐标框架之间的关系保存在一个以时间为缓冲的树状结构中,用户可以在任意时间点对任意两个坐标框架之间的点、矢量等进行变换。

./././_images/ros2_tf2_frames.png

tf2 的特性

一个机器人系统通常有许多随时间变化的三维坐标框架,如世界框架、基础框架、抓手框架、头部框架等:

  • 5 秒钟前,头部框架相对于世界框架的位置在哪里?

  • 相对于基座,抓取器中物体的姿态是什么?

  • 地图帧中基准帧的当前姿势是什么?

tf2 可以在分布式系统中运行。这意味着系统中任何一台计算机上的所有 ROS 2 组件都能获得机器人坐标系的所有信息。tf2 可以让分布式系统中的每个组件都建立自己的变换信息数据库,也可以有一个中心节点来收集和存储所有变换信息。

教程

我们创建了一套 教程 一步一步教你使用 tf2。您可以从 TF2 简介 教程。要查看所有 tf2 和 tf2 相关教程的完整列表,请访问 教程 page.

用户使用 tf2 主要有两项任务:监听变换和广播变换。

如果要使用 tf2 在坐标框架之间进行变换,节点需要监听变换。您需要做的是接收和缓冲系统中广播的所有坐标框架,并查询框架间的特定变换。查看 "编写监听器 "教程 蟒蛇 (C++) 了解更多信息。

要扩展机器人的功能,就需要开始广播变换。广播变换意味着向系统的其他部分发送坐标帧的相对姿态。一个系统可以有多个广播器,每个广播器提供机器人不同部分的信息。查看 "编写广播器 "教程 蟒蛇 (C++) 了解更多信息。

除此之外,tf2 还可以广播不会随时间变化的静态变换。这主要节省了存储和查找时间,同时也减少了发布开销。需要注意的是,静态变换只发布一次,并假定不会更改,因此不会存储历史记录。如果您想在 tf2 树中定义静态变换,请参阅 "编写静态广播器"。 蟒蛇 (C++) 教程。

您还可以在 "添加框架 "中了解如何在 tf2 树中添加固定和动态框架。 蟒蛇 (C++) 教程。

完成基本教程后,您就可以继续学习 tf2 和时间。tf2 和时间教程 (C++) 教授 tf2 和时间的基本原理。关于 tf2 和时间的高级教程 (C++) 教授使用 TF2 进行时空旅行的原理。

纸张

2013 年 TePRA 会议上有一篇关于 tf2 的论文: tf:转换库.