TF功能包其实是一个供用户调用的一个库
它是用来记录和整理每个ros节点关于相对位置坐标的已知信息
TF的消息发布
每个ros节点只需要把自己已知的任何相对坐标发布出去,比如机械手控制节点只知道机械手相对机械臂的坐标,那么就把已知信息通过TF的函数计算后发布出去。
TF发布的话题一般有两种: /tf和/tf_static
/tf是只要有节点发布就会有消息,/tf_static是在已知的坐标发生变化或有新的节点订阅的时候才会发布新的消息
http://wiki.ros.org/tf2/Migration#Addition_of_.2BAC8-tf_static_topic
有很多的节点都在发布坐标时,所有的关系串起来,就形成了一颗TF树
TF的消息订阅
假如某个ros节点想得到机械手相对大地的位姿,也就是需要机械手坐标系相对于世界坐标系的位姿,那么只需要使用waitForTransform()和lookupTransform()来获取,这两个函数主要作用是订阅TF的话题,然后收集消息,在其中找到世界坐标系到机械手坐标系在TF树上的途径,把沿途的所有相对坐标全部找出来,最后作矩阵运算得到结果。