ros.tf2.
編寫乙個
tf廣播器(
c++)
宣告:本教程來自於ros.wiki,本人在整理過程中可能出現一些錯誤和問題,有問題可以去檢視官網版本也可以諮詢本人
1.1在接下來的兩篇教程中,我們將編寫**來重現
tf入門教程中的演示。之後,以下教程將重點介紹使用更高階的
tf功能擴充套件演示。在我們開始之前,您需要為此專案建立乙個新的
ros包。在沙箱資料夾中,建立乙個名為
learning_tf
的包,該包依賴於tf,
roscpp
,rospy
和turtlesim
:
$ cd %your_catkin_workspace_home%/src
$ catkin_create_pkg learning_tf tf roscpp rospy turtlesim1.2
建立新的軟體包,然後才能使用
roscd
:
$ cd %your_catkin_workspace_home%/
$ catkin_make
$ source./devel/setup.bash2.1
如何廣播轉換
本教程將告訴您如何向
tf我們先建立原始檔。轉到我們剛剛建立的包:
轉到src/
資料夾並啟動您的編輯器,將以下**貼上到名為
src/ turtle_tf_broadcaster.cpp
的新檔案中。
#include#include #include std::string turtle_name;
void posecallback(const turtlesim::poseconstptr& msg)
int main(int argc, char** argv)
turtle_name = argv[1];
ros::nodehandle node;
ros::subscriber sub = node.subscribe(turtle_name+"/pose",10, &posecallback);
ros::spin();
return 0;
}
2.2**解釋
現在,我們對**的關鍵部分進行解釋。
(1).#includetf軟體包提供了
transformbroadcaster
的實現,以幫助簡化發布轉換的任務。要使用
transformbroadcaster
,我們需要包含
tf/ transform_broadcaster.h
標頭檔案。
(2).statictf::transformbroadcaster br;
在這裡,我們建立乙個
transformbroadcaster
物件,稍後我們將使用它來通過電線傳送變換。
(3).tf::transform transform;
transform.setorigin(tf::vector3(msg->x, msg->y, 0.0) );
tf::quaternion q;
q.setrpy(0,0, msg->theta);
在這裡,我們建立乙個transform
物件,並將
2d海龜姿勢的資訊複製到
3d變換中。
(4).transform.setrotation(q);這裡我們設定旋轉。
(5).br.sendtransform
(tf:: stampedtransform
(transform
,ros:: time :: now
(),「
world」
,turtle_name));
這是真正的工作完成的地方。使用transformbroadcaster
傳送變換需要四個引數。
首先,我們通過轉換本身。
現在我們需要給發布的變換乙個時間戳,我們會用當前時間戳ros:: time :: now
()
然後,我們需要傳遞我們建立的鏈結的父框架的名稱,「世界」
最後,我們需要傳遞我們建立的鏈結的子框架的名稱,這是烏龜本身的名稱
注意:sendtransform
和stampedtransform
與父母和子女的順序相反。
3.1執行廣播公司
現在我們建立了**,讓我們先編譯它。
開啟cmakelists.txt
檔案,並在底部新增以下行:
add_executable(turtle_tf_broadcastersrc/turtle_tf_broadcaster.cpp)target_link_libraries(turtle_tf_broadcaster$
進入你的的工作包
$ catkin_make如果一切順利,您的
devel/ lib /learning_tf
資料夾中應該有乙個名為
turtle_tf_broadcaster
的二進位制檔案。如果是這樣,我們準備為這個演示建立乙個啟動檔案。
進入learning_tf建立乙個
launch資料夾
$ mkdir launch
使用文字編輯器建立乙個名為start_demo.launch
的新檔案
$ vim start_demo.launch然後新增以下行:
首先,確保你停止了前一篇教程中的啟動檔案(使用
ctrl-c
$ roslaunch learning_tf start_demo.launch你應該看到乙隻烏龜。
檢查結果
現在,使用
tf_echo
工具來檢查烏龜姿勢是否實際上正在廣播到tf:
$ rosrun tf tf_echo /world /turtle1這應該告訴你第一只烏龜的姿勢。使用箭頭鍵在烏龜周圍驅動(確保您的終端視窗處於活動狀態,而不是您的模擬器視窗)。如果你執行
tf_echo
來進行世界和海龜
2之間的轉換,你不應該看到轉換,因為第二隻海龜還沒有。但是,只要我們在下乙個教程中新增第二隻烏龜,烏龜
2的姿勢就會廣播給tf。
要實際使用廣播到
tf的轉換,您應該轉到下乙個關於建立
tf偵聽器的教程(
c+
ROS學習之tf 3編寫乙個tf接收器(C )
ros.tf3 編寫乙個 tf接收器 c 宣告 本教程來自於ros.wiki,本人在整理過程中可能出現一些錯誤和問題,有問題可以去檢視官網版本也可以諮詢本人 在之前的教程中,我們建立了乙個 tf廣播公司向 tf發布乙隻烏龜的姿勢。在本教程中,我們將建立乙個 tf接收器來開始使用tf。1.1如何建立乙...
編寫乙個tf廣播
1 include 2 include 專用標頭檔案 3 include 4 5 std string turtle name 6 7 8 9 void posecallback const turtlesim poseconstptr msg 18 這是真正的工作完成的地方。用transformb...
ROS學習之TF變換
tf能夠根據時間緩衝並維護多個參考係之間的座標變換,可以在任意時間,將點 向量 等資料的座標,完成座標變換。tf的使用方法 兩個概念了解一下 監聽tf變換 接收並快取系統中發布的所有參考係變換,並從中查詢所需要的參考係變換。廣播tf變換 向系統中廣播參考係之間的座標變換關係。系統中更能可能會存在多個...