參考資料:node
https://www.icourse163.org/course/ISCAS-1002580008?tid=1003713012 //中國大學MOOC數組
https://www.bilibili.com/video/av23401751 //B站服務器
《ROS操做系統入門講義》PDF下載架構
連接:https://pan.baidu.com/s/1OCja2WLDRnjYXMrpnZ3-sQ
提取碼:mziyide
第四章 ROS通訊架構(二)spa
1、Service 服務 //適用於臨時的、非週期性的數據操作系統
(1)同步通訊:Node A發佈請求後會在原地等待reply(阻塞狀態),直到Node B處理完了請求而且完成了reply,Node A纔會繼續執行命令行
(2)topic VS servicessr
注:service是不能重名的,一個service只能由一個server提供code
(3)經常使用命令 //注意與 rossrv 的區別
2、 srv //和msg文件類型,srv文件是用來描述服務service的通訊數據格式
1. 示例 msgs_demo/srv/DetectHuman.srv //查詢當前深度攝像頭中的人體姿態和關節數
(1)srv文件以 --- 隔開請求和應答,上方爲請求,下方爲應答;本例中請求爲請求爲是否開始檢測,應答爲一個數組,數組的每一個元素爲某我的的姿態(HumanPose)
(2)srv能夠嵌套msg,但不能嵌套srv;本例中HumanPose爲嵌套的msg
3、參數服務器 //參數服務器是節點存儲參數的地方,用於配置全局共享參數
1. 「特殊」的通訊方式:使用互聯網傳輸,在節點管理器中運行
2. 參數服務器維護一個數據字典,字典內存儲各個參數和配置,更加靜態
3. 維護方式
(1)命令行維護:使用 rosparam 命令
注:load和dump的文件須要遵照YAML格式,即「名稱 + :+ 值」 //能夠理解爲鍵值對的字典
(2)launch文件內讀寫:<param>標籤和<rosparam>標籤
(3)node源碼:利用API對參數服務器進行操做
見後文 "機器人操做系統入門(六)"
4. 參數類型:ROS參數服務器爲參數值使用XMLRPC數據類型,其中包括:strings, integers, floats, booleans, lists, dictionaries, iso8601 dates, and base64-encoded data
4、Action //適合長時間的通訊過程,且須要知道狀態和結果的場景,能夠隨時查看過程進度(反饋),也能夠終止請求
1. 通訊接口
注:客戶端會向服務器發送目標指令和取消動做指令,而服務器則能夠給客戶端發送實時的狀態信息、結果信息和反饋信息等
2. Action規範文件.action格式
注:由 --- 分隔開動做的三部份內容,從上到下分別爲 目標、結果、反饋