文章目录
tf 简介
-
什么是tf
tf是一个让用户随时间跟踪多个参考系的功能包,它使用一种树型数据结构,根据时间缓冲并维护多个参考系之间的坐标变换关系,可以帮助用户在任意时间,将点、向量等数据的坐标,在两个参考系中完成坐标变换。
tf设计 -
tf可以做什么
一个机器人系统通常有很多三维的参考系,而且会随着时间的推移发生变化,例如全局参考系(world frame),机器人中心参考系(base frame),机械夹参考系(gripper frame),机器人头参考系(head frame)等等。tf可以以时间为轴,跟踪这些参考系(默认是10秒之内的),并且允许用户提出如下的申请:
1.五秒钟之前,机器人头参考系相对于全局参考系的关系是什么样的?
2.机器人夹取的物体相对于机器人中心参考系的位置在哪里?
3.机器人中心参考系相对于全局参考系的位置在哪里?
tf可以在分布式系统中进行操作,也就是说一个机器人系统中所有的参考系变换关系,对于所有节点组件,都是可用的,所有订阅tf消息的节点都会缓冲一份所有参考系的变换关系数据,所以这种结构不需要中心服务器来存储任何数据。 -
tf的使用流程
想要使用tf功能包,总体来讲可以分为以下两个步骤:
1.监听tf变换
接收并缓存系统中发布的所有参考系变换,并从中查询所需要的参考系变换。
2.广播tf变换
向系统中广播参考系之间的坐标变换关系。系统中更可能会存在多个不同部分的tf变换广播,每个广播都可以直接将参考系变换关系直接插入tf树中,不需要再进行同步。
Reference:
https://blog.csdn.net/hcx25909/article/details/50154225
https://blog.csdn.net/crazyquhezheng/article/details/49124115
https://blog.csdn.net/ZhangRelay/article/details/62052505?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromBaidu-2.nonecase
https://answers.ros.org/question/11242/what-is-the-difference-between-tf-and-tf2/
http://wiki.ros.org/tf/Overview/Transformations
https://blog.csdn.net/qq_40109030/article/details/91558368
https://blog.csdn.net/hcx25909/article/details/9255001