当前位置: 首页 > 专利查询>广州大学专利>正文

一种非ROS程序与ROS程序的交互通信系统技术方案

技术编号:34915639 阅读:15 留言:0更新日期:2022-09-15 07:05
本发明专利技术提供了一种非ROS程序与ROS程序的交互通信系统,包括ROS节点和代理节点,代理节点包括代理发布节点和代理订阅节点,代理发布节点包含两个部分,ROS发布器和基于TCP通信与中心通信节点的订阅者,代理订阅节点包含两个部分,ROS订阅器和基于TCP通信与中心通信节点的发布器。本发明专利技术提供了ROS程序当中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法,实现高吞吐率,在网络中减轻通信带宽压力,简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现。launch文件即可实现。launch文件即可实现。

【技术实现步骤摘要】
一种非ROS程序与ROS程序的交互通信系统


[0001]本专利技术属于网络通信
,特别涉及一种非ROS程序与ROS程序的交互通信系统。

技术介绍

[0002]ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。ROS虽然叫做操作系统,但并非Windows、Mac那样通常意义的操作系统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,基于ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。
[0003]在一个ROS程序中,包含了一系列的独立节点。这些节点之间,通过发布/订阅的消息模型进行通信。例如,某个传感器的驱动可以实现为一个节点,然后以发布消息的形式对外发送传感器数据。这些数据可以被多个其他节点接收,例如:过滤器,日志系统等等。
[0004]ROS程序中的节点可能位于不同的主机上,例如:在一个Arduino设备上发布消息,一台笔记本电脑订阅这些消息,一个Android手机也监测这些消息。节点之间通过发布和订阅主题进行通讯。例如,在某个机器人系统中,位于机器人上有一个相机模块可以获取图像数据。另外在机器人上有一个图像处理模块需要获取图像数据,与此同时还有另外一个位于个人PC上的模块也需要这些图像数据。那么,相机模块可以发布/image_data这个主题供其他两个模块来订阅。
[0005]ROS程序中包含了一个主节点,主节点使得其他节点可以查询彼此以进行通讯。所有节点都需要在主节点上进行注册,然后就可以与其他节点通讯了。
[0006]目前官方ROS实现分布式通信,需要在所有独立节点和主节点先安装ROS程序,然后在主节点布置ROS主通信程序,其它节点可以连上这个主通信程序。
[0007]因此,实现跟ROS进行分布式通信成本太高昂,大家寻思用C/S架构可能更符合移动平台的需求,于是提出了rosbridge协议,该协议的基本思想是将节点间的分布式通信,改成client节点与一个代理节点进行C/S通信,然后代理节点再将请求转发给server节点,多端就不需要实现整个ROS平台,只需要跟代理节点通信即可。它通过websocket以JSON格式的API为非ROS环境提供ROS通信支持
[0008]rosbridge采用websocket协议,WebSocket是为了满足基于Web的日益增长的实时通信需求而产生的。在传统的Web中,要实现实时通信,通用的方式是采用HTTP协议不断发送请求。
[0009]rosbridge以JSON作为API,JSON是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。JSON无法实现二进制的有效传输,如:需要把一张图片或二进制数据序列化成BASE64或其它编码方法成字符串。但这种方式浪费空间和带宽,序列化的过程占用时间,浪费各节点的CPU时间。

技术实现思路

[0010]本专利技术提供一种非ROS程序与ROS程序的交互通信系统,以解决现有技术存在的浪费带宽(HTTP HEAD是比较大的),又消耗服务器CPU占用(没有信息也要接受请求),无法实现二进制的有效传输,列化的过程占用时间,浪费各节点的CPU时间的问题。
[0011]本专利技术提供如下的技术方案:
[0012]一种非ROS程序与ROS程序的交互通信系统,ROS程序包括ROS节点和代理节点,ROS节点与代理节点完成数据交换后,代理节点再将数据请求转发给中心通信节点;
[0013]所述代理节点包括代理发布节点和代理订阅节点;
[0014]所述代理订阅节点包含ROS订阅器和基于TCP通信与中心通信节点的发布器,
[0015]ROS订阅器注册到节点管理器,ROS订阅器收到其订阅的主题上的所有消息,并且所有订阅同一主题的ROS订阅器接收到同样的消息,所述ROS订阅器接收的是基于Rosmsg协议的消息,将基于Rosmsg协议的消息转换成Protobuf信息,再通过所述基于TCP通信与中心通信节点的发布器转发Protobuf信息到所有订阅同一主题的非ROS平台;
[0016]所述代理发布节点包含ROS发布器和基于TCP通信与中心通信节点的订阅者,
[0017]基于TCP通信与中心通信节点的订阅者向该中心通信节点注册订阅,由中心通信节点来进行过滤,基于TCP通信与中心通信节点的订阅者接收的是基于Protobuf协议的消息,将基于Protobuf协议的消息转换成Rosmsg信息,再通过ROS发布器转发Rosmsg信息到ROS程序。
[0018]进一步地,所述非ROS平台包括中间件消息接口。
[0019]进一步地,在所述ROS程序中,使用msg描述文件定义模块间的消息接口。
[0020]进一步地,所述msg描述文件被转换成Protocol Buffers格式的proto的协议脚本文件,proto的协议脚本文件被编译成目标语言。
[0021]进一步地,所述目标语言包括C++、Java、Python、Objective

C、C#、JavaNano、JavaScript、Ruby、Go、PHP。
[0022]进一步地,所述目标语言的所有数组被转换成repeated类型的数组。
[0023]进一步地,所述中间件消息接口包括Publisher接口或Subscriber接口。
[0024]进一步地,所述Protocol Buffers格式能够将结构化数据序列化,所述Protocol Buffers格式用于数据存储、通信协议。
[0025]本专利技术的有益技术效果至少在于以下几点:
[0026](1)本专利技术提供了一个ROS程序中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法,包括话题的订阅和消息的发布将节点间的分布式通信,实现高吞吐率,Protobuf协议采用字节码编码,在网络中减轻通信带宽压力;
[0027](2)本专利技术简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现;
[0028](3)本专利技术支持Protobuf协议与ROS通信协议之间建立自动映射和转换的方法;
[0029](4)本专利技术支持中心化服务器和客户端组件;
[0030](5)本专利技术支持水平扩展及分布式通信。
附图说明
[0031]利用附图对本专利技术作进一步说明,但附图中的实施例不构成对本专利技术的任何限制,对于本领域的普通技术人员,在不付出创造性劳动的前提下,还可以根据以下附图获得其它的附图。
[0032]图1是本专利技术实施例非ROS程序与ROS程序通信技术方法的示意图;
[0033]图2是本专利技术无人机穿环实用案例进行图像数据通讯测试示意图;...

【技术保护点】

【技术特征摘要】
1.一种非ROS程序与ROS程序的交互通信系统,其特征在于,ROS程序包括ROS节点和代理节点,ROS节点与代理节点完成数据交换后,代理节点再将数据请求转发给中心通信节点;所述代理节点包括代理发布节点和代理订阅节点;所述代理订阅节点包含ROS订阅器和基于TCP通信与中心通信节点的发布器,ROS订阅器注册到节点管理器,ROS订阅器收到其订阅的主题上的所有消息,并且所有订阅同一主题的ROS订阅器接收到同样的消息,所述ROS订阅器接收的是基于Rosmsg协议的消息,将基于Rosmsg协议的消息转换成Protobuf信息,再通过所述基于TCP通信与中心通信节点的发布器转发Protobuf信息到所有订阅同一主题的非ROS平台;所述代理发布节点包含ROS发布器和基于TCP通信与中心通信节点的订阅者,基于TCP通信与中心通信节点的订阅者向该中心通信节点注册订阅,由中心通信节点来进行过滤,基于TCP通信与中心通信节点的订阅者接收的是基于Protobuf协议的消息,将基于Protobuf协议的消息转换成Rosmsg信息,再通过ROS发布器转发Rosmsg信息到ROS程序。2.根据权利要求1所述的非ROS程序与ROS程序的交互通信系统,其特征在于,所述非ROS平台包括中间件消息接口。3....

【专利技术属性】
技术研发人员:陈晓聪张艺川
申请(专利权)人:广州大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1