TF简介

1.tf介绍

说明:本教程将帮助您了解tf可以为您做些什么。

          It shows off some of the tf power in a multi-robot example using turtlesim

          同时也介绍了使用tf_echoview_framesrqt_tf_treerviz

关键词:变换,坐标系

教程级别: BEGINNER

2.设置Demo

本教程的节点是为Ubuntu发布的,所以继续安装它们:

$ sudo apt-get install ros- melodic -ros-tutorials ros- melodic -geometry-tutorials ros- melodic -rviz ros- melodic -rosbash ros- melodic -rqt-tf-tree

3.运行Demo

现在我们已经完成了turtle_tf安装,让我们运行这个Demo。

$ roslaunch turtle_tf turtle_tf_demo.launch

你会看到turtlesim从两只乌龟开始。

turtle_tf_start.png

(如果您遇到进程dies,则可以使用解决方法。)

启动turtlesim之后,您可以使用键盘箭头键在turtlesim中驾驶中心龟,

选择roslaunch终端窗口,以便捕获您的按键以驱动乌龟。

turtle_tf_drive.png

正如你所看到的那样,一只乌龟会继续跟随你驾驶的乌龟。

4.发生了什么

这个演示使用tf库创建三个坐标系:世界框架,turtle1坐标系和turtle2坐标系。

本教程使用tf broadcaster发布乌龟坐标系和tf listener来计算乌龟坐标系的差异,并移动一只乌龟来跟随另一只乌龟。

5.工具

现在让我们看看如何使用tf来创建这个Demo。我们可以使用tf工具来查看幕后的工作。

5.1使用view_frames

view_frames创建一个tf通过ROS广播的关于坐标系的图表。

$ rosrun tf view_frames

你会看见:

Transform Listener initing
Listening to /tf for 5.000000 seconds
Done Listening
dot - Graphviz version 2.16 (Fri Feb  8 12:52:03 UTC 2008)

Detected dot version 2.16
frames.pdf generated

这里一个tf监听器正在监听通过ROS广播的坐标系,并绘制一个如何连接坐标系的树。要查看树:

$ evince frames.pdf

view_frames_2.png

在这里我们可以看到由tf广播的三个坐标系:world,turtle1和turtle2。

我们还可以看到world是turtle1和turtle2帧的父级。

出于调试目的,view_frames还会报告一些诊断信息,关于何时收到最旧和最近的坐标变换以及坐标发布到tf的速度。

5.2 使用rqt_tf_tree

rqt_tf_tree是一个运行时工具,用于可视化通过ROS广播的坐标系。您只需通过图表左上角的刷新底部刷新树。

用法:

rosrun rqt_tf_tree rqt_tf_tree

或者干脆:

rqt&

然后从插件选项卡中选择rqt_tf_tree

5.3 使用tf_echo

tf_echo报告通过ROS广播的任何两坐标系之间的转换。

用法:

rosrun tf tf_echo [reference_frame] [target_frame]

让我们看一下turtle2帧相对于turtle1帧的变换,它相当于\ large {$$ \ mathbf {T} _ {turtle1 \ _turtle2} = \ mathbf {T} _ {turtle1 \ _world} * \ mathbf {T} _ {world \ _turtle2} $$}

$ rosrun tf tf_echo turtle1 turtle2

当tf_echo监听器接收通过ROS广播的帧时,您将看到转换显示。

At time 1416409795.450
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409796.441
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409797.450
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409798.441
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.914, 0.405]
            in RPY [0.000, -0.000, 2.308]
At time 1416409799.433
- Translation: [0.000, 0.000, 0.000]
- Rotation: in Quaternion [0.000, 0.000, 0.691, 0.723]
            in RPY [0.000, -0.000, 1.526]

当你驾驶你的乌龟时,你会看到变换随着两只乌龟相对移动而变化。

6. rviz和tf

rviz是一个可视化工具,可用于检查tf坐标系。让我们用rviz来看看我们的龟坐标系。

让我们开始rviz与使用的turtle_tf配置文件-d的选项rviz:

$ rosrun rviz rviz -d`rospack find turtle_tf` / rviz / turtle_rviz.rviz

 

附件:turtle_tf_rviz.png

在侧栏中,您将看到由tf广播的坐标系。当你驾驶乌龟时,你会看到坐标在rviz中移动。

现在我们已经检查了turtle_tf_demo,让我们来看看如何为这个演示编写广播器(Python) (C ++)

猜你喜欢

转载自blog.csdn.net/qq_27806947/article/details/84350412
今日推荐