# 5.5 Rosbridge
### 5.5.1 簡介
>Rosbridge是一個用在ROS系統和其他系統之間的一個功能包,就像是它的名字一樣,起到一個"橋梁"的作用,使得ros系統和其他系統能夠進行交互.Rosbridge為非ROS程序提供了一個JSON API,有許多與Rosbridge進行交互的前端,包括一個用于Web瀏覽器交互的WebSocket服務器。Rosbridge_suite是一個包含Rosbridge的元程序包,用于Rosbridge的各種前端程序包(如WebSocket程序包)和幫助程序包。
### 5.5.2 協議和實現
Rosbridge主要包含兩部分內容:協議(Potocol)和實現(Implementation)
##### 協議
Rosbridge Protocol提供了非ROS程序與ROS通信的具體的格式規范,規范基于JSON格式,包括訂閱topic,發布message,調用server,設置參數,壓縮消息等等.例如訂閱topic的格式規范如下:
{ "op": "subscribe",
"topic": "/cmd_vel",
"type": "geometry_msgs/Twist"
}
此規范與所用的編程語言和傳輸方式無關,任何可以發送JSON格式的語音和傳輸方式都可以Rosbridge protocol進行交流,并且與ROS進行交互.
##### 實現
Rosbridge_suite元程序包是實現Rosbridge Protocol并提供WebSocket傳輸層的包的集合。
這些軟件包包括:
* Rosbridge_library : 核心rosbridge軟件包。Rosbridge_library負責獲取JSON字符串并將命令發送到ROS,反過來接收處理ROS發過來的信息,將之轉換為JSON字符串,并將結果轉交給非ROS程序。
* rosapi : 通過服務調用來訪問某些ROS操作,這些服務通常為ROS客戶端庫保留的服務.這些操作包括獲取和設置參數,獲取主題列表等等。
* rosbridge_server : 雖然Rosbridge_library提供JSON到ROS轉換,但它將傳輸層留給其他人。Rosbridge_server提供了一個WebSocket連接,所以瀏覽器可以與ROS“交談”。Roslibjs是一個瀏覽器的JavaScript庫,可以通過rosbridge_server與ROS進行交流。
[源碼](https://github.com/RobotWebTools/rosbridge_suite)
### 5.5.3 安裝與使用
##### 安裝
Rosbridge是基于ROS的,首先要確保自己正確的安裝完成了ROS之后可以啟動終端執行命令:
`sudo apt-get install ros- <rosdistro> -rosbridge-server`
中間的<rosdistro>為自己的ROS版本,依照自己的版本進行安裝.
##### 使用
關于更深入的使用,可以參考本課程的視頻課程,簡單的入門使用可以參考鏈接如下:
[參考鏈接](http://wiki.ros.org/rosbridge_suite/Tutorials/RunningRosbridge)
- 前言
- 第一章 ROS簡介
- 機器人時代的到來
- ROS發展歷程
- 什么是ROS
- 安裝ROS
- 安裝ROS-Academy-for-Beginners教學包
- 二進制與源碼包
- 安裝RoboWare Studio
- 單元測試一
- 第二章 ROS文件系統
- Catkin編譯系統
- Catkin工作空間
- Package軟件包
- CMakeLists.txt
- package.xml
- Metapacakge軟件元包
- 其他常見文件類型
- 單元測試二
- 第三章 ROS通信架構(一)
- Node & Master
- Launch文件
- Topic
- Msg
- 常見msg類型
- 單元測試三
- 第四章 ROS通信架構(二)
- Service
- Srv
- Parameter server
- Action
- 常見srv類型
- 常見action類型
- 單元測試四
- 第五章 常用工具
- Gazebo
- RViz
- Rqt
- Rosbag
- Rosbridge
- moveit!
- 單元測試五
- 第六章 roscpp
- Client Library與roscpp
- 節點初始、關閉與NodeHandle
- Topic in roscpp
- Service in roscpp
- Param in roscpp
- 時鐘
- 日志與異常
- 第七章 rospy
- Rospy與主要接口
- Topic in rospy
- Service in rospy
- Param與Time
- 第八章 TF與URDF
- 認識TF
- TF消息
- tf in c++
- tf in python
- 統一機器人描述格式
- 附錄:TF數學基礎
- 三維空間剛體運動---旋轉矩陣
- 三維空間剛體運動---歐拉角
- 三維空間剛體運動---四元數
- 第九章 SLAM
- 地圖
- Gmapping
- Karto
- Hector
- 第十章 Navigation
- Navigation Stack
- move_base
- costmap
- Map_server & Amcl
- 附錄:Navigation工具包說明
- amcl
- local_base_planner
- carrot_planner
- clear_costmap_recovery
- costmap_2d
- dwa_local_planner
- fake_localization
- global_planner
- map_server
- move_base_msg
- move_base
- move_slow_and_clear
- navfn
- nav_core
- robot_pose_ekf
- rotate_recovery