延續昨天的小烏龜,今天來講解什麼是tf~~~
首先來看個範例:
$ roslaunch turtle_tf turtle_tf_demo.launch
可以看到視窗上出現兩隻小烏龜,下面的會朝著上面的烏龜前進:
這時候開啟昨天的程式:
$ rosrun turtlesim turtle_teleop_key
就可以操控第一隻烏龜移動,而第二隻烏龜就會跟過去:
這個demo就是ROS官方用來展示什麼是tf,tf的全名是transform,是ros的一個整合不同的node之間的座標系之間的package,讓我們可以很輕鬆的在不同的座標系之間轉換。舉例來說,今天小車上面有一顆2d lidar和一顆相機,他們照到東西的時候顯示的都會是自己的座標系,tf就是用來整合他們之間的座標系,合成一個世界座標系統(world frame)
以小烏龜來當作範例,兩隻烏龜都有自己的座標系統,使用指令rqt_tf_tree可以看到tf樹的串接:
$ rosrun rqt_tf_tree rqt_tf_tree
可以看到圖中一共有3個frame,分別是turtle1,turtle2和world。搭配node graph一起看的話:
$ rqt_graph
可以看到他其實是有兩個tf_broadcaster在發送自身的tf,tf會計算兩者之間的座標差,並且送到pointer去指向turtle2,讓turtle2往turtle1的位置前進。
關於TF的概念就大概是這個樣子,但TF要用得好,完全就是可以寫個一週我都不覺得奇怪的主題,既然我的車車有點技術上的困難,就來寫一下TF好了XDDD
http://wiki.ros.org/tf
http://wiki.ros.org/tf/Tutorials
http://wiki.ros.org/tf/Tutorials/Introduction%20to%20tf