一、概念
坐标变换简单来说就是归一化,即把测得的其他物体和机器人身上传感器之间的位置信息都换为物体和机器人的原点之间的信息。
根据我们高中学习的知识,只要明确了不同坐标系之间的的相对关系,就可以实现任何坐标点在不同坐标系之间的转换,但是该计算实现是较为常用的,且算法也有点复杂,因此在 ROS 中直接封装了相关的模块: 坐标变换(TF)。TF坐标变换用于在ROS中实现不同坐标系之间的点或向量的转换。
TF坐标变换通过广播TF变换和监听TF变换来实现的
二、查看系统中当前各个坐标系是否连通
rosrun tf view_frames
运行上述指定会在主目录下生成.gv和.pdf2个文件,用来显示当前系统中各个坐标系的连通关系
例如运行ros中的turtle_tf_demo,该例程的中分别定义了三个坐标系:坐标原点,turtle1,turtle2.turtle2会监听turtle1d相对于world的位置变换,进而改变自己的位置。以实时跟随turtle1。
在此之前先安装包:
sudo apt-get install ros-melodic-turtle-tf
运行例程代码如下:
roslaunch turtle_tf turtle_tf_demo.launch
然后运行:rosrun tf view_frames即可查看当前系统中坐标系之间的关系。
扫描二维码关注公众号,回复:
16338491 查看本文章
三、实时查询tf树种任意两个坐标系之间的位置关系:
rosrun tf tf_echo 根坐标系 目标坐标系
例如:我依然是运行turtle_tf_demo.launch例程,接下来运行
rosrun tf tf_echo turtle1 turtle 2
当我键盘控制第一只小海龟移动的时候,第二只海龟和第一只海龟之间的坐标位置关系如下:
其中Translation是平移,是目标坐标相对于根坐标x,y,z三个方向的平移
rotation是旋转,表示目标坐标系通过怎样的旋转才能到根坐标系。Rotation有三种表示方式
四、通过rviz查看坐标系间的位置关系
运行
rosrun rviz rviz 'rospack find turtle_tf' /rviz/turtle_rviz.rviz
即可看到world,turtle1,turtl2之间做坐标变化的过程