本发明涉及自动驾驶,尤其涉及一种数据通信方法、装置、程序产品、介质、计算机装置和移动工具。
背景技术:
1、自动驾驶系统由多个不同的功能模块组成,例如感知模块、地图模块、规控模块、定位模块、业务模块和驱动模块等。由于大部分的自动驾驶大脑控制器是基于linux系统开发的,没有自己独特且好用的进程间通信机制,目前自动驾驶分布式系统下的通信需要产生中间件进行基于网络的本地回环通信,回环通信在数据进行打包和解包的过程中影响通信效率,尤其给在同一设备中的模块进行通信带来了没必要的通信效率损失。
2、目前在利用共享内存进行进程间通信时,第一种方式为预留足够大的内存空间作为数据传输区域,具体的:已经预先知道整体数据通信中需要的最大传输带宽,在初始化时申请足够的内存空间用作数据传输区域,针对第一种方式浪费内存资源。第二种方式为在遇到可变长数据时,重新申请空间扩容用来传输变长的数据,具体的:不用关心数据实际传输带宽大小,先给一个初始值,在本次数据比上次数据需要的数据带宽更大的时,申请更大的数据空间,并将历史数据从以前申请过的较小的数据空间拷贝过来,再释放以前申请过的较小的数据空间,针对第二种方式如果遇到逐渐递增的数据带宽,会产生频繁的申请、拷贝转移文件和释放内存,效率较低,且易产生内存碎片浪费内存资源。
技术实现思路
1、本发明的目的是针对现有技术的缺陷,提供一种数据通信方法、装置、程序产品、介质、计算机装置和移动工具,以解决现有技术中共享内存资源使用不合理,自动驾驶同设备模块间通信效率低的技术问题。
2、为实现上述目的,本发明第一方面提供了一种数据通信方法,包括:
3、获取待更新数据信息的数据名称和数据内容;
4、根据所述待更新数据信息的数据名称在对应的共享内存地址中查找第一数据头部信息,所述第一数据头部信息包括数据共享内存块个数和共享内存块地址;
5、根据所述待更新数据信息的数据内容计算所需数据共享内存块个数;
6、若所述所需数据共享内存块个数大于所述第一数据头部信息的数据共享内存块个数,根据需扩展数据共享内存块个数刷新所述第一数据头部信息的数据共享内存块个数和共享内存块地址,生成第二数据头部信息;
7、发送所述待更新发布数据信息的数据内容至所述第二数据头部信息的共享内存块地址指向的共享内存位置。
8、进一步,所述根据所述待更新数据信息的数据内容计算所需数据共享内存块个数,具体为:
9、获取所述第一数据头部信息的预设单元数据块大小;
10、根据所述预设单元数据块大小和待更新数据信息的数据内容大小计算所需数据共享内存块个数。
11、进一步,所述根据需扩展数据共享内存块个数刷新所述第一数据头部信息的数据共享内存块个数和共享内存块地址,生成第二数据头部信息,具体包括:
12、保留所述第一数据头部信息的数据共享内存块键值,根据预设命名规则生成扩展数据共享内存块键值,其中需扩展数据共享内存块个数为所需数据共享内存块个数与所述第一数据头部信息的数据共享内存块个数的差值;
13、通过查找算法生成所述扩展数据共享内存块键值对应的共享内存块地址;
14、根据所述第一数据头部信息的共享内存块地址和所述扩展数据共享内存块键值对应的共享内存块地址生成第二数据头部信息的共享内存块地址。
15、进一步,所述查找算法为哈希算法。
16、进一步,所述预设命名规则,具体为:
17、根据所述第一数据头部信息的数据共享内容块键值生成扩展数据共享内存块键值的唯一键值。
18、进一步,所述发送所述待更新发布数据信息的数据内容至所述第二数据头部信息的共享内存块地址指向的共享内存位置之后,所述方法还包括:
19、获取待更新数据信息传输完成释放信号,调用数据获取api从对应数据名称的所述第二数据头部信息的共享内存块地址指向的共享内存位置读取更新数据信息。
20、进一步,若所述第一数据头部信息为初始化数据头部信息,设置所述第一数据头部信息的数据共享内存块个数为1。
21、本发明第二方面提供了一种数据通信装置,包括:
22、获取模块,用于获取待更新数据信息的数据名称和数据内容;
23、查找模块,用于根据所述待更新数据信息的数据名称在对应的共享内存地址中查找第一数据头部信息,所述第一数据头部信息包括数据共享内存块个数和共享内存块地址;
24、第一数据处理模块,用于根据所述待更新数据信息的数据内容计算所需数据共享内存块个数;
25、数据更新模块,用于若所述所需数据共享内存块个数大于所述第一数据头部信息的数据共享内存块个数,根据需扩展数据共享内存块个数刷新所述第一数据头部信息的数据共享内存块个数和共享内存块地址,生成第二数据头部信息;
26、发送模块,用于发送所述待更新发布数据信息的数据内容至所述第二数据头部信息的共享内存块地址指向的共享内存位置。
27、本发明第三方面提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行如第一方面任一项所述的数据通信方法。
28、本发明第四方面提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现第一方面任一项所述方法的步骤。
29、本发明第五方面提供了一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现第一方面任一项所述方法的步骤。
30、本发明第六方面提供了一种移动工具,其特征在于,包括第五方面所述的计算机装置。
31、本发明提供的数据通信方法及装置、相关产品,针对待更新数据信息计算所需数据共享内存块个数,并根据需扩展数据共享内存块个数刷新数据共享内存块个数和共享内存块地址,解决了现有技术中共享内存资源使用不合理,自动驾驶同设备模块间通信效率低的问题。
1.一种数据通信方法,其特征在于,所述方法包括:
2.根据权利要求1所述的数据通信方法,其特征在于,所述根据所述待更新数据信息的数据内容计算所需数据共享内存块个数,具体为:
3.根据权利要求1所述的数据通信方法,其特征在于,所述根据需扩展数据共享内存块个数刷新所述第一数据头部信息的数据共享内存块个数和共享内存块地址,生成第二数据头部信息,具体包括:
4.根据权利要求3所述的数据通信方法,其特征在于,所述查找算法为哈希算法。
5.根据权利要求3所述的数据通信方法,其特征在于,所述预设命名规则,具体为:
6.根据权利要求1所述的数据通信方法,其特征在于,所述发送所述待更新发布数据信息的数据内容至所述第二数据头部信息的共享内存块地址指向的共享内存位置之后,所述方法还包括:
7.根据权利要求1所述的数据通信方法,其特征在于,若所述第一数据头部信息为初始化数据头部信息,设置所述第一数据头部信息的数据共享内存块个数为1。
8.一种数据通信装置,其特征在于,所述数据通信装置包括:
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-7所述方法的步骤。
10.一种计算机装置,包括存储器、处理器及存储在存储器上的计算机程序,其特征在于,所述处理器执行所述计算机程序以实现权利要求1-7所述方法的步骤。
11.一种移动工具,其特征在于,包括如权利要求10所述的计算机装置。