ROS學習之自定義srv型別

2021-08-18 23:11:35 字數 1672 閱讀 8825

1. 建立srv檔案

cd ~/catkin_ws/src/my_package  

mkdir srv

echo "int64 a

int64 b

---int64 sum" > srv/addtwoints.srv

2. 更改cmakelist.txt檔案

更改find_package()函式:

在cmakelist.txt中新增對message_generation包的依賴:

此步驟已經在ros學習之自定義msg型別一節中新增過了

指定需要轉換的srv檔案

編譯回到catkin_ws目錄下:

catkin_make
編譯之後就會生成num.h標頭檔案,所在目錄如下:

測試:

rossrv show my_package/addtwoints

cmakelist.txt檔案內容

cmake_minimum_required(version 2.8.3)

project(my_package)

find_package(catkin required components

roscpp

rospy

std_msgs

message_generation

)#指定需要轉換的msg檔案

add_message_files(files num.msg)

#指定需要轉換的srv檔案

add_service_files(files addtwoints.srv)

#只有呼叫了下面的函式最後才會生成 num.h 檔案

generate_messages()

catkin_package(

include_dirs include

libraries my_package

catkin_depends roscpp rospy std_msgs message_runtime

depends system_lib

)include_directories(

# include

$)# talker_node在ros中是獨一無二的,不能和其它節點名字重複

add_executable(publisher_node src/publisher.cpp)

target_link_libraries(publisher_node $)

add_executable(subscriber_node src/subscriber.cpp)

target_link_libraries(subscriber_node $)

自定義srv訊息之ros

在ros中,如果沒有現成的訊息型別來描述要去傳遞的訊息時,我們會自定義訊息。我們會新建乙個package來去自定義訊息,通常這個package寫任何的業務邏輯,只是用來宣告自定義的訊息型別,可以只定義一種訊息型別,也可以定義多種訊息型別,根據業務需求來定。所以,首先我們單獨的建立乙個package,...

ros編寫自定義的服務( srv)

1 編寫自定義的服務檔案 即.srv 檔案。2 儲存,catkin make編譯,要生成可以被 include 包 addtwoints.h 注意cmakelist.txt檔案的配置 cmake minimum required version 2.8.3 project learing commu...

ROS服務程式設計 1,自定義服務資料 srv檔案

ros中的服務資料可以通過srv檔案進行語言無關的定義介面,一般放在srv資料夾,包含請求與問答兩個資料域,使用 分割開。針對加法運算服務請求,建立乙個服務型別的srv檔案 catkin ws src my package srv addtwoints.srv int64 a int64 b int...