服務通信自定義srv
- 流程:
- 創建ROS功能包
- 按照固定格式創建srv文件
- 編譯配置文件
- 編譯生成中間文件
流程:
srv 文件內的可用數據類型與 msg 文件一致,且定義 srv 實現流程與自定義 msg 實現流程類似,需查閱msg文件的可以瀏覽ROS話題通信流程自定義數據msg格式:
-
1.創建一個ROS功能包
-
2.按照固定格式創建srv文件
-
3.編輯配置文件
-
4.編譯生成中間文件
創建ROS功能包
- 選定 src 右擊 —>
create catkin package
- 創建一個
pluming_server_client
功能包
- 使用
roscpp rospy std_msgs
作為依賴庫
pluming_server_client
功能包下的結構如圖所示,功能包創建成功
按照固定格式創建srv文件
-
在功能包下創建一個
srv
文件夾
-
在
srv
文件夾下新建一個AddInts.srv
文件
-
編輯
srv
文件
服務通信中,數據分成兩部分,請求與響應,在 srv
文件中請求和響應使用---
分割,具體實現如上所示
編譯配置文件
-
package.xml
中添加編譯依賴與執行依賴
在plumbing_server_client
功能包下的package.xml
文件添加如圖所示的編譯依賴和執行依賴 -
CMakeLists.txt
編輯srv
相關配置-
加入
message_generation
在CMakeLists.txt
中找到find_package
添加message_generation
編譯依賴,如圖所示: -
配置
srv
源文件
在CMakeLists.txt
中找到add_service_files
配置srv
文件,如圖所示: -
添加生成消息時依賴
std_msgs
在CMakeLists.txt
中找到generate_messages
添加生成依賴,如圖所示: -
添加執行時依賴
在CMakeLists.txt
中找到catkin_package
添加執行依賴,如圖所示:
-
編譯生成中間文件
-
編譯
按快捷鍵ctrl + shift + B
編譯 -
生成的中間文件
編譯完成后就生成了C++
和Python
調用時所需的中間文件-
C++
的中間文件
生成的C++
中間文件在工作空間的devel/include/pluming_server_client
文件下,有一個請求文件和一個響應文件,請求文件就是需要請求的數據,響應文件就是響應請求數據后的返回數據
-
Python的中間文件
生成的Python中間文件在工作空間的devel/lib/python2.7/dist-packages/plumbing_server_client/srv
文件下
-