27、ROS2坐标变换TF2简介

 

1、TF2简介

坐标系是我们非常熟悉的一个概念,也是机器人学中的重要基础,在一个完整的机器人系统中,会存在很多坐标系,这些坐标系之间的位置关系该如何管理?ROS给我们提供了一个坐标系的管理神器:TF2

 

2、机器人中的坐标系

在移动机器人系统中,坐标系一样至关重要,比如一个移动机器人的中心点是基坐标系Base Link,雷达所在的位置叫做雷达坐标系laser link,机器人要移动,里程计会累积位置,这个位置的参考系叫做里程计坐标系odom,里程计又会有累积误差和漂移,绝对位置的参考系叫做地图坐标系map。

一层一层坐标系之间关系复杂,有一些是相对固定的,也有一些是不断变化的,看似简单的坐标系也在空间范围内变得复杂,良好的坐标系管理系统就显得格外重要。

image-20220528142112163

关于坐标系变换关系的基本理论,在每一本机器人学的教材中都会有讲解,可以分解为平移和旋转两个部分,通过一个四乘四的矩阵进行描述,在空间中画出坐标系,那两者之间的变换关系,其实就是向量的数学描述。

ROS中TF功能的底层原理,就是对这些数学变换进行了封装,详细的理论知识大家可以参考机器人学的教材,我们主要讲解TF坐标管理系统的使用方法。

 

3、TF命令行操作

我们先通过两只小海龟的示例,了解下基于坐标系的一种机器人跟随算法。为方便演示,本节课程最好选择在虚拟机中操作

3.1、安装环境

这个示例需要我们先安装相应的功能包

3.2、启动

然后就可以通过一个launch文件启动,之后我们可以控制其中的一只小海龟,另外一只小海龟会自动跟随运动。

当我们控制一只海龟运动时,另外一只海龟也会跟随运动。

image-20231031174611320

3.3、查看TF树

默认在当前终端路径下生成了一个frames.pdf文件,打开之后,就可以看到系统中各个坐标系的关系了。

image-20231031174844745

3.4、查询坐标变换信息

只看到坐标系的结构还不行,如果我们想要知道某两个坐标系之间的具体关系,可以通过tf2_echo这个工具查看:

运行成功后,终端中就会循环打印坐标系的变换数值了

image-20231031174933242

3.5、坐标系可视化

用rviz2来做显示:

rivz2中设置参考坐标系为:world,添加TF显示,再让小海龟动起来,Rviz中的坐标轴就会开始运动,这样是不是更加直观了呢!

image-20231031175440027

 

 

4、静态坐标变换

所谓静态坐标变换,是指两个坐标系之间的相对位置是固定的。如雷达和base_link之间的位置是固定的。

示例:为方便演示,本节课程最好选择在虚拟机中操作

4.1、发布A到B的位姿

4.2、监听/获取TF关系

4.3、rivz可视化

image-20231031180746331

 

5、动态坐标变换

下节课程中讲解,请看下节课程