【ROS学习】- tf学习-学习 Writing a tf listener (C++)的疑问与解答

写在前面

按照官网教程 ( http://wiki.ros.org/tf/Tutorials/Writing%20a%20tf%20listener%20%28C++%29 ) 学习tf的时候,运行程序的时候,想的有点多,也就多问了自己几个问题:

一、问题描述

终端运行 rosrun tf tf_echo turtle1 turtle2 来查看 tf 转换关系的时候的问题:

好像无论 turtle1 与 turtle2 距离有多远,终端打印的 Translation 的三个( x, y, z )参数,只有第一个参数变化大,第二个参数变化很小(当然第三个参数是z不变 很好理解)。
大致是出现这样的效果:
在这里插入图片描述而且,自己控制 turtle1 横向走或者纵向走,终端打印的 Translation 的三个( x, y, z )参数,还是只有第一个参数变化大,第二个参数变化很小。
在这里插入图片描述
在这里插入图片描述

二、原因解释

自己想来想去,一直没想明白,后来重新捋了一遍 tf 的过程,才意识到是 参考坐标系(的坐标轴方向) 的问题。

首先我们要明确一点,小乌龟这个例程的坐标系是 x轴正方向是小乌龟的头的朝向,y轴正方向是小乌龟的左边。(这个规则是始终成立的,小乌龟1旋转,坐标系turtle1 也跟着旋转,这个很关键,我就被这个绕进去了 -_-

这样测试就能看出来问题:
在这里插入图片描述在这里插入图片描述通过以上靠边界向上向下运动,可以发现,此时的Translation 的三个( x, y, z )参数,第二个参数变化得大了。(记得参照下图的手绘图)

原因就是以turtle1为参考坐标系,沿着y轴正方向(小乌龟的左边)的朝向的距离变大了。也就是Translation 的三个( x, y, z )参数中的 y 轴的位移变大了。

如下图所示,
当小乌龟向上运动时,以 /turtle1 为参考坐标系,turtle2 的坐标x为正,y为负,并且随着两小乌龟间的距离的增大,x的绝对值增大,y的绝对值增大;
当小乌龟向下运动时,以 /turtle1 为参考坐标系,turtle2 的坐标x为正,y为正,并且随着两小乌龟间的距离的增大,x的绝对值增大,y的绝对值增大。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值