|
一、Rosbridge
1 简介
Rosbridge是一个用在ROS系统和其他系统之间的一个功能包,就像是它的名字一样,起到一个"桥梁"的作用,使得ros系统和其他系统能够进行交互.Rosbridge为非ROS程序提供了一个JSON
API,有许多与Rosbridge进行交互的前端,包括一个用于Web浏览器交互的WebSocket服务器。Rosbridge_suite是一个包含Rosbridge的元程序包,用于Rosbridge的各种前端程序包(如WebSocket程序包)和帮助程序包。
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进行交流。
3 安装与使用
安装
Rosbridge是基于ROS的,首先要确保自己正确的安装完成了ROS之后可以启动终端执行命令:
sudo apt-get install ros- <rosdistro> -rosbridge-server
中间的为自己的ROS版本,依照自己的版本进行安装.
参考链接
二、Protobuf
Protobuf实际是一套类似Json或者XML的数据传输格式和规范,用于不同应用或进程之间进行通信时使用。通信时所传递的信息是通过Protobuf定义的message数据结构进行打包,然后编译成二进制的码流再进行传输或者存储。
1.Protobuf的优点
相比较而言,Protobuf有如下优点:
1)足够简单
2)序列化后体积很小:消息大小只需要XML的1/10 ~ 1/3
3)解析速度快:解析速度比XML快20 ~ 100倍
4)多语言支持
5)更好的兼容性,Protobuf设计的一个原则就是要能够很好的支持向下或向上兼容
2.使用
使用Protobuf有如下几个步骤:
1)定义消息
2)初始化消息以及存储传输消息
3)读取消息并解析
下面以一个实际的例子来说明如何使用Protobuf,先展示出项目的实际目录结构:
* 定义消息
Protobuf的消息结构是通过一种叫做Protocol Buffer Language的语言进行定义和描述的,实际上Protocol Buffer Language分为两个版本,版本2和版本3,默认不声明的情况下使用的是版本2,下面以版本2为来举个栗子, 假设我们定义了文件名为my.helloworld.proto的文件,如下:
-I: 是设定源路径
--python_out: 用于设定编译后的输出结果,如果使用其它语言请使用对应语言的option
最后一个参数是你要编译的proto文件
现在已经定义好了消息的数据结构,接下来看下如何使用
* 消息初始化和存储传输
我们来通过writer.py来初始化消息并存储为文件,代码如下:
Reference:
Developer Guide
Github |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|