node1
發布乙個話題,發布接收到數字總數
接收話題,話題接收乙個int型
服務:求和,求話題接收到的所有數字的和
服務:清零
node2
發布乙個話題,發布int,隔乙個5s隨機時間發布
隔60s後,呼叫求和服務,把結果列印出來。
接收話題,列印node1,接收到的數字數量。
1,建立程式包(在工作空間的src目錄下):
cd ~/catkin_ws/src/ catkin_create_pkg add_ints roscpp rospy std_msgs
cd add_ints;gedit package.xml
3,編譯測試(在工作空間目錄下:cd ../.. 或者 cd ~/catkin_ws):
catkin_make -dcatkin_whitelist_packages="add_ints"
4,定義新的訊息:
cd ~/catkin_ws/src/add_ints mkdir msg echo "int64 num" > msg/num.msg
5,檢視package.xml, 確保它包含一下兩條語句(接近末尾處),如果沒有,新增進去:
message_generation
message_runtime
6,修改cmakelists.txt檔案:
1)在find_packag函式的components的列表裡增加message_generation,就像這樣:
find_package(catkin required components
roscpp
rospy
std_msgs
message_generation
)
2)設定了執行依賴:
catkin_package(
...catkin_depends message_runtime
...)
3)用你的.msg檔案替代message*.msg:
add_message_files(
files
num.msg
)
4)取消generate_messages()的注釋:
add_message_files(
files
num.msg
)
7,通過rosmsg show命令,檢查ros是否能夠識訊息:
rosmsg show add_ints/num
將會看到:
int64 num
8,建立乙個srv
roscd add_ints mkdir srv
9,建立乙個服務檔案:
cd srv;gedit addints.srv
輸入一下內容:
int64 a
int64 b
int64[13]
---
int64 sum
10,修改cmakelists.txt檔案,增加額外的依賴項:
刪掉add_service_files的注釋: 用你自己的srv檔名替換掉那些service*.srv檔案:
add_service_files(
files
addints.srv
)
11,通過rosmsg show命令,檢查ros是否能夠識該服務:
rossrv show add_ints/addints
將會顯示:
int64 a
int64 b
int64[13]
---int64 sum
12,重新編譯我們的package:
# in your catkin workspace
cd ~/catkin_ws
catkin_make -dcatkin_whitelist_packages="add_ints"
#### service節點和client節點程式
1,在add_ints/src目錄下建立建立程式源**:
1)add_ints_server.cpp
#include "ros/ros.h"
#include "add_ints/addints.h"
bool add(add_ints::addints::request &req,
add_ints::addints::response &res)
else
if(srv.request.b == 13)
srv.request.b = 0;
else // 按照頻率休眠(5s)
loop_rate.sleep();
} return 0;
}
add_executable(add_ints_server src/add_ints_server.cpp)
target_link_libraries(add_ints_server $)
add_dependencies(add_ints_server add_ints_gencpp)
add_executable(add_ints_client src/add_ints_client.cpp)
target_link_libraries(add_ints_client $)
add_dependencies(add_ints_client add_ints_gencpp)
3,編譯階段(在工作空間目錄下):
cd ~/catkin_ws
catkin_make -dcatkin_whitelist_packages="add_ints"
ros多個小烏龜 ROS基本概念
首先大家按照 ros 系統安裝與體驗 按照命令執行的順序,將小烏龜程式啟動起來。一.節點管理器 啟動小烏龜程式,執行的第一條ros指令是roscore,此即啟動了乙個節點管理器,顧名思義,其作用就是用於節點管理,在乙個ros系統中,有且只有乙個,它是ros節點執行的前提,所以在執行啟動ros節點前,...
ROS基本程式設計 topic in roscpp
topic demo程式 1,建立程式包 在工作空間的src目錄下 cd catkin ws src catkin create pkg topic demo roscpp std msgscd topic demo gedit package.xml3,編譯測試 在工作空間目錄下 cd 或者 cd...
ROS程式設計基本語法
msg檔案存放在package的msg目錄下,srv檔案則存放在srv目錄下。msg檔案實際上就是每行宣告乙個資料型別和變數名。可以使用的資料型別如下 int8,int16,int32,int64 plus uint float32,float64 string time,duration othe...