TF2(Transform Tree)
定義
TF2 是 ROS2 裡管理座標系轉換關係的系統,把所有座標系(frame)組織成一棵樹,每個座標系(除了根節點)恰好有一個父座標系,任何模組只要知道兩個座標系的名字,就能透過 lookupTransform 查詢兩者之間任意時刻的相對關係。
關鍵特性
- Static 與動態廣播分開:不隨時間變化的關係(感測器固定在機身上)用
StaticTransformBroadcaster只廣播一次;會隨時間變化的關係(關節角度、機器人移動位置)用TransformBroadcaster持續更新。 map → odom → base_link:Nav2 慣例用這條 TF 鏈,把「長期精準但可能跳動」的map座標系,跟「短期平滑但會漂移」的odom座標系分開,避免定位修正的瞬間跳動干擾即時控制。- 查詢可能失敗:
lookupTransform可能拋出LookupException(座標系不存在)或ExtrapolationException(查詢時間點超出 buffer 已知範圍),呼叫端需要妥善處理例外,不能假設查詢一定成功。
使用情境
- 幾乎所有牽涉多個座標系互動的功能(顯示模型、規劃路徑、處理感測器資料)都建立在 TF2 之上。