ROS學習之TF變換

2021-09-25 04:45:00 字數 2419 閱讀 7517

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_id

child_frame_id period_in_ms

static_transform_publisher x y z qx qz qw fram_id child_frame_id period_in_ms

yaw代表這繞z軸旋轉的角度,pitch代表繞y軸的角度,roll代表繞x軸的角度。

解釋一下該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廣播變換

//傳送變換

void sendtransform(const stampedtransform& transform);

void sendtransform(const geometry_msgs::transformstamped& transform);

在使用這兩個函式在前,在建立功能包時:catkin_create_pkg learning_tftfroscpp rospy turtlesim 得加入tf依賴這一項

測試接收到的tf變換

tf::transformlistener::cantransform(…)

tf::transformlistener::waitfortransform(…)

接收並轉換tf資料

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中已有詳細介紹 發布主要由兩部分構成,分別是平移和旋轉變...