用于机器人操作系统的消息传输方法和装置制造方法及图纸

技术编号:13928108 阅读:54 留言:0更新日期:2016-10-28 11:02
本申请公开了用于机器人操作系统的消息传输方法和装置。所述方法的一具体实施方式包括:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。该实施方式实现了发送节点和接收节点互不干扰、有顺序地读写共享内存。

【技术实现步骤摘要】

本申请涉及计算机
,具体涉及计算机操作系统
,尤其涉及用于机器人操作系统的消息传输方法和装置
技术介绍
机器人操作系统(ROS,Robot Operating System)由很多节点和话题构成,每个节点都是一个独立的进程,话题是节点之间建立连接的依据。节点分为两种:发送节点和接收节点,发送节点负责将处理完成的信息发送出去,接收节点负责接收发送节点发出的信息,并根据命令做出相应操作(有时一个节点即是发送者又是接收者)。当节点之间建立连接后,发送-接收节点通过共享内存的方式进行消息传输。使用共享内存的方式进行传输通常是多个发送和接收节点同时使用同一段共享内存区。两个典型的问题是:1)当有发送节点正在向共享内存区写入数据时,有其他节点也对这段内存进行读写,这时发送节点可能被中途打断,导致异常退出;2)当有接收节点正在读取某段共享内存区时,恰好发送节点也对这块内存进行写入,接收节点将读到错误的信息,做出错误的处理结果,并下达错误的运行指令。所以如何同步这些节点进程,让他们互不干扰有顺序地读写共享内存就成为了一个要解决的问题。
技术实现思路
本申请的目的在于提出一种用于机器人操作系统的消息传输方法和装置,来解决以上
技术介绍
部分提到的技术问题。第一方面,本申请提供了一种用于机器人操作系统的消息传输方法,所述方法包括:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。在一些实施例中,所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据,包括:所述发送节点在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;所述发送节点在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。在一些实施例中,所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入,包括:所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。第二方面,本申请提供了一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:接收节点接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,共享内存中的内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。在一些实施例中,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据,包括:所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。在一些实施例中,所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1,包括:所述接收节点在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;所述接收节点在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。第三方面,本申请提供了一种用于机器人操作系统的消息传输装置,其特征在于,所述装置包括:查找单元,配置用于循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;写入单元,配置用于将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;读取通知单元,配置用于在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。在一些实施例中,所述写入单元进一步配置用于:在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。在一些实施例中,所述读取通知单元进一步配置用于:在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。第四方面,本申请提供了一种用于机器人操作系统的消息传输装置,其特征在于,所述装置包括:接收单元,配置用于接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;读取单元,配置用于当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;写入通知单元,配置用于读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。在一些实施例中,所述读取单元进一步配置用于:在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。在一些实施例中,所述写入通知单元进一步配置用于:在将所述内存块标志量的读取标识所指示的值减1之前对所述内存块的内存块标志量上数据互斥锁;在将所述内存块标志量的读取标识所指示的值减1之后释放所述数据互斥锁。本申请提供的用于机器人操作系统的消息传输方法和装置,通过使用内存块标志量和数据互斥锁,有效地保证了内存块在同一时刻只能被一个发送节点写入或多个接收节点读取。附图说明通过阅读参照以下附图所作的对非限制性实施例本文档来自技高网...

【技术保护点】
一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。

【技术特征摘要】
1.一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:发送节点循环遍历查找共享内存中的内存段中内存块标志量的写入标识指示可写入并且读取标识指示0值的内存块,一个内存段包括多个内存块,其中,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据;所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入、退出所查找到的内存块并通知接收节点所查找到的内存块可读。2.根据权利要求1所述的用于机器人操作系统的消息传输方法,其特征在于,所述发送节点将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入后向所查找到的内存块写入数据,包括:所述发送节点在将所查找到的内存块的内存块标志量的写入标识修改为指示正在写入之前对所查找到的内存块的内存块标志量上数据互斥锁;所述发送节点在将所述内存块标志量的写入标识修改为指示正在写入之后释放所述数据互斥锁。3.根据权利要求1或2所述的用于机器人操作系统的消息传输方法,其特征在于,所述发送节点在写入数据后将所查找到的内存块的内存块标志量的写入标识重置为指示可写入,包括:所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之前对所查找到的内存块的内存块标志量上数据互斥锁;所述发送节点在将所查找到的内存块的内存块标志量的写入标识重置为指示可写入之后释放所述数据互斥锁。4.一种用于机器人操作系统的消息传输方法,其特征在于,所述方法包括:接收节点接收发送节点发送的内存块可读的通知后,判断所述内存块可读的通知所指示的内存块的内存块标志量的写入标识是否指示可写入,其中,共享内存中的内存段包括多个内存块,对于每个内存块,内存块标志量存储在该内存块上且包括写入标识和读取标识,写入标识指示该内存块正在写入或者可写入,读取标识指示正在读取该内存块的接收节点数目;当所述内存块可读的通知所指示的内存块的内存块标志量的写入标识指示可写入时,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据;所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1、退出所述内存块并通知发送节点所述内存块可写入。5.根据权利要求4所述的用于机器人操作系统的消息传输方法,其特征在于,所述接收节点将所述内存块的内存块标志量的读取标识所指示的值加1后从所述内存块读取数据,包括:所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之前对所述内存块的内存块标志量上数据互斥锁;所述接收节点在将所述内存块的内存块标志量的读取标识所指示的值加1之后释放所述数据互斥锁。6.根据权利要求4或5所述的用于机器人操作系统的消息传输方法,其特征在于,所述接收节点读取数据后将所述内存块的内存块标志量的读取标识所指示的值减1,包括:所述接收节点在将所述内...

【专利技术属性】
技术研发人员:冯靖超夏黎明王全曲宁陈卓
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京;11

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

1