rosbridge_suite入门教程-rosbridge_suite介绍
rosbridge_suite入门教程-rosbridge_suite介绍
说明:
- 介绍rosbridge_suite协议及安装
rosbridge
- Rosbridge为非ROS程序提供了一个使用ROS功能的JSON API。
- 有许多前端与rosbridge接口,包括一个WebSocket服务器,用于Web浏览器进行交互。
- Rosbridge_suite是一个包含rosbridge的元包,rosbridge的各种前端包,像一个WebSocket包和帮助包。
- rosbridge包含两个部分:
- rosbridge协议
- rosbridge实现
rosbridge协议
- rosbridge协议是用于向ROS(并且在理论上,任何其他机器人中间件)发送基于JSON的命令的规范。
- 订阅主题的协议示例:
{ "op": "subscribe",
"topic": "/cmd_vel",
"type": "geometry_msgs/Twist"
}
- 规范是编程语言和传输方式无关。
- 想法是任何语言或传输可以发送JSON形式的rosbridge协议与ROS交互。
- 协议涵盖订阅和发布主题,服务调用,获取和设置参数,甚至压缩消息等。
- 详细的规范定义参考github说明
rosbridge实现
- rosbridge_suite包是一个包集合,用于实现rosbridge协议和提供WebSocket传输层。
- 包含如下几个包:
- rosbridge_library - 核心rosbridge包。rosbridge_library负责获取JSON字符串并将命令发送到ROS,反之亦然。
- rosapi - 通过服务调用使某些ROS actions可访问。 这包括获取和设置参数,获取主题列表等。
- rosbridge_server - 虽然rosbridge_library提供了JSON ROS转换,但它将传输层留给其他人。
- Rosbridge_server提供了一个WebSocket连接,所以浏览器可以“与rosbridge交谈”。
- Roslibjs是一个浏览器的JavaScript库,可以通过rosbridge_server与ROS交谈。
rosbridge安装
- 新终端输入:
sudo apt-get install ros-<rosdistro>-rosbridge-server
为对应的ros版本,如indigo
Rosbridge运行
- 新终端,运行rosbridge并启动websocket:
roslaunch rosbridge_server rosbridge_websocket.launch
- 默认情况下,这将运行rosbridge并创建一个WebSocket在端口9090
- 您可以通过在ROS中设置~/port参数来配置端口。
- 例如修改端口为8080,如下所示:
<launch>
<include file="$(find rosbridge_server)/launch/rosbridge_websocket.launch" >
<arg name="port" value="8080"/>
</include>
</launch>
- 现在rosbridge已经启动,并且WebSocket连接可用,我们可以创建一个基本的HTML网页发送和接收呼叫rosbridge。
- Roslibjs是一个JavaScript库,为您处理通信。
- 查看roslibjs教程的入门,使用roslibjs和rosbridge创建一个网页。
Rosbridge开发
- Rosbridge套件提供了一套默认的套件,用于在WebSocket传输层使用rosbridge协议。
- 然而,协议是传输层无关的,并且可以非常好地支持TCP和其他传输。
(1)构建Rosbridge包
- 安装rosauth
sudo apt-get install ros-indigo-rosauth
- 加入ROS环境
source /opt/ros/indigo/setup.bash
- 创建工作空间和下载代码
$ mkdir -p ~/catkin_ws/src
$ cd ~/catkin_ws/src
$ git clone https://github.com/RobotWebTools/rosbridge_suite.git
- 编译
$ cd ~/catkin_ws
$ catkin_make
- 加入工作环境
$ cd ~/catkin_ws
$ source devel/setup.bash
获取最新文章: 扫一扫右上角的二维码加入“创客智造”公众号