CN112035281A - 多激光雷达数据输出方法、装置、设备及存储介质 - Google Patents
多激光雷达数据输出方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN112035281A CN112035281A CN202010902750.3A CN202010902750A CN112035281A CN 112035281 A CN112035281 A CN 112035281A CN 202010902750 A CN202010902750 A CN 202010902750A CN 112035281 A CN112035281 A CN 112035281A
- Authority
- CN
- China
- Prior art keywords
- data
- point cloud
- radar
- preset
- cloud data
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01S—RADIO DIRECTION-FINDING; RADIO NAVIGATION; DETERMINING DISTANCE OR VELOCITY BY USE OF RADIO WAVES; LOCATING OR PRESENCE-DETECTING BY USE OF THE REFLECTION OR RERADIATION OF RADIO WAVES; ANALOGOUS ARRANGEMENTS USING OTHER WAVES
- G01S7/00—Details of systems according to groups G01S13/00, G01S15/00, G01S17/00
- G01S7/48—Details of systems according to groups G01S13/00, G01S15/00, G01S17/00 of systems according to group G01S17/00
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/524—Deadlock detection or avoidance
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Radar, Positioning & Navigation (AREA)
- Remote Sensing (AREA)
- Traffic Control Systems (AREA)
- Optical Radar Systems And Details Thereof (AREA)
Abstract
本发明涉及车辆技术领域,公开了一种多激光雷达数据输出方法、装置、设备及存储介质,该方法包括:获取预置激光雷达采集的多个点云数据;对多个点云数据进行处理,获得帧数据,并将帧数据输入至雷达线程队列中;判断雷达线程队列中的帧数据是否符合预设数据同步条件;在符合预设数据同步条件时,将雷达线程队列中的帧数据进行输出。由于现有技术中需要GPS模块或线程锁才能够完成多激光雷达数据同步输出,但会导致运行效率低下,而本发明中是根据点云数据获得帧数据,之后将帧数据输入至雷达线程队列中,在符合预设数据同步条件时直接将帧数据进行输出,实现了在保证激光雷达数据同步稳定输出的同时,提高了激光雷达数据的输出效率。
Description
技术领域
本发明涉及车辆技术领域,尤其涉及一种多激光雷达数据输出方法、装置、设备及存储介质。
背景技术
伴随汽车无人驾驶和自主移动机器人等领域的大力发展,激光雷达凭借角分辨率高、距离分辨率高、速度分辨率高、测速范围广、抗干扰能力强等一系列特点得到广泛应用,通过激光雷达,可以实现环境建模、障碍物检测、导航与定位等感知功能。现有技术中,在通过多激光雷达采集的数据进行同步输出时,需要利用GPS模块或线程锁完成数据同步,但线程锁的使用,在一定程度上降低了程序运行效率,很难保证激光数据能连续稳定输出,因此,如何保证激光雷达数据同步稳定输出的同时,提高激光雷达数据的输出效率是亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种多激光雷达数据输出方法、装置、设备及存储介质,旨在解决如何保证激光雷达数据同步稳定输出的同时,提高激光雷达数据的输出效率的技术问题。
为实现上述目的,本发明提供一种多激光雷达数据输出方法,所述多激光雷达数据输出方法包括以下步骤:
获取预置激光雷达采集的多个点云数据;
对多个所述点云数据进行处理,获得帧数据,并将所述帧数据输入至雷达线程队列中;
判断所述雷达线程队列中的帧数据是否符合预设数据同步条件;
在所述雷达线程队列中的帧数据符合所述预设数据同步条件时,将所述雷达线程队列中的帧数据进行输出。
优选地,所述获取预置激光雷达采集的多个点云数据的步骤之前,还包括:
获取车辆电机转速频率,并判断所述车辆电机转速频率是否等于预设频率阈值;
在所述车辆电机转速频率等于所述预设频率阈值时,执行所述获取预置激光雷达采集的多个点云数据的步骤。
优选地,所述对多个所述点云数据进行处理,获得帧数据的步骤,包括:将多个所述点云数据进行分类,以获取多组点云数据包;
根据多组所述点云数据包构建点云数据集合;
根据所述点云数据集合确定对应的帧数据。
优选地,所述根据多组所述点云数据包构建点云数据集合的步骤之前,还包括:
获取多组所述点云数据包对应的水平方位角总数;
判断所述水平方位角总数是否等于预设数量阈值;
在所述水平方位角总数等于所述预设数量阈值时,执行所述根据多组所述点云数据包构建点云数据集合的步骤。
优选地,所述判断所述水平方位角总数是否等于预设数量阈值的步骤之前,还包括:
获取所述预置激光雷达对应的水平角度分辨率;
从多组所述点云数据包中选取单组点云数据包;
获取所述单组点云数据包对应的基础水平方位角数量;
根据所述水平角度分辨率及所述基础水平方位角数量,通过预设公式计算预设数量阈值;
所述预设公式为:
式中,n1为预设数量阈值,γ为水平角度分辨率,δ为基础水平方位角数量。
优选地,所述将所述帧数据输入至雷达线程队列中的步骤,包括:获取所述帧数据对应的处理时长;
根据所述处理时长设定所述帧数据的输入时长;
根据所述输入时长将所述帧数据输入至雷达线程队列中。
优选地,所述根据所述输入时长将所述帧数据输入至雷达线程队列中的步骤之前,还包括:
获取雷达线程队列中的初始帧数量;
根据所述初始帧数量判断所述雷达线程队列是否为空队列;
在所述雷达线程队列为空队列时,执行根据所述输入时长将所述帧数据输入至雷达线程队列中的步骤。
此外,为实现上述目的,本发明还提出一种多激光雷达数据输出装置,所述多激光雷达数据输出装置包括:
采集模块,用于获取预置激光雷达采集的多个点云数据;
处理模块,用于对多个所述点云数据进行处理,获得帧数据,并将所述帧数据输入至雷达线程队列中;
判断模块,用于判断所述雷达线程队列中的帧数据是否符合预设数据同步条件;
输出模块,用于在所述雷达线程队列中的帧数据符合所述预设数据同步条件时,将所述雷达线程队列中的帧数据进行输出。
此外,为实现上述目的,本发明还提出一种多激光雷达数据输出设备,所述多激光雷达数据输出设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的多激光雷达数据输出程序,所述多激光雷达数据输出程序被所述处理器执行时实现如上文所述的多激光雷达数据输出方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有多激光雷达数据输出程序,所述多激光雷达数据输出程序被处理器执行时实现如上文所述的多激光雷达数据输出方法的步骤。
本发明中,首先获取预置激光雷达采集的多个点云数据,然后对多个点云数据进行处理,获得帧数据,并将帧数据输入至雷达线程队列中,之后判断雷达线程队列中的帧数据是否符合预设数据同步条件,在雷达线程队列中的帧数据符合预设数据同步条件时,将雷达线程队列中的帧数据进行输出。相较于现有技术需要GPS模块或线程锁才能够完成多激光雷达数据同步输出,但会导致雷达数据输出不稳定,且数据输出效率低下,而本发明中是根据点云数据获得帧数据,之后将帧数据输入至雷达线程队列中,在符合预设数据同步条件时直接将帧数据进行输出,从而保证了激光雷达数据同步稳定输出,提高了激光雷达数据的输出效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的多激光雷达数据输出设备的结构示意图;
图2为本发明多激光雷达数据输出方法第一实施例的流程示意图;
图3为本发明多激光雷达数据输出方法第二实施例的流程示意图;
图4为本发明多激光雷达数据输出装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的多激光雷达数据输出设备结构示意图。
如图1所示,该多激光雷达数据输出设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的存储器(Non-volatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对多激光雷达数据输出设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,认定为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及多激光雷达数据输出程序。
在图1所示的多激光雷达数据输出设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接用户设备;所述多激光雷达数据输出设备通过处理器1001调用存储器1005中存储的多激光雷达数据输出程序,并执行本发明实施例提供的多激光雷达数据输出方法。
基于上述硬件结构,提出本发明多激光雷达数据输出方法的实施例。
参照图2,图2为本发明多激光雷达数据输出方法第一实施例的流程示意图,提出本发明多激光雷达数据输出方法第一实施例。
在第一实施例中,所述多激光雷达数据输出方法包括以下步骤:
步骤S10:获取预置激光雷达采集的多个点云数据。
需要说明的是,本实施例的执行主体可以是多激光雷达数据输出设备也可以是激光雷达系统,其中,该设备是具有数据处理,数据通信及程序运行等功能的多激光雷达数据输出设备,也可为其他设备,本实施例对此不做限制。
其中,激光雷达系统包括三个激光雷达,三个激光雷达分别为速腾16线、速腾32线及速腾16线。激光扫描一周环境,在速腾32线和速腾16线的电机转速频率均设置为10Hz时,速腾32线激光返回的点云数量约是速腾16线激光返点云数量的两倍。也就是说速腾32线采集数据或处理数据时较速腾16线采集数据或数据处理的时间较长。
预置激光雷达为预设位置的激光雷达,预设位置的激光雷达可以为1个,也可以为2个,还可以为3个等,本实施例并不加以限制。
也就是说,假设存在三个激光雷达,利用三个激光雷达分别采集对应的多个点云数据。
获取预置激光雷达采集的多个点云数据的步骤之前,获取车辆电机转速频率,并判断车辆电机转速频率是否等于预设频率阈值,在车辆电机转速频率等于预设频率阈值时,执行获取预置激光雷达采集的多个点云数据的步骤。
车辆电机转速频率的设定可以运行激光雷达对应的电机转速频率,以使激光雷达采集稳定的多个点云数据,电机转速频率可以为10HZ,也可以为20HZ等,本实施例并不加以限制。
步骤S20:对多个所述点云数据进行处理,获得帧数据,并将所述帧数据输入至雷达线程队列中。
对多个点云数据进行处理,获得帧数据的步骤为,通过创建三个线程将多个点云数据进行分类,以获取多组点云数据包,根据多组点云数据包构建点云数据集合,根据点云数据集合确定对应的帧数据。
也就是说,多个点云数据是通过不同水平方位获取的,将同方位获取的点云数据进行组合,以获取多组点云数据包,之后将多组点云数据包构建云数据集合,最后将云数据集合中的多组点云数据包进行拼合处理,以获取对应的帧数据。
其中,假设存在三个激光雷达,会通过三个激光雷达分别获取各激光雷达对应的点云数据,之后会将点云数据进行分类,以获取各激光雷达对应的多组点云数据包,并根据多组点云数据包构建各激光雷达对应的云数据集合,将云数据集合中的多组点云数据包进行拼合处理,以获取各激光雷达对应的帧数据,也就是三个帧数据等,本实施例并不加以限制。
根据多组点云数据包构建点云数据集合的步骤,获取多组点云数据包对应的水平方位角总数,判断水平方位角总数是否等于预设数量阈值,在水平方位角总数等于预设数量阈值时,执行根据多组点云数据包构建点云数据集合的步骤。
水平方位角总数为通过激光雷达采集点云数据时的水平方位角数量。
判断水平方位角总数是否等于预设数量阈值的步骤之前,获取预置激光雷达对应的水平角度分辨率,从多组点云数据包中选取单组点云数据包,获取单组点云数据包对应的基础水平方位角数量,根据水平角度分辨率及基础水平方位角数量,通过预设公式计算预设数量阈值;
所述预设公式为:
式中,n1为预设数量阈值,γ为水平角度分辨率,δ为基础水平方位角数量。
基础水平方位角数量可以为用户数据报协议(User Datagram Protocol UDP)接收每包数据中水平方位角个数,其中速腾16线中每包数据中水平方位角个数可以为24个,速腾32线中每包数据中水平方位角个数可以为12个。
水平角度分辨率可以为激光雷达水平角度分辨率,也就是说,速腾16线激光雷达水平角度分辨率为0.18°,速腾32线激光雷达水平角度分辨率为0.2°等,本实施例并不加以限制。
多激光雷达系统同步返回一帧数据的步骤流程可以为,主线程初始化,创建三个线程L1、L2、L3,L1线程用于接收和处理激光雷达1数据,L2线程用于接收和处理激光雷达2数据,L3线程用于接收和处理激光雷达3数据。同时创建三个全局变量的队列Q1、Q2和Q3,Q1用来储存激光雷达1处理后一帧数据,Q2用来储存激光雷达2处理后一帧数据,Q3用来储存激光雷达3处理后一帧数据。
其中,构建线程的方法为:建立socket1与激光雷达1进行通讯连接,同时初始化一个接收包数的标志位rotflag_1=0,本方案中根据接收包数判断激光雷达返回数据是否满帧(定义360°扫描数据为一帧),然后构造一个while(true)无限循坏,循坏内部利用recvfrom()函数读取激光雷达返回数据,每次成功读取一包数据后,先对标志位rotflag_1的值进行判断,当其等于设定的阈值n1时,即认为一帧数据已收集完毕,并将当前Data1添加到队列Q1的尾部,如果不等于设定阈值,标志位rotflag_1=rotflag_1+1,然后解析该包中Datablock数据,解析完成后储存到Data1中。
构造线程L2,线程L2用于接收和处理激光雷达2的返回数据。L2的线程架构和线程L1基本相同,不同点在于标志位rotflag_2阈值n2的大小,n2值的确定方法与n1相同。
构造线程L3,线程L3用于接收和处理激光雷达3的返回数据。由于激光3和激光1型号相同,所以L3的线程架构和线程L1相同。
将帧数据输入至雷达线程队列中的步骤,获取帧数据对应的处理时长,根据处理时长设定帧数据的输入时长,获取雷达线程队列中的初始帧数量,根据初始帧数量判断雷达线程队列是否为空队列,在雷达线程队列为空队列时,根据输入时长将帧数据输入至雷达线程队列中。
也就是说,首先建立一个while(true)无限循环,循环内部,先判断三个队列是否同时为空,如果为空,进行下一次扫描判断,如果判断不为空,利用队列属性读取队列Q1、Q2和Q3的队首元素并将其输出,输出后再将其队首元素进行删除,依次往复循环。
同时考虑到主线程循环读取队列的速率比线程L1、L2和L3写入队列的速率快,这就会出现队列为空的现象,且还可能出现同一个变量的读同步,从而导致数据程序出错。为解决这一问题,在主线程循环内部加一个延时函数sleep即输入时长。
步骤S30:判断所述雷达线程队列中的帧数据是否符合预设数据同步条件。
预设数据同步条件可以是指雷达线程队列中的帧数据是否排列一致,也就是说,队列Q1、Q2及Q3中可以同时写入帧数据。
步骤S40:在所述雷达线程队列中的帧数据符合所述预设数据同步条件时,将所述雷达线程队列中的帧数据进行输出。
可以理解为,假设雷达线程队列中的帧数据通过输入时长同时写入对应的队列Q1、Q2及Q3中,并判断当前写入的帧数据是否分别处于对应的队列中队首的位置,之后在各个队列中的帧数据都满足以上条件时,通过主线程将雷达线程队列中的帧数据进行数据同步输出等。
本实施例中,首先获取预置激光雷达采集的多个点云数据,然后对多个点云数据进行处理,获得帧数据,并将帧数据输入至雷达线程队列中,之后判断雷达线程队列中的帧数据是否符合预设数据同步条件,在雷达线程队列中的帧数据符合预设数据同步条件时,将雷达线程队列中的帧数据进行输出。相较于现有技术需要GPS模块或线程锁才能够完成多激光雷达数据同步输出,但会导致雷达数据输出不稳定,且数据输出效率低下,而本发明中是根据点云数据获得帧数据,之后将帧数据输入至雷达线程队列中,在符合预设数据同步条件时直接将帧数据进行输出,实现了多激光雷达系统连续输出同步帧数据。
此外,参照图3,图3为基于上述多激光雷达数据输出方法第一实施例,提出本发明多激光雷达数据输出方法第二实施例。
在第二实施例中,多激光雷达数据输出方法中所述步骤S20,包括:
步骤S201:将多个所述点云数据进行分类,以获取多组点云数据包。
也就是说,多个点云数据是通过不同水平方位获取的,将同方位获取的点云数据进行组合,以获取多组点云数据包。其中组合后的点云数据包可以为6组,也可以为12组等,本实施例并不加以限制。
步骤S202:根据多组所述点云数据包构建点云数据集合。
可以理解的是,将多组点云数据包存放在一起,以构建点云数据集合,假设三个激光雷达,则三个激光雷达分别获取对应的多组点云数据包,之后根据多组点云数据包构建三个激光雷达对应的点云数据集合等,本实施例并不加以限制。
根据多组点云数据包构建点云数据集合的步骤,获取多组点云数据包对应的水平方位角总数,判断水平方位角总数是否等于预设数量阈值,在水平方位角总数等于预设数量阈值时,执行根据多组点云数据包构建点云数据集合的步骤。
水平方位角总数为通过激光雷达采集点云数据时的水平方位角数量。
判断水平方位角总数是否等于预设数量阈值的步骤之前,获取预置激光雷达对应的水平角度分辨率,从多组点云数据包中选取单组点云数据包,获取单组点云数据包对应的基础水平方位角数量,根据水平角度分辨率及基础水平方位角数量,通过预设公式计算预设数量阈值;
所述预设公式为:
式中,n1为预设数量阈值,γ为水平角度分辨率,δ为基础水平方位角数量。
基础水平方位角数量可以为用户数据报协议(User Datagram Protocol UDP)接收每包数据中水平方位角个数,其中速腾16线中每包数据中水平方位角个数可以为24个,速腾32线中每包数据中水平方位角个数可以为12个。
水平角度分辨率可以为激光雷达水平角度分辨率,也就是说,速腾16线激光雷达水平角度分辨率为0.18°,速腾32线激光雷达水平角度分辨率为0.2°等,本实施例并不加以限制。
假设速腾16线激光雷达水平角度分辨率为0.18°,udp接收每包数据中水平方位角个数为24,即预设数量阈值的值为84,速腾32线激光雷达水平角度分辨率为0.2°,udp接收每包数据中水平方位角个数为12,即预设数量阈值的值为151等,本实施例并不加以限制。
步骤S203:根据所述点云数据集合确定对应的帧数据,并将所述帧数据输入至雷达线程队列中。
将云数据集合中的多组点云数据包进行拼合处理,以获取各激光雷达对应的帧数据。
将帧数据输入至雷达线程队列中的步骤,获取帧数据对应的处理时长,根据处理时长设定帧数据的输入时长,获取雷达线程队列中的初始帧数量,根据初始帧数量判断雷达线程队列是否为空队列,在雷达线程队列为空队列时,根据输入时长将帧数据输入至雷达线程队列中。
假设激光雷达2采集的数据多,且对应的线程L2每次写入队列Q2的时间比线程L1或L3写入队列Q1或Q3的时间长,为了实现多激光雷达系统同步连续输出同步帧数据,可以设置输入时长,其中输入时长要大于线程L2写入队列Q2的时长,设置输入时长的方法,可以为记录队列Q1和Q3输入的时刻,之后等待Q2的输入时刻,之后计算Q1或Q3与Q2之间的时间间隔,对这个时间间隔进行增大调整,将调整后的时间间隔作为输入时长,输入时长需要合理设置,可以为60毫秒,也可以为70毫秒等,本实施例并不加以限制。
在本实施例中,首先将多个点云数据进行分类,以获取多组点云数据包,然后根据多组点云数据包构建点云数据集合,并根据点云数据集合确定对应的帧数据,之后将帧数据输入至雷达线程队列中,现有技术中,直接将采集的点云数据输入线程队列中,无法判断点云数据是否采集完整,而本实施例中是将点云数据进行分类,以确定多组点云数据包,之后根据多组点云数据包构建点云数据集合,以确定对应的帧数据,将最后得到的帧数据输入至雷达线程队列中,从而避免了激光雷达返回数据丢包的风险。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有多激光雷达数据输出程序,所述多激光雷达数据输出程序被处理器执行时实现如上文所述的多激光雷达数据输出方法的步骤。
此外,参照图4,本发明实施例还提出一种多激光雷达数据输出装置,所述多激光雷达数据输出装置包括:
采集模块4001,用于获取预置激光雷达采集的多个点云数据;
需要说明的是,本实施例的执行主体可以是多激光雷达数据输出设备也可以是激光雷达系统,其中,该设备是具有数据处理,数据通信及程序运行等功能的多激光雷达数据输出设备,也可为其他设备,本实施例对此不做限制。
其中,激光雷达系统包括三个激光雷达,三个激光雷达分别为速腾16线、速腾32线及速腾16线。激光扫描一周环境,在速腾32线和速腾16线的电机转速频率均设置为10Hz时,速腾32线激光返回的点云数量约是速腾16线激光返点云数量的两倍。也就是说速腾32线采集数据或处理数据时较速腾16线采集数据或数据处理的时间较长。
预置激光雷达为预设位置的激光雷达,预设位置的激光雷达可以为1个,也可以为2个,还可以为3个等,本实施例并不加以限制。
也就是说,假设存在三个激光雷达,利用三个激光雷达分别采集对应的多个点云数据。
获取预置激光雷达采集的多个点云数据的步骤之前,获取车辆电机转速频率,并判断车辆电机转速频率是否等于预设频率阈值,在车辆电机转速频率等于预设频率阈值时,执行获取预置激光雷达采集的多个点云数据的步骤。
车辆电机转速频率的设定可以运行激光雷达对应的电机转速频率,以使激光雷达采集稳定的多个点云数据,电机转速频率可以为10HZ,也可以为20HZ等,本实施例并不加以限制。
处理模块4002,用于对多个所述点云数据进行处理,获得帧数据,并将所述帧数据输入至雷达线程队列中;
对多个点云数据进行处理,获得帧数据的步骤为,通过创建三个线程将多个点云数据进行分类,以获取多组点云数据包,根据多组点云数据包构建点云数据集合,根据点云数据集合确定对应的帧数据。
也就是说,多个点云数据是通过不同水平方位获取的,将同方位获取的点云数据进行组合,以获取多组点云数据包,之后将多组点云数据包构建云数据集合,最后将云数据集合中的多组点云数据包进行拼合处理,以获取对应的帧数据。
其中,假设存在三个激光雷达,会通过三个激光雷达分别获取各激光雷达对应的点云数据,之后会将点云数据进行分类,以获取各激光雷达对应的多组点云数据包,并根据多组点云数据包构建各激光雷达对应的云数据集合,将云数据集合中的多组点云数据包进行拼合处理,以获取各激光雷达对应的帧数据,也就是三个帧数据等,本实施例并不加以限制。
根据多组点云数据包构建点云数据集合的步骤,获取多组点云数据包对应的水平方位角总数,判断水平方位角总数是否等于预设数量阈值,在水平方位角总数等于预设数量阈值时,执行根据多组点云数据包构建点云数据集合的步骤。
水平方位角总数为通过激光雷达采集点云数据时的水平方位角数量。
判断水平方位角总数是否等于预设数量阈值的步骤之前,获取预置激光雷达对应的水平角度分辨率,从多组点云数据包中选取单组点云数据包,获取单组点云数据包对应的基础水平方位角数量,根据水平角度分辨率及基础水平方位角数量,通过预设公式计算预设数量阈值;
所述预设公式为:
式中,n1为预设数量阈值,γ为水平角度分辨率,δ为基础水平方位角数量。
基础水平方位角数量可以为用户数据报协议(User Datagram Protocol UDP)接收每包数据中水平方位角个数,其中速腾16线中每包数据中水平方位角个数可以为24个,速腾32线中每包数据中水平方位角个数可以为12个。
水平角度分辨率可以为激光雷达水平角度分辨率,也就是说,速腾16线激光雷达水平角度分辨率为0.18°,速腾32线激光雷达水平角度分辨率为0.2°等,本实施例并不加以限制。
多激光雷达系统同步返回一帧数据的步骤流程可以为,主线程初始化,创建三个线程L1、L2、L3,L1线程用于接收和处理激光雷达1数据,L2线程用于接收和处理激光雷达2数据,L3线程用于接收和处理激光雷达3数据。同时创建三个全局变量的队列Q1、Q2和Q3,Q1用来储存激光雷达1处理后一帧数据,Q2用来储存激光雷达2处理后一帧数据,Q3用来储存激光雷达3处理后一帧数据。
其中,构建线程的方法为:建立socket1与激光雷达1进行通讯连接,同时初始化一个接收包数的标志位rotflag_1=0,本方案中根据接收包数判断激光雷达返回数据是否满帧(定义360°扫描数据为一帧),然后构造一个while(true)无限循坏,循坏内部利用recvfrom()函数读取激光雷达返回数据,每次成功读取一包数据后,先对标志位rotflag_1的值进行判断,当其等于设定的阈值n1时,即认为一帧数据已收集完毕,并将当前Data1添加到队列Q1的尾部,如果不等于设定阈值,标志位rotflag_1=rotflag_1+1,然后解析该包中Datablock数据,解析完成后储存到Data1中。
构造线程L2,线程L2用于接收和处理激光雷达2的返回数据。L2的线程架构和线程L1基本相同,不同点在于标志位rotflag_2阈值n2的大小,n2值的确定方法与n1相同。
构造线程L3,线程L3用于接收和处理激光雷达3的返回数据。由于激光3和激光1型号相同,所以L3的线程架构和线程L1相同。
将帧数据输入至雷达线程队列中的步骤,获取帧数据对应的处理时长,根据处理时长设定帧数据的输入时长,获取雷达线程队列中的初始帧数量,根据初始帧数量判断雷达线程队列是否为空队列,在雷达线程队列为空队列时,根据输入时长将帧数据输入至雷达线程队列中。
也就是说,首先建立一个while(true)无限循环,循环内部,先判断三个队列是否同时为空,如果为空,进行下一次扫描判断,如果判断不为空,利用队列属性读取队列Q1、Q2和Q3的队首元素并将其输出,输出后再将其队首元素进行删除,依次往复循环。
同时考虑到主线程循环读取队列的速率比线程L1、L2和L3写入队列的速率快,这就会出现队列为空的现象,且还可能出现同一个变量的读同步,从而导致数据程序出错。为解决这一问题,在主线程循环内部加一个延时函数sleep即输入时长。
判断模块4003,用于判断所述雷达线程队列中的帧数据是否符合预设数据同步条件;
预设数据同步条件可以是指雷达线程队列中的帧数据是否排列一致,也就是说,队列Q1、Q2及Q3中可以同时写入帧数据。
输出模块4004,用于在所述雷达线程队列中的帧数据符合所述预设数据同步条件时,将所述雷达线程队列中的帧数据进行输出。
可以理解为,假设雷达线程队列中的帧数据通过输入时长同时写入对应的队列Q1、Q2及Q3中,并判断当前写入的帧数据是否分别处于对应的队列中队首的位置,之后在各个队列中的帧数据都满足以上条件时,通过主线程将雷达线程队列中的帧数据进行数据同步输出等。
本实施例中,首先获取预置激光雷达采集的多个点云数据,然后对多个点云数据进行处理,获得帧数据,并将帧数据输入至雷达线程队列中,之后判断雷达线程队列中的帧数据是否符合预设数据同步条件,在雷达线程队列中的帧数据符合预设数据同步条件时,将雷达线程队列中的帧数据进行输出。相较于现有技术需要GPS模块或线程锁才能够完成多激光雷达数据同步输出,但会导致雷达数据输出不稳定,且数据输出效率低下,而本发明中是根据点云数据获得帧数据,之后将帧数据输入至雷达线程队列中,在符合预设数据同步条件时直接将帧数据进行输出,实现了多激光雷达系统连续输出同步帧数据。
本发明多激光雷达数据输出装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为名称。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种多激光雷达数据输出方法,其特征在于,所述多激光雷达数据输出方法包括以下步骤:
获取预置激光雷达采集的多个点云数据;
对多个所述点云数据进行处理,获得帧数据,并将所述帧数据输入至雷达线程队列中;
判断所述雷达线程队列中的帧数据是否符合预设数据同步条件;
在所述雷达线程队列中的帧数据符合所述预设数据同步条件时,将所述雷达线程队列中的帧数据进行输出。
2.如权利要求1所述的方法,其特征在于,所述获取预置激光雷达采集的多个点云数据的步骤之前,还包括:
获取车辆电机转速频率,并判断所述车辆电机转速频率是否等于预设频率阈值;
在所述车辆电机转速频率等于所述预设频率阈值时,执行所述获取预置激光雷达采集的多个点云数据的步骤。
3.如权利要求1所述的方法,其特征在于,所述对多个所述点云数据进行处理,获得帧数据的步骤,包括:
将多个所述点云数据进行分类,以获取多组点云数据包;
根据多组所述点云数据包构建点云数据集合;
根据所述点云数据集合确定对应的帧数据。
4.如权利要求3所述的方法,其特征在于,所述根据多组所述点云数据包构建点云数据集合的步骤之前,还包括:
获取多组所述点云数据包对应的水平方位角总数;
判断所述水平方位角总数是否等于预设数量阈值;
在所述水平方位角总数等于所述预设数量阈值时,执行所述根据多组所述点云数据包构建点云数据集合的步骤。
6.如权利要求1-5任一项所述的方法,其特征在于,所述将所述帧数据输入至雷达线程队列中的步骤,包括:
获取所述帧数据对应的处理时长;
根据所述处理时长设定所述帧数据的输入时长;
根据所述输入时长将所述帧数据输入至雷达线程队列中。
7.如权利要求6所述的方法,其特征在于,所述根据所述输入时长将所述帧数据输入至雷达线程队列中的步骤之前,还包括:
获取雷达线程队列中的初始帧数量;
根据所述初始帧数量判断所述雷达线程队列是否为空队列;
在所述雷达线程队列为空队列时,执行根据所述输入时长将所述帧数据输入至雷达线程队列中的步骤。
8.一种多激光雷达数据输出装置,其特征在于,所述多激光雷达数据输出装置包括:
采集模块,用于获取预置激光雷达采集的多个点云数据;
处理模块,用于对多个所述点云数据进行处理,获得帧数据,并将所述帧数据输入至雷达线程队列中;
判断模块,用于判断所述雷达线程队列中的帧数据是否符合预设数据同步条件;
输出模块,用于在所述雷达线程队列中的帧数据符合所述预设数据同步条件时,将所述雷达线程队列中的帧数据进行输出。
9.一种多激光雷达数据输出设备,其特征在于,所述多激光雷达数据输出设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的多激光雷达数据输出程序,所述多激光雷达数据输出程序被所述处理器执行时实现如权利要求1至7中任一项所述的多激光雷达数据输出方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有多激光雷达数据输出程序,所述多激光雷达数据输出程序被处理器执行时实现如权利要求1至7中任一项所述的多激光雷达数据输出方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010902750.3A CN112035281A (zh) | 2020-08-31 | 2020-08-31 | 多激光雷达数据输出方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010902750.3A CN112035281A (zh) | 2020-08-31 | 2020-08-31 | 多激光雷达数据输出方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112035281A true CN112035281A (zh) | 2020-12-04 |
Family
ID=73586907
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010902750.3A Pending CN112035281A (zh) | 2020-08-31 | 2020-08-31 | 多激光雷达数据输出方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112035281A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086065A (zh) * | 2022-07-12 | 2022-09-20 | 北斗星通智联科技有限责任公司 | 一种基于区块链的数据同步方法、装置、电子设备及介质 |
-
2020
- 2020-08-31 CN CN202010902750.3A patent/CN112035281A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115086065A (zh) * | 2022-07-12 | 2022-09-20 | 北斗星通智联科技有限责任公司 | 一种基于区块链的数据同步方法、装置、电子设备及介质 |
CN115086065B (zh) * | 2022-07-12 | 2024-01-19 | 北斗星通智联科技有限责任公司 | 一种基于区块链的数据同步方法、装置、电子设备及介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107677279B (zh) | 一种定位建图的方法及系统 | |
CN111680747B (zh) | 用于占据栅格子图的闭环检测的方法和装置 | |
CN110471409B (zh) | 机器人巡检方法、装置、计算机可读存储介质及机器人 | |
CN113479192B (zh) | 车辆泊出方法、车辆泊入方法、装置、设备以及存储介质 | |
US10754030B2 (en) | Methods and systems for radar simulation and object classification | |
CN111222387A (zh) | 对象检测的系统和方法 | |
CN114593737A (zh) | 控制方法、装置、机器人及存储介质 | |
CN111767947A (zh) | 目标检测模型、应用方法及相关装置 | |
CN112035281A (zh) | 多激光雷达数据输出方法、装置、设备及存储介质 | |
CN111462235A (zh) | 基于yolo v3算法的倾斜目标检测方法、装置及存储介质 | |
US8847948B2 (en) | 3D model comparison | |
CN113459088B (zh) | 地图调整方法、电子设备及存储介质 | |
CN113176839A (zh) | 基于地理位置的车辆互动方法、装置、计算机设备和介质 | |
CN113034582A (zh) | 位姿优化装置及方法、电子设备及计算机可读存储介质 | |
CN110887490B (zh) | 一种激光定位导航的关键帧选取方法、介质、终端和装置 | |
EP4180836A1 (en) | System and method for ultrasonic sensor enhancement using lidar point cloud | |
CN112734827A (zh) | 一种目标检测方法、装置、电子设备和存储介质 | |
CN113283821B (zh) | 虚拟场景处理方法、装置、电子设备及计算机存储介质 | |
US10268930B2 (en) | Image processing system and method for identifying content within image data using markov random fields | |
CN115406452A (zh) | 一种实时定位及建图方法、装置及终端设备 | |
CN114661028A (zh) | 智能驾驶控制器测试方法、装置、计算机设备和存储介质 | |
CN110120075B (zh) | 用于处理信息的方法和装置 | |
CN114964204A (zh) | 地图构建方法、地图使用方法、装置、设备和存储介质 | |
CN113450438A (zh) | 基于动作捕捉的虚拟人物驱动方法、装置及计算机设备 | |
CN111739102A (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 |