1.rosbridge介紹
rosbridge(rosbridge_suite)是ros官方為開發者提供的一個用於非ros系統和ros系統進行交互通信的功能包。rosbridge主要包含兩個部分,Rosbridge Protocol和Rosbridge Implementation。其中Protocol部分提供了非ros系統和ros系統通信的具體格式,包括話題的訂閱,消息的發布,服務的調用,參數的設置和獲取,圖片信息的傳遞等等,都是JSON格式的字符串。Implementation部分是rosbridge的具體實現,包含rosapi,rosbridge_library,rosbridge_server等包。rosapi通過服務調用使某些ROS action可訪問,包括獲取和設置參數,獲取主題列表等。rosbridge_library是核心rosbridge包。rosbridge_library負責獲取JSON字符串並將命令發送到ros,反之亦然。rosbridge_server負責通信的傳輸層,包括websocket,tcp,udp等幾種格式。
2.rosbridge的安裝
sudo apt-get install ros-indigo-rosbridge-server
這里我安裝的是indigo版本,具體版本視自己安裝的ros版本而定。
3.rosbridge應用
rosbridge針對BS 架構和CS架構分別提供了相應的解決方案。
在BS架構中,rosbridge提供了roslibjs庫,roslibjs是一個通過瀏覽器和ros系統進行交互的javascript庫。在終端通過如下代碼roslaunch rosbridge_server rosbridge_websocket.launch
啟動websocket,並在html中載入roslibjs庫,就可以在html中依照指定的格式和ros系統進行通信了。
在CS架構中,rosbridge提供了TCP協議和UDP協議兩種方式,其中因為TCP協議需要三次握手,因此比較穩定准確,而UDP協議速度更快,但會發生丟包,因此存在不准確性。相應的啟動方式分別為roslaunch rosbridge_server rosbridge_tcp.launch
和roslaunch rosbridge_server rosbridge_udp.launch
具體的通信內容都遵從JSON格式的字符串,詳細信息請查看官網 。