02-TF-tf介紹

TF介紹

描述 教程介紹了tf的實際應(yīng)用,并展示了使用 turtlesim的多機器人示例. 同時介紹了tf_echo, view_frames, rqt_tf_tree, rviz等參數(shù)的使用。

Demo設(shè)置

安裝必要程序包:

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

運行Demo

$ roslaunch turtle_tf turtle_tf_demo.launch

此時開啟兩個烏龜:


turtle_tf_start.png

在roslaunch運行的terminal中通過鍵盤控制烏龜。

turtle_tf_drive.png

此時可以發(fā)現(xiàn)第二個烏龜會跟隨第一個烏龜行動。

原理解析:
這個demo使用tf庫建立了三個坐標系:世界坐標系,海龜1坐標系,海龜2坐標系。教程使用tf broadcaster 發(fā)布海龜坐標系,使用 tf listener 計算海龜坐標系的差異并使得一個海龜跟隨另一個海龜。

tf工具

現(xiàn)在我們探索一個demo中rf是如何工作的,我們可以使用rf工具查看后臺的rf工作情況。

Using view_frames

view_frames創(chuàng)建tf發(fā)布的坐標系的圖標

$ 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 listener 監(jiān)聽ROS發(fā)布的坐標系,并將坐標系的關(guān)聯(lián)用樹狀圖表示:

$ evince frames.pdf

d

從圖上得知,tf創(chuàng)建了三個坐標系:世界坐標系,海龜1坐標系,海龜2坐標系,其中世界坐標系是海龜坐標系的父坐標系。view_frames也報道了tf發(fā)布頻率和最新的坐標系與最舊坐標系的診斷信息用于 debugging

Using rqt_tf_tree

rqt_tf_tree 是一個實時顯示坐標系狀態(tài)的工具,通過圖上的更新按鍵可以實時更新狀態(tài)。
使用:

rosrun rqt_tf_tree rqt_tf_tree

或:

rqt &

然后選擇 rqt_tf_tree

Using tf_echo

tf_echo顯示了任意兩個坐標系的變換信息
使用:

rosrun tf tf_echo [reference_frame] [target_frame]

此時坐標系的關(guān)系如圖所示


$ rosrun tf tf_echo turtle1 turtle2

坐標表換通過 tf_echo listener 顯示

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]

當控制海龜運動,可以看到兩個坐標系的相對運動。

rviz 與 tf

rviz 是一個可視化工具,rviz在測試tf坐標系非常有幫助,下面測試一下rviz 中的坐標系,使用 turtle_tf 開啟rviz

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

T
T

在側(cè)邊欄可以看到tf坐標系信息,當控制海龜運動時,坐標系在rviz中也隨著運動。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容