一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法技术

技术编号:39188056 阅读:9 留言:0更新日期:2023-10-27 08:35
本发明专利技术使用.hura后缀的文本文件定义消息,即数据类型,定义好的hura文件通过程序解析后,自动生成对应的CPP头文件,头文件内包含了对应的数据类型class,该class的成员变量与hura文件的内容一一对应,同时成员函数包含了序列化encode和反序列化decode函数。在自动驾驶软件源代码中引用生成的头文件,使用ROS等中间件发布/订阅接口时传输中间件内置的数组数据类型,该内置的数组数据类型数据使用生成的数据类型class的encode/decode函数填充或解析,由于数据在传输过程以二进制数组的形式存在,第三方无法获悉数据代表的意义。本发明专利技术能针对不同自动驾驶通信中间件,减少系统迁移产生的工作量,同时特定的数据序列化方法杜绝了数据泄露和破解的风险。了数据泄露和破解的风险。了数据泄露和破解的风险。

【技术实现步骤摘要】
一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法


[0001]本专利技术涉及一种数据处理
,特别涉及一种针对不同自动驾驶系统通信中间件的统一的消息定义、生成和序列化的方法。

技术介绍

[0002]目前自动驾驶技术在世界范围内飞速发展,是学术界和工业界的前沿研究方向。自动驾驶系统一般可分为五大模块:地图模块、感知模块、定位模块、决策规划模块、控制模块。五大模块之间存在多种、数据量庞大的数据交换,通信中间件提供了模块之间的数据交换接口和通道。
[0003]业界主流的通信中间件有ROS、DDS等,大多采用订阅/发布体系的通信模式,并且各自拥有不同的消息数据定义方法,这对于同一自动驾驶软件系统在不同的通信中间件之间迁移来说存在非常大的挑战和巨大的适配工作量,不利于自动驾驶软件系统针对不同通信中间件要求的工程化落地。另外,像ROS这类开源的通信中间件,提供丰富的公共消息类型,采用了这些公共消息类型的自动驾驶系统存在消息明文暴露的风险,给黑客或不法分子提供了伪造消息攻击系统的渠道。

技术实现思路

[0004]本专利技术能针对不同自动驾驶通信中间件提供统一的消息定义、生成和序列化方法,减少系统迁移产生的工作量,同时特定的数据序列化方法杜绝了数据泄露和破解的风险。其具体技术方案如下所述:作为第一方面,本专利技术提供了一种统一不同自动驾驶系统通信中间件的消息定义、生成和序列化的方法,所述方法大致流程如下步骤:S1,自定义hura消息文件example.hura(此处的example仅为一个举例,并非对文件名进行限定);S2,定义ros msg文件为HuraMessage.msg,或定义dds idl文件为HuraMessage.idl;S3,解析example.hura文件并生成对应hura消息cpp头文件example.hpp;S4,解析HuraMessage.msg或HuraMessage.idl文件并生成对应ros/dds消息cpp头文件HuraMessage.hpp;S5,源代码引用生成的hura消息cpp头文件example.hpp和ros/dds消息头文件HuraMessage.hpp进行发布消息/订阅消息;其中,所述S1与S2可同时进行,所述S3与S4可同时进行。
[0005]基于上述基础,本专利技术进一步地,所述S1中的hura消息文件为文本文件,支持的变量类型有boolean、byte、int8_t、int16_t、int32_t、int64_t、float、double、string;自定义的消息类型可嵌套引用。
[0006]基于上述基础,本专利技术进一步地,所述S2中的消息文件HuraMessage.msg/HuraMessage.idl的内部数据类型为uint8数组。
[0007]基于上述基础,本专利技术进一步地,所述S3中的hura文件有package,message关键字,package关键字后跟的字符串会被解析成cpp的命名空间,message关键字声明的数据结构解析后生成对应的cpp类,该cpp类的公有成员变量包含了声明的数据结构的所有成员,且实现了相应的序列化encode和反序列化decode函数;其中序列化的规则为按照变量声明的顺序依次按大端字节序紧凑排布填充为二进制数组,反序列化规则反之。
[0008]基于上述基础,本专利技术进一步地,使用构建工具catkin/opendds_idl将所述S4中的HuraMessage.msg/HuraMessage.idl文件解析并生成对应ros/dds消息cpp头文件HuraMessage.hpp。
[0009]基于上述基础,本专利技术进一步地,所述S5中的订阅消息为:在cpp源码文件中,引用ros msg文件或dds idl文件,和自定义hura文件生成的cpp头文件;实例化一个::ros::Subscriber类型或OpenDDS::DCPS::DDSTraits<HuraMessage>::DataReaderType类型的subscriber,subscriber传输的数据类型为HuraMessage;在subscriber的回调函数中,将传入的HuraMessage类型实例message的data拷贝到uint8类型的数组buffer,实例化自定义的消息数据类型example,将buffer传入example的decode方法中,buffer的数据将被解析并对example的成员变量赋值。
[0010]基于上述基础,本专利技术进一步地,所述S5中的发布消息为:在cpp源码文件中,引用ros msg文件或dds idl文件,和自定义hura文件生成的cpp头文件,实例化自定义的消息数据类型example并赋值,然后调用该类型实例example的encode函数将要传输的消息实例序列化成二进制数据存放于uint8类型的数组buffer中;实例化一个::ros::Publisher类型或OpenDDS::DCPS::DDSTraits<HuraMessage>::DataWriterType类型的publisher,publisher传输的数据类型为HuraMessage;将buffer的数据拷贝给HuraMessage类型实例message的成员变量data;publisher调用publish方法发送message。
[0011]作为第二方面,本专利技术提供了一种数据处理装置,所述数据处理装置包括中央处理器、可读存储器、数据总线。所述中央处理器同所述可读存储器通过数据总线进行数据连接,所述中央处理器根据操作指令对可读存储器进行控制,从而执行上述的任意一个方法。
[0012]本专利技术的有益效果是:本专利技术能针对不同自动驾驶通信中间件提供统一的消息定义、生成和序列化方法,减少系统迁移产生的工作量,同时特定的数据序列化方法杜绝了数据泄露和破解的风险。
附图说明
[0013]为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。
[0014]图1为本专利技术的方法流程示意图;
图2为本专利技术的hura消息文件的消息定义格式示例图;图3为本专利技术的自定义的消息类型可嵌套引用的引用规则示例图;图4为本专利技术的序列化encode函数示例图;图5为本专利技术的反序列化decode函数示例图。
具体实施方式
[0015]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本专利技术保护的范围。
[0016]在本具体实施例的描述中,需要说明的是,术语“中心”、“上本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法,其特征在于,所述方法如下:S1,自定义hura消息文件,例如自定义为example.hura;S2,定义ros msg文件,例如定义为HuraMessage.msg;或定义dds idl文件,例如定义为HuraMessage.idl;S3,解析example.hura文件并生成对应hura消息cpp头文件example.hpp;S4,解析HuraMessage.msg或HuraMessage.idl文件并生成对应ros/dds消息cpp头文件HuraMessage.hpp;S5,源代码引用生成的hura消息cpp头文件example.hpp和ros/dds消息头文件HuraMessage.hpp进行发布消息/订阅消息;其中,所述S1与S2可同时进行,所述S3与S4可同时进行。2.根据权利要求1所述的一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法,其特征在于,所述S1中的hura消息文件为文本文件,支持的变量类型有boolean、byte、int8_t、int16_t、int32_t、int64_t、float、double、string;自定义的消息类型可嵌套引用。3.根据权利要求2所述的一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法,其特征在于,所述S2中的消息文件HuraMessage.msg/HuraMessage.idl的内部数据类型为uint8数组。4.根据权利要求3所述的一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法,其特征在于,所述S3中的hura文件有package,message关键字,package关键字后跟的字符串会被解析成cpp的命名空间,message关键字声明的数据结构解析后生成对应的cpp类,该cpp类的公有成员变量包含了声明的数据结构的所有成员,且实现了相应的序列化encode和反序列化decode函数;其中序列化的规则为按照变量声明的顺序依次按大端字节序紧凑排布填充为二进制数组,反序列化规则反之。5.根据权利要求4所述的一种统一不同自动驾驶消息中间件的消息自定义、生成和序列化方法,其特征在于,使用构建工具catkin/opendds_idl将所述S4中的HuraMessage.msg...

【专利技术属性】
技术研发人员:胡志远朱仁杰王进涛张果杨洁
申请(专利权)人:巨视慧行武汉科技有限公司
类型:发明
国别省市:

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

1