CN115052031A - 一种非ros程序与ros程序的交互通信系统 - Google Patents
一种非ros程序与ros程序的交互通信系统 Download PDFInfo
- Publication number
- CN115052031A CN115052031A CN202210566735.5A CN202210566735A CN115052031A CN 115052031 A CN115052031 A CN 115052031A CN 202210566735 A CN202210566735 A CN 202210566735A CN 115052031 A CN115052031 A CN 115052031A
- Authority
- CN
- China
- Prior art keywords
- ros
- node
- program
- communication
- protocol
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/34—Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/03—Protocol definition or specification
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/08—Protocols for interworking; Protocol conversion
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/16—Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L69/163—In-band adaptation of TCP data exchange; In-band control procedures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明提供了一种非ROS程序与ROS程序的交互通信系统,包括ROS节点和代理节点,代理节点包括代理发布节点和代理订阅节点,代理发布节点包含两个部分,ROS发布器和基于TCP通信与中心通信节点的订阅者,代理订阅节点包含两个部分,ROS订阅器和基于TCP通信与中心通信节点的发布器。本发明提供了ROS程序当中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法,实现高吞吐率,在网络中减轻通信带宽压力,简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现。
Description
技术领域
本发明属于网络通信技术领域,特别涉及一种非ROS程序与ROS程序的交互通信系统。
背景技术
ROS是一个适用于机器人编程的框架,这个框架把原本松散的零部件耦合在了一起,为他们提供了通信架构。ROS虽然叫做操作系统,但并非Windows、Mac那样通常意义的操作系统,它只是连接了操作系统和你开发的ROS应用程序,所以它也算是一个中间件,基于ROS的应用程序之间建立起了沟通的桥梁,所以也是运行在Linux上的运行时环境,在这个环境上,机器人的感知、决策、控制算法可以更好的组织和运行。
在一个ROS程序中,包含了一系列的独立节点。这些节点之间,通过发布/订阅的消息模型进行通信。例如,某个传感器的驱动可以实现为一个节点,然后以发布消息的形式对外发送传感器数据。这些数据可以被多个其他节点接收,例如:过滤器,日志系统等等。
ROS程序中的节点可能位于不同的主机上,例如:在一个Arduino设备上发布消息,一台笔记本电脑订阅这些消息,一个Android手机也监测这些消息。节点之间通过发布和订阅主题进行通讯。例如,在某个机器人系统中,位于机器人上有一个相机模块可以获取图像数据。另外在机器人上有一个图像处理模块需要获取图像数据,与此同时还有另外一个位于个人PC上的模块也需要这些图像数据。那么,相机模块可以发布/image_data这个主题供其他两个模块来订阅。
ROS程序中包含了一个主节点,主节点使得其他节点可以查询彼此以进行通讯。所有节点都需要在主节点上进行注册,然后就可以与其他节点通讯了。
目前官方ROS实现分布式通信,需要在所有独立节点和主节点先安装ROS程序,然后在主节点布置ROS主通信程序,其它节点可以连上这个主通信程序。
因此,实现跟ROS进行分布式通信成本太高昂,大家寻思用C/S架构可能更符合移动平台的需求,于是提出了rosbridge协议,该协议的基本思想是将节点间的分布式通信,改成client节点与一个代理节点进行C/S通信,然后代理节点再将请求转发给server节点,多端就不需要实现整个ROS平台,只需要跟代理节点通信即可。它通过websocket以JSON格式的API为非ROS环境提供ROS通信支持
rosbridge采用websocket协议,WebSocket是为了满足基于Web的日益增长的实时通信需求而产生的。在传统的Web中,要实现实时通信,通用的方式是采用HTTP协议不断发送请求。
rosbridge以JSON作为API,JSON是一种轻量级的数据交换格式。它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。JSON无法实现二进制的有效传输,如:需要把一张图片或二进制数据序列化成BASE64或其它编码方法成字符串。但这种方式浪费空间和带宽,序列化的过程占用时间,浪费各节点的CPU时间。
发明内容
本发明提供一种非ROS程序与ROS程序的交互通信系统,以解决现有技术存在的浪费带宽(HTTP HEAD是比较大的),又消耗服务器CPU占用(没有信息也要接受请求),无法实现二进制的有效传输,列化的过程占用时间,浪费各节点的CPU时间的问题。
本发明提供如下的技术方案:
一种非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程序。
进一步地,所述非ROS平台包括中间件消息接口。
进一步地,在所述ROS程序中,使用msg描述文件定义模块间的消息接口。
进一步地,所述msg描述文件被转换成Protocol Buffers格式的proto的协议脚本文件,proto的协议脚本文件被编译成目标语言。
进一步地,所述目标语言包括C++、Java、Python、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP。
进一步地,所述目标语言的所有数组被转换成repeated类型的数组。
进一步地,所述中间件消息接口包括Publisher接口或Subscriber接口。
进一步地,所述Protocol Buffers格式能够将结构化数据序列化,所述ProtocolBuffers格式用于数据存储、通信协议。
本发明的有益技术效果至少在于以下几点:
(1)本发明提供了一个ROS程序中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法,包括话题的订阅和消息的发布将节点间的分布式通信,实现高吞吐率,Protobuf协议采用字节码编码,在网络中减轻通信带宽压力;
(2)本发明简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现;
(3)本发明支持Protobuf协议与ROS通信协议之间建立自动映射和转换的方法;
(4)本发明支持中心化服务器和客户端组件;
(5)本发明支持水平扩展及分布式通信。
附图说明
利用附图对本发明作进一步说明,但附图中的实施例不构成对本发明的任何限制,对于本领域的普通技术人员,在不付出创造性劳动的前提下,还可以根据以下附图获得其它的附图。
图1是本发明实施例非ROS程序与ROS程序通信技术方法的示意图;
图2是本发明无人机穿环实用案例进行图像数据通讯测试示意图;
图3是本发明控制端通过rqt调用rqt_topic工具插件对图像数据进行监控示意图;
图4是本发明图像消息话题频率监控示意图。
具体实施方式
下面对本发明的实施例作详细说明,下述的实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
实施例:
参见图1-图4,本发明提供实施例提供的非ROS程序与ROS程序的交互通信系统,其基本思想是将ROS节点间的分布式通信,改成ROS节点与代理节点完成数据交换,然后代理节点再将请求转发给中心通信节点,这样其它非ROS平台(如:高性能计算、动力学计算、虚拟仿真器等)就不需要实现整个ROS平台,只需要跟中心通信节点通信即可。
本发明的代理节点在ROS程序中是一个应用程序,该应用程序可以是代理发布节点或代理订阅节点,可通过配置文件设置。
本发明的代理发布节点包含两个部分,第一部分是ROS发布器,第二部分是基于TCP通信与中心通信节点的订阅者。TCP订阅者向该中心通信节点注册订阅,由中心通信节点来进行过滤。TCP订阅者接收的是基于Protobuf协议的消息,将Protobuf协议转换成Rosmsg,再通过ROS发布器转发到ROS程序。该应用程序的ROS发布器和TCP订阅器关注相同的主题消息,只要其它ROS的订阅器关注相同的主题消息,即可消费该Rosmsg消息。
本发明的代理订阅节点包含两个部分,第一部分是ROS订阅器,第二部分是基于TCP通信与中心通信节点的发布器。ROS订阅器注册到节点管理器,ROS订阅器将收到其订阅的主题上的所有消息,并且所有订阅同一主题的ROS订阅器将接收到同样的消息。ROS订阅者接收的是基于Rosmsg协议的消息,将Rosmsg协议转换成Protobuf,再通过TCP发布器转发到所有所有订阅同一主题非ROS平台。
本发明非ROS平台通过中间件消息接口的方式来实现(如:dll、so、jar等),只需要实现Publisher、Subscriber接口。
在ROS程序中,使用msg描述文件定义模块间的消息接口。但不幸的是,接口升级之后不同的版本的模块难以兼容。本发明Protocol Buffers格式数据来解决这个问题,Protocol Buffers,是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,可用于数据存储、通信协议等方面。它不依赖于语言和平台并且可扩展性极强。现阶段官方支持C++、JAVA、Python三种编程语言,但可以找到大量的几乎涵盖所有语言的第三方拓展包。
本发明将ROS的msg描述文件转换成Protocol Buffers格式的proto的协议脚本文件,然后将proto文件编译成目标语言的编译工具,目前可生成的以下语言C++、Java、Python、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP。
转换的方式如表1所示:
表1
另外,所有数组会转换成repeated类型。
以下是一个生成的proto文件的编写:
syntax="proto3";
import"pb/ros/std_msgs/Header.proto";
import"pb/ros/sensor_msgs/RegionOfInterest.proto";
package pb.ros.sensor_msgs;
message CameraInfo{
pb.ros.std_msgs.Header header=1;
uint32 height=2;
uint32 width=3;
string distortion_model=4;
repeated double D=5;
repeated double K=6;
repeated double R=7;
repeated double P=8;
uint32 binning_x=9;
uint32 binning_y=10;
pb.ros.sensor_msgs.RegionOfInterest roi=11;
}
在使用时,只需要配置launch文件方式启动,然后运行roslaunch.launch命令,如下显示:
采用以上的实施例验证上述实施方式,得到的有益效果为:
本发明基本思想是将ROS节点间的分布式通信,改成ROS节点与代理节点完成数据交换,然后代理节点再将请求转发给中心通信节点,这样其它非ROS平台(如:高性能计算、动力学计算、虚拟仿真器等)就不需要实现整个ROS平台,只需要跟中心通信节点通信即可。本发明是一个ROS程序当中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法。包括话题的订阅和消息的发布将节点间的分布式通信的方法,包括话题的订阅和消息的发布将节点间的分布式通信,实现高吞吐率,Protobuf协议采用字节码编码,在网络中减轻通信带宽压力,同时简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现。
仿真条件:以下是以无人机穿环实用案例进行图像数据通讯测试,在场景仿真系统上(渲染节点)经过通讯节点为无人机穿环控制端(ROS机器人操作系统节点)试验发送4K分辨率无压缩图像数据(约14Hz频率),如图2所示。
仿真系统上,代码记录下每相邻两次图像数据发出的时刻,并将其时间间隔输出至日志中记录,部分日志截图如图3发送日志示意图所示,即实际发送频率为13~14Hz。然后,在控制端通过rqt调用rqt_topic工具插件对图像数据进行监控,如图4截图所示。可知监控图像实际接收频率为13.41Hz。同时,图像分辨率为3840×2160,每个像素占用4字节(无符号32位整型),因此共有3840×2160×4字节,即理论约每帧33M字节,符合监控显示数据带宽量。亦可使用rostopic行命令工具在终端通过调用命令“rostopic hz”对图像消息话题进行长时间监控。该命令将会报告消息话题整个监控期间内的平均速率。可知38768次数据采样间(当前速率下共约40分钟),图像平均接受频率约13.224Hz。
综上所述,本发明实施例提供了一个ROS程序当中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法,包括话题的订阅和消息的发布将节点间的分布式通信。有益效果:
(1)现高吞吐率,Protobuf协议采用字节码编码,在网络中减轻通信带宽压力;
(2)简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现;
(3)支持Protobuf协议与ROS通信协议之间建立自动映射和转换的方法;
(4)支持中心化服务器和客户端组件;
(5)支持水平扩展及分布式通信。
本发明上述实施例提供了ROS程序当中的中间件,基于TCP通讯方式以Protobuf格式的API为非ROS环境提供与ROS程序进行交互通信的方法,实现高吞吐率,在网络中减轻通信带宽压力,简化非ROS节点与ROS节点的环境配置,只需要一个launch文件即可实现。
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的试验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
Claims (8)
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.根据权利要求2所述的非ROS程序与ROS程序的交互通信系统,其特征在于,在所述ROS程序中,使用msg描述文件定义模块间的消息接口。
4.根据权利要求3所述的非ROS程序与ROS程序的交互通信系统,其特征在于,所述msg描述文件被转换成Protocol Buffers格式的proto的协议脚本文件,proto的协议脚本文件被编译成目标语言。
5.根据权利要求4所述的非ROS程序与ROS程序的交互通信系统,其特征在于,所述目标语言包括C++、Java、Python、Objective-C、C#、JavaNano、JavaScript、Ruby、Go、PHP。
6.根据权利要求5所述的非ROS程序与ROS程序的交互通信系统,其特征在于,所述目标语言的所有数组被转换成repeated类型的数组。
7.根据权利要求2所述的非ROS程序与ROS程序的交互通信系统,其特征在于,所述中间件消息接口包括Publisher接口或Subscriber接口。
8.根据权利要求4所述的非ROS程序与ROS程序的交互通信系统,其特征在于,所述Protocol Buffers格式能够将结构化数据序列化,所述Protocol Buffers格式用于数据存储、通信协议。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210566735.5A CN115052031B (zh) | 2022-05-24 | 2022-05-24 | 一种非ros程序与ros程序的交互通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210566735.5A CN115052031B (zh) | 2022-05-24 | 2022-05-24 | 一种非ros程序与ros程序的交互通信系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115052031A true CN115052031A (zh) | 2022-09-13 |
CN115052031B CN115052031B (zh) | 2023-05-19 |
Family
ID=83159371
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210566735.5A Active CN115052031B (zh) | 2022-05-24 | 2022-05-24 | 一种非ros程序与ros程序的交互通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115052031B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763447A (zh) * | 2009-12-28 | 2010-06-30 | 中国农业大学 | 三维造型软件与有限元分析软件之间数据自动转换的方法 |
CN101877021A (zh) * | 2009-12-28 | 2010-11-03 | 中国农业大学 | 动力学分析、三维造型和有限元分析软件间数据自动转换的方法 |
CN102523225A (zh) * | 2011-12-22 | 2012-06-27 | 浙江国自机器人技术有限公司 | 分布式松耦合构架中的解耦方法及分布式松耦合构架平台 |
CN108897572A (zh) * | 2018-07-19 | 2018-11-27 | 北京理工大学 | 一种基于变量关联树的复杂类型重构方法 |
CN109117142A (zh) * | 2018-07-19 | 2019-01-01 | 北京理工大学 | 一种基于变量关联树的基本类型重构方法 |
-
2022
- 2022-05-24 CN CN202210566735.5A patent/CN115052031B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101763447A (zh) * | 2009-12-28 | 2010-06-30 | 中国农业大学 | 三维造型软件与有限元分析软件之间数据自动转换的方法 |
CN101877021A (zh) * | 2009-12-28 | 2010-11-03 | 中国农业大学 | 动力学分析、三维造型和有限元分析软件间数据自动转换的方法 |
CN102523225A (zh) * | 2011-12-22 | 2012-06-27 | 浙江国自机器人技术有限公司 | 分布式松耦合构架中的解耦方法及分布式松耦合构架平台 |
CN108897572A (zh) * | 2018-07-19 | 2018-11-27 | 北京理工大学 | 一种基于变量关联树的复杂类型重构方法 |
CN109117142A (zh) * | 2018-07-19 | 2019-01-01 | 北京理工大学 | 一种基于变量关联树的基本类型重构方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115052031B (zh) | 2023-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106657394B (zh) | 一种基于物联网大数据的设备信息采集系统及方法 | |
CN102546794B (zh) | 浏览器客户端与后端服务器直通的方法、网关和通信系统 | |
CN111082904B (zh) | 一种基于rtos的rpc通信方法 | |
EP0987868A3 (en) | Method and architecture for interactive two-way communication devices to interact with a network | |
CN108769017B (zh) | 一种数据通信方法及装置 | |
CN114157537A (zh) | 一种通用设备网关实现多源异构数据接入的系统及方法 | |
CN111934940B (zh) | 配置化的服务请求方法及装置、电子设备和存储介质 | |
CN115550687A (zh) | 三维模型场景交互方法、系统、设备、装置及存储介质 | |
CN106775616B (zh) | 基于C++与Java混合编程的分布式服务系统 | |
CN115473947A (zh) | 基于云边协同的数据采集方法、装置及服务器 | |
CN115052031A (zh) | 一种非ros程序与ros程序的交互通信系统 | |
CN114245173B (zh) | 一种图像压缩方法、装置、终端设备和存储介质 | |
CN112543190B (zh) | 一种基于脚本技术实现云边互功采集控制的系统及方法 | |
CN114501091A (zh) | 远程驾驶画面的生成方法、装置及电子设备 | |
CN101356754B (zh) | 一种用于减少移动订户会话中无线数据事务处理的方法和系统 | |
CN107241351A (zh) | 一种基于Redis的RPC通信方法 | |
CN117492899B (zh) | 即时传输及显示方法、装置、设备及存储介质 | |
CN117938822B (zh) | 一种基于wasm的实时语音通信方法、终端及摄像头 | |
CN112492044B (zh) | 缓存数据共享方法及装置、设备、计算机可读存储介质 | |
CN113852666B (zh) | 一种通过ftp协议实时获取http资源的方法 | |
CN113497821A (zh) | 一种上传文件的方法、装置和系统 | |
CN114707646B (zh) | 基于远程推理的分布式人工智能实践平台 | |
CN108848083B (zh) | 一种网页版多屏互动的方法及系统 | |
US20150372892A1 (en) | Embedded Performance Monitoring of a DBMS | |
CN115734178A (zh) | 5g消息的发送系统、方法、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |