參考資料:
1. ROS探索總結(十八)——重讀tf
2. ROS :RViz中移動機器人來學習 URDF,TF,base_link, map,odom和odom 主題的關係
3. JETSON TK1_【L2】讓 ROS 幫你處理煩雜的座標轉換!
4. 大頭怪的異想空間_我知道我的手臂在哪裡嗎?那我的眼睛呢?
• TF package介紹
機器人系統通常具有隨時間變化的許多3D坐標框架,例如世界框架,基礎框架,抓手框架,頭部框架等。
tf隨時間跟蹤所有這些框架,也可以在分佈式系統中運行,這意味著有關機械手坐標系的所有信息可用於系統中任何計算機上的所有ROS組件。
#在機器人學中,相關的部位在空間中的關係,必須以座標系定位,每一個部位相對其他部位的連結,便可以看作是座標系和座標系之間的距離與角度關係。
如以下稱作Denavit-Hartenberg (DH)的模型來定義座標位置:
因為位置的座標是用 (x, y, z, roll, pitch, yaw) 這六個變數紀錄,手刻不太可能,因此ROS的框架中,已經有一大套相當完善的TF函式庫
從我們看的到的"姿態、方位"(位置),去算"平移、旋轉"(轉換)
• TF 應用解說
ROS探索总结(十二)——坐标系统、ROS(九):座標系統tf
#大致步驟:
$ rosdep install turtle_tf rviz
$ rosmake turtle_tf rviz
這句可不打,rosmake是幫助你確定整個package沒問題$ roslaunch turtle_tf turtle_tf_demo.launch
$ rosrun tf view_frames
這個指令會產成一個像rqt-圖的pdf檔$ rosrun tf tf_echo turtle1 turtle2
這個指令會列出龜2座標相對龜1座標的轉換矩陣$ rosrun rviz rviz -d `rospack find turtle_tf`/rviz/turtle_rviz.vcg
這個指令就可以從rviz圖形介面看到三者間關係(世界、龜1、龜2)#進階: (寫一個tf的廣播)
學習重點:
Topic 1 – Broadcaster : 報自己 Frame 的位置
Topic 2 – Listener:讓我看看你在哪
Topic 3 – Add a frame :參考點給你一個 Frame
Topic 4 – About Time:加進時間
Topic 5 – Time Travel:抓舊資料
#完整官方教程: