数据回放方法、电子设备及可读存储介质

文档序号:1952358 发布日期:2021-12-10 浏览:13次 >En<

阅读说明:本技术 数据回放方法、电子设备及可读存储介质 (Data playback method, electronic device and readable storage medium ) 是由 田小森 谢蓉 张庆余 杜志彬 余楚礼 靳志刚 王耀福 于 2021-11-11 设计创作,主要内容包括:本发明实施例公开了一种数据回放方法、电子设备及介质,涉及自动驾驶领域。其中,方法包括:在实际场景中实时采集数据,并将采集到的数据和需要回放的处理后数据实时存储在采集端共享内存中,在所述共享内存中新数据覆盖历史数据;监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件;按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中。本实施例可以提高回放系统的实时性、稳定性和简易性。(The embodiment of the invention discloses a data playback method, electronic equipment and a medium, and relates to the field of automatic driving. The method comprises the following steps: acquiring data in real time in an actual scene, storing the acquired data and processed data to be played back in a shared memory of an acquisition end in real time, and covering historical data with new data in the shared memory; reading the latest stored data when monitoring that the acquisition end shared memory stores new data, and writing the read data into a target file according to a time sequence; and storing the data stored in the target file into a shared memory of a playback end according to the time sequence. The embodiment can improve the real-time performance, stability and simplicity of the playback system.)

数据回放方法、电子设备及可读存储介质

技术领域

本发明实施例涉及自动驾驶领域,尤其涉及一种数据回放方法、电子设备及介质。

背景技术

目前比较流行的自动驾驶开源项目autoware(世界上第一款用于自动驾驶汽车的“一体化”开源软件)和百度开源自动驾驶平台apollo3.0及之前的版本都是基于ROS(RobotOperating System,机器人操作系统)实现的。ROS是一个面向机器人的软件平台。在ROS中,自动驾驶系统的各模块作为通信节点基于网络通信机制进行通信。

自动驾驶算法研发过程中需要对算法进行大量实车测试,为了将实车测试中的数据存储下来在实验室进行回放,在ROS中通常采用话题录制与rosbag文件回放的方式。但自动驾驶系统对各模块间通信的实时性要求较高,而ROS的节点通信机制使数据采集和回放的实时性差,回放算法复杂度高,且中心化节点的存在也降低了回放系统的稳定性。

发明内容

本发明实施例提供一种数据回放方法、电子设备及介质,以提高数据采集和回放的效率,降低回放算法的复杂度,从而保证回放系统的实时性、稳定性和简易性。

第一方面,本发明实施例提供了一种数据回放方法,包括:

在实际场景中实时采集数据,并将采集到的数据和需要回放的处理后数据实时存储在采集端共享内存中,在所述共享内存中新数据覆盖历史数据,其中,所述处理后数据为对所述采集到的数据处理后得到的数据;

监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件;

按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中。

第二方面,本发明实施例还提供了一种电子设备,所述电子设备包括:

一个或多个处理器;

存储器,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现任一实施例所述的数据回放方法。

第三方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例所述的数据回放方法。

本发明实施例本发明实施例将在实际场景中采集到的数据和需要回放的处理后数据实时存储在采集端共享内存中,利用共享内存的特性,使得各模块(例如自动驾驶系统的各模块)通过访问共享内存实现数据交互,提高了数据采集和回放的实时性;交互过程中各模块都是平等的主体,实现了通信机制的去中心化,提高了回放系统的稳定性;同时,通过目标文件记录共享内存数据的变化过程,按照数据写入的时间顺序再次将目标文件中的数据写入回放端共享内存就可以实现实际场景数据的回放,回放算法简单,对处理器和运行平台要求非常低。

附图说明

为了更清楚地说明本发明

具体实施方式

或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的一种数据回放方法的流程图;

图2是本发明实施例提供的一种xml文件的示意图;

图3是本发明实施例提供的一种电子设备的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将对本发明的技术方案进行清楚、完整的描述。显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施例,都属于本发明所保护的范围。

在本发明的描述中,需要说明的是,术语“中心”、“上”、“下”、“左”、“右”、“竖直”、“水平”、“内”、“外”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”仅用于描述目的,而不能理解为指示或暗示相对重要性。

在本发明的描述中,还需要说明的是,除非另有明确的规定和限定,术语“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

图1是本发明实施例提供的一种数据回放方法的流程图,适用于将在实际场景中采集的数据在回放端进行回放的情况,本实施例由电子设备执行。结合图1,本实施例提供的方法具体包括:

S10、在实际场景中实时采集数据,并将采集到的数据和需要回放的处理后数据实时存储在采集端共享内存中,在所述共享内存中新数据覆盖历史数据。其中,所述处理后数据为对所述采集到的数据处理后得到的数据。

以自动驾驶场景为例,实际场景为自动驾驶车辆行驶的实际路段;采集端为部署在自动驾驶车辆内的计算机设备,该计算机设备是自动驾驶系统的数据处理中心,处理自动驾驶系统各模块的数据。自动驾驶系统的各模块包括:驱动模块、感知模块、融合模块、检测模块、定位模块、控制模块、车辆网模块等。各模块之间存在大量信息交互,如驱动模块获取驱动信息后,将驱动信息发送给感知模块、融合模块或定位模块等。为了提高数据交互效率,本实施例中预先在采集端创建一块共享内存,该共享内存用于存储各模块在实际场景中采集到的数据以及需要回放的处理后数据以便各模块对应的进程能够通过共享内存进行数据存取,从而实现最快的数据交互。

创建采集端共享内存后,在实际场景中通过各模块实时采集数据,并将所述数据实时存储在该共享内存中。由于实际场景中的数据是不断变化的,因此该共享内存中的数据也不断变化,同一种数据的新数据不断覆盖历史数据,例如新的雷达数据会覆盖旧的雷达数据。这样可以保证共享内存内的数据始终都是最新的,其它模块读取到的数据始终都是最新的。

在所述在实际场景中实时采集数据之后,对采集到的数据进行处理得到处理后数据,将需要回放的处理后数据实时存储在采集端共享内存中。例如,通过定位模块连接的GPS/IMU(Global Positioning System/Inertial Measurement Unit,全球定位系统/惯性测量单元)传感器直接采集到的数据包括GPS数据和IMU数据;采集到GPS数据和IMU数据后,通过定位模块将它们进行融合形成GPS/IMU定位数据,该数据也将存储在该共享内存中,用于其它模块需要时进行读取。

S20、监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件。

采集端共享内存中只保存最新的数据,历史数据被覆盖后即无法从共享内存中读取。而数据回放需要重现数据的变化过程,因此本实施例在共享内存之外在采集端中创建目标文件,采用目标文件按照时间顺序记录共享内存中存储过的所有历史数据。

具体来说,首先,对采集端共享内存进行监听,目的是获知共享内存中的数据何时发生了变化。可选地,在采集端共享内存中设置监听位,监听位响应于共享内存中存储新数据而变化。按照一定的监听频率读取监听位的值;如果监听位的值为1,则表明共享内存中存储了新数据;如果监听位的值为0,则表明共享内存数据中的数据未发生变化。

然后,监听到共享内存中存储新数据时读取最新存储的数据,将读取到的数据按照时间顺序写入目标文件。具体来说,为了记录数据写入的时间顺序,在每次数据写入时,可以将采集端的当前系统时间戳和读取到的数据一并写入目标文件。

需要说明的是,共享内存中只记录最新的数据,容量可以很小,只需满足自动驾驶系统当前的数据存储需求即可;但目标文件记录了共享内存中存储过的所有历史数据,容量是比较大的。为了避免占用过多的内存空间,同时方便拷贝复制,目标文件并不存储在内存中,而是存储在其他空间,例如磁盘。

S30、按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中。

仍以自动驾驶场景为例,回放端为运行在实验室的计算机设备,在该计算机设备中创建一块回放端共享内存,用于回放采集端共享内存存储数据的过程。在将采集端共享内存中的数据写入目标文件后,将所述目标文件存储至回放端,并按照写入时记录的时间顺序将目标文件中的数据存储至回放端共享内存中。这样就在回放端共享内存中实现了对采集端共享内存的数据存储过程的回放。

本实施例的技术效果是:本发明实施例将在实际场景中采集到的数据和需要回放的处理后数据实时存储在采集端共享内存中,利用共享内存的特性,使得各模块(例如自动驾驶系统的各模块)通过访问共享内存实现数据交互,提高了数据采集和回放的实时性;交互过程中各模块都是平等的主体,实现了通信机制的去中心化,提高了回放系统的稳定性;同时,通过目标文件记录共享内存数据的变化过程,按照数据写入的时间顺序再次将目标文件中的数据写入回放端共享内存就可以实现实际场景数据的回放,回放算法简单,对处理器和运行平台要求非常低。

在上述实施例和下述实施例的基础上,考虑到实际场景中采集到的数据通常具有不同的数据类型,本实施例对采集端共享内存存储数据的过程,以及目标文件写入数据的过程进行细化。可选地,所述在实际场景中实时采集数据,并将采集到的数据和需要回放的处理后数据实时存储在采集端共享内存中,包括:在实际场景中通过多个传感器实时采集得到多种类型的数据,将采集到的数据和需要回放的处理后数据按照数据类型实时存储在采集端共享内存中对应的内存块中。

相应地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,将读取到的数据按照时间顺序写入目标文件,包括:读取用于定义所述目标文件数据存储属性的xml(Extensible Markup Language,可扩展标记语言)文件,确定所述目标文件的存储地址和对应于不同数据类型的各存储空间;监听到所述采集端共享内存中存储新数据时,读取最新存储的数据;根据读取到的数据的数据类型,将所述读取到的数据按照时间顺序写入存储地址处目标文件中对应的存储空间。

在一具体实施方式中,本实施例提供的数据回放方法包括如下步骤:

步骤一:在实际场景中通过多个传感器实时采集得到多种类型的数据,将采集到的数据和需要回放的处理后数据按照数据类型实时存储在采集端共享内存中对应的内存块中。

自动驾驶系统包括多个传感器,可以采集到多种类型的数据;相应地,对采集到数据进行处理后,可以得到多种类型的处理后数据。为了保证数据存取的有序性,本实施例将采集端共享内存划分为不同的内存块,为每种数据类型分配一块独立的内存块。采实际场景中通过任一传感器实时采集的到一种类型的数据后,实时存储在该数据类型对应的内存块中;得到任一类型的处理后数据后,存储在该数据类型对应的内存块中。其中,采集到的数据类型的集合与处理后的数据类型的集合可以相同可以不同,也可以有部分重合。

例如,将采集端共享内存划分为多个内存块,多个内存块名称分别为“图像”、“总线信号”和“雷达数据”等。通过摄像头采集到图像后,将该图像存储到名称为“图像”的内存块中;通过雷达采集到的雷达数据时,将该数据存储到名称为“雷达数据”的内存块中。

又例如,围绕定位模块需要回放的数据类型,采集端共享内存包括名称为“GPS”、“IMU”和“GPS/IMU融合数据”的三个内存块。通过GPS传感器采集到GPS数据后存储在内存块“GPS”中;通过IMU传感器采集到的IMU数据存储在内存块“IMU”中;通过定位模块将GPS数据和IMU数据融合形成GPS/IMU定位数据后,将该数据存储在内存块“GPS/IMU融合数据”中。

可选地,各内存块通过该内存块的名称和数据地址来访问。其中,数据地址代表该内存块在采集端共享内存中的地址,可以理解为该内存块的首地址相对于采集端共享内存的首地址的距离。对任一内存块进行访问时,首先获取要访问的内存块的名称,根据该名称获取对应的数据地址,根据该数据地址和采集端共享内存的首地址的物理地址,就可以得到该内存块的首地址的物理地址,从而实现对该内存块的访问。

可选地,每个内存块中可以划分为多个子内存块,每个子内存块对应不同的模块。例如名称为“图像”的内存块中包括多个子内存块,名称分别为“驱动模块图像”、“感知模块图像”和“定位模块图像”等。通过子内存块的划分,可以对数据的多维度管理,更有利于数据的有序存储和读取。

可选地,所述将采集到的数据和需要回放的处理后数据按照数据类型实时存储在采集端共享内存中对应的内存块中,包括:如果一种类型的数据包括结构化数据,通过google的工具库protoc对所述结构化数据进行序列化;如果一种类型的数据包括非结构化数据,将所述非结构化数据转换成为字符数组,从而实现序列化;将序列化后的数据实时存储在采集端共享内存中对应的内存块中。序列化指的是将数据转换成字节序列,更方便存储和传输。

步骤二:读取xml文件,确定所述目标文件的存储地址和对应于不同数据类型的各存储空间。

xml文件用于定义所述目标文件数据存储属性,可以由用户根据需要编写。图2是本发明实施例提供的一种xml文件的示意图。如图2所示,通过xml文件定义了目标文件的存储地址、目标文件的文件大小(200兆)、目标文件存储的数据类型(图像、总线信号、激光雷达数据、GPS/IMU定位数据等),以及各类型的数据在目标文件中的存储空间。例如,图像存储在存储空间1中,总线信号存储在存储空间2中,激光雷达数据存储在存储空间3中,GPS/IMU定位数据存储在存储空间4中。其中,存储空间1、存储空间2、存储空间3、存储空间4均为目标文件内的存储空间。

步骤三:监听到所述采集端共享内存中存储新数据时,读取最新存储的数据。

步骤四:根据读取到的数据的数据类型,将所述读取到的数据按照时间顺序写入存储地址处目标文件中对应的存储空间。

从采集端共享内存中读取到最新存储的数据后,首先判断该数据的数据类型,然后根据该数据类型将读取到的数据按照时间顺序写入目标文件中对应的存储空间。例如,继续参见图2,如果读取到的数据为图像数据,则将该数写入目标文件内的存储空间1中;如果读取到的数据为总线信号数据,则将该数据写入目标文件内的存储空间2中;如果读取到的数据为GPS/IMU定位数据,则将该数据写入目标文件内的存储空间4中。各种数据类型的数据均是按照统一的时间基准写入目标文件的,写入的时间顺序就代表了共享端内存数据变化的时间顺序。

步骤五:按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中。

本实施例中,针对不同的数据类型,在采集端共享内存中划分了不同的内存块,在目标文件中相应地划分了不同的存储空间。由于各种类型的数据可能对应不同的存取方式,在任一数据类型对应内存块或存储空间内采用相应的存取方式来存取数据,可以提高数据存取的效率;同时,配合以xml文件来定义目标文件的格式,当数据类型发生变化时,只需要修改xml文件的内容就可以修改所有目标文件的格式,提高了目标文件定义的简洁性和灵活性。

在上述实施例和下述实施例的基础上,本实施例对在回放端进行数据回放的过程进行细化。可选地,在所述按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中之前,还包括:根据所述xml文件,在回放端创建回放端共享内存。

在进行数据回放时,回放端首先读取xml文件中定义的目标文件存储的各数据类型,根据各数据类型在回放端共享内存中创建回放端共享内存,并将回放端共享内存划分为与各数据类型相对应的内存块。

相应地,所述按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中,包括:按照所述时间顺序,将所述目标文件存储的任一数据类型的数据存储至回放端共享内存中与所述数据类型的内存块中。在回放端共享内存中,同样是新数据覆盖历史数据。回放端各进程对共享内存的访问机制与采集端相同。这样就在回放端共享内存中实现了对采集端共享内存的数据回放。

与采集端共享内存的划分类似,针对不同的数据类型在回放端共享内存划分不同的内存块,可以在任一内存块内采用对应的存取方式来存取数据,提高数据存取的效率。

可选地,在所述按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中之后,还包括:监听到所述回放端共享内存中存储新数据时,向外发送新数据通知。新数据通知用于通知需要使用该新数据的主体来读取该新数据。

可选地,在所述向外发送新数据通知之后,还包括:需要使用该新数据的主体根据该新数据的数据类型,从该数据类型对应的回放端共享内存中的内存块中读取该新数据。如果该新数据是序列化后的数据,则该程序根据该新数据存储至采集端共享内存时的序列化规则,对读取到的数据进行反序列化,将字节序列恢复为程序对象。

此外,在回放端还可以实现回放起点指定、倍速回放和循环回放等功能。可选地,所述按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中,包括如下步骤的至少之一:

步骤A:响应于用户的回放起点指定操作,将所述目标文件中存储的、指定时间后的的数据按照时间顺序存储至所述回放端共享内存中;其中,所述指定时间为所述目标文件存储的数据对应的时间区间中的任一时间。

通过步骤A,可以在回放端实现回放起点指定的功能。可选地,目标文件中存储的最早系统时间戳为时间基准,最晚系统时间戳为时间终点,生成一个进度条(即时间区间);响应于用户拖拽进度条至指定时间的操作,将所述目标文件中存储的、对应的系统时间戳晚于指点时间的数据按照时间顺序存储至所述回放端共享内存中,从而实现以该指定时间为起点的数据回放。

步骤B:响应于用户的N倍倍速回放操作,将目标文件存储的数据按照N倍采集速度存储至回放端共享内存中,其中N大于0。N大于1时,实现快速回放;N小于1时,实现慢回放。

通过步骤B,可以在回放端实现倍速回放功能。例如,目标文件中存储的数据对应的系统时间戳为8:00、8:01、8:02、8:03…,帧间间隔(相邻两个数据帧之间的时间间隔)为1秒,采集速度为1帧/秒。当将目标文件中存储的8:00、8:01、8:02、8:03…的数据按照采集速度存储至回放端共享内存时,就可实现正常速度的数据回放。响应于用户的2倍倍速回放操作,将8:00、8:01、8:02、8:03……的数据按照2帧/秒的速度存储至回放端共享内存,这样就实现了2倍倍速回放。

步骤C:响应于用户的循环回放操作,将所述目标文件中存储的数据按照所述时间顺序循环存储至所述回放端共享内存中。

通过步骤C,可以在回放端实现循环回放功能。例如,如果用户设定循环次数为2,则将目标文件中存储的数据按照时间顺序存储至回放端共享内存中一次以后,再按照时间顺序将目标文件中的数据向回放端共享内存中存储一次。两次存储的数据和时间顺序是一样的,这样就可以实现循环回放功能。需要说明的是,在每次将目标文件中存储的所有数据存储至回放端共享内存后,需要将回放端共享内存清空,以便进行下一次循环回放。

通过在回放端实现回放起点指定、倍速回放和重复回放等功能,可以增强数据回放灵活性,更好地满足用户多样化的回放需求。

在上述实施例和下述实施例中,采集端的数量可以是至少一个,目标文件的数量也可以是至少一个。至少一个目标文件与至少一个采集端之间的对应关系可能呈现以下几种情形:

情形一:采集端的数量为一个,目标文件的数量也为一个。可选地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件,包括:在所述采集端创建目标文件;监听到所述采集端共享内存中存储新数据时,读取最新存储的数据;将读取到的数据和所述采集端的系统当前时间戳写入所述目标文件。

情形二:采集端的数量为一个,该采集端中创建多个目标文件,每个目标文件对应实际场景中的不同时空条件。可选地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件,包括:在采集端中创建多个目标文件,其中每个目标文件对应实际场景的不同时空条件;监听到所述采集端共享内存中存储新数据时读取最新存储的数据,确定读取到的数据对应的时空条件;将读取到的数据和所述采集端的系统当前时间戳写入确定的时空条件对应的目标文件。

实际场景的时空条件的是多种多样的,在一采集端中可以创建不同的目标文件来存储不同时空条件下的实际场景数据,这样可以保持目标文件中的数据在时间和空间上的连续性。例如,将一采集端部署在一高速路段,在凌晨采集一段时间数据最终存储在目标文件1中,傍晚采集一段时间数据最终存储在目标文件2中;然后将该采集端部署在一市区路段采集一段时间的数据,最终存储在目标文件3中。存储数据的同时还存储采集端的系统当前时间戳。由于只存在一个采集端,因此多个目标文件中存储的系统当前时间戳的时间基准是一样的。

情形三:采集端的数量为一个,该采集端中创建多个目标文件,每个目标文件对应不同的数据类型。可选地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件,包括:在采集端中创建多个目标文件,其中每个目标文件对应不同的数据类型;监听到所述采集端共享内存中存储新数据时读取最新存储的数据,确定读取到的数据对应的数据类型;将读取到的数据和所述采集端的系统当前时间戳写入确定的数据类型对应的目标文件。

实际场景的信息非常丰富,采集到的数据和处理后数据的数据类型多种多样。在一采集端中可以创建不同的目标文件记录不同数据类型的数据,这样可以保证目标文件中的数据在数据类型上的连续性。例如,在一采集端中,将图像和雷达数据最终存储在目标文件1中,将GPS数据、IMU数据和GPS/IMU定位数据最终存储在目标文件2中。存储数据的同时还存储采集端的系统当前时间戳。同样地,由于只存在一个采集端,因此多个目标文件中存储的系统当前时间戳的时间基准是一样的。

情形四:采集端的数量为多个,目标文件的数量为多个,每个采集端中创建至少一个目标文件。

为了提高数据采集效率,可以部署多个采集端同时进行数据采集。可选地,多个采集端包括一个主采集端和至少一个分采集端。在多个采集端中,将其中一个采集端作为主采集端,其余设备均为分采集端。主采集端用于对分采集端的系统时间戳进行校正,为所有采集端提供统一的时间基准。在一具体实施方式中,如果一采集端连接GPS/IMU传感器,则将该采集端作为主采集端。该主采集端的系统时间戳以GPS/IMU时间为基准,由于GPS/IMU是车辆定位传感器,而自动驾驶系统中车辆决策控制一般会根据定位来计算,使用GPS/IMU时间为基准能够使车辆行驶误差最小,数据最可靠。

相应地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件,包括如下步骤:

步骤一:在多个采集端的每个采集端中创建目标文件。每个采集端中创建至少一个目标文件。当一采集端的目标文件的数量为多个时,每个目标文件可以对应不同的时空条件和/或不同的数据类型,详见情形二和/或情形三,在此不再赘述。

步骤二:监听到多个采集端中的任一采集端的共享内存中存储新数据时,读取最新存储的数据。

仍以自动驾驶系统的应用场景为例,任一采集端上运行着自动驾驶系统的至少一个模块,存在一块共享内存用于实现这些模块之间的通信。监听每个采集端的共享内存,当监听到任一采集端的共享内存中存储新数据时,读取最新存储的数据。

步骤三:如果所述任一采集端为主采集端,则将读取到的数据和所述主采集端的系统当前时间戳写入所述主采集端的目标文件。

当读取到的数据来自主采集端时,该数据对应的系统当前时间戳就是以主采集端的系统时间为基准的,直接将该数据和该时间戳写入主采集端的目标文件。

步骤四:如果所述任一采集端为分采集端,则根据主采集端的系统时间对所述分采集端的系统当前时间戳进行校正,将读取到的数据和校正后的系统当前时间戳写入所述分采集端的目标文件。

当读取到的数据来自一分采集端时,该数据对应的系统当前时间戳是以该分采集端的系统时间为基准的。而该分采集端的系统时间与主采集端的系统时间可能存在着误差,因此需要根据主采集端的系统时间对该分采集端的系统当前时间戳进行校正,以统一时间基准。校正后,将该数据和校正后的时间戳写入该分采集端的目标文件。

可选地,在所述根据主采集端的系统时间对所述任一采集端的系统当前时间戳进行校正之前,还包括:将主采集端的系统时间发送至每个分采集端,计算每个分采集端的系统时间与主采集端的系统时间之差的误差。相应地,所述根据主采集端的系统时间对所述任一采集端的系统当前时间戳进行校正,包括:根据所述误差,对所述分采集端的系统当前时间戳进行校正。

例如,仍假设主采集端连接GPS/IMU传感器,则主采集端的系统时间为GPS/IMU时钟。主采集端向所有分采集端发送GPS/IMU时钟,任一分采集端接收到GPS/IMU时钟后,计算该分采集端的系统时间与GPS/IMU时钟之间的误差。计算频率为50Hz,每5个误差值计算一次误差均值。在得到误差均值后的100ms内,就以该误差均值对所述分采集端的每一次提取的系统当前时间戳进行校正。

在一应用场景中,以上各情形可以单独存在,也可以同时存在情形二、三、四中的至少两个。具体来说,当情形二和情形三同时存在时,采集端至少存在一个目标文件同时存在对应的时空条件和数据类型,其余目标文件对应不同的时空条件或不同的数据类型。相应地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件,包括:在采集端中创建多个目标文件,其中至少一个目标文件同时存在对应的时空条件和数据类型,其余目标文件对应不同的时空条件或不同的数据类型;监听到所述采集端共享内存中存储新数据时读取最新存储的数据,确定读取到的数据对应的时空条件和/或数据类型;将读取到的数据和所述采集端的系统当前时间戳写入确定的时空条件和/或数据类型对应的目标文件。

当情形二和/或情形三,以及情形四同存在时,存在至少一个采集端中的每个目标文件对应不同的时空条件和/或不同的数据类型。相应地,所述监听到所述采集端共享内存中存储新数据时读取最新存储的数据,并将读取到的数据按照时间顺序写入目标文件,包括:在多个采集端的至少一个采集端中创建多个目标文件;监听到所述至少一个采集端中的任一采集端的共享内存中存储新数据时读取最新存储的数据,确定读取到的数据对应的时空条件和/或数据类型;如果所述任一采集端为主采集端,则将读取到的数据和所述任一采集端的系统当前时间戳写入所述任一采集端中所确定的时空条件和/或数据类型对应的目标文件;如果所述任一采集端为一分采集端,则根据主采集端的系统时间对所述任一采集端的系统当前时间戳进行校正,将读取到的数据和校正后的系统当前时间戳写入所述任一采集端中所确定的时空条件和/或数据类型对应的目标文件。

本实施例中,通过对分采集端的系统当前时间戳进行校正,统一了多个采集端的时间戳的基准,使得时间戳标定的时间顺序就是实际场景中数据变化的时间顺序,为后续按照时间顺序进行数据回放提供了基础。同时,多个采集端之间只进行系统时间的通信,而没有进行采集到的数据的通信,减少了通信数据量,提高了整个自动驾驶系统和回放系统的效率。

可选地,在完成多个目标文件的数据写入后,所述按照所述时间顺序,将所述目标文件存储的数据存储至回放端共享内存中,包括:按照多个目标文件中最终写入的系统时间戳,合并所述多个目标文件中存储的数据;按照合并后的时间顺序,将合并后的数据存储至回放端共享内存中。将多个目标文件中存储的系统时间戳按顺序排列,得到合并后的时间顺序,代表了实际场景中数据变化的时间顺序。按照合并后时间顺序,将合并后的数据存储至回放端共享内存中,就可以实现对实际场景中数据存储过程的回放。

图3为本发明实施例提供的一种电子设备的结构示意图,如图3所示,该设备包括处理器30、存储器31、输入装置32和输出装置33;设备中处理器30的数量可以是一个或多个,图3中以一个处理器30为例;设备中的处理器30、存储器31、输入装置32和输出装置33可以通过总线或其他方式连接,图3中以通过总线连接为例。

存储器31作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的数据回放方法对应的程序指令/模块。处理器30通过运行存储在存储器31中的软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述的数据回放方法。

存储器31可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端的使用所创建的数据等。此外,存储器31可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实例中,存储器31可进一步包括相对于处理器30远程设置的存储器,这些远程存储器可以通过网络连接至设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置32可用于接收输入的数字或字符信息,以及产生与设备的用户设置以及功能控制有关的键信号输入。输出装置33可包括显示屏等显示设备。

本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现任一实施例的数据回放方法。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案。

15页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种看门狗的屏蔽方法及装置

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!