這是乙個關於實現把機械人的位姿廣播到tf中,這是對ros 有一定的熟悉之後教程
(1)cd catkin_ws/src 進入我們的ros 的工作空間
(2)catkin_create_pkg my_tf tf roscpp rospy turtlesim 這一句是新建乙個ros 的包,也就是乙個ros的工程,並新增他的依賴項,主要依賴tf和c++以及你可以使用python開發
(4)catkin_make 編譯一次
(5)source ./devel/setup.bash
然後在my_tf的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; //
//nodehandle是與ros系統交流的最主要的接入點,是乙個控制代碼
ros:
:subscriber sub = node.subscribe(turtle_name+"/pose", 10, &posecallback);//
//從master訂閱某烏龜的「/pose」話題,當訊息到來時,即當烏龜位置改變時產生新的訊息時,ros將會呼叫posecallback
ros:
:spin();
return
0;};
總結: 假設你在機械人上應用,如果你知道機械人的位置x,y,z,與三個旋轉角roll,pitch,yaw就可以廣播乙個tf了,如果在是平面移動機械人,則只需要知道x,y與yaw即可
(6)在cmakelists.txt新增如下的兩行
add_executable(turtle_tf_broadcaster src/turtle_tf_broadcaster.cpp)
target_link_libraries(turtle_tf_broadcaster $)
(7)catkin_make 編譯
編譯完成之後,會發現會生成乙個二進位制檔案,這個檔案就是生成的可執行檔案
(8)在my_tf檔案下新建乙個檔案命名為launch之後新建乙個命名為
start_demo.launch,並把下面的這段**複製進去
pkg="turtlesim"
type="turtlesim_node"
name="sim"/>
pkg="turtlesim"
type="turtle_teleop_key"
name="teleop"
output="screen"/>
name="scale_linear"
value="2"
type="double"/>
name="scale_angular"
value="2"
type="double"/>
pkg="my_tf"
type="turtle_tf_broadcaster"
args="/turtle1"
name="turtle1_tf_broadcaster" />
pkg="my_tf"
type="turtle_tf_broadcaster"
args="/turtle2"
name="turtle2_tf_broadcaster" />
launch>
(9)執行此程式
(10 )箭頭按鍵就可以移動小烏龜,我們可以監聽tf廣播
還有一篇在的tf總結:
VBA 從開始到放棄
debug de到腦殼疼,編 的好難呀!給自己定乙個30天的學習計畫,每天把熟練的 以及弄不懂的問題記錄在這裡,每天進步一點點!電腦上執行vba實在太費勁了!不玩了!1 累加器 計數器 1 course score 2 accouting 90 3 audit 98 4 it audit 95 di...
Tensorflow從開始到放棄
剛剛開始學習神經網路,使用tensorflow,發現不會上網真的是個大坑。在此記錄一路以來已經遇到的坑和即將遇到的坑 非技術問題 我是不會放棄的。q 能夠訪問的tensorflow官網 a 試了一下改hosts檔案並沒有用。q 為什麼按照教程執行的時候會出現很多warning?a 大概是因為網上的教...
CSS從開始到放棄
學完html後我們發現,網頁的大體結構已經出現了,但整體看來不太美觀,那就需要用css來進行修飾 首先我們應該知道使用css的目的是什麼?css簡介 那接下來要弄懂,我們怎麼選擇我們需要的元素?css選擇器 然後呢,我們可以怎樣去裝飾網頁元素呢?css的基本屬性 最後呢就是去了解怎麼去寫得更好更快?...