iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 20
0
Software Development

ROS進階學習筆記系列 第 20

Day 20 - ROS TF

延續昨天的小烏龜,今天來講解什麼是tf~~~
首先來看個範例:

$ roslaunch turtle_tf turtle_tf_demo.launch

可以看到視窗上出現兩隻小烏龜,下面的會朝著上面的烏龜前進:
https://ithelp.ithome.com.tw/upload/images/20201004/2011234826yh99AbNu.png

這時候開啟昨天的程式:

$  rosrun turtlesim  turtle_teleop_key 

就可以操控第一隻烏龜移動,而第二隻烏龜就會跟過去:
https://ithelp.ithome.com.tw/upload/images/20201004/20112348rTgwwZCN0y.png

這個demo就是ROS官方用來展示什麼是tf,tf的全名是transform,是ros的一個整合不同的node之間的座標系之間的package,讓我們可以很輕鬆的在不同的座標系之間轉換。舉例來說,今天小車上面有一顆2d lidar和一顆相機,他們照到東西的時候顯示的都會是自己的座標系,tf就是用來整合他們之間的座標系,合成一個世界座標系統(world frame)

以小烏龜來當作範例,兩隻烏龜都有自己的座標系統,使用指令rqt_tf_tree可以看到tf樹的串接:

$ rosrun rqt_tf_tree rqt_tf_tree 

https://ithelp.ithome.com.tw/upload/images/20201004/20112348b9Th5nJZyr.png
可以看到圖中一共有3個frame,分別是turtle1,turtle2和world。搭配node graph一起看的話:

$ rqt_graph

https://ithelp.ithome.com.tw/upload/images/20201004/20112348Mj82eAUHa0.png

可以看到他其實是有兩個tf_broadcaster在發送自身的tf,tf會計算兩者之間的座標差,並且送到pointer去指向turtle2,讓turtle2往turtle1的位置前進。

關於TF的概念就大概是這個樣子,但TF要用得好,完全就是可以寫個一週我都不覺得奇怪的主題,既然我的車車有點技術上的困難,就來寫一下TF好了XDDD

Reference

http://wiki.ros.org/tf
http://wiki.ros.org/tf/Tutorials
http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf


上一篇
Day 19 - ROS tutlesim (2)
下一篇
Day 21 - ROS RViz
系列文
ROS進階學習筆記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言