ROS进阶学习(七) - rosbrige_suite

rosbrige为没有ROS的功能模块提供了一个JSON的接口(JSON是一种websocket通讯的数据形式,非常简单除暴而不顾及内存,其实我挺不喜欢)。有很多前端可以与Rosbridge 互动,包括websocket服务器。Rosbridge_suite是一个复合的功能包,包含了rosbridge,各种前端封装包,和一个帮助包。
参考文献:ROS wiki
源码:https://github.com/RobotWebTools/rosbridge_suite.git

1 关于

这里包括两部分:协议和实现

1.1 Rosbridge协议

Rosbridge Protocol就是向ROS发送JSON命令的一个规范,使用这个协议订阅一个主题的例子如下:

{ "op": "subscribe",
  "topic": "/cmd_vel",
  "type": "geometry_msgs/Twist"
}

这个规范不针对任何编程语言和传输方式,只要支持JSON即可。

1.2 实现

rosbridge_suite是一个集合,提供了一个微博创可贴传输层。
这个包包括:

  • rosbridge_library 核心rosbridge包。rosbridge_library负责接受JSON命令并将指令发送给ROS,同样,由ROS发送的指令会由其转换为JSON字符串发出。
  • rosapi 使某个ROS可执行程序可以访问为ROS client libraries准备的服务。包括获取和设置参数,得到主题列表等。
  • rosbridge_server 当 rosbridge_library提供JSON <-> ROS的转换,它将传输层就提供给了其他程序。Rosbridge_server提供了一个websocket连接,所以浏览器就可以与rosbridge通信了。

2 源码

源码可以直接由github获取:https://github.com/RobotWebTools/rosbridge_suite

3 安装

Rosbridge可以直接debian安装:

sudo apt-get install ros--rosbridge-server

4 教程

4.1 初级教程

这个教程的内容是如何启动rosbridge server 并且和它通信。

4.1.1 安装Rosbridge

安装了ROS之后,就可以安装Rosbridge,指令如下:

sudo apt-get install ros--rosbridge-suite

4.1.2 运行Rosbridge

安装完ROS和Rosbridge以后,首先需要让系统知道他们的存在,就是配置一下环境变量:

source /opt/ros/kinetic/setup.bash

接下来就可以启动Rosbridge了,启动rosbridge和它的包,比如osbridge_server 和 rosapi,安装的时候安装了一个启动文件,用法如下:

roslaunch rosbridge_server rosbridge_websocket.launch

运行该文件,就会启动rosbridge并且创建了一个websocket,默认监听9090端口。
我们可以通过修改 ~/port 参数监听其他的端口,示例如下:


   
     
  

4.1.3 与Rosbridge通信

可以找一个简单的websocket客户端在线测试网页,连接它测试一下。

4.2 进阶教程

这里要介绍的是如何在rosbridge上开发。

4.2.1 编译Rosbridge

Rosbridge 2.0支持像Catkin一样管理编译。

  • 1安装rosbridge依赖rosauth
sudo apt-get install ros-kinetic-rosauth

其实前面已经安装过了

  • 2 source一下
source /opt/ros/kinetic/setup.bash
  • 3 创建一个工作空间
mkdir ~/ws
  • 4 clone rosbridge suite 资源
mkdir ~/ws/src
cd ~/ws/src
git clone https://github.com/RobotWebTools/rosbridge_suite.git
  • 5 编译rosbridge
cd ~/ws
catkin_make
  • 6 安装
    把新编译的rosbridge安装到ROS路径
cd ~/ws
source devel/setup.bash

后面可以参照教程4.1运行了。

你可能感兴趣的:(ROS进阶学习(七) - rosbrige_suite)