【ROS2】概念:中级-Tf2 变换库

 目录

  •  概述

  •  tf2 的属性

  •  教程

  •  论文

 概述 

tf2 是一个变换库,它允许用户随时间跟踪多个坐标系。tf2 以树结构维护坐标系之间的关系,并在时间上进行缓冲,使用户能够在任何所需的时间点在任意两个坐标系之间变换点、向量等。

401373626bf59dbb65a1d2d4211ddf65.png

tf2 的属性 

一个机器人系统通常有许多随时间变化的 3D 坐标系,例如世界坐标系、基座坐标系、夹持器坐标系、头部坐标系等。tf2 会随着时间的推移跟踪所有这些坐标系,并允许您提出以下问题:

  • 5 秒钟前头坐标系相对于世界坐标系的位置在哪里?

  • 我的夹持器中的物体相对于我的基座的姿态是什么?

  • 当前基座框架在map框架中的姿态是什么?

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

教程 

我们创建了一套教程 https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Tf2-Main.html ,逐步引导您使用 tf2。您可以从 tf2 教程的介绍开始。有关所有 tf2 和 tf2 相关教程的完整列表,请查看教程页面。

基本上,任何用户使用 tf2 都有两个主要任务,监听变换和广播变换

如果你想使用 tf2 在坐标系之间进行转换transform,你的节点需要监听转换transforms。你需要做的是接收并缓冲系统中广播的所有坐标系,并查询坐标系之间的特定转换。查看“编写监听器”教程(Python https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Py.html )(C++  https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Listener-Cpp.html)以了解更多信息。

要扩展机器人的功能,您需要开始广播变换。广播变换意味着将坐标系的相对姿态发送到系统的其余部分。一个系统可以有许多广播器,每个广播器提供有关机器人不同部分的信息。查看“编写广播器”教程(Python https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Py.html )(C++  https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Broadcaster-Cpp.html )以了解更多信息。

除此之外,tf2 可以广播不会随时间变化的静态变换。这主要节省了存储和查找时间,还减少了发布开销。你应该注意到,静态变换只发布一次,并假定不会变化,因此不会存储历史记录。如果你想在 tf2 树中定义静态变换,请查看“编写静态广播器”(Python https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Static-Broadcaster-Py.html )(C++  https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Writing-A-Tf2-Static-Broadcaster-Cpp.html)教程。

您还可以在“添加框架”(Python  https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Adding-A-Frame-Py.html)(C++  https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Adding-A-Frame-Cpp.html)教程中学习如何向您的 tf2 树添加固定和动态框架

一旦你完成了基本教程,你可以继续学习 tf2 和时间。tf2 和时间教程(C++ https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Learning-About-Tf2-And-Time-Cpp.html )教授 tf2 和时间的基本原理。高级教程关于 tf2 和时间(C++ https://docs.ros.org/en/jazzy/Tutorials/Intermediate/Tf2/Time-Travel-With-Tf2-Cpp.html)教授使用 tf2 进行时间旅行的原理。

论文 

有一篇关于 tf2 的论文在 TePRA 2013 上发表:tf:变换库 https://ieeexplore.ieee.org/abstract/document/6556373 。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值