CN105429858A - 一种多机器人间实时消息传递方法 - Google Patents
一种多机器人间实时消息传递方法 Download PDFInfo
- Publication number
- CN105429858A CN105429858A CN201510920419.3A CN201510920419A CN105429858A CN 105429858 A CN105429858 A CN 105429858A CN 201510920419 A CN201510920419 A CN 201510920419A CN 105429858 A CN105429858 A CN 105429858A
- Authority
- CN
- China
- Prior art keywords
- message
- ros
- dds
- subject
- real
- 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
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/50—Network services
- H04L67/56—Provisioning of proxy services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/04—Real-time or near real-time messaging, e.g. instant messaging [IM]
- H04L51/046—Interoperability with other network applications or services
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/226—Delivery according to priorities
Abstract
本发明公开了一种多机器人间实时消息传递方法,目的是基于ROS在机器人中间件层提供对网络消息实时传递的支持能力,使得多机器人之间的消息传递过程能够满足优先级、传输时延等时间约束。技术方案是在ROS中引入具备实时性保证能力的网络消息传递规范DDS,首先搭建多机器人计算结点环境,此环境中构建有操作系统Ubuntu、机器人中间件ROS、符合DDS规范的消息实时中间件和ROS/DDS协议插件,ROS/DDS协议插件支持ROS消息的实时属性设置,并实现ROS消息和DDS消息的相互转换,使用符合DDS规范的消息实时中间件发送和接收消息。采用本发明可以在现有多机器人分布式应用不修改直接使用ROS/DDS协议插件的条件下,在机器人中间件层实现多机器人之间消息传递的实时性。
Description
技术领域
本发明涉及软件构造技术领域,具体涉及一种在多机器人分布式应用中,通过在软件中间件层引入具备实时性保证能力的网络消息传递协议,实现多机器人之间的实时消息传递的方法。
背景技术
多机器人分布式应用是指由多个机器人所组成的软件系统,在这一系统中多个机器人互相协同,共同完成指定的任务。多机器人分布式应用的典型实例包括无人机群软件系统、机器人足球队软件系统等。机器人中间件是支撑多机器人分布式应用的软件基础设施,它封装了多机器人分布式应用共性问题(如数据通信、事务等)的解决方案,从而可以大幅简化此类应用的开发过程。ROS(RobotOperatingSystem)是目前主流的、成熟的机器人中间件,被工业界和学术界所广泛使用。它运行于Ubuntu等操作系统之上,提供基于消息的多机器人交互能力。在ROS中,消息传递采用的是基于主题(Topic)的发布/订阅机制,即消息按照主题进行分类,消息的发布者在某一主题上发布消息,所有订阅了这个主题的消息订阅者将收到该消息。ROS消息发布者发布消息时先将消息放入发送缓冲区,再由ROS的消息发送模块发送消息;接收消息时,先由ROS消息接收模块接收消息,再将该消息放入消息接收缓冲区,消息订阅者从缓冲区中获取消息。
机器人直接感知和作用于物理世界,多机器人分布式应用通常也与物理世界紧密结合。物理世界中的时间约束会直接映射到多机器人分布式应用中,使得此类应用中多个机器人之间的消息传递必须满足一定的时间约束(例如优先级或者传递时延上限),也即需要保证其实时性。例如,用于地面勘察的无人机系统通常由无人机、地面控制站和配套网络通信设施组成,无人机需要向控制站传输飞行状态数据、实时图像信息等多种类型数据,这些数据有不同的优先级和预期传输时延:飞行状态数据虽然数据量较少,但必须高优先级、低延时传送,而高分辨率的地面图像信息需要占用很大的带宽,但可以以低先级传递,必要时可以通过丢帧等方式来减少带宽占用。
在企业计算和互联网计算等领域,对网络消息实时传递的研究已经非常深入,其中较为主流的研究成果是实时消息传输规范DDS(DataDistributedServiceforReal-timeSystems)。DDS规范是OMG(ObjectManagementGroup)组织为了满足分布式实时系统中数据的实时交换的需求而发布的实时消息传输协议规范。DDS规范定义了以数据为中心的基于主题的发布/订阅机制,提供了强大的数据服务质量QoS(QualityofService)控制策略,例如消息的传输优先级、消息自动夭折、传输延迟控制、基于时间过滤消息等等。因而DDS规范能够很好的支持分布式实时系统中数据高效、实时、可靠的发送。目前,DDS规范已在国防、电信、航空、分布控制、工业自动化等领域得到广泛的运用。
但是,在机器人中间件领域,目前尚无公开的技术资料涉及网络实时消息传递成果或成熟技术方案。以ROS为例,其基于主题的消息发布/订阅机制只能提供普通的消息交互能力,不能对消息提供时间约束方面的服务质量参数的设置。如何在机器人中间件层面增加对网络消息实时性保证的支持,以此来实现机器人分布式应用网络消息传输的实时性,是软件构造技术领域需要解决的技术问题。
发明内容
本发明要解决的技术问题是基于ROS在机器人中间件层提供对网络消息实时传递的支持能力,使得多机器人之间的消息传递过程能够满足优先级、传输时延等时间约束。
本发明的技术方案是在ROS中引入具备实时性保证能力的网络消息传递规范DDS。本发明首先搭建多机器人计算结点环境,此环境中构建有操作系统Ubuntu、机器人中间件ROS、符合DDS规范的消息实时中间件和ROS/DDS协议插件,ROS/DDS协议插件支持ROS消息的实时属性设置,并实现ROS消息和DDS消息的相互转换,最后使用符合DDS规范的消息实时中间件传递消息,以此实现ROS消息传递地实时性。
本发明包括以下步骤:
第一步,搭建多机器人计算结点环境,它由m个机器人计算结点构成(m≥1,m是整数)。机器人计算结点是可以运行软件程序的机器人硬件设备(如无人机、无人车、人形机器人等),机器人计算结点通过网络设备互连。
每个机器人计算结点上除了装有操作系统Ubuntu(例如14.04版本)、机器人中间件ROS(例如Indigo版本,由ROS消息发布者、ROS消息发送模块、ROS消息发送缓冲区、ROS消息订阅者、ROS消息接收模块、ROS消息接收缓冲区以及ROS原有通信协议组成)、符合DDS规范的消息实时中间件(例如DDS规范的开源实现OpenSpliceDDS,简称DDS中间件)外,还有ROS/DDS协议插件。机器人中间件ROS提供基于发布/订阅消息的多机器人交互能力,DDS中间件提供实时消息传输能力,ROS和DDS中间件均运行于Ubuntu操作系统之上。ROS/DDS协议插件负责ROS消息和DDS消息的相互转换,并使用DDS中间件进行实时消息发送和接收。
ROS/DDS协议插件由实时性调用模块、消息转换模块、主题映射模块、出错处理模块、消息发送代理模块、消息接收代理模块六个部分组成。
ROS消息发布者通过使用实时性调用模块设置ROS某个主题需要满足的实时属性。ROS消息发布者将ROS主题名和实时属性发送给实时性调用模块。
由于实时属性只能在创建新ROS主题时设置,实时性调用模块从ROS消息发布者获得ROS主题名和实时属性后,先检查该ROS主题名是否已经设置实时属性,然后再将ROS主题名和实时属性发送给消息发送代理模块。
ROS主题名唯一标识了一类消息。ROS消息发布者基于某一主题发布消息,所有订阅了这个主题的ROS消息订阅者将收到该消息。
实时属性描述了发布的消息需要满足的实时约束。实时属性包括消息优先级、预期传输延迟、自动夭折时限、时间过滤周期。实时属性可以设置一个或多个,如果实时属性为空,意味着与该ROS主题相关的消息不需要满足实时要求,普通发送即可。
消息优先级属性(transport_priority)用来设置在主题上发布的消息的优先级,主要分为ExtremelyLow、VeryLow、Low、Normal、High、VeryHigh、ExtremelyHigh7个等级,这7个等级由低到高,ExtremelyLow表示消息发送的优先级极低、VeryLow表示消息发送的优先级很低、Low表示消息发送的优先级低、Normal表示消息发送的优先级正常、High表示消息发送的优先级高、VeryHigh表示消息发送的优先级很高、ExtremelyHigh表示消息发送的优先级极高。优先级高的消息优先发送。
预期传输延迟属性(latency_budget)用来设置发布的消息从消息发布者到达消息订阅者的预期时间。例如预期时间5ms的消息比预期时间10ms的消息优先发送。
自动夭折时限属性(time_filter_duration)用来设置发布消息的生命周期,如果消息在其生命周期内没有送达到消息订阅者,ROS/DDS协议插件将丢弃该消息。例如发布消息的生命周期是10ms,如果在10ms内,消息没有送达到消息订阅者,ROS/DDS协议插件将丢弃该消息。
时间过滤周期属性(message_valid_period)用来设置过滤消息的时间段,即在一段时间内只送达一个消息,其他消息将被ROS/DDS协议插件丢弃。例如对于机器人每隔20ms发送一条自身状态消息,过滤消息的时间段是1s,ROS/DDS协议插件在1s的间隔内只送达一条机器人自身状态消息。
消息转换模块实现ROS与DDS消息格式之间的相互转换。DDS消息由消息头、实时属性域和消息体组成,实时属性域指明了该DDS消息所要满足的实时约束。ROS消息到DDS消息的转换方式是将ROS消息直接填充到DDS消息体,并使用从实时性调用模块接收的实时属性填充DDS消息实时属性域。DDS消息到ROS消息的转换方式是直接从DDS消息体提取ROS消息。
主题映射模块实现ROS主题名与DDS主题名的相互转换,并生成“ROS与DDS主题名映射”表。ROS主题名由字母、数字和“/”符号组成,并以字母开头。DDS主题名由字母和数字组成,并以字母开头。ROS主题名到DDS主题名的转换规则是如果主题中含“/”,将其替换为“A9E0”,其它的字母和数字不变。DDS主题名到ROS主题名的转换规则是如果主题中含“A9E0”,将其替换为“/”,其它的字母和数字不变。“A9E0”是一个特殊的标识位,用来标识字符“/”。“ROS与DDS主题名映射”表是一个二维表,该二维表有k行,每行包含两个域,一个域是ROS中的主题名,另一个域是DDS中的主题名,k为ROS中的主题数,k≥0,k是整数。
出错处理模块实现DDS异常到ROS异常的转换。出错处理模块根据预定义映射规则,实现DDS错误到ROS错误的映射。例如DDS网络中断异常DDS::NetworkDisconnection映射为ROS网络中断异常ROS::NetworkDisconnection。
消息发送代理模块从实时性调用模块接收ROS主题名和实时属性,将ROS主题名和实时属性保存在“ROS主题与实时属性”表中。“ROS主题与实时属性”表是一个二维表,该二维表有k行,每行包含两个域,一个域是ROS消息的主题名,另一个域是ROS消息的主题需要满足的实时属性,k为ROS中的主题数,k≥0,k是整数。
消息发送代理模块从ROS消息发送模块接收ROS消息,获得ROS消息的主题名,并根据ROS主题名查询“ROS主题与实时属性”表获得ROS消息的实时属性;消息发送代理模块将ROS主题名发送给主题映射模块,并从主题映射模块接收DDS主题名;消息发送代理模块使用DDS主题名查询“数据发射器池”表获得数据发射器;消息发送代理模块将ROS消息和实时属性发送给消息转换模块,并从消息转换模块接收DDS消息;最后消息发送代理模块使用数据发射器发送DDS消息。数据发射器是一个对象,它使用DDS中间件完成DDS消息发送,每个DDS主题对应一个数据发射器。消息发送代理模块将DDS主题名和数据发射器保存在“数据发射器池”表中。“数据发射器池”表是一个二维表,该二维表有j行,每行包含两个域,一个域是DDS主题名,另一个域是与DDS主题名对应的数据发射器,j为DDS中的主题数,j≥0,j是整数。
消息发送代理模块使用数据发射器发送DDS消息时,可能会遇到异常,例如网络中断异常。数据发射器会俘获DDS异常,将DDS异常发送给出错处理模块,并从出错处理模块接收ROS异常,数据发射器将该ROS异常返回给ROS消息发布者。
消息接收代理模块从ROS消息订阅者接收ROS主题名,并将ROS主题名发送给主题映射模块,并从主题映射模块接收DDS主题名。消息接收代理模块使用DDS主题名查询“数据接收器池”表,获取数据接收器。数据接收器是一个对象,它使用DDS中间件完成DDS消息接收,每个DDS主题对应一个数据接收器。消息接收代理模块将DDS主题名和数据接收器保存在“数据接收器池”表中。“数据接收器池”表是一个二维表,该二维表共有j行,每行包含两个域,一个域是DDS主题名,另一个域是与DDS主题名对应的数据接收器,j为DDS中的主题数,j≥0,j是整数。
消息接收代理模块使用数据接收器从DDS中间件接收DDS消息,获得DDS主题名,将DDS主题名发送给主题映射模块,并从主题映射模块接收ROS主题名;然后消息接收代理模块将DDS消息发送给消息转换模块,并从消息转换模块接收ROS消息;最后数据接收器再将此ROS消息发送给ROS消息接收模块。ROS消息接收模块将ROS消息按照ROS主题写入ROS的消息接收缓冲区后,ROS消息订阅者从ROS的消息接收缓冲区获得ROS消息。
消息接收代理模块使用数据接收器接收DDS消息时,可能会遇到异常,例如网络中断异常。数据接收器会俘获DDS异常,将DDS异常发送给出错处理模块,并从出错处理模块接收ROS异常后,数据接收器将该ROS异常返回给ROS消息订阅者。
第二步,机器人计算结点A的ROS消息发布者向ROS消息发送缓冲区发送消息,且机器人计算结点A的消息发送代理模块从ROS消息发送缓冲区中取出消息,将ROS消息转换成DDS消息之后使用DDS中间件发送DDS消息;同时机器人计算结点B的消息接收代理模块从DDS中间件接收DDS消息,经过消息格式转化之后将ROS消息按ROS主题写入ROS消息接收缓冲区,且机器人计算结点B的ROS消息订阅者接收来自ROS消息接收缓冲区的ROS消息。具体步骤如下:
2.1机器人计算结点A的ROS消息发布者使用实时性调用模块设置ROS主题的实时属性,并发送ROS消息,具体步骤如下:
2.1.1计算节点A上的机器人应用使用一个ROS主题名创建ROS消息发布者,ROS消息发布者将该ROS主题名和实时属性传递给实时性调用模块;
2.1.2计算节点A的实时调用模块接收到该ROS主题名和实时属性后,将ROS主题名和实时属性发送给消息发送代理模块;
2.1.3计算节点A的消息发送代理模块收到ROS主题名和实时属性后,在“ROS主题与实时属性”表中查找该ROS主题名,如果该ROS主题名已经存在,消息发送代理模块报“ROS主题名已存在异常”,并将错误返回ROS消息发布者,转第三步;否则将ROS主题名和实时属性作为新的一行保存在“ROS主题与实时属性”表中;
2.1.4ROS消息发布者将ROS消息发送给ROS消息发送模块,ROS消息发送模块接收到ROS消息之后,将其写入ROS消息发送缓冲区;
2.2消息发送代理模块从ROS消息发送缓冲区中取出消息,将ROS消息转换成DDS消息之后使用DDS中间件发送DDS消息,具体步骤如下:
2.2.1消息发送代理模块等待,直到ROS消息发送缓冲区中写入消息,转到步骤2.2.2;
2.2.2消息发送代理模块按照顺序从ROS消息发送缓冲区取出一个ROS消息,消息发送代理模块从接收到的ROS消息中获取其主题名,将ROS主题名发送给主题映射模块,并从主题映射模块接收DDS主题名。具体步骤如下:
2.2.2.1消息发送代理模块从接收到的ROS消息中获取其主题名,将ROS主题名发送给主题映射模块;
2.2.2.2主题映射模块接收到ROS主题名后,在“ROS与DDS主题名映射”表中查找该ROS主题名。
2.2.2.3若“ROS与DDS主题名映射”表中ROS主题名已经存在,则直接向消息发送代理模块返回对应的DDS主题名,转步骤2.2.3;
2.2.2.4若“ROS与DDS主题名映射”表中不存在ROS主题名,读取ROS主题名,如果主题中含“/”,将其替换为“A9E0”,转步骤2.2.2.5;否则不改变字母或数字,直接转步骤2.2.2.5;
2.2.2.5将ROS主题名和DDS主题名作为新的一行保存在“ROS与DDS主题名映射”表中,并向消息发送代理模块返回DDS主题名,转步骤2.2.3。
2.2.3消息发送代理模块使用ROS主题名在“ROS主题与实时属性”表中查找该主题名需要满足的实时属性;若“ROS主题与实时属性”表中ROS主题名已经存在,则消息发送代理模块直接获得与主题名对应的实时属性,转步骤2.2.4;否则该主题名需要满足的实时属性设置为空,转步骤2.2.4;
2.2.4消息发送代理模块使用DDS主题名查询“数据发射器池”表,获取数据发射器。具体步骤如下:
2.2.4.1如果在“数据发射器池”表中有与DDS主题名对应的数据发射器,消息发送代理模块直接获得对应的数据发射器,转步骤2.2.5;
2.2.4.2如果没有对应的数据发射器,消息发送代理模块根据DDS主题名创建数据发射器,并将DDS主题名和数据发射器作为新的一行保存在“数据发射器池”表中,转步骤2.2.5;
2.2.5消息发送代理模块使用数据发射器发送DDS消息。
2.2.5.1消息发送代理模块将待发送的ROS消息和该消息主题名对应的实时属性发送给消息转换模块,并从消息转换模块接收DDS消息。具体步骤如下:
2.2.5.1.1消息发送代理模块将待发送的ROS消息和该消息主题名对应的实时属性发送给消息转换模块;
2.2.5.1.2消息转换模块接收到ROS消息和实时属性后,将ROS消息直接填充到DDS消息体,并使用实时属性填充DDS消息实时属性域;
2.2.5.1.3消息转换模块返回DDS消息。
2.2.5.2消息发送代理模块使用数据发射器将DDS消息发送给DDS中间件,由DDS中间件再进行发送;
2.2.5.3DDS中间件在发送消息时,如果遇到异常(例如网络中断异常),数据发射器俘获DDS异常,调用出错处理模块将DDS异常转换成ROS异常,并将该ROS异常返回给ROS消息发布者。具体步骤如下:
2.2.5.3.1数据发射器俘获DDS异常,将DDS异常发送给出错处理模块;
2.2.5.3.2出错处理模块接收到DDS异常,根据预定义映射规则,将DDS异常错误映射到ROS异常错误;
2.2.5.3.3出错处理模块返回ROS异常到数据发射器;
2.2.5.3.4数据发射器将ROS异常返回给ROS消息发布者。
2.2.6消息发送代理模块判断ROS消息发送缓冲区中是否还有ROS消息,若还有ROS消息,转步骤2.2.2;否则转步骤2.2.1。
2.3在机器人计算结点A的ROS消息发布者向ROS消息发送缓冲区发送消息的同时,机器人计算结点B的消息接收代理模块从DDS中间件接收DDS消息,经过消息格式转化之后将ROS消息按ROS主题将ROS消息写入ROS消息接收缓冲区。具体步骤如下:
2.3.1计算节点B上的机器人应用使用一个ROS主题名创建ROS消息订阅者,并且ROS消息订阅者将该ROS主题名发送给消息接收代理模块;
2.3.2消息接收代理模块接收到ROS主题名,将ROS主题名发送给主题映射模块,主题映射模块将ROS主题名转换为DDS主题名,并将DDS主题名返回给消息接收代理模块;
2.3.3消息接收代理模块使用DDS主题名查询“数据接收器池”表,获取数据接收器。具体步骤如下:
2.3.3.1如果在“数据接收器池”表中有与DDS主题名对应的数据接收器,消息接收代理模块直接获得对应的数据接收器,转步骤2.3.4;
2.3.3.2如果没有对应的数据接收器,消息接收代理模块根据DDS主题名创建数据接收器,将DDS主题名和数据接收器作为新的一行保存在“数据接收器池”表中,转步骤2.3.4;
2.3.4消息接收代理模块使用数据接收器接收DDS消息,将DDS消息转换成ROS消息,并将ROS消息写入ROS消息接收缓冲区。具体步骤如下:
2.3.4.1消息接收代理模块等待,直到接收到DDS消息,转到步骤2.3.4.2;
2.3.4.2消息接收代理模块使用数据接收器接收来自DDS中间件的一个DDS消息;如果遇到异常(例如网络中断异常),数据接收器俘获异常,将DDS异常发送给出错处理模块,出错处理模块将DDS异常转换成ROS异常并将ROS异常返回给数据接收器,数据接收器将该ROS异常返回给ROS消息订阅者,转步骤2.5;否则转步骤2.3.4.3。
2.3.4.3消息接收代理模块从数据接收器中获取DDS主题名,将DDS主题名发送给主题映射模块,主题映射模块将DDS主题名转换为ROS主题名,并将ROS主题名返回给消息接收代理模块;
2.3.4.4消息接收代理模块将接收到的DDS消息发送给消息转换模块,并从消息转换模块接收ROS消息。具体步骤如下:
2.3.4.4.1消息接收代理模块将接收到的DDS消息发送给消息转换模块;
2.3.4.4.2消息转换模块接收到DDS消息,从DDS消息体中提取ROS消息,并将ROS消息返回给消息接收代理模块;
2.3.4.5消息接收代理模块接收到ROS消息后,按照ROS主题名将ROS消息写入相应的ROS消息接收缓冲区。
2.4机器人计算结点B上的ROS消息接收模块从ROS消息接收缓冲区取出ROS消息,并将其发送给ROS消息订阅者。
2.5消息接收代理模块判断是否还有来自DDS中间件的DDS消息,若有,转步骤2.3.4.2;否则转步骤2.3.4.1。
第三步,结束。
采用本发明可以达到如下的有益效果:
(1)在机器人中间件层实现多机器人之间消息传递的实时性。通过引入ROS/DDS协议插件,机器人中间件ROS使用消息实时中间件DDS保证消息传输优先级、消息自动夭折、传输延迟控制、基于时间过滤消息能力。
(2)现有的多机器人分布式应用可以不需要进行修改就可以直接使用ROS/DDS协议插件。由于本发明仅涉及机器人中间件,机器人中间件的对外接口并未发生变化,因此现有的多机器人分布式应用可以不需要进行修改。
附图说明
图1是本发明第一步构建多机器人计算节点环境物理结构图。
图2是本发明机器人计算结点上的软件部署图。
图3是本发明整体流程图。
图4是本发明第二步的ROS消息发送流程图。
图5是本发明第二步的ROS消息接收流程图。
具体实施方式
图1是本发明第一步构建的多机器人计算节点环境,它由m个机器人计算结点构成。机器人计算结点是可以运行软件程序的机器人硬件设备(如无人机、无人车、人形机器人等),机器人计算结点通过网络设备互连。
图2是本发明机器人计算结点上的软件部署图。每个机器人计算结点上都装有操作系统Ubuntu、机器人中间件ROS、符合DDS规范的消息实时中间件和ROS/DDS协议插件。
以下以无人机与地面控制站的消息交互为例说明本发明的具体实施方式。该实例由一个无人机和一个地面控制站组成。无人机上运行消息发布程序,基于某个主题发布带有实时属性的消息(例如不同传输优先级)。地面控制站上运行消息订阅程序,订阅该主题的消息。由于ROS本身不支持消息优先级的设置,因此需要通过ROS/DDS协议插件和DDS中间件来实现消息的发送与接收。
采用本发明的具体实施方式如下:
第一步,构建一个简单的无人机系统,它由2个计算结点构成,一架无人机和一个地面控制站,两者通过网络设备互连。(结合图1)无人机装有操作系统Ubuntu、机器人中间件ROS、符合DDS规范的消息实时中间件、ROS/DDS协议插件和消息发布程序。地面控制站装有操作系统Ubuntu、机器人中间件ROS、符合DDS规范的消息实时中间件、ROS/DDS协议插件和消息订阅程序。
第二步,无人机上的消息发布程序发送无人机收集到的飞行状态数据和图像信息,同时地面控制站的消息订阅程序接收无人机发送地飞行状态数据和图像信息信息。
2.1.1消息发布程序使用ROS主题名FlightCondition创建飞行状态数据ROS消息发布者。飞行状态数据ROS消息发布者将ROS主题名FlightCondition和消息传输优先级transport_priority=high传递给实时性调用模块。消息发布程序使用ROS主题名GraphicInformation创建图像信息ROS消息发布者,图像信息ROS消息发布者将ROS主题名GraphicInformation和消息传输优先级transport_priority=normal传递给实时性调用模块。
2.1.2实时调用模块将主题名和实时属性发送给消息发送代理;
2.1.3消息发送代理模块收到ROS主题名和实时属性后,在“ROS主题与实时属性”表中查找ROS主题名,ROS主题名不存在,将{FlightCondition,transport_priority=high}和{GraphicInformation,transport_priority=low}作为新的一行保存在“ROS主题与实时属性”表中;
2.1.4消息发布者将无人机收集到的飞行状态数据和图像信息消息发送给ROS消息发送代理模块,ROS消息发送代理模块收到ROS后,将其写入ROS消息发送缓冲区;
2.2.1下面以飞行状态数据消息为例,说明消息发送代理模块发送ROS消息的过程。消息发送代理模块等待,直到ROS消息发送缓冲区中写入消息,转到步骤2.2.2;
2.2.2ROS消息发送缓冲区中已经写入消息,消息发送代理模块从ROS消息发送缓冲区取出一个飞行状态数据ROS消息后,消息发送代理模块从接收到的ROS消息中获取其主题名FlightCondition,将ROS消息的主题名发送给主题映射模块,主题映射模块将其转换为DDS主题名FlightCondition。
2.2.3消息发送代理模块使用ROS消息的主题名在“ROS主题与实时属性”表中查找该主题名需要满足实时属性;查出ROS主题名FlightCondition的实时属性是transport_priority=high。
2.2.4消息发送代理模块使用DDS主题名FlightCondition查询“数据发射器池”表,没有查找到与DDS主题名FlightCondition对应的数据发射器,消息发送代理模块根据FlightCondition创建数据发射器,并将{FlightCondition,FCDataSender}作为新的一行保存在“数据发射器池”表中。
2.2.5消息发送代理模块将待发送的飞行状态数据ROS消息和对应的实时属性transport_priority=high发送给消息转换模块,并从消息转换模块接收DDS消息;消息发送代理模块使用数据发射器将DDS消息发送给DDS中间件,由DDS中间件按照相应的传输优先级进行发送;
2.2.6消息发送代理模块判断ROS消息发送缓冲区中是否还有飞行状态数据ROS消息,若还有ROS消息,转步骤2.2.2;否则转步骤2.2.1。
2.3在无人机上的消息发布程序发送无人机收集到的飞行状态数据和图像信息的同时,机器人计算结点B的消息接收代理模块从DDS中间件接收DDS消息,经过消息格式转化之后将ROS消息按ROS主题将ROS消息写入ROS消息接收缓冲区,且机器人计算结点B的ROS消息订阅者接收来自ROS消息接收缓冲区的ROS消息,方法是:
2.3.1地面控制站的消息订阅程序使用ROS主题名FlightCondition创建飞行状态数据ROS消息订阅者,并将ROS主题名FlightCondition发送给消息接收代理模块;消息订阅程序使用主题名GraphicInformation创建图像信息ROS消息订阅者,并将ROS主题名GraphicInformation发送给消息接收代理模块;
2.3.2下面以飞行状态数据消息为例,说明消息接收代理模块接收飞行状态数据消息的过程。消息接收代理模块将ROS主题名FlightCondition发送主题映射模块,主题映射模块将其转换为DDS主题名FlightCondition后返回;
2.3.3消息接收代理模块使用DDS主题名FlightCondition查询“数据接收器池”表,没有查找到与DDS主题名FlightCondition对应的数据接收器,消息接收代理模块根据DDS主题名创建飞行状态数据接收器,将{FlightCondition,FCDataReciever}作为新的一行保存在“数据接收器池”表中。
2.3.4消息接收代理模块使用飞行状态数据接收器接收飞行状态数据DDS消息,将DDS消息转换成ROS消息,并将ROS消息写入ROS消息接收缓冲区,具体步骤如下:
2.3.4.1消息接收代理模块等待,直到接收到DDS消息,转到步骤2.3.4.2;
2.3.4.2消息接收代理模块使用飞行状态数据接收器接收一个飞行状态数据DDS消息;
2.3.4.3消息接收代理模块从数据接收器中获取DDS主题名FlightCondition,将DDS主题名发送给主题映射模块,主题映射模块将DDS主题名转换为ROS主题名FlightCondition,并将ROS主题名返回给消息接收代理模块;
2.3.4.4消息接收代理模块将接收到的DDS消息发送给消息转换模块,并从消息转换模块接收ROS消息;
2.3.4.5消息接收代理模块接收到ROS消息后,按照ROS主题名FlightCondition将ROS消息写入相应的ROS消息接收缓冲区。
2.4ROS消息接收模块从ROS消息接收缓冲区取出飞行状态数据ROS消息,并将其发送给ROS消息订阅者,由订阅者对ROS消息做进一步处理。
2.5消息接收代理模块判断是否还有来自DDS中间件的DDS消息,若有,转步骤2.3.4.2;否则转步骤2.3.4.1。
第三步,结束。
Claims (10)
1.一种多机器人间实时消息传递方法,其特征在于包括以下步骤:
第一步,搭建多机器人计算结点环境,它由m个机器人计算结点构成m≥1,m是整数;机器人计算结点是可以运行软件程序的机器人硬件设备,机器人计算结点通过网络设备互连;
每个机器人计算结点上装有操作系统Ubuntu、机器人中间件ROS、DDS中间件即符合DDS规范的消息实时中间件、ROS/DDS协议插件;ROS由ROS消息发布者、ROS消息发送模块、ROS消息发送缓冲区、ROS消息订阅者、ROS消息接收模块、ROS消息接收缓冲区以及ROS原有通信协议组成;ROS提供基于发布/订阅消息的多机器人交互能力,DDS中间件提供实时消息传输能力,ROS和DDS中间件均运行于Ubuntu操作系统之上;ROS/DDS协议插件负责ROS消息和DDS消息的相互转换,并使用DDS中间件进行实时消息发送和接收;
ROS/DDS协议插件由实时性调用模块、消息转换模块、主题映射模块、出错处理模块、消息发送代理模块、消息接收代理模块六个部分组成;
ROS消息发布者将ROS主题名和实时属性发送给实时性调用模块;
实时性调用模块从ROS消息发布者获得ROS主题名和实时属性后,先检查该ROS主题名是否已经设置实时属性,然后再将ROS主题名和实时属性发送给消息发送代理模块;
ROS主题名唯一标识了一类消息,ROS消息发布者基于某一主题发布消息,所有订阅了这个主题的ROS消息订阅者将收到该消息;
实时属性描述了发布的消息需要满足的实时约束,实时属性包括消息优先级、预期传输延迟、自动夭折时限、时间过滤周期;
消息优先级属性用来设置在主题上发布的消息的优先级;
预期传输延迟属性用来设置发布的消息从消息发布者到达消息订阅者的预期时间;
自动夭折时限属性用来设置发布消息的生命周期,如果消息在其生命周期内没有送达到消息订阅者,ROS/DDS协议插件将丢弃该消息;
时间过滤周期属性用来设置过滤消息的时间段,即在一段时间内只送达一个消息,其他消息将被ROS/DDS协议插件丢弃;
消息转换模块实现ROS与DDS消息格式之间的相互转换;
主题映射模块实现ROS主题名与DDS主题名的相互转换,并生成“ROS与DDS主题名映射”表;“ROS与DDS主题名映射”表是一个二维表,该二维表有k行,每行包含两个域,一个域是ROS中的主题名,另一个域是DDS中的主题名,k为ROS中的主题数,k≥0,k是整数;
出错处理模块实现DDS异常到ROS异常的转换;出错处理模块根据预定义映射规则,实现DDS错误到ROS错误的映射;
消息发送代理模块从实时性调用模块接收ROS主题名和实时属性,将ROS主题名和实时属性保存在“ROS主题与实时属性”表中,“ROS主题与实时属性”表是一个二维表,该二维表有k行,每行包含两个域,一个域是ROS消息的主题名,另一个域是ROS消息的主题需要满足的实时属性;
消息发送代理模块从ROS消息发送模块接收ROS消息,获得ROS消息的主题名,并根据ROS主题名查询“ROS主题与实时属性”表获得ROS消息的实时属性;消息发送代理模块将ROS主题名发送给主题映射模块,并从主题映射模块接收DDS主题名;消息发送代理模块使用DDS主题名查询“数据发射器池”表获得数据发射器;消息发送代理模块将ROS消息和实时属性发送给消息转换模块,并从消息转换模块接收DDS消息;最后消息发送代理模块使用数据发射器发送DDS消息;消息发送代理模块将DDS主题名和数据发射器保存在“数据发射器池”表中,“数据发射器池”表是一个二维表,该二维表有j行,每行包含两个域,一个域是DDS主题名,另一个域是与DDS主题名对应的数据发射器,j为DDS中的主题数,j≥0,j是整数;
若消息发送代理模块在使用数据发射器发送DDS消息时遇到异常,则数据发射器俘获DDS异常,将DDS异常发送给出错处理模块,并从出错处理模块接收ROS异常,数据发射器将该ROS异常返回给ROS消息发布者;
消息接收代理模块从ROS消息订阅者接收ROS主题名,并将ROS主题名发送给主题映射模块,并从主题映射模块接收DDS主题名;消息接收代理模块使用DDS主题名查询“数据接收器池”表,获取数据接收器;消息接收代理模块将DDS主题名和数据接收器保存在“数据接收器池”表中,“数据接收器池”表是一个二维表,该二维表共有j行,每行包含两个域,一个域是DDS主题名,另一个域是与DDS主题名对应的数据接收器;
消息接收代理模块使用数据接收器从DDS中间件接收DDS消息,获得DDS主题名,将DDS主题名发送给主题映射模块,并从主题映射模块接收ROS主题名;然后消息接收代理模块将DDS消息发送给消息转换模块,并从消息转换模块接收ROS消息;最后数据接收器再将此ROS消息发送给ROS消息接收模块。ROS消息接收模块将ROS消息按照ROS主题写入ROS的消息接收缓冲区后,ROS消息订阅者从ROS的消息接收缓冲区获得ROS消息;
若消息接收代理模块使用数据接收器接收DDS消息时遇到异常,则数据接收器俘获DDS异常,将DDS异常发送给出错处理模块,并从出错处理模块接收ROS异常后,数据接收器将该ROS异常返回给ROS消息订阅者;
第二步,机器人计算结点A的ROS消息发布者向ROS消息发送缓冲区发送消息,且机器人计算结点A的消息发送代理模块从ROS消息发送缓冲区中取出消息,将ROS消息转换成DDS消息之后使用DDS中间件发送DDS消息;同时机器人计算结点B的消息接收代理模块从DDS中间件接收DDS消息,经过消息格式转化之后将ROS消息按ROS主题写入ROS消息接收缓冲区,且机器人计算结点B的ROS消息订阅者接收来自ROS消息接收缓冲区的ROS消息,具体步骤如下:
2.1机器人计算结点A的ROS消息发布者使用实时性调用模块设置ROS主题的实时属性,并发送ROS消息,具体步骤如下:
2.1.1计算节点A上的机器人应用使用一个ROS主题名创建ROS消息发布者,ROS消息发布者将该ROS主题名和实时属性传递给实时性调用模块;
2.1.2计算节点A的实时调用模块接收到该ROS主题名和实时属性后,将ROS主题名和实时属性发送给消息发送代理模块;
2.1.3计算节点A的消息发送代理模块收到ROS主题名和实时属性后,在“ROS主题与实时属性”表中查找该ROS主题名,如果该ROS主题名已经存在,消息发送代理模块报“ROS主题名已存在异常”,并将错误返回ROS消息发布者,转第三步;否则将ROS主题名和实时属性作为新的一行保存在“ROS主题与实时属性”表中;
2.1.4ROS消息发布者将ROS消息发送给ROS消息发送模块,ROS消息发送模块接收到ROS消息之后,将其写入ROS消息发送缓冲区;
2.2消息发送代理模块从ROS消息发送缓冲区中取出消息,将ROS消息转换成DDS消息之后使用DDS中间件发送DDS消息,具体步骤如下:
2.2.1消息发送代理模块等待,直到ROS消息发送缓冲区中写入消息,转到步骤2.2.2;
2.2.2消息发送代理模块按照顺序从ROS消息发送缓冲区取出一个ROS消息,消息发送代理模块从接收到的ROS消息中获取其主题名,将ROS主题名发送给主题映射模块,并从主题映射模块接收DDS主题名;
2.2.3消息发送代理模块使用ROS主题名在“ROS主题与实时属性”表中查找该主题名需要满足的实时属性;若“ROS主题与实时属性”表中ROS主题名已经存在,则消息发送代理模块直接获得与主题名对应的实时属性,转步骤2.2.4;否则该主题名需要满足的实时属性设置为空,转步骤2.2.4;
2.2.4消息发送代理模块使用DDS主题名查询“数据发射器池”表,获取数据发射器,具体步骤如下:
2.2.4.1如果在“数据发射器池”表中有与DDS主题名对应的数据发射器,消息发送代理模块直接获得对应的数据发射器,转步骤2.2.5;
2.2.4.2如果没有对应的数据发射器,消息发送代理模块根据DDS主题名创建数据发射器,并将DDS主题名和数据发射器作为新的一行保存在“数据发射器池”表中,转步骤2.2.5;
2.2.5消息发送代理模块使用数据发射器发送DDS消息;
2.2.5.1消息发送代理模块将待发送的ROS消息和该消息主题名对应的实时属性发送给消息转换模块,并从消息转换模块接收DDS消息;
2.2.5.2消息发送代理模块使用数据发射器将DDS消息发送给DDS中间件,由DDS中间件再进行发送;
2.2.5.3DDS中间件在发送消息时,如果遇到异常(例如网络中断异常),数据发射器俘获DDS异常,调用出错处理模块将DDS异常转换成ROS异常,并将该ROS异常返回给ROS消息发布者;
2.2.6消息发送代理模块判断ROS消息发送缓冲区中是否还有ROS消息,若还有ROS消息,转步骤2.2.2;否则转步骤2.2.1;
2.3在机器人计算结点A的ROS消息发布者向ROS消息发送缓冲区发送消息的同时,机器人计算结点B的消息接收代理模块从DDS中间件接收DDS消息,经过消息格式转化之后将ROS消息按ROS主题将ROS消息写入ROS消息接收缓冲区,具体步骤如下:
2.3.1计算节点B上的机器人应用使用一个ROS主题名创建ROS消息订阅者,并且ROS消息订阅者将该ROS主题名发送给消息接收代理模块;
2.3.2消息接收代理模块接收到ROS主题名,将ROS主题名发送给主题映射模块,主题映射模块将ROS主题名转换为DDS主题名,并将DDS主题名返回给消息接收代理模块;
2.3.3消息接收代理模块使用DDS主题名查询“数据接收器池”表,获取数据接收器;
2.3.4消息接收代理模块使用数据接收器接收DDS消息,将DDS消息转换成ROS消息,并将ROS消息写入ROS消息接收缓冲区,具体步骤如下:
2.3.4.1消息接收代理模块等待,直到接收到DDS消息,转到步骤2.3.4.2;
2.3.4.2消息接收代理模块使用数据接收器接收来自DDS中间件的一个DDS消息;如果遇到异常(例如网络中断异常),数据接收器俘获异常,将DDS异常发送给出错处理模块,出错处理模块将DDS异常转换成ROS异常并将ROS异常返回给数据接收器,数据接收器将该ROS异常返回给ROS消息订阅者,转步骤2.5;否则转步骤2.3.4.3;
2.3.4.3消息接收代理模块从数据接收器中获取DDS主题名,将DDS主题名发送给主题映射模块,主题映射模块将DDS主题名转换为ROS主题名,并将ROS主题名返回给消息接收代理模块;
2.3.4.4消息接收代理模块将接收到的DDS消息发送给消息转换模块,并从消息转换模块接收ROS消息;
2.3.4.5消息接收代理模块接收到ROS消息后,按照ROS主题名将ROS消息写入相应的ROS消息接收缓冲区;
2.4机器人计算结点B上的ROS消息接收模块从ROS消息接收缓冲区取出ROS消息,并将其发送给ROS消息订阅者;
2.5消息接收代理模块判断是否还有来自DDS中间件的DDS消息,若有,转步骤2.3.4.2;否则转步骤2.3.4.1。
第三步,结束。
2.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述消息优先级属性分为ExtremelyLow、VeryLow、Low、Normal、High、VeryHigh、ExtremelyHigh7个等级这7个等级由低到高,ExtremelyLow表示消息发送的优先级极低、VeryLow表示消息发送的优先级很低、Low表示消息发送的优先级低、Normal表示消息发送的优先级正常、High表示消息发送的优先级高、VeryHigh表示消息发送的优先级很高、ExtremelyHigh表示消息发送的优先级极高,优先级高的消息优先发送。
3.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述ROS消息到DDS消息的转换方式是将ROS消息直接填充到DDS消息体,并使用从实时性调用模块接收的实时属性填充DDS消息实时属性域;DDS消息到ROS消息的转换方式是直接从DDS消息体提取ROS消息。
4.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述ROS主题名到DDS主题名的转换规则是如果主题中含“/”,将其替换为“A9E0”,其它的字母和数字不变;DDS主题名到ROS主题名的转换规则是如果主题中含“A9E0”,将其替换为“/”,其它的字母和数字不变。
5.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述数据发射器是一个对象,它使用DDS中间件完成DDS消息发送,每个DDS主题对应一个数据发射器;数据接收器也是一个对象,它使用DDS中间件完成DDS消息接收,每个DDS主题对应一个数据接收器。
6.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述2.2.2步具体步骤如下:
2.2.2.1消息发送代理模块从接收到的ROS消息中获取其主题名,将ROS主题名发送给主题映射模块;
2.2.2.2主题映射模块接收到ROS主题名后,在“ROS与DDS主题名映射”表中查找该ROS主题名;
2.2.2.3若“ROS与DDS主题名映射”表中ROS主题名已经存在,则直接向消息发送代理模块返回对应的DDS主题名,结束;
2.2.2.4若“ROS与DDS主题名映射”表中不存在ROS主题名,读取ROS主题名,如果主题中含“/”,将其替换为“A9E0”,转步骤2.2.2.5;否则不改变字母或数字,直接转步骤2.2.2.5;
2.2.2.5将ROS主题名和DDS主题名作为新的一行保存在“ROS与DDS主题名映射”表中,并向消息发送代理模块返回DDS主题名,结束。
7.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述2.2.5.1步具体步骤如下:
2.2.5.1.1消息发送代理模块将待发送的ROS消息和该消息主题名对应的实时属性发送给消息转换模块;
2.2.5.1.2消息转换模块接收到ROS消息和实时属性后,将ROS消息直接填充到DDS消息体,并使用实时属性填充DDS消息实时属性域;
2.2.5.1.3消息转换模块返回DDS消息。
8.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述2.2.5.3步具体步骤如下:
2.2.5.3.1数据发射器俘获DDS异常,将DDS异常发送给出错处理模块;
2.2.5.3.2出错处理模块接收到DDS异常,根据预定义映射规则,将DDS异常错误映射到ROS异常错误;
2.2.5.3.3出错处理模块返回ROS异常到数据发射器;
2.2.5.3.4数据发射器将ROS异常返回给ROS消息发布者。
9.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述2.3.3具体步骤为如果在“数据接收器池”表中有与DDS主题名对应的数据接收器,消息接收代理模块直接获得对应的数据接收器;如果没有对应的数据接收器,消息接收代理模块根据DDS主题名创建数据接收器,将DDS主题名和数据接收器作为新的一行保存在“数据接收器池”表中。
10.如权利要求1所述的一种多机器人间实时消息传递方法,其特征在于所述2.3.4.4步具体步骤如下:
2.3.4.4.1消息接收代理模块将接收到的DDS消息发送给消息转换模块;
2.3.4.4.2消息转换模块接收到DDS消息,从DDS消息体中提取ROS消息,并将ROS消息返回给消息接收代理模块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510920419.3A CN105429858B (zh) | 2015-12-11 | 2015-12-11 | 一种多机器人间实时消息传递方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510920419.3A CN105429858B (zh) | 2015-12-11 | 2015-12-11 | 一种多机器人间实时消息传递方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105429858A true CN105429858A (zh) | 2016-03-23 |
CN105429858B CN105429858B (zh) | 2018-08-03 |
Family
ID=55507805
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510920419.3A Active CN105429858B (zh) | 2015-12-11 | 2015-12-11 | 一种多机器人间实时消息传递方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105429858B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956748A (zh) * | 2016-04-22 | 2016-09-21 | 中国人民解放军国防科学技术大学 | 多搜救机器人系统任务分配方法 |
CN106055417A (zh) * | 2016-06-02 | 2016-10-26 | 北京百度网讯科技有限公司 | 用于机器人操作系统的消息传输方法和装置 |
CN106452841A (zh) * | 2016-09-13 | 2017-02-22 | 中国电子科技集团公司第三十二研究所 | 在机器人操作系统中使用传输服务质量的方法 |
CN106737684A (zh) * | 2017-01-12 | 2017-05-31 | 北京航空航天大学 | 一种基于局域网的模块化机器人控制系统 |
CN106936932A (zh) * | 2017-04-26 | 2017-07-07 | 中国人民解放军国防科学技术大学 | 一种通过云服务协议访问机器人软件包的方法 |
CN108566316A (zh) * | 2018-04-18 | 2018-09-21 | 百度在线网络技术(北京)有限公司 | 无人车时延统计方法、装置、设备及计算机可读介质 |
CN109656726A (zh) * | 2018-11-28 | 2019-04-19 | 中国船舶重工集团公司第七〇九研究所 | 一种适用于数据中心的工业信息交互系统及方法 |
CN109756552A (zh) * | 2018-08-22 | 2019-05-14 | 比亚迪股份有限公司 | 一种乘客信息系统消息分发方法和装置及乘客信息系统 |
CN110086891A (zh) * | 2019-06-25 | 2019-08-02 | 奥特酷智能科技(南京)有限公司 | 基于dds协议在自动驾驶中实现分布式通信的方法 |
CN111262892A (zh) * | 2018-11-30 | 2020-06-09 | 北京图森智途科技有限公司 | 一种多ros的服务发现系统 |
CN111742298A (zh) * | 2018-02-20 | 2020-10-02 | 兰斯大学 | 用于互连机器人的方法 |
CN112260747A (zh) * | 2020-10-19 | 2021-01-22 | 中国人民解放军国防科技大学 | 机载协同控制与中继传输系统 |
CN113138864A (zh) * | 2020-01-19 | 2021-07-20 | 华为技术有限公司 | 消息通信方法、计算机系统及代理装置 |
CN114102617A (zh) * | 2021-11-11 | 2022-03-01 | 山东新一代信息产业技术研究院有限公司 | 一种协同安防机器人 |
CN114237221A (zh) * | 2021-11-16 | 2022-03-25 | 山东大学 | 基于中心映射的低延迟组合体机器人运动控制系统及方法 |
CN115037807A (zh) * | 2022-06-10 | 2022-09-09 | 湖南大学 | 一种工业机器人服务总线上集成dds协议的方法及系统 |
CN115733886A (zh) * | 2021-08-26 | 2023-03-03 | 广州汽车集团股份有限公司 | 基于fpga和ros的嵌入式通信系统、方法、装置、介质及车辆 |
CN115733886B (zh) * | 2021-08-26 | 2024-04-19 | 广州汽车集团股份有限公司 | 基于fpga和ros的嵌入式通信系统、方法、装置、介质及车辆 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090105879A1 (en) * | 2007-10-22 | 2009-04-23 | Victor Ng-Thow-Hing | Evaluation of communication middleware in a distributed humanoid robot architecture |
CN102831318A (zh) * | 2012-08-25 | 2012-12-19 | 北京科技大学 | 异构多机器人系统中基于个体能力的任务分配算法 |
CN103324173A (zh) * | 2013-06-08 | 2013-09-25 | 上海交通大学 | 基于中间件的多异构机器人协作方法 |
-
2015
- 2015-12-11 CN CN201510920419.3A patent/CN105429858B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090105879A1 (en) * | 2007-10-22 | 2009-04-23 | Victor Ng-Thow-Hing | Evaluation of communication middleware in a distributed humanoid robot architecture |
CN102831318A (zh) * | 2012-08-25 | 2012-12-19 | 北京科技大学 | 异构多机器人系统中基于个体能力的任务分配算法 |
CN103324173A (zh) * | 2013-06-08 | 2013-09-25 | 上海交通大学 | 基于中间件的多异构机器人协作方法 |
Non-Patent Citations (2)
Title |
---|
RONNY HARTANTO,MARKUS EICH: ""Reliable, Cloud-based Communication for Multi-Robot Systems"", 《TECHNOLOGIES FOR PRACTICAL ROBOT APPLICATIONS》 * |
樊泽栋 等: ""机器人中间件消息实时性保证机制的研究与实现"", 《软件》 * |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105956748A (zh) * | 2016-04-22 | 2016-09-21 | 中国人民解放军国防科学技术大学 | 多搜救机器人系统任务分配方法 |
CN105956748B (zh) * | 2016-04-22 | 2019-09-13 | 中国人民解放军国防科学技术大学 | 多搜救机器人系统任务分配方法 |
CN106055417A (zh) * | 2016-06-02 | 2016-10-26 | 北京百度网讯科技有限公司 | 用于机器人操作系统的消息传输方法和装置 |
CN106452841A (zh) * | 2016-09-13 | 2017-02-22 | 中国电子科技集团公司第三十二研究所 | 在机器人操作系统中使用传输服务质量的方法 |
CN106452841B (zh) * | 2016-09-13 | 2019-07-26 | 中国电子科技集团公司第三十二研究所 | 在机器人操作系统中使用传输服务质量的方法 |
CN106737684B (zh) * | 2017-01-12 | 2019-03-22 | 北京航空航天大学 | 一种基于局域网的模块化机器人控制系统 |
CN106737684A (zh) * | 2017-01-12 | 2017-05-31 | 北京航空航天大学 | 一种基于局域网的模块化机器人控制系统 |
CN106936932A (zh) * | 2017-04-26 | 2017-07-07 | 中国人民解放军国防科学技术大学 | 一种通过云服务协议访问机器人软件包的方法 |
CN106936932B (zh) * | 2017-04-26 | 2019-07-26 | 中国人民解放军国防科学技术大学 | 一种通过云服务协议访问机器人软件包的方法 |
CN111742298B (zh) * | 2018-02-20 | 2024-03-22 | 兰斯大学 | 用于互连机器人的方法 |
CN111742298A (zh) * | 2018-02-20 | 2020-10-02 | 兰斯大学 | 用于互连机器人的方法 |
CN108566316A (zh) * | 2018-04-18 | 2018-09-21 | 百度在线网络技术(北京)有限公司 | 无人车时延统计方法、装置、设备及计算机可读介质 |
CN109756552A (zh) * | 2018-08-22 | 2019-05-14 | 比亚迪股份有限公司 | 一种乘客信息系统消息分发方法和装置及乘客信息系统 |
CN109656726A (zh) * | 2018-11-28 | 2019-04-19 | 中国船舶重工集团公司第七〇九研究所 | 一种适用于数据中心的工业信息交互系统及方法 |
CN111262892A (zh) * | 2018-11-30 | 2020-06-09 | 北京图森智途科技有限公司 | 一种多ros的服务发现系统 |
CN110086891A (zh) * | 2019-06-25 | 2019-08-02 | 奥特酷智能科技(南京)有限公司 | 基于dds协议在自动驾驶中实现分布式通信的方法 |
CN110086891B (zh) * | 2019-06-25 | 2019-09-27 | 奥特酷智能科技(南京)有限公司 | 基于dds协议在自动驾驶中实现分布式通信的方法 |
CN113138864A (zh) * | 2020-01-19 | 2021-07-20 | 华为技术有限公司 | 消息通信方法、计算机系统及代理装置 |
WO2021143190A1 (zh) * | 2020-01-19 | 2021-07-22 | 华为技术有限公司 | 消息通信方法、计算机系统及代理装置 |
CN112260747A (zh) * | 2020-10-19 | 2021-01-22 | 中国人民解放军国防科技大学 | 机载协同控制与中继传输系统 |
CN115733886A (zh) * | 2021-08-26 | 2023-03-03 | 广州汽车集团股份有限公司 | 基于fpga和ros的嵌入式通信系统、方法、装置、介质及车辆 |
CN115733886B (zh) * | 2021-08-26 | 2024-04-19 | 广州汽车集团股份有限公司 | 基于fpga和ros的嵌入式通信系统、方法、装置、介质及车辆 |
CN114102617A (zh) * | 2021-11-11 | 2022-03-01 | 山东新一代信息产业技术研究院有限公司 | 一种协同安防机器人 |
CN114237221A (zh) * | 2021-11-16 | 2022-03-25 | 山东大学 | 基于中心映射的低延迟组合体机器人运动控制系统及方法 |
CN115037807A (zh) * | 2022-06-10 | 2022-09-09 | 湖南大学 | 一种工业机器人服务总线上集成dds协议的方法及系统 |
CN115037807B (zh) * | 2022-06-10 | 2023-08-18 | 湖南大学 | 一种工业机器人服务总线上集成dds协议的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105429858B (zh) | 2018-08-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105429858A (zh) | 一种多机器人间实时消息传递方法 | |
CN104660682B (zh) | 一种基于td-lte的opc数据采集与监控智能终端 | |
CN103518350A (zh) | 群组通信的方法、系统、群组服务器和群组成员设备 | |
CN105260250A (zh) | 一种Linux系统与Android系统的双系统通信装置 | |
CN102158482A (zh) | 基于json数据协议的客运信息通信方法及系统 | |
CN101557426A (zh) | 基于Web Service的统一管理接口机、Web Service组件及方法 | |
CN108206864B (zh) | 基于微信的车辆信息同步实时查询系统和信息同步方法 | |
CN110380775B (zh) | 一种大规模多业务卫星星座运管系统及其工作方法 | |
CN107181794B (zh) | 基于dimse消息发送与接收的dicom网络传输方法 | |
CN100452704C (zh) | 一种发布博客文章的方法和系统 | |
CN102904967A (zh) | 一种基于五金机电领域的智能物联网数据交换平台方案 | |
CN103404191A (zh) | 数据传输的方法、装置和系统 | |
CN103092951A (zh) | 一种基于信息展现层的通用数据交换方法及系统 | |
CN109089299A (zh) | 一种基于SmartConfig模式让设备注册到云端的配网方法 | |
CN105357654B (zh) | 一种基于北斗的应急通信服务系统及其工作方法 | |
CN102917212A (zh) | 一种基于rtp和rtsp的3g无线视频监控实现方法及系统 | |
CN105515947B (zh) | 一种基于xmpp的异构终端消息互通的方法、服务器及系统 | |
CN104270432A (zh) | 基于钻井行业实时数据服务系统及数据交互方法 | |
CN106302432A (zh) | 一种基于车联网的通信装置及控制方法 | |
CN103533001A (zh) | 基于http多重代理的通信方法和系统、中间代理服务器 | |
CN102523580A (zh) | 一种m2m业务终端数据处理方法、m2m业务卡和m2m终端数据处理卡 | |
CN102281584A (zh) | 一种物联网能力的实现方法及系统 | |
CN205670192U (zh) | 北斗定位与通信一体化通用系统 | |
CN104320695A (zh) | 基于智能电视和移动设备的家庭社交方法及系统 | |
CN105430665B (zh) | 实现多网混合规模组网的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |