CN115310501A - 一种传感器数据处理方法、装置、计算设备及存储介质 - Google Patents
一种传感器数据处理方法、装置、计算设备及存储介质 Download PDFInfo
- Publication number
- CN115310501A CN115310501A CN202110495101.0A CN202110495101A CN115310501A CN 115310501 A CN115310501 A CN 115310501A CN 202110495101 A CN202110495101 A CN 202110495101A CN 115310501 A CN115310501 A CN 115310501A
- Authority
- CN
- China
- Prior art keywords
- data
- frame
- data stream
- timestamp
- stream
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/28—Flow control; Congestion control in relation to timing considerations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/12—Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/90—Buffering arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/565—Conversion or adaptation of application format or content
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/28—Timers or timing mechanisms used in protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
- H04L43/106—Active monitoring, e.g. heartbeat, ping or trace-route using time related information in packets, e.g. by adding timestamps
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Computer Security & Cryptography (AREA)
- Arrangements For Transmission Of Measured Signals (AREA)
- Traffic Control Systems (AREA)
- Control Of Driving Devices And Active Controlling Of Vehicle (AREA)
Abstract
本申请涉及一种传感器数据处理方法、装置、计算设备及存储介质,用于解决现有技术中传递给算法模块的传感器数据流不一致问题。传感器数据处理方法包括:接收待处理的多个数据流,每个数据流对应于一个传感器,且所述数据流中的数据帧携带有生成时间戳;对各数据帧的生成时间戳进行校正,得到校正时间戳;以及根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种传感器数据处理方法、装置、计算设备及存储介质。
背景技术
在自动驾驶***中,多传感器融合是算法流程中必不可少的一个环节。这些传感器包括但不限于:卫星定位***、惯性测量单元、图像传感器、激光雷达传感器、毫米波雷达传感器等。多传感器融合算法通常要求传入的数据组合是在同一个时刻产生的和/或对同一个时刻产生的数据后处理产生的,以取得最好的算法效果。但在实际应用时,由于不同传感器的延迟不一致且不可精准预测,例如图像传感器有曝光时间、激光雷达传感器有旋转一圈的扫描时间、传感器和服务器之间的数据传输时间等,需要提供一种能够将多个不同的输入数据流进行对齐的方案。
发明内容
本申请提供一种传感器数据处理方法、装置、计算设备、存储介质及车辆,可以对齐多个传感器数据流,提高后续算法模块计算的准确性。
本申请在第一个方面提供传感器数据处理方法,包括:接收待处理的多个数据流,每个数据流对应于一个传感器,且数据流中的数据帧携带有生成时间戳;对各数据帧的生成时间戳进行校正,得到校正时间戳;以及根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
本申请在第二个方面提供一种传感器数据处理装置,包括:数据帧接收模块,用于接收待处理的多个数据流,每个数据流对应于一个传感器,且所述数据流中的数据帧携带有生成时间戳;时间戳校正模块,用于对各数据帧的生成时间戳进行校正,得到校正时间戳;以及数据帧对齐模块,用于根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
本申请在第三个方面提供一种计算设备,包括一个或多个处理器;和存储器,所述存储器存储有一个或多个程序,所述一个或多个程序在被所述一个或多个处理器执行时,使得所述一个或多个处理器实现根据本申请的传感器数据处理方法。
本申请在第四个方面提供一种计算机可读存储介质,其上存储有程序,所述程序在被处理器执行时实现根据本申请的传感器数据处理方法。
本申请在第四个方面提供一种车辆,包括如上所述的计算设备。
根据本申请的技术方案,在不同的传感器有一定时间误差、***调度影响和数据流处理程序计算引发的延迟等情况下,根据接收到的各数据流的生成时间戳将多个数据流对齐到同一个触发帧上,保证发送给算法模块的数据是同一个时刻采集到的或者是对同一个时刻采集到的数据进行后处理得到的,提高算法模块计算的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了根据本申请的示例实施例的车辆100的示意图;
图2示出了根据本申请的示例实施例的传感器数据处理方法200的流程图;
图3示出了本申请的一个示例的数据缓冲队列的示意图;
图4示出了本申请的一个示例的触发帧在不同数据流的映射关系的示意图;
图5A示出了本申请的一个示例的生成时间戳的示意图;
图5B示出了本申请的一个实例的校正时间戳的示意图;
图6A示出了本申请的一个实例的丢帧错帧和高延迟检查的示意图;
图6B示出了本申请的另一个实例的高延迟检查的示意图;
图7示出了本申请的示例实施例的传感器数据处理装置700的结构图;以及
图8示出了根据本申请的示例实施例的计算设备800的结构图。
具体实施方式
下面将结合附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员可以作出各种变型和变换,所有以等同方式变换获得的技术方案都属于本发明保护的范围。
为了便于清楚描述本申请实施例的技术方案,在本申请的实施例中,采用了“第一”、“第二”等字样对功能或作用基本相同的相同项或相似项进行区分,本领域技术人员可以理解“第一”、“第二”等字样并不对数量和执行次序进行限定。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请实施例提供一种传感器数据处理方法、装置、相关的计算设备、存储介质及车辆,可以对齐同一时刻产生的数据,保证传递给算法模块的数据一致性。
为了使本领域的技术人员更好的了解本公开,下面先对本公开实施例中出现的部分技术术语进行解释如下:
传感器时间:记录在传感器硬件中的时钟源,通常会通过卫星授时等手段与WallTime(即现实时间t现实或挂钟时间)保持同步,两者之间误差极小。
服务器时间:记录在服务器硬件中的时钟源,可以被安装在服务器硬件上的软件获取,通常会通过卫星授时等手段与Wall Time(即现实时间或挂钟时间)保持同步,两者之间误差极小。可认为传感器时间等于服务器时间。
硬触发传感器:传感器时间与某一时钟源保持同步,两者之间误差极小,具有固定的数据产生频率(或称为触发频率),实际应用中通常为50Hz、20Hz、10Hz等可以被1秒等分的频率),并且会在1秒的起始时刻处产生数据的传感器。
传感器数据:由传感器产生,配合服务器上的传感器驱动程序所获取到的数据。
传感器驱动程序:在非异常情况下可以获得每一帧数据的生成时间戳,且该时间戳与实际数据的产生时间误差极小,无论是直接读取传感器的信号来获得传感器时间、直接取服务器时间、或者是通过某种算法计算/纠偏得出。
数据流:一串连续的、以帧为单位的数据。
数据流处理程序:接收一个输入数据流,对每一帧进行处理产生一个结果,以该结果为新的一帧,产生输出数据流的程序。
数据时间戳:数据的附加信息,是通过对某个时钟源进行观测产生的时间数值。
生成时间戳:传感器数据所附带的时间戳,通常由传感器产生并由传感器驱动程序获取,也可以直接由传感器驱动程序根据服务器时间产生。该时间戳被认为是数据的产生时间,也可称之为触发时间戳。
校正时间戳:对生成时间戳进行校正后得到的时间戳。
到达时间戳:数据到达服务器时观测到的时间。
数据延迟:数据帧的到达时间戳差与生成时间戳的差值。对于数据流来说,延迟是不可避免的,通常会受到数据源(传感器、数据流处理程序)的数据获取和/或计算时间、传输时间、操作***调度等因素的影响。
触发帧:一个虚拟帧,每个数据发送周期会将该周期内应该发送的数据作为一个数据大帧传递给算法模块进行计算,该数据发送周期的结束时刻也是一个算法触发时刻,对应一个虚拟的触发帧。
图1是可以在其中实现本申请的各种技术的车辆100的示意图。车辆100可以是轿车、卡车、摩托车、公共汽车、船只、飞机、直升机、割草机、挖土机、摩托雪橇、航空器、旅游休闲车、游乐园车辆、农场装置、建筑装置、有轨电车、高尔夫车、火车、无轨电车,或其它车辆。车辆100可以完全地或部分地以自动驾驶模式进行运行。车辆100在自动驾驶模式下可以控制其自身,例如车辆100可以确定车辆的当前状态以及车辆所处环境的当前状态,确定在该环境中的至少一个其它车辆的预测行为,确定该至少一个其它车辆执行所预测行为的可能性所对应信任等级,并且基于所确定的信息来控制车辆100自身。在处于自动驾驶模式时,车辆100可以在无人交互的情况下运行。
车辆100可以包括各种车辆***,例如驱动***142、传感器***144、控制***146、用户接口***148、控制计算机***150以及通信***152。车辆100可以包括更多或更少的***,每个***可以包括多个单元。进一步地,车辆100的每个***和单元之间可以是互联的。例如,控制计算机***150能够与***142-148和152中的一个或多个进行数据通信。从而,车辆100的一个或多个所描述的功能可以被划分为附加的功能性部件或者实体部件,或者结合为数量更少的功能性部件或者实体部件。在更进一步的例子中,附加的功能性部件或者实体部件可以增加到如图1所示的示例中。
驱动***142可以包括为车辆100提供动能的多个可操作部件(或单元)。在一个实施例中,驱动***142可以包括发动机或电动机、车轮、变速器、电子***、以及动力(或动力源)。发动机或者电动机可以是如下装置的任意组合:内燃机、电机、蒸汽机、燃料电池发动机、丙烷发动机、或者其它形式的发动机或电动机。在一些实施例中,发动机可以将一种动力源转换为机械能。在一些实施例中,驱动***142可以包括多种发动机或电动机。例如,油电混合车辆可以包括汽油发动机和电动机,也可以包括其它的情况。
车辆100的车轮可以是标准车轮。车辆100的车轮可以是多种形式的车轮,包括独轮、双轮、三轮、或者四轮形式,例如轿车或卡车上的四轮。其它数量的车轮也是可以的,例如六轮或者更多的车轮。车辆100的一个或多个车轮可***作为与其他车轮的旋转方向不同。车轮可以是至少一个与变速器固定连接的车轮。车轮可以包括金属与橡胶的结合,或者是其他物质的结合。变速器可以包括可操作来将发动机的机械动力传送到车轮的单元。出于这个目的,变速器可以包括齿轮箱、离合器、差动齿轮和传动轴。变速器也可以包括其它单元。传动轴可以包括与车轮相匹配的一个或多个轮轴。电子***可以包括用于传送或控制车辆100的电子信号的单元。这些电子信号可用于启动车辆100中的多个灯、多个伺服机构、多个电动机,以及其它电子驱动或者控制装置。动力源可以是全部或部分地为发动机或电动机提供动力的能源。也即,发动机或电动机能够将动力源转换为机械能。示例性地,动力源可以包括汽油、石油、石油类燃料、丙烷、其它压缩气体燃料、乙醇、燃料电池、太阳能板、电池以及其它电能源。动力源可以附加的或者可选地包括燃料箱、电池、电容、或者飞轮的任意组合。动力源也可以为车辆100的其它***提供能量。
传感器***144可以包括多个传感器,这些传感器用于感测车辆100的环境和条件的信息。例如,传感器***144可以包括惯性测量单元(IMU)、全球定位***(GPS)收发器、雷达(RADAR)单元、激光测距仪/LIDAR单元(或其它距离测量装置)、声学传感器、以及相机或图像捕捉装置。传感器***144可以包括用于监控车辆100的多个感应器(例如,氧气(O2)监控器、油量表传感器、发动机油压传感器,等等)。传感器***144还可以配置其它传感器。包括在传感器***144中的一个或多个传感器可以被单独驱动或者被集体驱动,以更新一个或多个传感器的位置、方向,或者这二者。
在一些实施例中,每个传感器通过硬件触发或软件触发来采集数据,不同的传感器具有不同的触发频率,也就是不同的数据采集频率,相应地具有不同的数据采集周期。对于硬件触发而言,触发源利用Novatel发出的秒脉冲信号作为触发源信号,根据不同传感器需要的触发频率进行调整,生成触发信号发送给相应的传感器,以触发对应的传感器采集数据。可选地,相机的触发频率为20HZ,LIDAR的触发频率为1HZ或10HZ,IMU的触发频率为100HZ,当然不限于此。
IMU可以包括传感器的结合(例如加速器和陀螺仪),用于基于惯性加速来感应车辆100的位置变化和方向变化。GPS收发器可以是任何用于估计车辆100的地理位置的传感器。出于该目的,GPS收发器可以包括接收器/发送器以提供车辆100相对于地球的位置信息。需要说明的是,GPS是全球导航卫星***的一个示例,因此,在一些实施例中,GPS收发器可以替换为北斗卫星导航***收发器或者伽利略卫星导航***收发器。雷达单元可以使用无线电信号来感应车辆100所在环境中的对象。在一些实施例中,除感应对象之外,雷达单元还可以用于感应接近车辆100的物体的速度和前进方向。激光测距仪或LIDAR单元(或者其它距离测量装置)可以是任何使用激光来感应车辆100所在环境中的物体的传感器。在一个实施例中,激光测距仪/LIDAR单元可以包括激光源、激光扫描仪、以及探测器。激光测距仪/LIDAR单元用于以连续(例如使用外差检测)或者不连续的检测模式进行工作。相机可以包括用于捕捉车辆100所在环境的多个图像的装置。相机可以是静态图像相机或者动态视频相机。
控制***146用于控制对车辆100及其部件(或单元)的操作。相应地,控制***146可以包括各种单元,例如转向单元、动力控制单元、制动单元和导航单元。
转向单元可以是调整车辆100前进方向的机械的组合。动力控制单元(例如可以为油门),例如可以被用于控制发动机的运转速度,进而控制车辆100的速度。制动单元可以包括用于对车辆100进行减速的机械的组合。制动单元可以以标准方式利用摩擦力来使车辆减速。在其他实施例中,制动单元可以将车轮的动能转化为电流。制动单元也可以采用其它形式。导航单元可以是任何为车辆100确定驾驶路径或路线的***。导航单元还可以在车辆100行进的过程中动态的更新驾驶路径。控制***146还可以附加地或者可选地包括其它未示出或未描述的部件(或单元)。
用户接口***148可以用于允许车辆100与外部传感器、其它车辆、其它计算机***和/或车辆100的用户之间的互动。例如,用户接口***148可以包括标准视觉显示装置(例如,等离子显示器、液晶显示器(LCD)、触屏显示器、头戴显示器,或其它类似的显示器),扬声器或其它音频输出装置,麦克风或者其它音频输入装置。例如,用户接口***148还可以包括导航接口以及控制车辆100的内部环境(例如温度、风扇,等等)的接口。
通信***152可以为车辆100提供与一个或多个设备或者周围其它车辆进行通信的方式。在一个示例性的实施例中,通信***152可以直接或者通过通信网络与一个或多个设备进行通信。通信***152例如可以是无线通信***。例如,通信***可以使用3G蜂窝通信(例如CDMA、EVDO、GSM/GPRS)或者4G蜂窝通信(例如WiMAX或LTE),还可以使用5G蜂窝通信。可选地,通信***可以与无线本地局域网(WLAN)进行通信(例如,使用)。在一些实施例中,通信***152可以直接与一个或多个设备或者周围其它车辆进行通信,例如,使用红外线,或者ZIGBEE。其它无线协议,例如各种车载通信***,也在本申请公开的范围之内。例如,通信***可以包括一个或多个专用短程通信(DSRC)装置、V2V装置或者V2X装置,这些装置会与车辆和/或路边站进行公开或私密的数据通信。
控制计算机***150能控制车辆100的部分或者全部功能。控制计算机***150中的自动驾驶控制单元可以用于识别、评估、以及避免或越过车辆100所在环境中的潜在障碍。通常,自动驾驶控制单元可以用于在没有驾驶员的情况下控制车辆100,或者为驾驶员控制车辆提供辅助。在一些实施例中,自动驾驶控制单元用于将来自GPS收发器的数据、雷达数据、LIDAR数据、相机数据、以及来自其它车辆***的数据结合起来,来确定车辆100的行驶路径或轨迹。自动驾驶控制单元可以被激活以使车辆100能够以自动驾驶模式被驾驶。
控制计算机***150可以包括至少一个处理器(其可以包括至少一个微处理器),处理器执行存储在非易失性计算机可读介质(例如数据存储装置或存储器)中的处理指令(即机器可执行指令)。存储器中存储有至少一条机器可执行指令,处理器执行至少一条机器可执行指令实现包括地图引擎、定位模块、感知模块、导航或路径模块、以及自动控制模块等的功能。地图引擎和定位模块用于提供地图信息和定位信息。感知模块用于根据传感器***获取到的信息和地图引擎提供的地图信息感知车辆所处环境中的事物。导航或路径模块用于根据地图引擎、定位模块和感知模块的处理结果,为车辆规划行驶路径。自动控制模块将导航或路径模块等模块的决策信息输入解析转换成对车辆控制***的控制命令输出,并通过车载网(例如通过CAN总线、局域互联网络、多媒体定向***传输等方式实现的车辆内部电子网络***)将控制命令发送给车辆控制***中的对应部件,实现对车辆的自动控制;自动控制模块还可以通过车载网来获取车辆中各部件的信息。
控制计算机***150也可以是多个计算装置,这些计算装置分布式地控制车辆100的部件或者***。在一些实施例中,存储器中可以包含被处理器执行来实现车辆100的各种功能的处理指令(例如,程序逻辑)。在一个实施例中,控制计算机***150能够与***142、144、146、148和/或152进行数据通信。控制计算机***中的接口用于促进控制计算机***150和***142、144、146、148以及152之间的数据通信。
存储器还可以包括其它指令,包括用于数据发送的指令、用于数据接收的指令、用于互动的指令、或者用于控制驱动***142、传感器***144、或控制***146或用户接口***148的指令。
除存储处理指令之外,存储器可以存储多种信息或数据,例如图像处理参数、道路地图、和路径信息。在车辆100以自动方式、半自动方式和/或手动模式运行的期间,这些信息可以被车辆100和控制计算机***150所使用。
尽管自动驾驶控制单元被示为与处理器和存储器分离,但是应当理解,在一些实施方式中,自动驾驶控制单元的某些或全部功能可以利用驻留在一个或多个存储器(或数据存储装置)中的程序代码指令来实现并由一个或多个处理器执行,并且自动驾驶控制单元在某些情况下可以使用相同的处理器和/或存储器(或数据存储装置)来实现。在一些实施方式中,自动驾驶控制单元可以至少部分地使用各种专用电路逻辑,各种处理器,各种现场可编程门阵列(FPGA),各种专用集成电路(ASIC),各种实时控制器和硬件来实现。
控制计算机***150可以根据从各种车辆***(例如,驱动***142,传感器***144,以及控制***146)接收到的输入,或者从用户接口***148接收到的输入,来控制车辆100的功能。例如,控制计算机***150可以使用来自控制***146的输入来控制转向单元,来避开由传感器***144检测到的障碍物。在一个实施例中,控制计算机***150可以用来控制车辆100及其***的多个方面。
虽然图1中显示了集成到车辆100中的各种部件(或单元),这些部件(或单元)中的一个或多个可以搭载到车辆100上或单独关联到车辆100上。例如,控制计算机***可以部分或者全部地独立于车辆100存在。从而,车辆100能够以分离的或者集成的设备单元的形式而存在。构成车辆105的设备单元之间可以以有线通信或者无线通信的方式实现相互通信。在一些实施例中,可以将附加部件或单元添加到各个***或从***中移除一个或多个以上的部件或单元(例如,图1所示的LiDAR或雷达)。
如前文所述,为了实现多传感器融合,需要提供一种方法对齐多个不同的输入数据流,对齐后的多个数据流可作为一个数据组合。其中一种方法是以某一输入数据流为主数据流,其他数据流为辅数据流,在主数据流到达一帧时,找出所有辅数据流中数据时间戳与主数据流新到达的数据时间戳最接近的一帧,作为一个数据组合。但由于数据流之间的延迟不一致,可能会导致某个延迟较大的数据流所取得的数据永远是一个在较早的时间点产生的数据。
另一种方法是对不同数据流的到达时间点进行精确匹配,把不同数据流中到达时间戳一致的数据作为一个数据组合。但由于传感器内部的时钟源误差、传感器触发时刻的误差、传感器驱动程序、软件***调度等各种影响因素,基于到达时间戳很难做到数据时间戳的一致,误差较大。另外如果从传感器硬件层面进行优化的难度比较大,且可能较低报告错误的灵敏度,难以确保在***不稳定的情况下仍然能控制最大延迟。
为此,本申请提供一种根据各传感器数据的生成时间戳进行数据对齐的方案,以将同一时刻产生的数据作为数据组合传递给算法模块进行计算。图2是根据本申请示例实施例的传感器数据处理方法200的流程图。如图2所示,该方法200包括:
步骤202,接收待处理的多个数据流,每个数据流对应于一个传感器,且数据流中的数据帧携带有生成时间戳;
步骤204,对各数据帧的生成时间戳进行校正,得到校正时间戳;以及
步骤206,根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
在一些实施例中,多个数据流包括以下至少一种:由传感器采集的原始数据流、对原始数据流进行计算后得到的后处理数据流。也就是,多个数据流包括至少一个原始数据流和/或至少一个后处理数据流。
其中,原始数据流源自硬触发传感器,由传感器驱动程序产生的,且每个原始数据流中的数据帧都携带有该数据帧产生时的时间戳,即生成时间戳。后处理数据流包括以原始数据流为输入数据流的数据流处理程序所产生的数据流,也包括以后处理数据流为输入数据流的数据流处理程序所产生的数据流。也就是,对原始数据流进行一次或多次处理后所得到的数据流均为后处理数据流。
数据流处理程序会把输入数据流的传感器数据时间戳保留,并体现在自身的输出帧中,因此后处理数据流中携带有对应的原始数据流的生成时间戳。如果原始数据流的数据帧为原始数据帧,后处理数据流的数据帧为后处理数据帧,则每个后处理数据帧携带有对应的原始数据帧的生成时间戳。
在一些实施例中,步骤S202中接收待处理的多个数据流包括:在数据缓冲区设置每个数据流所对应的缓冲队列,用于暂存数据;根据各数据流中各数据帧的生成时间戳,将各数据帧存入对应的缓冲队列。
图3是根据本申请示例实施例的不同输入数据流的缓冲队列的示意图。每个数据流具有对应的数据采集周期(或数据生成周期或传感器触发周期)和缓冲队列,例如数据流1的传感器触发频率为50HZ,对应的数据采集周期为20ms;数据流2的传感器触发频率为20HZ,对应的数据采集周期为50ms,数据流n的传感器触发频率为10HZ,对应的数据采集周期为100ms。
在一些实施例中,数据缓冲区具有一个基于服务器时间的时间线,在任意一个数据流有数据进入的时候,缓冲区会以其传感器触发时间戳为准,放置在缓冲队列中与硬触发时间戳相对应的时间线位置上,实现对数据的暂存。
另外,由于输入数据流具有硬触发特性,多个数据流每隔预定周期(如1s)会同时产生一次数据,因此多个数据流每隔预定周期会自动对齐一次。可以看到,在时间线的0时刻(即一秒的起始位置),每一个缓冲队列都会有一个数据点,而且每一个缓冲队列中的数据点都是等间隔的。
在一些实施例中,步骤S204中对各数据帧的生成时间戳进行校正包括:根据各数据流的容忍误差将该数据流中各数据帧的生成时间戳校正为与之最接近的整数时间戳,例如,生成时间戳为17ms,则将其校正为20ms。一般地,只要有新数据帧进行到缓冲区,即可对该新数据执行数据对齐算法,且可在算法模块执行计算时暂停对齐算法的执行,以节省资源并保证实时性。另外,如果有两个数据帧的生成时间戳同时校正到了同一个整数时间戳,则之保留第一个到达的数据帧,或者只保留生成时间戳与整数时间戳更接近的数据帧。
优选地,若容忍误差为t误差,某数据帧的生成时间戳为t生成,则该数据帧的校正时间戳其中,a为预设的常数,例如为0.5,当然不限于此。各数据流的容忍误差是该数据流的数据采集周期的因数且小于该数据采集周期T的1/2,即t误差<T/2。例如对于一个10Hz的数据流,其数据采集周期为100ms,那么t误差可被设置成5ms、10ms、20ms等数值。
在一些实施例中,步骤206中从各数据流中确定每个数据发送周期所应发送的数据帧包括:
对于任一数据流,确定该数据流中与当前数据发送周期所对应的目标时间戳;若该数据流的某数据帧的校正时间戳与目标时间戳匹配,则将该数据帧确定为该数据流在当前数据发送周期所应发送的数据帧;若该数据流中不存在校正时间戳与所述目标时间戳匹配的数据帧,则确定该数据流在当前数据发送周期没有要发送的数据帧。
这里,数据发送周期是指要把一个数据组合发送给算法模块的周期,在每个周期的结束时刻会将对齐的数据进行组合,并传递给算法模块进行执行,该结束时刻对应一个虚拟的触发帧,本申请的目的之一是确定同一触发帧在不同数据流中所对应的数据帧,将这些数据帧作为一个数据大帧,传递给算法模块进行计算。例如用户希望以20Hz的频率触发模块算法,那么会在时间线的0ms、50ms、100ms、150ms等位置各有一个触发帧。考虑到不同数据流的数据采集周期不一致,因此某数据流的同一个数据帧可能会对应一个或多个触发帧。例如图4的触发帧在不同数据流的映射关系中,缓冲队列3中的第一个数据帧既映射到了触发帧1,也映射到了触发帧2。
在一种实现方式中,确定该数据流中与当前数据发送周期所对应的目标时间戳包括:
根据该数据流所对应的传感器的数据采集周期,确定该数据流的预期时间戳序列;从预期时间戳序列中选取与当前数据发送周期所对应的目标时间戳。
进一步地,从预期时间戳序列中选取与当前数据发送周期所对应的目标时间戳包括:
从预期时间戳序列中选取至少一个候选时间戳,并将至少一个候选时间戳中的最大值作为目标时间戳。其中,候选时间戳不晚于当前数据发送周期的结束时刻,该结束时刻也就是触发帧的时间戳。
假设该数据流的数据发送周期的结束时刻为t结束,则候选时间戳为小于等于t结束的那些时间戳,而目标时间戳=max{t,t∈L∩t≤t结束}。假设触发帧的时间戳为60ms,则从预期时间戳序列中确定的候选时间戳为0ms、20ms、40ms、60ms,该候选时间戳的最大值为60ms,即为目标时间戳。
在一些实施例中,某数据帧的校正时间戳与目标时间戳匹配是指该数据帧的校正时间戳等于目标时间戳。若两者相等,则建立该数据帧与对应触发帧的映射关系。本申请确定每个数据发送周期中每个数据流所应发送的数据帧,当确定某数据流在当前数据发送周期要发送的数据帧,则建立该数据帧与当前触发帧的映射关系。在参数设定合理、数据流传输准确无误的情况下,随着数据流中不断传入新数据,一个触发帧会逐渐和各个数据流中的某个数据帧产生映射关系。
在一些实施例中,多个传感器每隔预定周期会同时产生一次数据帧,因此步骤S206中从各数据流中确定每个数据发送周期所应发送的数据帧,包括:
对于任一数据流,计算该数据流中当前数据帧与当前预定周期的起始数据帧的校正时间戳差值;若该校正时间戳差值与该数据流的数据采集周期的比值为非整数,则确定该数据帧为该数据流的错帧,并丢弃该错帧。例如,某触发频率为10Hz的硬触发数据流产生了一帧校正时间戳为370ms的数据,370ms不是100ms的整数倍,即可判定370ms位置的数据是错帧。
在一些实施例中,步骤S206中从各数据流中确定每个数据发送周期所应发送的数据帧包括:
对于任一数据流,计算该数据流中当前数据帧与上一数据帧的校正时间戳差值;计算该校正时间戳差值与该数据流的数据采集周期的比值m;若m为非整数,则确定该数据帧为该数据流中的错帧,并丢弃该错帧;若m为非1的整数(即大于等于2的整数),则判定在当前数据帧和上一数据帧之间丢失m-1帧。
可选地,当前预定周期为每一个1s周期,对于某数据流,计算当前数据帧的校正时间戳与当前1s周期的起始时刻(或起始帧的校正时间戳)的差值Δt1,若Δt1/T为非整数,则该数据帧为错帧。又例如,计算前后两帧校正时间戳的差值Δt2,若Δt2/T为非整数,则该数据帧为错帧。若Δt2/T为非1的整数,则在这前后两帧中丢失了Δt2/T-1帧,对应的目标时间戳位置可判定为丢帧。
例如,数据采集周期为20ms,但上一帧的校正时间戳为20ms,当前帧的校正时间戳为80ms,则判定在这两帧之间丢失两帧,且40ms、60ms位置判定为丢帧。或者对于一个10Hz的硬触发数据流,其预期时间差为100ms,但是若经过数据校正流程,前后两帧的时间差为160ms,则认为160ms位置的帧为错帧。
丢帧的出现场景包括但不限于:传感器未产生数据、传感器驱动程序获取数据失败、数据流处理程序计算异常等。本申请的丢帧检查***建立在时间戳校正的基础上,这样可以避免出现“约等于”的定义,只需要判断前后两帧的时间差相比预期时间差是否为非1的整数倍即可。
在一些实现方式中,当判定当前数据流丢帧后,方法200还可以包括以下至少一种步骤,使得***可以及时感知到丢帧,并及时进行处理:
1)对外报告当前数据流的异常;
2)把出现丢帧位置对应的触发帧标记为丢帧,后续操作不再考虑该触发帧;
3)告知下游算法模块出现丢帧的具体时间和位置。
错帧出现的场景包括但不限于:传感器时间出现异常、服务器时间出现异常、授时***出现异常、传感器驱动程序获取数据异常、数据流处理程序计算异常等,其表现为具有硬触发特性的数据流中,前后两帧的时间戳之差无法被校正算法修正成预期时间差(频率之倒数)的整数倍。本申请的错帧检查***同样建立在时间戳校正的基础上,只需要判断前后两帧的时间差相比预期时间差是否为非整数倍即可。
在一些实现方式中,当判定当前数据流出现错帧之后,方法200还可以包括以下至少一种步骤,确保***的运行安全:
1)对外报告当前数据流的异常;
2)告知下游算法模块该数据流可能开始出现错误;
3)错误累积到一定程度后,切换到备份***或者执行安全动作。
在一些实施例中,步骤S206中从各数据流中确定每个数据发送周期所应发送的数据帧包括:
若某数据流中对应于目标时间戳的位置被判定为丢帧,则确定该数据流在当前数据发送周期没有要发送的数据帧;
若从目标时间戳开始的预定时段内未接收到某数据流的新数据帧,则判定该数据流超时,且该数据流在当前数据发送周期没有要发送的数据。
在一些实施例中,若某时间戳位置被判定为丢帧、错帧或超时,则可将该时间戳标记为丢帧、错帧或超时。错帧可直接丢弃,若某目标时间戳位置被标记为丢帧或超时,则代表当前触发帧无法与该数据流建立映射,即当前数据发送周期没有要发送的数据。另外,对于一个触发帧,已经建立映射关系的数据流可以标记为“已建立映射”,对应数据帧超时的数据流可以标记为“超时”,对应数据帧丢帧的数据流可以标记为“丢帧”。当该触发帧所对应的所有数据流都已经有标记状态(包括“已建立映射”、“超时”、“丢帧”)后,则代表完成了该触发帧的映射、该触发帧完整、以及该数据发送周期的数据帧完整,只是可能在某些数据流中映射到了空帧。之后可将已建立映射的数据帧作为一个大帧传递给算法模块。
在一些实施例中,预定时段可以为预设的容忍延迟,可以设置一个全局的容忍延迟,也可以为每个数据流单独设置对应的容忍延迟,本申请对此不作限制。对于每个不完整触发帧。计算未到数据帧的预期时间戳,若当前***时间与该预期时间戳的差值大于所设置的容忍误差,则判定对应数据流超时,且该数据流在当前数据发送周期没有要发送的数据;反之,则继续等待该预期数据帧的到来。
应当理解的是,在一些传感器融合算法中,有时可能会出现需要确保实时性而允许数据丢失的情况。例如一个融合多个传感器的物体跟踪结果来进行路况建模的算法,它会接收来自多个数据流的输入,偶尔缺少某个数据流的输入也不会影响算法的正常进行。而且,按照数据帧对齐算法的执行流程,最终产生的大数据帧的延迟时间为所有数据流的延迟最大值,因此当某一个数据流产生异常,如出现延迟过高、不产生数据等现象时,会导致对齐算法的延迟过高甚至停止运行。
因此,本申请在数据对齐***之外添加一个延迟检查***,两者之间独立运行且可以进行通信。延迟检查***不断循环执行,可以采用定时器或者延时触发等机制来实现对数据流超时状态的定期检查。
在一种实现方式中,设置定时器每隔预定周期检查是否有数据流超时。
在另一种实现方式中,结合上述对各数据流配置的容忍延迟、当前服务器的观测时间以及数据帧的映射情况,为不完整触发帧计算一个全局最晚时刻,若在这个时刻前没有收到任何一个新的数据帧,即可判定数据超时。
具体而言,针对***中首个数据帧不完整的数据发送周期(或者首不完整的触发帧个),根据各个数据流的预期时间戳、容忍延迟,以及通过服务器观测的现实时间(也称***时间),计算出一个全局最晚时刻。若在全局最晚时刻之前所等待的各数据流均没有新数据帧到达,则判定所等待的数据流都超时,该数据发送周期在这些数据流中映射为空帧,当前触发帧为部分数据帧超时的完整触发帧。若在全局最晚时刻之前某个或多个所等待的数据流有一帧新数据到达,则根据对齐算法计算该新数据帧的校正时间戳,重新执行对齐算法,并根据是否还有未到的数据帧来判断是否需要更新全局最晚时刻。
这里,对于每个不完整的数据发送周期,其在所等待的各数据流中都有一个对应的局部最晚时刻,某数据发送周期在数据流k中的局部最晚时刻tk,局部为预期数据帧的预期时间戳t,预期加上该数据流的容忍延迟tk,延迟,即tk,局部=tk,预期+tk,延迟。而该数据发送周期的全局最晚时刻为各未到数据流的局部最晚时刻的最大值,即 其中S未到为所有未到数据帧的数据流集合。
例如,假设当前数据发送周期在数据流2和3中的数据帧未到达,若该数据发送周期在数据流4的预期时间戳为30ms,容忍延迟为20ms,则该数据发送周期在数据流4的局部最晚时刻为50ms。若该数据发送周期在数据流5的预期时间戳为60ms,容忍延迟为80ms,则该数据发送周期在数据流5的局部最晚时刻为90ms。因此,该数据发送周期的全局最晚时刻为两个局部最晚时刻的最大值,即90ms。
在一些实施例中,在高延迟检查的当前***时间下,***只需要等待“全局最晚时刻来临”或者“等待的新数据帧到达”任一事件发生。若发生的事件是“全局最晚时刻来临”,则直接将所有未到的数据帧均标记为超时;若发生的事件是“等待的新数据帧到达”,则重新执行对齐算法,计算该新数据帧的校正时间戳,判断该新数据帧是否可映射到该触发帧上。另外,判断当前数据发送周期是否还有未到数据帧(也就是当前触发帧是否还有未映射的数据流)。若还有未到数据帧,则代表该触发帧还不完整,需要继续根据该预期数据帧的预期时间戳和对应数据流的容忍延迟更新全局最晚时刻,直到该数据发送周期的数据帧完整。
在又一种实现方式中,当某触发帧在其他多个数据流中均已建立映射,则可启动高延迟检查算法来检查该触发帧在剩下的数据流中是否超时。优选地,当某触发帧在其他数据流中均已建立映射,则可启动高延迟检查算法来检查该触发帧在最后一个数据流中是否超时。
检查完毕后,若对于某个触发帧,发现所有数据流的状态均为“已建立映射”或“已被标记为超时”的状态,那么该触发帧可被认为是含有空数据的完整触发帧。通过延迟检查可以把对齐算法的最大延迟控制在容忍延迟以内,避免单个数据流的延迟过高导致的***运行异常等问题。
另外,关于触发帧的完整性判断,在一种实现方式中,若当前触发帧(或当前数据发送周期)与所有数据流都产生对应关系时,则认为该触发帧完整,反之若有某个数据流未产生对应关系,则认为该触发帧不完整,这种方式主要针对的是对数据完整度要求比较高的算法模块。在另一种实现方式中,对于每个触发帧,排除掉那些没有数据要发送的数据流,若剩下的数据流中均已确定了对应的数据帧(均已建立了映射关系),则确定该触发帧完整,或者称之为含有空数据的完整触发帧。这种方式主要针对的是对数据完整度要求较低的算法模块。
因此,本申请可根据传递给算法模块的计算精度要求来确定触发帧的判定要求,对于要求高的算法模块必须每个数据流都有映射后才传递给算法模块,而对于要求低的算法模块则只要那些有数据帧要发送的数据流中建立了映射关系即可。
例如图4中的触发帧1和触发帧2在三个缓冲队列中均有对应的数据帧,被认为是完整的触发帧;触发帧3只和缓冲队列1中的数据帧建立了映射关系,但在缓冲队列3被延迟检测算法被标记未超时,则触发帧3被认为是含有空数据的完整触发帧。触发帧4没有和任何一个缓冲队列建立映射关系,被认为是不完整的触发帧。假设触发帧4在缓冲队列2和缓冲队列3中对应的目标时间戳位置为丢帧或超时,则确定该数据流中没有要发送的数据帧,此时触发帧4也可认为是含有空数据的完整触发帧。
在一些实施例中,在步骤S206之后,还可以包括步骤:将所确定的每个数据发送周期所应发送的数据帧作为组合,传递给算法模块进行计算。这里,可以将数据发送给算法模块进行计算,也可以由算法模块来读取数据,本申请对此不作限制。
根据本申请的技术方案,可以将具有硬触发特性的数据流对齐,把具有相同硬触发时间戳的数据帧组合成一个大帧,传递给算法模块计算,并且对误差具有一定的容忍程度的同时,确保数据的正确性。而且,本申请在数据流产生异常时,包括但不限于硬触发时间戳有误、产生帧丢失、数据延迟高等情况,可以及时发现异常并做出响应,确保***的实时性和安全性。
以下仍以***中存在的三个数据流为例,来详述本申请的数据方案:
数据流1为硬触发传感器产生的原始数据流,其传感器时间与服务器时间的误差极小;硬件触发频率f1=50Hz,即数据采集周期为20ms;传感器驱动程序可以正确获取每一帧数据的产生时间,不会出错;延迟约为10ms,在2ms的小范围内波动;可能产生数据丢失。
数据流2为硬触发传感器产生的原始数据流,其传感器时间与服务器时间的误差极小;传感器驱动程序可以正确获取每一帧数据的产生时间,不会出错;硬件触发频率f2=20Hz,即数据采集周期为50ms;由于某些原因,该传感器可能会产生个别时间戳偏差较大的数据,但是整体仍然是稳定的;其延迟约为40ms,在10ms的范围内波动,
数据流3为数据流处理程序产生的后处理数据流;硬件触发频率f3=10Hz,即数据采集周期为100ms;其延迟不稳定,可能低至10ms,也可能高达500ms。
设定全局的容忍误差t误差=10ms,数据发送周期(既算法模块触发周期)为50ms。图5A中示出了不同数据流生成时间戳的示意图,数据流的三个数据帧的生成时间戳分别为0ms、19ms、43ms,代入到可得对应的校正时间戳为0ms、20ms和40ms。数据流2的两个数据帧的生成时间戳为4ms、49ms,可得对应的校正时间戳为0ms、50ms。各数据流校正后的时间戳如图5B所示。
对于第二个数据发送周期(也就是触发帧2),在数据流2中对应的预期时间戳序列为L={0ms,50ms,100ms,…},因此候选时间戳{0ms,50ms},目标时间戳为max{0ms,50ms}=50ms。而数据流2中有一个校正时间戳也为50ms的数据帧,即第二个数据帧,因此建立该数据帧与触发帧2的映射关系。
图6A为本申请的一个丢帧错帧和高延迟检查的示意图,其中数据流1在60ms和100ms位置有前后两帧数据,100ms-60ms=40ms=2*20ms,因此在这两帧之间丢失一帧,丢帧位置为80ms处。数据流2中时间戳为70ms的帧,前后两帧的时间差为70ms–50ms=20ms=0.4×50ms,0.4为非整数倍,故判定该帧为错帧。
在一些实施例中,假设***所处时刻为181ms,开始执行高延迟检查。已知触发帧3在缓冲队列1和缓冲队列2已经完成了100ms位置的数据映射,因此高延迟检查算法直接开始检查缓冲队列3的延迟情况。通过数据流3的数据采集周期计算出预期时间戳为100ms,容忍延迟为80ms,而181ms-100ms>80ms,从而将触发帧3对应的缓冲队列3标记为超时。此时,触发帧3在所有缓冲队列的数据均处于“完成映射”或“超时”状态,从而触发帧3变成一个完整触发帧。
在另一些实施例中,假设服务器观测的现实时间t现实为130ms,***中首个不完整的触发帧为触发帧3,该触发帧在缓冲队列1和2的100ms位置的数据帧已经到达,预期在缓冲队列3的100ms位置有一帧数据,但该数据帧当前未到。此时计算最晚时刻 S未到只有数据流3,该数据流的局部最晚时刻为180ms,也就是当前***高延迟检查的最晚时刻。假设180ms时所等待的数据帧还未到达,则将该数据帧标记为超时。计算高延迟检查***的等待时间为t全局–t现实=180ms–130ms=50ms,在等待期间,如果数据流3没有新的数据帧到达,则会把等待位置处的数据帧均标记为超时,此时触发帧3在所有缓冲队列的数据均具有标记状态,因此为包含超时数据的完整触发帧,传递给算法模块进行计算。如果所等待的数据流有新的数据帧到达,则判断该新到达的数据帧可否映射到该触发帧,若能,则代表该触发帧完整。
在又一些实施例中,如图6B所示,假设服务器观测的现实时间t现实为160ms,***中首个不完整的触发帧为触发帧4,该触发帧在缓冲队列3的100ms位置的数据帧已经到达,预期在缓冲队列1的140ms位置和缓冲队列2的150ms位置各会有一帧数据,但这两帧数据均未到达。此时,计算数据流1和2的局部最晚时刻分别为170ms和210ms,因此全局最晚时刻为210ms,计算当前距离全局最晚时刻的等待时间为210ms–160ms=50ms。在等待期间,如果所等待的数据流1和2均没有新的数据帧到达,则会把缓冲队列1的140ms位置和缓冲队列2的150ms位置均标记为超时,此时将触发帧4判定为包含超时数据的完整触发帧,传递给算法模块进行计算。
若在图6B的50ms等待期间,例如在t现实=165ms时刻到来了缓冲队列2在150ms位置的数据帧,此时还有一个数据流1的数据帧未到达,因此更新全局最晚时刻为数据流1的局部最晚时刻170ms,并更新等待时间为170ms-165ms=5ms。此时高延迟等待***需要再等待5ms,若5ms内没有数据流1的新数据帧到达,则可将数据流1标记为超时。
或者,在图6B的50ms等待期间,例如在t现实=180ms时刻到来了缓冲队列2在150ms位置的数据帧,虽然更新后的全局最晚时刻仍然为170ms,但因为当前***时间已超过该全局最晚时刻,因此无需再进行等待,将触发帧4判定为包含超时数据(缓冲队列1)的完整触发帧,传递给算法模块进行计算。
根据本申请的技术方案,通过在软件层面对多个输入数据流进行时间戳对齐处理,保证了传递给算法模块的数据是在同一个时刻由多个传感器产生的和/或对同一个时刻产生的数据进行后处理产生的,可以更好地满足多传感器融合对输入数据的要求,提高算法的准确程度。本申请实现了一个高效率、可预测的数据对齐***,在对实时性要求高的自动驾驶***中,可以达到节省计算资源、提高算法响应速度等效果,并且结果的可复现性使得在***出现问题时的调试工作变得简单。而且,本申请还实现了一个自诊断的***,可以在出现问题时快速发现问题并对外报告,且***自身可以根据不同的异常情况进行相应的处理,例如自我进行纠正、将***降级到一个不精准但可用的状态、启用备份***等,以此实现提高自动驾驶***的安全性、提高测试人员的工作效率、简化开发人员的工作流程。
图7示出了根据本申请一个实施例的传感器数据处理装置700的示意图,如图7所示,传感器数据处理装置700包括:
数据帧接收模块702,用于接收待处理的多个数据流,每个数据流对应于一个传感器,且所述数据流中的数据帧携带有生成时间戳;
时间戳校正模块704,用于对各数据帧的生成时间戳进行校正,得到校正时间戳;
数据帧对齐模块706,用于根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
在一些实施例中,数据帧接收模块702设置每个数据流所对应的缓冲队列,并根据各数据流中各数据帧的生成时间戳,将各数据帧存入对应的缓冲队列中。
在一些实施例中,时间戳校正模块704根据各数据流的容忍误差将该数据流中各数据帧的生成时间戳校正为与之最接近的整数时间戳。
在一些实施例中,对于任一数据流,数据帧对齐模块706确定该数据流中与当前数据发送周期所对应的目标时间戳;若该数据流的某数据帧的校正时间戳与目标时间戳匹配,则将该数据帧确定为该数据流在当前数据发送周期所应发送的数据帧;若该数据流中不存在校正时间戳与所述目标时间戳匹配的数据帧,则确定该数据流在当前数据发送周期没有要发送的数据帧。
其中,数据帧对齐模块706根据该数据流所对应的传感器的数据采集周期,确定该数据流的预期时间戳序列;从预期时间戳序列中选取与当前数据发送周期所对应的目标时间戳。进一步地,数据帧对齐模块706从预期时间戳序列中选取至少一个候选时间戳,并将该至少一个候选时间戳中的最大值作为目标时间戳。
在一些实施例中,对于任一数据流,数据帧对齐模块706计算该数据流中当前数据帧与当前预定周期的起始数据帧的校正时间戳差值;若该校正时间戳差值与该数据流的数据采集周期的比值为非整数,则确定该数据帧为该数据流的错帧,并丢弃该错帧。
在一些实施例中,对于任一数据流,数据帧对齐模块706计算该数据流中当前数据帧与上一数据帧的校正时间戳差值;计算该校正时间戳差值与该数据流的数据采集周期的比值m;若m为非整数,则确定该数据帧为该数据流中的错帧,并丢弃该错帧;若m为非1的整数,则判定在当前数据帧和上一数据帧之间丢失m-1帧。
在一些实施例中,数据帧对齐模块706在某数据流中对应于目标时间戳的位置被判定为丢帧时,确定该数据流在当前数据发送周期没有要发送的数据帧;以及在预定时段内未接收到某数据流的新数据帧时,判定该数据流超时,并确定该数据流在所述预定时段内的每个数据发送周期均没有要发送的数据。
在一些实施例中,装置700还包括数据帧发送模块(图中未示出),将所确定的每个数据发送周期所应发送的数据帧作为组合,传递给算法模块进行计算。
图8示出了计算设备800的示例形式的机器的图示,在该计算设备内指令集在被执行时和/或处理逻辑在被启动时可以使该机器执行本文中所描述和/或要求的方法中的任何一种或多种。在备选实施例中,机器作为独立设备操作,或可以被连接(例如联网)到其他机器。在联网部署中,机器可以在服务器-客户端网络环境下以服务器或客户端机器的身份操作,或在对等(或分布式)网络环境中作为对等机操作。机器可以是个人计算机(PC)、膝上型计算机、平板计算***、个人数字助理(PDA)、蜂窝电话、智能电话、网络应用、机顶盒(STB)、网络路由器、交换机或桥接器或能够执行指定将由该机器采取的动作的指令集(相继或以其他方式)或启动处理逻辑的任何机器。进一步地,虽然只图示了单个机器,但是术语“机器”也可以被理解为包括单独地或联合地执行用以执行本文中所描述和/或要求的方法中的任何一种或多种的指令集(或多个指令集)的机器的任何集合。
示例计算设备800可以包括可以经由总线806或其他数据传送***彼此通信的数据处理器802(例如***芯片(SoC)、通用处理核心、图形核心和可选其他处理逻辑)和存储器804(例如,内存)。计算设备800还可以包括各种输入/输出(I/O)设备和/或接口810,诸如触摸屏显示器、音频插孔、语音接口和可选网络接口812。在示例实施例中,网络接口812可以包括一个或多个无线电收发器,其被配置成与任何一个或多个标准无线和/或蜂窝协议或接入技术(例如蜂窝***的第二代(2G)、2.5代、第三代(3G)、***(4G)和下一代无线电接入、全球移动通信***(GSM)、通用分组无线电服务(GPRS)、增强型数据GSM环境(EDGE)、宽带码分多址(WCDMA)、LTE、CDMA2000、WLAN、无线路由器(WR)网格等)。网络接口812还可以被配置成与各种其他有线和/或无线通信协议(包括TCP/IP、UDP、SIP、SMS、RTP、WAP、CDMA、TDMA、UMTS、UWB、WiFi、WiMax、IEEE802.11x等)一起使用。本质上,网络接口812可以实际上包括或支持任何有线和/或无线通信和数据处理机构,通过该机构,信息/数据可以经由网络814在计算设备800与另一计算或通信***之间传播。
存储器804可以表示机器可读介质(或计算机可读存储介质),在机器可读介质(或计算机可读存储介质)上存储实施本文中所描述和/或要求的方法或功能中的任何一个或多个的一个或多个指令集、软件、固件或其他处理逻辑(例如逻辑808)。在由计算设备800执行期间,逻辑808或其一部分也可以完全或至少部分地驻留在处理器802内。如此,存储器804和处理器802也可以构成机器可读介质(或计算机可读存储介质)。逻辑808或其一部分也可以被配置为处理逻辑或逻辑,该处理逻辑或逻辑的至少一部分被部分地实现于硬件中。逻辑808或其一部分还可以经由网络接口812来通过网络814被传输或接收。虽然示例实施例的机器可读介质(或计算机可读存储介质)可以是单种介质,但是术语“机器可读介质”(或计算机可读存储介质)应被理解为包括存储一个或多个指令集的单种非暂时性介质或多种非暂时性介质(例如集中式或分布式数据库和/或相关联的高速缓存和计算***)。术语“机器可读介质”(或计算机可读存储介质)也可以被理解为包括能够存储、编码或携带指令集以供机器执行并且使机器执行各种实施例的方法中的任何一种或多种或能够存储、编码或携带被这种指令集利用或与之相关联的数据结构的任何非暂时性介质。术语“机器可读介质”(或计算机可读存储介质)可以因此被理解为包括但不限于固态存储器、光学介质和磁性介质。
所公开的和其他实施例、模块以及本文档中所描述的功能操作可以在数字电子电路***中、或在计算机软件、固件或硬件中(包括本文档中所公开的结构和其结构等效物)或它们中的一个或多个的组合中被实现。所公开的和其他实施例可以被实现为一个或多个计算机程序产品,也就是说,被编码在计算机可读介质上以由数据处理装置执行或以控制该数据处理装置的操作的计算机程序指令的一个或多个模块。计算机可读介质可以是机器可读存储设备、机器可读存储衬底、存储器设备、影响机器可读传播信号的物质合成物或它们中的一个或多个的组合。术语“数据处理装置”涵盖了用于处理数据的所有装置、设备和机器,包括例如可编程处理器、计算机或多个处理器或计算机。除了硬件之外,该装置还可以包括为探讨中的计算机程序创建执行环境的代码,例如构成处理器固件、协议栈、数据库管理***、操作***或它们中的一个或多个的组合的代码。传播信号是人工生成的信号,例如由机器生成的电信号、光信号或电磁信号,该信号被生成以对要传输给适合的接收器装置的信息进行编码。
计算机程序(也被称为程序、软件、软件应用、脚本或代码)可以以任何形式的编程语言(包括编译语言或解译语言)被写入,并且该计算机程序可以以任何形式被部署,包括被部署为独立的程序或部署为模块、部件、子例程或适合在计算环境中使用的另一单元。计算机程序并非必须与文件***中的文件对应。程序可以被存储在保持其他程序或数据(例如被存储在标记语言文档中的一个或多个脚本)的文件的一部分中,或被存储在专用于探讨中的程序的单个文件中,或被存储在多个协作文件(例如存储一个或多个模块、子程序或部分代码的文件)中。计算机程序可以被部署成在一个计算机上执行或在被定位于一个站点处或被分布在多个站点中并且通过通信网络被互连的多个计算机上被执行。
本文档中所描述的过程和逻辑流可以被执行一个或多个计算机程序的一个或多个可编程处理器执行以通过对输入数据进行操作并且生成输出来执行功能。过程和逻辑流还可以被专用逻辑电路***(例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路))执行,并且装置还可以被实现为专用逻辑电路(例如FPGA(现场可编程门阵列)或者ASIC(专用集成电路))。
适合执行计算机程序的处理器包括例如通用微处理器和专用微处理器两者以及任何种类的数字计算机的任何一个或多个处理器。通常,处理器将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的必要元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。通常,计算机还会包括用于存储数据的一个或多个海量存储设备(例如磁盘、磁光盘或光盘),或计算机还会***作地联接以接收来自该一个或多个海量存储设备的数据或将数据传送给该一个或多个海量存储设备或进行两者。然而,计算机不需要具有这种设备。适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如EPROM、EEPROM和闪速存储器设备;磁盘,例如内部硬盘或可移除盘;磁光盘;以及CD-ROM盘和DVD-ROM盘。处理器和存储器可以被专用逻辑电路***补充或可以被并入该专用逻辑电路***中。
虽然本申请包含了许多细节,但是这些细节不应该被解释为对任何发明或可能被要求保护的内容的范围的限制,而是作为可以针对特定发明的特定实施例的特征的描述。在本申请中在单独实施例的上下文中被描述的某些特征还可以组合地被实现在单个实施例中。相反,在单个实施例的上下文中被描述的各种特征也可以单独地或以任何适合的子组合被实现在多个实施例中。此外,尽管上文可能将特征描述为以某些组合来起作用并且最初甚至同样地对这些特征进行了要求,但是在一些情况下可以从组合中删除来自所要求的组合的一个或多个特征,并且所要求的组合可以针对子组合或子组合的变化。
类似地,虽然在附图中以特定顺序描绘了操作,但是不应该将其理解为需要以所示出的特定顺序或以相继的顺序来执行这种操作,或需要执行所有图示的操作以实现期望的结果。此外,在本申请中所描述的实施例中的各种***部件的分离不应被理解为在所有实施例中都需要这种分离。
仅描述了一些实现和示例,并且其他实现、增强和变化可以基于本申请中所描述和图示的内容来进行。
本文中所描述的实施例的说明旨在提供对各种实施例的结构的一般理解,并且它们并不旨在用作可能会利用本文中所描述的结构的部件和***的所有元件和特征的完整描述。对于本领域的普通技术人员而言,在检阅本文中所提供的描述之后,许多其他实施例将是显而易见的。可以利用和得出其他实施例,使得可以在不脱离本申请的范围的情况下进行结构和逻辑的替换和改变。本文中的图仅是代表性的,并且可能未按比例绘制。某些比例可能被增大,而其他比例可能被最小化。因此,说明书和附图将被认为是说明性的而不是限制性的。
一些实施例在两个或更多个特定的互连的硬件模块或设备中实现功能,其中有关控制和数据信号在模块之间并通过模块被传达,或作为专用集成电路的部分。因此,示例***适用于软件、固件和硬件实现。
虽然已经参照附图描述了本申请的示例性实施例或示例,但应理解,上文的示例性论述并非旨在是穷尽的或将本发明限制为所公开的具体形式。根据以上教导内容,很多修改和变型都是可能的。因此,所公开的主题不应当限于本文所述的任何单个实施例或示例,而应当根据所附权利要求书的广度和范围来解释。
Claims (15)
1.一种传感器数据处理方法,包括:
接收待处理的多个数据流,每个数据流对应于一个传感器,且所述数据流中的数据帧携带有生成时间戳;
对各数据帧的生成时间戳进行校正,得到校正时间戳;以及
根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
2.根据权利要求1所述的方法,其中,所述多个数据流包括以下至少一种:由传感器采集的原始数据流、对所述原始数据流进行计算后得到的后处理数据流;所述后处理数据流中携带有对应的原始数据流的生成时间戳。
3.根据权利要求1所述的方法,其中,接收待处理的多个数据流,包括:
设置每个数据流所对应的缓冲队列;
根据各数据流中各数据帧的生成时间戳,将各数据帧存入所述缓冲队列。
4.根据权利要求1所述的方法,其中,对各数据帧的生成时间戳进行校正,包括:
根据各数据流的容忍误差将该数据流中各数据帧的生成时间戳校正为与之最接近的整数时间戳;
其中,每个数据流具有预设的数据采集周期,且各数据流的容忍误差该数据的数据采集周期的因数且小于该数据采集周期的1/2。
5.根据权利要求1所述的方法,其中,从各数据流中确定每个数据发送周期所应发送的数据帧,包括:
对于任一数据流,确定该数据流中与当前数据发送周期所对应的目标时间戳;
若该数据流的某数据帧的校正时间戳与所述目标时间戳匹配,则将该数据帧确定为该数据流在当前数据发送周期所应发送的数据帧;以及
若该数据流中不存在校正时间戳与所述目标时间戳匹配的数据帧,则确定该数据流在当前数据发送周期没有要发送的数据帧。
6.根据权利要求5所述的方法,其中,对于任一数据流,确定该数据流中与当前数据发送周期所对应的目标时间戳,包括:
根据该数据流所对应的传感器的数据采集周期,确定该数据流的预期时间戳序列;
从所述预期时间戳序列中选取与当前数据发送周期所对应的目标时间戳。
7.根据权利要求6所述的方法,其中,从所述预期时间戳序列中选取与当前数据发送周期所对应的目标时间戳,包括:
从所述预期时间戳序列中选取至少一个候选时间戳,所述候选时间戳不晚于当前数据发送周期的结束时刻;以及
将所述至少一个候选时间戳中的最大值作为所述目标时间戳。
8.根据权利要求1所述的方法,其中,多个传感器每隔预定周期会同时产生一次数据帧,从各数据流中确定每个数据发送周期所应发送的数据帧,包括:
对于任一数据流,计算该数据流中当前数据帧与当前预定周期的起始数据帧的校正时间戳差值;
若该校正时间戳差值与该数据流的数据采集周期的比值为非整数,则确定该数据帧为该数据流的错帧,并丢弃该错帧。
9.根据权利要求5所述的方法,从各数据流中确定每个数据发送周期所应发送的数据帧,包括:
对于任一数据流,计算该数据流中当前数据帧与上一数据帧的校正时间戳差值;
计算该校正时间戳差值与该数据流的数据采集周期的比值m;
若m为非整数,则确定该数据帧为该数据流中的错帧,并丢弃该错帧;以及
若m为非1的整数,则判定在当前数据帧和上一数据帧之间丢失m-1帧。
10.根据权利要求1所述的方法,其中,从各数据流中确定每个数据发送周期所应发送的数据帧,包括:
若某数据流中对应于所述目标时间戳的位置被判定为丢帧,则确定该数据流在当前数据发送周期没有要发送的数据帧;以及
若从目标时间戳开始的预定时段内未接收到某数据流的新数据帧,则判定该数据流超时,且该数据流在当前数据发送周期没有要发送的数据。
11.根据权利要求1所述的方法,还包括:
将所确定的每个数据发送周期所应发送的数据帧作为组合,传递给算法模块进行计算。
12.一种传感器数据处理装置,包括:
数据帧接收模块,用于接收待处理的多个数据流,每个数据流对应于一个传感器,且所述数据流中的数据帧携带有生成时间戳;
时间戳校正模块,用于对各数据帧的生成时间戳进行校正,得到校正时间戳;以及
数据帧对齐模块,用于根据各数据帧的校正时间戳和预设的数据发送周期,从各数据流中确定每个数据发送周期所应发送的数据帧。
13.一种计算设备,包括:
一个或多个处理器;和
存储器,所述存储器存储有一个或多个程序,所述一个或多个程序在被所述一个或多个处理器执行时,使得所述一个或多个处理器实现权利要求1至17中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时实现权利要求1-11任一项所述的方法。
15.一种车辆,包括如权利要求13所述的计算设备。
Priority Applications (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495101.0A CN115310501A (zh) | 2021-05-07 | 2021-05-07 | 一种传感器数据处理方法、装置、计算设备及存储介质 |
EP22166903.9A EP4087218A1 (en) | 2021-05-07 | 2022-04-06 | Method and apparatus for processing sensor data, computing device and storage medium |
JP2022075298A JP2022173118A (ja) | 2021-05-07 | 2022-04-28 | センサデータ処理方法、装置、コンピューティングデバイス及び記憶媒体 |
AU2022203003A AU2022203003A1 (en) | 2021-05-07 | 2022-05-04 | Method and apparatus for processing sensor data, computing device and storage medium |
US17/662,419 US20220360538A1 (en) | 2021-05-07 | 2022-05-06 | Method and apparatus for processing sensor data, computing device and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110495101.0A CN115310501A (zh) | 2021-05-07 | 2021-05-07 | 一种传感器数据处理方法、装置、计算设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115310501A true CN115310501A (zh) | 2022-11-08 |
Family
ID=81448448
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110495101.0A Pending CN115310501A (zh) | 2021-05-07 | 2021-05-07 | 一种传感器数据处理方法、装置、计算设备及存储介质 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20220360538A1 (zh) |
EP (1) | EP4087218A1 (zh) |
JP (1) | JP2022173118A (zh) |
CN (1) | CN115310501A (zh) |
AU (1) | AU2022203003A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20240086274A1 (en) * | 2022-09-14 | 2024-03-14 | Getac Technology Corporation | Server-side remediation for incoming sensor data |
CN115842919B (zh) * | 2023-02-21 | 2023-05-09 | 四川九强通信科技有限公司 | 一种基于硬件加速的视频低延迟传输方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7974314B2 (en) * | 2009-01-16 | 2011-07-05 | Microsoft Corporation | Synchronization of multiple data source to a common time base |
WO2018123857A1 (ja) * | 2016-12-28 | 2018-07-05 | 日本電信電話株式会社 | センシングシステム及び時刻同期方法 |
CN112135177B (zh) * | 2020-09-25 | 2022-10-21 | 北京猿力未来科技有限公司 | 数据流同步方法及装置 |
-
2021
- 2021-05-07 CN CN202110495101.0A patent/CN115310501A/zh active Pending
-
2022
- 2022-04-06 EP EP22166903.9A patent/EP4087218A1/en active Pending
- 2022-04-28 JP JP2022075298A patent/JP2022173118A/ja active Pending
- 2022-05-04 AU AU2022203003A patent/AU2022203003A1/en active Pending
- 2022-05-06 US US17/662,419 patent/US20220360538A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
EP4087218A1 (en) | 2022-11-09 |
US20220360538A1 (en) | 2022-11-10 |
AU2022203003A1 (en) | 2022-11-24 |
JP2022173118A (ja) | 2022-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112050792B (zh) | 一种图像定位方法和装置 | |
EP3614176B1 (en) | A hardware centralized time synchronization hub for an autonomous driving vehicle | |
CN107816976B (zh) | 一种接近物体的位置确定方法和装置 | |
EP4087218A1 (en) | Method and apparatus for processing sensor data, computing device and storage medium | |
EP3614687A1 (en) | A gps based high precision timestamp generation circuit for an autonomous driving vehicle | |
EP4191978A1 (en) | Method and device for data transmission | |
EP3613648A1 (en) | A time source recovery system for an autonomous driving vehicle | |
CN112527003B (zh) | 数据传输装置和*** | |
US20230305138A1 (en) | Communication method and apparatus | |
CN113016153A (zh) | 验证在自动驾驶车辆中使用的传感器的定时 | |
CN112752954A (zh) | 自动驾驶车辆的同步传感器 | |
EP4180295A1 (en) | Method and device for recognizing vehicle motion state | |
CN115348657A (zh) | 用于车辆时间同步的***架构、方法及车辆 | |
KR20230059714A (ko) | 차량 제어 장치, 시스템, 방법, 및 비일시적인 기억 매체 | |
WO2023123416A1 (zh) | 同步的方法、装置以及车辆 | |
CN110626517A (zh) | 航空器轮挡智能装置、智能***及自动数据获取方法 | |
CN114415489A (zh) | 一种车载传感器时间同步方法、装置、设备和介质 | |
CN115035357A (zh) | 目标检测模型构建方法、目标检测方法、装置和计算设备 | |
WO2024125062A1 (zh) | 用于评估行车信息来源的方法和装置 | |
CN112530191A (zh) | 一种将交通装置信息同步到本地设备的方法和*** | |
US20230393966A1 (en) | Software releasing method and apparatus, computing device and storage medium | |
CN117812475A (zh) | 一种数据传输方法、计算设备及存储介质 | |
CN112740067B (zh) | 用于雷达测距的方法、设备、雷达和车载*** | |
EP4328675A1 (en) | Vehicle-mounted controller and method for issuing absolute time of vehicle and vehicle | |
CN118279845A (zh) | 车道线检测的方法、装置和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |