ROS 2边学边练(32)-- 初识tf2

前言

        tf2在ROS世界中地位显赫,其提供了很强大的功能来管理和执行各坐标系间的坐标转换,这对于能正常运行的机器人系统来说十分关键和重要。

        在上一篇文章当中我们已经用到了tf2,虽然有点懵,但所幸我们从这篇起将正式开始学习tf2,让它没有秘密可言。

动动手

        我们依然是拿小海龟作为案例,简简单单走一遍流程,熟悉一下。

安装例子

        安装例子及其依赖项。

$sudo apt-get install ros-iron-rviz2 ros-iron-turtle-tf2-py ros-iron-tf2-ros ros-iron-tf2-tools ros-iron-turtlesim

运行例子

        我们新起一个终端,首先source下安装环境以使系统能认识ROS 2的命令,接着执行下面的命令运行turtle_tf2_py包:

$ros2 launch turtle_tf2_py turtle_tf2_demo.launch.py

有两只海龟,其中左下角的那只会游到中间的那只所在的位置(目前大家看到的),我们再来打开一个终端来控制第一只海龟:

$ros2 run turtlesim turtle_teleop_key

第二只海龟会跟着第一只的步伐,亦步亦趋(我这截图有点不大明显,两只海龟长成一样的了)。

发生什么了

        这个例子使用了tf2库来创建三个坐标系:一个世界坐标系,一个turtle1坐标系,以及一个turtle2坐标系。这个教程使用了tf2广播器来发布turtle的坐标系,并使用tf2监听器来计算turtle系之间的差异,并移动其中一个turtle来跟随另一个。

 tf2工具

        现在,我们来看看tf2是如何被用来创建这个例子的。我们可以使用tf2_tools来查看tf2在幕后是如何工作的(记住不要关掉上面正在运行的例子)。

使用view_frames

        view_frames会创建一个由tf2在ROS上广播的坐标系的图表。请注意,这个工具只在Linux上工作;如果你使用的是Windows,请跳过以下部分,直接查看“使用tf2_echo”。

        执行下面的命令:

$ros2 run tf2_tools view_frames

        在这里,一个tf2监听器正在监听通过ROS广播的坐标系,并绘制一个坐标系如何连接的树状图。我们来打开frames.pdf文件(执行上面命令的当前路径下)。

        从上,我们可以看到tf2广播的三个坐标系:world、turtle1和turtle2。world坐标系是turtle1和turtle2坐标系的父坐标系。view_frames还报告了一些诊断信息,包括何时接收到最旧和最新的坐标系变换,以及为了调试目的,tf2框架发布到tf2的速度有多快。

使用tf2_echo

        tf2_echo报告了通过ROS广播的任何两个坐标系之间的变换。

        一般语法为:

$ros2 run tf2_ros tf2_echo [source_frame] [target_frame]

        我们来试试看看turtle2到turtle1之间的坐标转换是怎样的。

$ros2 run tf2_ros tf2_echo turtle2 turtle1

        当我们通过键盘控制turtle1移动时,这上面的转换关系数据也会跟着变动。

rviz2和tf2

        rviz2是一个可视化工具,用于检查tf2坐标系很有用。让我们使用rviz2通过配置文件使用-d选项来查看我们的turtle坐标系:

$ros2 run rviz2 rviz2 -d $(ros2 pkg prefix --share turtle_tf2_py)/rviz/turtle_rviz.rviz

        在上一篇中我们也已经演示了,在侧边栏中,将看到由tf2广播的坐标系。当我们控制turtle移动时,我们会看到坐标系在rviz中移动(右侧区域红绿蓝坐标系部分)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值