tf能夠根據時間緩衝並維護多個參考係之間的座標變換,可以在任意時間,將點、向量、等資料的座標,完成座標變換。
tf的使用方法(兩個概念了解一下):
監聽tf變換
接收並快取系統中發布的所有參考係變換,並從中查詢所需要的參考係變換。
廣播tf變換
向系統中廣播參考係之間的座標變換關係。系統中更能可能會存在多個不同部分的tf變換廣播,每個廣播都可以直接將參考係變換關係直接插入tf樹中,不需要在進行同步。
a.tf包內的指令工具:
指令 tf_monitor 列印tf樹中所有的所有參考係資訊
指令tf_echo 檢視指定參考係之間的變換關係
指令static_transform_publisher發布兩個參考係之間的靜態座標系變換
static_transform_publisher x y z yaw pitch roll frame_idyaw代表這繞z軸旋轉的角度,pitch代表繞y軸的角度,roll代表繞x軸的角度。child_frame_id period_in_ms
static_transform_publisher x y z qx qz qw fram_id child_frame_id period_in_ms
解釋一下該launc**件內容
pkg=「tf」 來自tf功能包
type=「static_transform_publisher」 該功能包下的static_transform_publisher結點
name=「base_link_to_laser"給該結點取名叫base_link_to_laser
arges=」-0.023 0 0.15 3.141593 0 0 /base_link /laser 100"
x y z表示子節點相對於主節點的位置
"3.141593 0 0"表示子節點繞z軸旋轉180°,即將laser掉了乙個頭
/base_link 父座標
/laser 子座標
100 每100ms廣播一次tf變換
b.tf功能包api
廣播變換
tf::transformbroadcaster(); //建立tf廣播變換測試接收到的tf變換//傳送變換
void sendtransform(const stampedtransform& transform);
void sendtransform(const geometry_msgs::transformstamped& transform);
在使用這兩個函式在前,在建立功能包時:catkin_create_pkg learning_tftfroscpp rospy turtlesim 得加入tf依賴這一項
tf::transformlistener::cantransform(…)接收並轉換tf資料tf::transformlistener::waitfortransform(…)
tf::transformlistener::lookuptransform(…)變換2個座標tf::transformlistener::transformdatatype(…)轉換資料
#include #include //transformbroadcaster包含在該標頭檔案中
#include std::string turtle_name;
void posecallback(const turtlesim::poseconstptr& msg)
int main(int argc, char** ar**);
turtle_name = ar**[1];
ros::nodehandle node;
ros::subscriber sub = node.subscribe(turtle_name+"/pose", 10, &posecallback);
ros::spin();
return 0;
};
最後在cmakelist中新增:
add_executable(turtle_tf_broadcaster src/turtle_tf_broadcaster.cpp)target_link_libraries(turtle_tf_broadcaster $)
ROS學習之座標變換tf
即使前方荊棘滿地,也要跨上戰馬,一路前行!keep learning,keep programing ros中的座標變換主要形式為廣播和監聽,可以發布座標系a 座標系b與世界座標系的關係,可以監聽得到座標系a與座標系b之間的轉換關係,本文主要參考古月老師的教程,發布turtle1 turtle3與w...
ROS複習筆記之 座標變換(TF)
參考資料為 ros中的座標轉換tf在描述組成機械人的每個部分 障礙物和外部物體時是最有用的概念之一。這些可以被描述為位置 position 和方向 direction 統稱為姿態 pose 在此,位置由x y z這3個向量表示,而方向是用四元數 quaternion x y z w表示。四元數並不直...
ROS中TF變換詳解
前言 1.python實現tf發布 2.c 實現tf發布 ros中發布tf變換 tf變換時描述機械人各個座標系之間的位置變換關係,在ros中發布這些關係需要使用tf工具。tf變換具體內容可以參考官方文件 tf變換需要設定的內容在ros wiki中已有詳細介紹 發布主要由兩部分構成,分別是平移和旋轉變...