ROS的TF变换理解

1. 广播transform变换关系,3步骤

// 1. 创建广播对象 transform_broadcaster

// 2. 创建变换关系 transform R_parent_child

// 3. 广播这个变换关系,并且告知tf树谁是parent,谁是child

究竟是谁到谁的变换,取决于第3步中你想把谁填在前面,填在后面,上面的步骤给出了一个变换例子。

参考:

[1].tf/Tutorials - ROS Wiki


2. 创建监听者,参见文献[1]

每个监听者都有一个缓冲区,用于存储来自不同广播者广播的变换关系。


3. 添加坐标系

3.1为什么要添加坐标系?

对于许多任务,更容易在局部坐标系思考,因此,我们只需要考虑相邻坐标系的变换,不同坐标系的变换由tf树内部计算得到!!!

3.2 在哪里添加坐标系

tf树建立了一个 树形坐标结构,它不允许在坐标系结构中出现闭环。这意味着一个坐标系仅仅只有一个父结点,但是可以有多个子结点。

3.3 如何添加坐标系

就像1中一样广播一个transform即可。


4. tf和Time

推荐使用ros::Time(0),这会自动等待获取最新帧变换,最新帧变换传过来需要几毫秒。

参考:

[2].浅析TF树中ros::Time(0)和ros::Time::now()_光头明明的博客-CSDN博客_ros::time(0)

5. 未完待续。。。


1. 查看tf关系图

rosrun rqt_tf_tree rqt_tf_tree

2. 查看指定名称两个坐标系的变换关系

rosrun tf tf_echo /world /turtle1

上述输出的坐标变换,是R_world_turtle,依次类推

 

3. tf关系可以在rviz里面添加TF组件,直接查看相对位置关系

你可能感兴趣的:(c++,算法)