ROS服务通信机制原理及示例代码
生活随笔
收集整理的這篇文章主要介紹了
ROS服务通信机制原理及示例代码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ROS服務通信:節點間直接通信并獲得應答.服務需要用戶自己開發,可在功能包下創建srv文件夾并編寫源代碼,服務類型是功能包名稱和.srv文件名稱的組合,比如python中引入srv類型為,from gqcnn.srv import IMAGEprocess,其中gqcnn為功能包,srv為gqcnn下的文件夾.
?
1. 在srv文件夾下創建 IMAGEprocess.srv文件,在里面寫上請求參數和應答參數,其中 --- 上面是request的參數,下方是response參數
2. 編寫IMAGEprocess.srv文件后,需要編譯生成c++/python等語言的庫,以便后面調用,此時需配置package.xml以及CmakeLists.txt文件,在package.xml文件中加上如下圖兩行代碼
在CmakeLists.txt文件中加上如下幾個模塊,若有模塊,則直接加上沒有的代碼,若無,則加上模塊并編寫代碼,由于我這邊使用的是bool和float32數據類型,所以代碼中使用的是std_msgs,若你使用了自定義數據類型或其它數據類型需進行更換.
find_package(catkin REQUIRED COMPONENTSrospymessage_generationstd_msgs )add_service_files(FILESIMAGEprocess.srv )generate_messages(DEPENDENCIESstd_msgs )catkin_package(CATKIN_DEPENDS message_runtime )3. 此時對工作空間進行編譯,則在下圖中路徑則會生成相應的編程語言庫,我使用的是python,所以是在python文件夾下
同時也可執行rossrv show IMAGEprocess查看服務類型是否定義成功,如下圖
4. 服務類型定義成功,則可在程序中進行引用,由于我使用的是python,所以在Python命令行中測試,測試結果如下圖,由于中間有些提示信息,故省略了中間部分截圖,import時沒有提示或報錯則成功
?
Tip: 編寫完 .srv文件以及修改package.xml和CmakeLists.txt文件后需要重新編譯工作空間,直接catkin_make可能不會馬上起效,需要rebuild或者把原先工作空間下的devel和build文件夾刪除再catkin_make.
總結
以上是生活随笔為你收集整理的ROS服务通信机制原理及示例代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用camera_calibration
- 下一篇: Dex-net再次复现