发明内容
鉴于上述问题,提出了一种克服上述问题或者至少部分地解决上述问题的多传感器数据文件的回放方法、电子设备及存储介质。
本发明的一个目的是根据定位传感器数据文件的第一帧数据的时间戳对可回放的数据文件进行对齐和回放,提高算法和者软件功能的测试效率。
根据本发明的一方面,本发明提供了一种多传感器数据文件的回放方法,包括:
获取至少一种类型传感器的数据文件,所述至少一种类型传感器至少包括定位传感器;
每一种类型传感器的数据文件分别按时间进行排序,所述定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳;
所有数据文件的传感数据格式转换为回放数据格式;
以所述基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;
依对齐后的时间戳播放至少一种类型传感器的数据文件。
可选地,获取至少一种类型传感器的数据文件的步骤包括:
把采集的至少一种类型传感器的原始数据文件按照所述原始数据文件的目录结构拷贝到第一存储单元中;
将所述第一存储单元中的原始数据文件读取到内存中。
可选地,所述回放方法处于第一模式,
以所述基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳包括:
播放所述定位传感器的数据文件的第一帧数据;
获取下一帧待回放的至少一种类型传感器的数据文件的时间戳,并得出其与所述基准时间戳的第一时间间隔;
根据所述第一时间间隔和所述基准时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间和控制其播放频率。
可选地,所述回放方法处于第二模式,
以所述基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳包括:
播放所述定位传感器的数据文件的第一帧数据;
获取下一帧待回放的至少一种类型传感器的数据文件的时间戳,并得出其与所述基准时间戳的第一时间间隔;
根据所述第一时间间隔和所述基准时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间和控制其播放频率;
所述依对齐后的时间戳播放至少一种类型传感器的数据文件包括:
获取所述第二模式的触发周期;
将所述触发周期内的至少一种类型传感器的数据放在队列中;
在所述触发周期到达后,对所述队列中的至少一种类型传感器的数据进行回放。
可选地,所述根据所述第一时间间隔和所述基准时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间包括:
获取播放所述第一帧数据时的系统时间;
获取所述下一帧待回放的至少一种类型传感器的数据文件的数据到来时的系统时间,并得出其与播放所述定位传感器的数据文件的第一帧数据时的系统时间的第二时间间隔;
获取根据需要的播放频率设置的第一倍数;
获取所述第一时间间隔与所述第一倍数的乘积,计算所述乘积和所述第二时间间隔的差得到第三时间间隔;
根据所述第三时间间隔和所述第一帧数据的时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间。
可选地,在对所述队列中的各类型传感器的数据进行播放的过程中,根据接收的控制指令对被播放的数据进行暂停、或继续、或单步播放。
可选地,该方法还包括:
利用ROS消息发布机制,以所述基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;依对齐后的时间戳播放至少一种类型传感器的数据文件。
可选地,所述至少一种类型传感器还包括下列至少之一:
车载激光雷达、车载相机、车载轮速仪。
根据本发明的另一方面,本发明还提供了一种电子设备,包括:
存储器和处理器,所述存储器内存储有控制程序,所述控制程序被所述处理器执行时用于实现根据上述任一项所述的多传感器数据文件的回放方法。
根据本发明的又一方面,本发明还提供了一种计算机的存储介质,所述存储介质存储有计算机程序代码,当所述计算机程序代码在计算设备上运行时,导致所述计算设备执行根据上述任一项所述的多传感器数据文件的回放方法。
在本发明的多传感器数据文件的回放方法中,获取至少一种类型传感器的数据文件,至少一种类型传感器至少包括定位传感器;每一种类型传感器的数据文件分别按时间进行排序,定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳;所有数据文件的传感数据格式转换为回放数据格式;以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;依对齐后的时间戳播放至少一种类型传感器的数据文件。上述方式大大提高了基于传感器数据进行的算法和者软件功能的测试效率,解除了测试对实车的强依赖,也提高了相关技术人员的工作效率。
根据下文结合附图对本发明具体实施例的详细描述,本领域技术人员将会更加明了本发明的上述以及其他目的、优点和特征。
具体实施方式
在实车测试前,常常需要基于传感器数据进行感知算法、定位算法、标定算法等算法或软件的测试。但是,在测试的过程中,各类型传感器的数据无法根据自身携带的时间戳对齐回放,并且在回放过程中也无法实现按照指定的时间间隔,测试过程对实车具有较强的依赖,影响了算法或者软件功能的测试效率。
针对上述问题,本发明实施例提供了一种多传感器数据文件的回放方法。该回放方法根据软件的生产者-消费者模型进行设计,使各种传感器数据文件在回放过程中达到生产和消费平衡的效果。在实际的软件开发过程中,方案中有这样一个场景:某个模块负责产生数据,这些数据由另一个模块来负责处理(此处的模块是广义的,可以是类、函数、线程、进程等)。产生数据的模块就可以称为生产者,而处理数据的模块就可以称为消费者。
图1是根据本发明一个实施例的多传感器数据文件的回放方法的流程图,参见图1,多传感器数据文件的回放方法可包括以下步骤S102至步骤S110。
步骤S102:获取至少一种类型传感器的数据文件,至少一种类型传感器至少包括定位传感器。在本步骤中,至少一种类型传感器还可包括下列至少之一:车载激光雷达、车载相机、车载轮速仪。定位传感器可以为全球定位系统传感器(Global PositioningSystem,简称GPS),也可以为其他类型的定位传感器,如北斗类型的定位传感器。
步骤S104:每一种类型传感器的数据文件分别按时间进行排序,定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳。
步骤S106:所有数据文件的传感数据格式转换为回放数据格式。
在本步骤中,可以将定位传感器的数据文件中数据的格式转换为惯性导航系统(Inertial Navigation System,简称ins)或惯性测量装置(inertial measurementunits,简称imu)等传感器相关数据。当传感器包括车载激光雷达和车载相机时,可以将车载激光雷达的数据文件中数据的格式转换为pointCloud2和scan格式的数据帧,车载激光雷达可支持16线、32线、64线、128线等,可以将车载相机的数据文件中数据的格式转换为yuv或者rgb格式,同时支持可视化显示。两个车载轮速仪(DMI)设备的数据可以合并到一起按照时间顺序进行数据帧的回放。转换格式后的传感器的数据文件的数据可以以二进制或者字符串的形式存储在计算机中。图像的转换技术可以采用opencv相关图像处理技术。激光雷达的解析及相关转换可以采用pcl相关库方法处理技术。当然,各类型传感器数据的转换处理过程还可以采用其它相关算法完成。
步骤S108:以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳。
步骤S110:依对齐后的时间戳播放至少一种类型传感器的数据文件。
在本实施例中,获取至少一种类型传感器的数据文件,至少一种类型传感器至少包括定位传感器;每一种类型传感器的数据文件分别按时间进行排序,定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳;所有数据文件的传感数据格式转换为回放数据格式;以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;依对齐后的时间戳播放至少一种类型传感器的数据文件。上述方式大大提高了基于传感器数据进行的算法和者软件功能的测试效率,解除了测试对实车的强依赖,也提高了相关技术人员的工作效率。
在本发明的一个实施例中,获取至少一种类型传感器的数据文件的步骤可包括:把采集的至少一种类型传感器的原始数据文件按照原始数据文件的目录结构拷贝到第一存储单元中。然后,将第一存储单元中的原始数据文件读取到内存中。
在本实施例中,第一存储单元可以是固态硬盘或磁盘阵列等。每个传感器的数据文件可以是单独分开的,即互相独立的。在进行数据回放前,需要将预先落盘的各类型传感器的数据文件准备好,可以使用第一存储单元把通过采集任务采集回来的原始数据文件按照正规流程申请并拷贝,拷贝时保持原始数据文件存储的目录结构,按照采集落盘时相同的目录存放,从而获得与各传感器的数据文件相一致的模拟回放数据,以保证回放效果更加接近真实效果。然后,根据当前数据回放的需求及应用场景,配置数据回放相关参数,配置的参数可以包括回放哪些类型传感器的数据、播放频率的第一倍数、回放模式、暂停以及继续等参数。例如,只回放车载相机和定位传感器(ins格式)的数据,则将车载相机和定位传感器对应的参数设置为true,其他类型的传感器对应的参数设置为false,每种传感器的数据类型的开启标志参数都是布尔类型的,可以通过将开启标志参数配置为true或者false来开启或者关闭播放,以达到通过配置相关参数实现灵活选择回放传感器数据的目的。之后,可以通过递归遍历的方式加载第一存储单元中各传感器的原始数据文件到计算机内存中。
在本发明一个实施例中,回放方法处于第一模式。以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳可包括:
播放定位传感器的数据文件的第一帧数据;
获取下一帧待回放的至少一种类型传感器的数据文件的时间戳,并得出其与基准时间戳的第一时间间隔;
根据第一时间间隔和基准时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间和控制其播放频率。
在本实施例中,第一模式可以为正常(normal)模式。当下一帧待回放的至少一种类型传感器的数据文件到来时,取其时间戳并和基准时间戳做减法,从而得到两个数据帧之间的第一时间间隔。
具体地,比如说需要播放的数据包括车载相机(camera)、车载激光雷达(lidar)以及定位传感器(ins)的数据文件的可回放格式的数据,程序启动时会同时加载这三种数据文件并按照时间顺序解析,当一种传感器的数据帧过来时,比如车载相机,首先检测ins数据的第一帧数据是否播放,在ins已经播放的情况下,车载相机(camera)和车载激光雷达(lidar)数据开始播放。之后就是哪个传感器数据过来就播放哪个,没有先后顺序。当同一时刻的数据包括车载相机(camera)、车载激光雷达(lidar)以及定位传感器(ins)数据时,之所以先播放定位传感器(ins)数据,是因为定位传感器(ins)数据播放一段时间后数据才会达到高精度,此时车载相机和车载激光雷达的数据已经解析并准备好播放,如果检测到定位传感器(ins)数据数据已经播放,则可以播放车载相机和车载激光雷达数据。计算车载相机和车载雷达传感器待回放的当前数据帧距离播放定位传感器(ins)第一帧数据的第一时间间隔,可通过间隔(sleep)一定时间可以实现对每一种类型传感器的数据文件的回放时间进行对其和控制其播放频率。具体地,例如,待播放的当前帧与定位传感器(ins)第一帧数据的第一时间间隔为100ms,则通过sleep(100)实现等待100ms的时间,如果第一时间间隔为50ms,则通过sleep(50)等待50ms的时间后再播放下一帧数据,即实现了对齐待回放的每一种类型传感器的数据文件的回放时间和控制其播放频率。如果算法调试过程中需要增加或者减少播放频率来验证算法可行性,那么只需要改变第一时间间隔的倍数大小即可,比如sleep(100*2)即可实现等待两倍的第一时间间隔,使播放频率降低一倍,如果sleep(100*0.5),则等待时间减少一倍,播放频率会增加一倍。
在本发明一个实施例中,回放方法处于第二模式。以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳可包括:
播放定位传感器的数据文件的第一帧数据;
获取下一帧待回放的至少一种类型传感器的数据文件的时间戳,并得出其与基准时间戳的第一时间间隔;
根据第一时间间隔和基准时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间和控制其播放频率;
依对齐后的时间戳播放至少一种类型传感器的数据文件可包括:
获取第二模式的触发周期;
将触发周期内的至少一种类型传感器的数据放在队列中;
在触发周期到达后,对队列中的至少一种类型传感器的数据进行回放。
在本实施例中,第二模式可以为时钟模式(clock)。程序启动时会新建一个时钟定时器,时钟定时器的触发周期可以根据需要进行配置,比如定时器触发周期配置为20ms,如果播放的数据类型包括车载相机、车载激光雷达以及ins数据,程序启动时会加载车载相机、车载激光雷达以及ins数据文件并由生产者进行解析处理,然后发给消费者。消费者要进行数据发布即播放的时候,会首先判断当前时钟是否触发(20ms一次),如果没有触发,则在这20ms的时间内到达的传感器数据会缓存在队列容器中等待时钟触发周期到达,如果20ms到达即定时器回调函数触发,则开始播放缓存队列中的传感器数据,如此循环即实现了时钟模式的播放。时钟模式也是以定位传感器的数据文件的第一帧数据的时间戳作为基准时间戳播放。之所以将定位传感器的数据文件的第一帧数据的时间戳作为基准时间戳开始播放,是因为车载相机、车载激光雷达以及车载轮速仪的数据会落后定位传感器数据一段时间后播放,该段时间一般可以为2分钟,因为采集车要等待定位传感器信号强度稳定后再开始采集的车载相机、车载激光雷达以及车载轮速仪的数据。所以回放的时候也会先播放定位传感器数据,因此时钟模式也要依赖定位传感器的第一帧数据的时间戳来做各传感器数据的对齐。
在本发明一个具体实施例中,在对队列中的各类型传感器的数据进行播放的过程中,根据接收的控制指令对被播放的数据进行暂停、或继续、或单步播放等。据接收的控制指令对被播放的数据进行暂停、或继续、或单步播放等,实现了对每一种类型传感器的数据文件的灵活回放,提高基于传感器数据进行的算法和者软件功能的测试效率。
在本发明一个实施例中,根据第一时间间隔和基准时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间可包括:
获取播放第一帧数据时的系统时间;
获取下一帧待回放的至少一种类型传感器的数据文件的数据到来时的系统时间,并得出其与播放定位传感器的数据文件的第一帧数据时的系统时间的第二时间间隔;
获取根据需要的播放频率设置的第一倍数;
获取第一时间间隔与第一倍数的乘积,计算乘积和第二时间间隔的差得到第三时间间隔;
根据第三时间间隔和第一帧数据的时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间。
在本实施例中,可以将到来的下一帧待回放的数据作为当前帧的数据。在即将播放的当前帧与第一帧数据之间的第一时间间隔为100ms时,若直接sleep(100ms)可能会出现间隔不准确的情况,因为系统时间可能存在延迟或者过快,导致实际上可能需要sleep(50ms)就可以了。所以为了能够精确计算需要sleep的时间,需要考虑系统时间。待回放的下一帧(当前帧)数据到来时,获取其到来时的当前系统时间,然后减去定位传感器(ins)的第一帧数据播放时的系统时间得到第二时间间隔,进而得到第三时间间隔,通过第三时间间隔和第一帧数据的时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间,可以弥补不准确的第一时间间隔,使回放效果更佳接近真实效果。在本发明一个实施例中,该方法还可包括:
利用ROS,即机器人操作系统(Robot Operating System),消息发布机制,以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;依对齐后的时间戳播放至少一种类型传感器的数据文件。
在本实施例中,该方法可以指步骤以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;依对齐后的时间戳播放至少一种类型传感器的数据文件。将需要播放的数据按照一定的频率或者模式在消费者模块处理,消费者模块会把最终的数据传输给ROS通道,利用ROS消息发布机制,将推送过来的至少一种类型传感器的数据内容进行发布,从而实现了传感器数据的回放,运行结束即回放完成。
另外,依对齐后的时间戳播放至少一种类型传感器的数据文件还可包括:以定位传感器的数据文件的第一帧数据的时间戳作为跳时间的开始时间,依对齐后的时间戳采用跳时间的方式播放至少一种类型传感器的数据文件。具体地,取解析后的定位传感器的第一帧数据的时间戳作为播放的开始时间,跳时间就是从此刻开始计算,然后检测各个传感器数据是否跳时间播放。跳时间为解析后的定位传感器的第一帧的时间戳加上配置的跳过时长。跳过时长的大小根据需要灵活配置。跳的时间范围须从0开始并且小于播放数据的总时长,若跳时间大于或等于播放数据的总时长会导致直接结束回放。通过采用跳时间的回放方式,可以根据需要跳到指定的播放时间,提高了算法和者软件功能的测试效率。
图2是根据本发明第二个实施例的多传感器数据文件的回放方法的流程图。该方法可以应用在linux系统的计算机等设备中,因为系统中需要运行apollo docker环境,dataplayback需要借助docker环境运行,修改配置文件中待回放数据文件的所在目录,然后启动程序。在运行过程中,传感器数据会根据配置灵活播放,播放的频率可以通过rostopic或者rviz可视化界面查看。播放的数据格式可以和原始车载传感器发出的数据格式一致。
步骤S202:把采集的至少一种类型传感器的原始数据文件按照原始数据文件的目录结构拷贝到第一存储单元中。至少一种类型传感器至少包括定位传感器。当然,至少一种类型传感器还可包括下列至少之一:车载激光雷达、车载相机、车载轮速仪等。
步骤S204:将第一存储单元中的原始数据文件读取到内存中。
步骤S206:每一种类型传感器的数据文件分别按时间进行排序,定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳。
步骤S208:所有数据文件的传感数据格式转换为回放数据格式。
步骤S210:回放方法处于第一模式,播放定位传感器的数据文件的第一帧数据。第一模式为正常模式。
步骤S212:获取下一帧待回放的至少一种类型传感器的数据文件的时间戳,并得出其与基准时间戳的第一时间间隔。
步骤S214:获取播放第一帧数据时的系统时间。
步骤S216:获取下一帧待回放的至少一种类型传感器的数据文件的数据到来时的系统时间,并得出其与播放定位传感器的数据文件的第一帧数据时的系统时间的第二时间间隔。
步骤S218:获取根据需要的播放频率设置的第一倍数。
步骤S220:获取第一时间间隔与第一倍数的乘积,计算乘积和第二时间间隔的差得到第三时间间隔。
步骤S222:根据第三时间间隔和第一帧数据的时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间。
图3是根据本发明第三个实施例的多传感器数据文件的回放方法的流程图。
步骤S302:把采集的至少一种类型传感器的原始数据文件按照原始数据文件的目录结构拷贝到第一存储单元中。
步骤S304:将第一存储单元中的原始数据文件读取到内存中。
步骤S306:每一种类型传感器的数据文件分别按时间进行排序,定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳。
步骤S308:所有数据文件的传感数据格式转换为回放数据格式。
步骤S310:回放方法处于第二模式,播放定位传感器的数据文件的第一帧数据。第二模式为时钟模式。
步骤S312:获取下一帧待回放的至少一种类型传感器的数据文件的时间戳,并得出其与基准时间戳的第一时间间隔。
步骤S314:获取播放第一帧数据时的系统时间。
步骤S316:获取下一帧待回放的至少一种类型传感器的数据文件的数据到来时的系统时间,并得出其与播放定位传感器的数据文件的第一帧数据时的系统时间的第二时间间隔。
步骤S318:获取根据需要的播放频率设置的第一倍数。
步骤S320:获取第一时间间隔与第一倍数的乘积,计算乘积和第二时间间隔的差得到第三时间间隔。
步骤S322:根据第三时间间隔和第一帧数据的时间戳,对齐待回放的每一种类型传感器的数据文件的回放时间。
步骤S324:获取第二模式的触发周期。
步骤S326:将触发周期内的至少一种类型传感器的数据放在队列中。
步骤S328:在触发周期到达后,对队列中的至少一种类型传感器的数据进行回放。
参见图4,基于同一构思,本发明还提供了一种电子设备400。电子设备400可以为一种车机、DHU(娱乐主机和仪表的集成机器)、IHU(Infotainment Head Unit,信息娱乐主机)、IVI(In-Vehicle Infotainment,车载信息娱乐系统)或任意一种车载信息交互终端等。电子设备400可包括存储器401和处理器402。存储器401内存储有控制程序。控制程序被处理器402执行时用于实现根据上述实施例中任一项的多传感器数据文件的回放方法。
基于同一构思,本发明还提供了一种计算机的存储介质。存储介质存储有计算机程序代码。当计算机程序代码在计算设备上运行时,导致计算设备执行根据上述实施例任一项的多传感器数据文件的回放方法。
上述各个实施例可以任意组合,根据上述任意一个优选实施例或多个优选实施例的组合,本发明实施例能够达到如下有益效果:
获取至少一种类型传感器的数据文件,至少一种类型传感器至少包括定位传感器;每一种类型传感器的数据文件分别按时间进行排序,定位传感器的数据文件的第一帧数据的时间戳设为基准时间戳;所有数据文件的传感数据格式转换为回放数据格式;以基准时间戳为基准,对齐每一种类型传感器的数据文件回放的时间戳;依对齐后的时间戳播放至少一种类型传感器的数据文件。上述方式大大提高了基于传感器数据进行的算法和者软件功能的测试效率,解除了测试对实车的强依赖,也提高了相关技术人员的工作效率。
至此,本领域技术人员应认识到,虽然本文已详尽示出和描述了本发明的多个示例性实施例,但是,在不脱离本发明精神和范围的情况下,仍可根据本发明公开的内容直接确定或推导出符合本发明原理的许多其他变型或修改。因此,本发明的范围应被理解和认定为覆盖了所有这些其他变型或修改。