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