ROS基本程式設計 多個整數相加 C

2021-09-13 18:38:12 字數 3116 閱讀 1665

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...