ROS TF转换再续

转换关系说明

之前对ROS的TF有了一个比全面的了解过后,自己写了一些代码,但是遇到一个问题,里面描述转换关系的时候,到底是父到子坐标系的转换,还是子坐标系到父坐标系的转换,这一点几很疑惑,他们的转换关系刚好差一个负号。
最后通过实验发现,是父到子坐标系一个转换,按通俗的话来讲就是子坐标系在父坐标系下的表达。这个感觉也比较符合日常的认知,例如如果雷达在底盘的上边30cm处,我们会写的时候就直接写laser_link在base_link的上面0.3m。
所以在写代码的时候直接写子坐标系在父坐标系下的位姿就可以了。

tf_echo命名说明

查看坐标变换的时候我们会用到下面的命令,后面跟上要查询的frame的名字。

rosrun tf tf_echo 

这个命令的到底是前一个到后一个的转换还是后一个的转换呢,当时就很迷惑,通过实验发现,返回的结果是,后一个坐标系在前一个坐标系下的坐标,是前到后的一个转换关系。

rviz可视化检查

rviz可视化提供了一个很方便的可视化操作,我们可以通过这种方式一目了然坐标之间的转换到底是怎么样的一个转换。
在首先运行rviz

rosrun rviz rviz

运行rviz过后点击左下角的ADD,我们添加一个TF。
然后在左上角的Global Options 的Fixed Frame 里面选择合适的frame,这个frame就是你屏幕上显示的世界坐标系。
然后在展开刚刚添加的TF,展开后在Frame选项立面勾选你需要查看的TF Frame就可以很好的判断他们之间的关系是否配置正确了。
例如我查看我当前的base_link和map的关系是否和我真实的关系一样。
tf
根据这个很直观的可以看到是一样的,所以代码写的转换没问题。
里面红色的是X轴,绿色的是Y轴,蓝色的是Z轴,ROS都是通过右手系建立的,即FLU,手拿出来一比划就很明白。

发布了63 篇原创文章 · 获赞 50 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_38649880/article/details/89606949