#### topic demo程式
1,建立程式包(在工作空間的src目錄下):
cd catkin_ws/src/ catkin_create_pkg topic_demo roscpp std_msgs
cd topic_demo;gedit package.xml
3,編譯測試(在工作空間目錄下:cd ../.. 或者 cd ~/catkin_ws):
catkin_make
4,定義新的訊息:
cd ~/catkin_ws/src/topic_demo mkdir msg cd msg;gedit gps.msg
輸入以下**並儲存:
string state #工作狀態
float32 x #x座標
float32 y #y座標
5,通過rosmsg show命令,檢查ros是否能夠識訊息:
rosmsg show topic_demo/gps
將會看到:
float32 x
float32 y
string state
6,檢視package.xml, 確保它包含一下兩條語句(接近末尾處),如果沒有,新增進去:
message_generation
message_runtime
7,修改修改cmakelists.txt檔案:
1)在find_packag函式的components的列表裡增加message_generation,就像這樣:
find_package(catkin required components
roscpp
std_msgs
message_generation #需要新增的地方
)
2)設定執行依賴:
# 用於配置ros和packge配置檔案和cmake檔案
catkin_package(
...catkin_depends message_runtime
...)
3)用你的.msg檔案替代message*.msg:
add_message_files(files gps.msg) #指定從哪個訊息檔案生成
4)取消generate_messages()的注釋:
generate_messages(dependencies std_msgs) #用於生成訊息 #dependencies後面指定生成msg需要依賴其他什麼訊息,由於gps.msg用到了flaot32這種ros標準訊息,因此需要再把std_msgs作為依賴
8,編譯生成gps.msg對應的標頭檔案:
cd ~/catkin_ws catkin_make
9,編寫源**
1)建立訊息發布節點:
roscd topic_demo/src/ gedit talker.cpp
輸入以下**:
#include #include //自定義msg產生的標頭檔案
int main(int argc, char **ar**)
return 0;
}
2)建立訊息接收節點:
gedit listener.cpp
輸入以下**:
#include #include #include void gpscallback(const topic_demo::gps::constptr &msg)
int main(int argc, char **ar**)
10,cmakelists.txt檔案修改
在 cmakelists.txt 新增以下內容,生成可執行檔案
add_executable(talker src/talker.cpp) #生成可執行檔案talker
add_dependencies(talker topic_demo_generate_messages_cpp)
#表明在編譯talker前,必須先生編譯完成自定義訊息
#必須新增add_dependencies,否則找不到自定義的msg產生的標頭檔案
#表明在編譯talker前,必須先生編譯完成自定義訊息
target_link_libraries(talker $) #鏈結
add_executable(listener src/listener.cpp) #聲稱可執行檔案listener
add_dependencies(listener topic_demo_generate_messages_cpp)
target_link_libraries(listener $)#鏈結
11,編譯
cd ~/catkin_ws catkin_make
注:如果只想編譯工作空間某乙個包:catkin_make -dcatkin_whitelist_packages="包名"
例如:
catkin_make -dcatkin_whitelist_packages="topic_demo"
12,執行
開啟新終端輸入命令
roscore #啟動master節點
啟動talker節點:
rosrun topic_demo talker
啟動talker節點:
rosrun topic_demo listener
ROS程式設計基本語法
msg檔案存放在package的msg目錄下,srv檔案則存放在srv目錄下。msg檔案實際上就是每行宣告乙個資料型別和變數名。可以使用的資料型別如下 int8,int16,int32,int64 plus uint float32,float64 string time,duration othe...
ROS基本程式設計 多個整數相加 C
node1 發布乙個話題,發布接收到數字總數 接收話題,話題接收乙個int型 服務 求和,求話題接收到的所有數字的和 服務 清零 node2 發布乙個話題,發布int,隔乙個5s隨機時間發布 隔60s後,呼叫求和服務,把結果列印出來。接收話題,列印node1,接收到的數字數量。1,建立程式包 在工作...
ROS通訊程式設計 話題程式設計
話題程式設計的流程如下 以乙個發布者talker.cpp的原始碼舉例 該例程將發布chatter話題,訊息型別string include include ros ros.h include std msgs string.h intmain int argc,char ar return0 新增編...