一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于GPU加速的无人驾驶多激光雷达协同仿真方法

2022-05-21 09:02:34 来源:中国专利 TAG:

一种基于gpu加速的无人驾驶多激光雷达协同仿真方法
技术领域
1.本发明涉及无人驾驶领域,具体涉及一种基于gpu加速的无人驾驶多激光雷达协同仿真方法。


背景技术:

2.由于激光雷达在无人驾驶中被广泛使用并用来生成点云,其仿真也受到更多关注和挑战。多线激光雷达需要高频发射大量激光束,因此仿真需要实时且高性能的计算,特别是在真实的仿真需求中往往需要对单车配备多个激光雷达进行协仿真,对计算资源的要求进一步增大。
3.但是当前无人驾驶仿真软件对激光雷达的仿真效率低下,例如carla等知名仿真平台对激光雷达采用基于cpu的方法计算激光和物体交点来生成点云,其效率低下远不能满足的仿真需求,而像lgsiliconvalleylab开发的仿真平台svlsimulator即使采用了gpu加速的方法但是却也难以在资源受限的情况下对多个激光雷达进行高效率的协同仿真。


技术实现要素:

4.本发明是为了解决上述问题而进行的,目的在于提供一种基于gpu加速的无人驾驶多激光雷达协同仿真方法。
5.本发明提供了一种基于gpu加速的无人驾驶多激光雷达协同仿真方法,具有这样的特征,包括以下步骤:步骤1,获取车辆初始位置的激光雷达的深度信息,并转化为对应激光雷达的点云输出,得到初始位置激光雷达的深度信息和点云;步骤2,基于车辆的最新位置,使用gpu生成环绕车辆的深度图;步骤3,基于深度图构造优化损失函数和优化问题;步骤4,简化优化损失函数;步骤5,求出优化问题的最优解;步骤6,根据最优解判断优化损失函数是否达到优化阈值;步骤7,将激光雷达的深度信息转化为对应的点云。
6.在本发明提供的基于gpu加速的无人驾驶多激光雷达协同仿真方法中,还可以具有这样的特征:其中,步骤1中,在仿真过程的第一帧,使用cpu的方法,通过物理引擎射线求交模拟各个激光雷达的每束激光束,获取车辆初始位置时激光束所感应的相对激光雷达的深度信息,并转化为对应激光雷达的点云输出,并记录每一束激光束的方位和角度。
7.在本发明提供的基于gpu加速的无人驾驶多激光雷达协同仿真方法中,还可以具有这样的特征:其中,步骤2中,在仿真过程的最新一帧,根据车辆的最新位置,使用gpu以车辆中心为视点生成一组环绕车辆的高分辨率的深度图。
8.在本发明提供的基于gpu加速的无人驾驶多激光雷达协同仿真方法中,还可以具有这样的特征:其中,步骤3中,基于激光束上一帧对应的深度,以两帧激光雷达的深度差异为优化变量,并联合最新一帧的深度图的深度信息构造优化损失函数,构造成一个带约束的优化问题,具体包括以下步骤:步骤3-1,分析优化问题的假设与合理性;步骤3-2,设置优化问题的优化变量;步骤3-3,优化目标损失函数。
9.在本发明提供的基于gpu加速的无人驾驶多激光雷达协同仿真方法中,还可以具
有这样的特征:其中,步骤4中,使用局部线性插值方法对深度图进行插值简化优化损失函数。具体包括以下步骤:步骤4-1,优化变量可行域;步骤4-2,采用一次插值方法简化优化损失函数。
10.在本发明提供的基于gpu加速的无人驾驶多激光雷达协同仿真方法中,还可以具有这样的特征:其中,步骤5中,对优化损失函数的高阶项进行一阶泰勒展开,把损失函数进一步简化,从而求出优化问题的最优解的解析形式。
11.在本发明提供的基于gpu加速的无人驾驶多激光雷达协同仿真方法中,还可以具有这样的特征:其中,步骤6中,检测优化损失函数是否达到优化阈值来判断优化是否成功,若成功则最新一帧的深度就是上一帧深度与损失函数取最小值时对应优化变量取值之和,否则采用cpu的方法,使用物理引擎射线求交求得最新一帧的深度。
12.发明的作用与效果
13.根据本发明所涉及的一种基于gpu加速的无人驾驶多激光雷达协同仿真方法,因为具体步骤为:步骤1,获取车辆初始位置的激光雷达的深度信息,并转化为对应激光雷达的点云输出,得到初始位置激光雷达的深度信息和点云;步骤2,基于车辆的最新位置,使用gpu生成环绕车辆的深度图;步骤3,基于深度图构造优化损失函数和优化问题;步骤4,简化优化损失函数;步骤5,求出优化问题的最优解;步骤6,根据最优解判断优化损失函数是否达到优化阈值;步骤7,将激光雷达的深度信息转化为对应的点云。
14.因此,本发明提出的基于gpu加速的多激光雷达协同仿真方法,其依据单车配备多激光雷达场景下激光雷达的距离较近和视差较小的特性,并充分利用仿真前一帧的点云信息,采用gpu和数值优化迭代求解的方法对多激光雷达进行高效率的仿真。
15.本发明提出的基于gpu加速的多激光雷达协同仿真方法,高效利用gpu和cpu计算资源,特别针对单车配备多个激光雷达场景的仿真任务,能够对多激光雷达进行高效率的协同仿真,在保证高效率仿真的同时,能够生成高质量的点云,保证点云不会失真。
附图说明
16.图1是本发明的实施例中基于gpu加速的多激光雷达协同仿真方法的流程图;
17.图2是本发明的实施例中深度图生成示意图;
18.图3是本发明的实施例中优化损失函数示意图;
19.图4是本发明的实施例中一次插值方法示意图;
20.图5是本发明的实施例中十字路口点云图像;
21.图6是本发明的实施例中隧道场景点云图像。
具体实施方式
22.为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,以下实施例结合附图对本发明一种基于gpu加速的多激光雷达协同仿真方法作具体阐述。
23.在本实施例中,提供了一种基于gpu加速的多激光雷达协同仿真方法。
24.首先对本实施例中所采用的坐标系进行说明:本实施例采用左手坐标系进行符号表示,x轴代表前后方向且正方向为向前,y轴代表左右方向且正方向为向右,z轴代表上下方向且正方向为向下。并使用欧拉角(pitch,yaw,roll)表示向量的方向。其中俯仰角pitch
表示竖直方向的夹角,即绕y轴旋转,正方向为向上偏;偏航角yaw表示水平方向的夹角,即绕x轴旋转,正方向为向左偏;翻滚角roll表示绕z轴旋转,正方向为顺时针旋转。
25.除此之外,为了方便说明,假设一辆车配备了三个放置于在不同位置和不同角度的激光雷达,将以车辆中心为原点的坐标系记作σ
car
,并只考虑将激光雷达记作lidar1,lidar2,lidar3。并只考虑其中一个激光雷达并记作lidar
*
,由于激光雷达和车辆中心有位移和角度的偏移,所以σ
lidar*
和σ
car
是不同的。
26.图1是本发明的实施例中基于gpu加速的多激光雷达协同仿真方法的流程图。
27.如图1所示,本实施例所涉及的基于gpu加速的多激光雷达协同仿真方法包括以下步骤:
28.步骤s1,获取车辆初始位置的激光雷达的深度信息,并转化为对应激光雷达的点云输出,得到初始位置激光雷达的深度信息和点云。
29.其中,在仿真过程的第一帧,使用cpu的方法,通过物理引擎射线求交模拟各个激光雷达的每束激光束,获取车辆初始位置时激光束所感应的相对激光雷达的深度信息,并转化为对应激光雷达的点云输出,并记录每一束激光束的方位和角度。
30.根据激光雷达的转速、线数(channel)等参数计算出每一束激光束的方位和角度,并使用物理引擎的射线求交方法,对于激光雷达lidar
*
来说,以σ
lidar*
坐标系的原点为起点,以激光束laser的方向发出射线并得到交点和该交点距离σ
lidar*
原点的距离信息。
31.步骤s2,基于车辆的最新位置,使用gpu生成环绕车辆的深度图。
32.在仿真过程的最新一帧,根据车辆的最新位置,使用gpu以车辆中心为视点生成一组环绕车辆的高分辨率的深度图。
33.图2是本实施例中深度图生成示意图。
34.本实施例中在车辆围绕生成三张深度图,以σ
car
为参考系,以车辆为视点,分别绕x轴方向以角0,2π/3,4π/3进行旋转变换,生成水平视角fov为2π/3的深度图,生成深度图的示意图如2所示,图中蓝色的平面代表深度图,绿色的为无人车,车顶部紫色的圆柱代表激光雷达。下文记这三个深度图分别为map1,map2,map3。
35.步骤s3,基于深度图构造优化损失函数和优化问题。
36.基于激光束上一帧对应的深度,以两帧激光雷达的深度差异为优化变量,并联合最新一帧的深度图的深度信息构造优化损失函数,构造成一个带约束的优化问题。优化问题的表示与求解均以σ
car
为参考系。设激光雷达lidar
*
的相对位置为(x0,y0,z0),并考虑单位方向向量为(e
x
,ey,ez)的激光laser。
37.具体包括以下步骤:
38.步骤s3-1,分析优化问题的假设与合理性。
39.本实施例提出的优化问题基于激光束laser的深度在相邻两帧深度变化不大的基本假设。这是由于两帧之间间隔的时间较短,且点云图像在两帧之间通常十分相似。但是,在某些情况下,部分激光的深度在两帧会出现突变。例如激光掠过物体边缘的场景,前一帧激光仍然探测到的是物体表面所在的深度,后一帧激光离开物体探测深度发生突变。对于该种情况,该假设是不成立的,数值优化算法也不能求出正确的解。幸运的是,这种深度发生突变的激光束占比非常少,在步骤s6通过分析损失函数阈值来辨别是否深度发生突变,如果发生突变则采用基于cpu的方法直接求交点。
40.综上,基于该假设进行数值优化是合理的。基于该假设,本算法使用上一帧的点云深度信息和最新一帧的深度图,结合数值优化方法,充分利用历史信息和最新的深度信息完成深度求解。
41.步骤s3-2,设置优化问题的优化变量。
42.令f表示最新帧,则f-1表示上一帧。该优化问题是在已知laser在上一帧的深度值depth
f-1
的条件下,优化求解最新一帧depthf的值。基于depthf和depth
f-1
相差不会太大的假设,可以设depthf∈[depth
f-1-δd,depth
f-1
δd]。其中δd是一个相对于dep
f-1
较小的值,可以取depth
f-1
/n,其中n是常数,本实施例中取10,代表深度变化小于等于1/10。
[0043]
为此,可以定义depthf=depth
f-1
t,t∈[-depth
f-1
/n,depth
f-1
/n]。其中t为优化变量,而depth
f-1
和n可以看作已知的常数。
[0044]
步骤s3-3,优化目标损失函数。
[0045]
图3是本发明的实施例中优化损失函数示意图。
[0046]
设激光雷达lidar
*
相对于车辆中心的位移为(x0,y0,z0),laser对应的方向向量为(e
x
,ey,ez),最新帧f该laser对应的深度为depthf,这对应着在空间中的点p且坐标为(x0,y0,z0) depthf(e
x
,ey,ez)。而车辆中心o在坐标原点,因此线段op的长度为||op||2=||x0,y0,z0) depf(e
x
,ey,ez)||2。设线段op与最新一帧率深度图的交点坐标为(x
map
,y
map
),该交点在深度图对应的深度为depth
map
=depth(x
map
,y
map
),其中depth(x,y)为深度图在坐标(x,y)渲染得到的深度值。
[0047]
depth(x
map
,y
map
)和||op||2都随着depthf的值连续变化,而depthf=depth
f-1
t,因此depth(x
map
,y
map
)和||op||2都是关于t的连续函数。该损失函数的示意图如3所示,在图中深色线段表示正后方激光雷达发射的激光,其长度为变量depthf=depth
f-1
t;位于最左侧的两条线段的交点表示该激光对应的点p;浅色线段最右侧的点为车辆中心o位于坐标原点;浅色线段代表op,而浅色线段中间的点为线段op和深度图的交点q(x
map
,y
map
)。可以看到,随着t的变换点p的位置也随之变化,线段op的长度以及交点坐标q(x
map
,y
map
)也随之变化,而q(x
map
,y
map
)在深度图对应的深度也随之变化。如果蓝色的点p是激光和场景中物体的交点,则黄色线段op的长度||op||2与最新一帧深度图交点(x
map
,y
map
)对应的深度depth(x
map
,y
map
)是应该相等的。
[0048]
因此将损失函数设置为线段长度||op||2和深度图深度depth(x
map
,y
map
)的平方误差,当平方误差最小值达到0时说明两值相等:
[0049]
min(||op||
2-depth(x
map
,y
map
))2[0050]
=(||(x0,y0,z0) depthf(e
x
,ey,ez)||
2-depth(x
map
(t),y
map
(t)))2[0051]
=(||(x0,y0,z0) (depth
f-1
t)(e
x
,ey,ez)||
2-depth(x
map
(t),y
map
(t)))2[0052]
约束条件为:
[0053][0054]
损失函数中(x
map
(t),y
map
(t))表示空间中点p按照op方向投影到深度图的坐标,根据点p在空间中的参数方程:
[0067]
则就是求解出最新的深度值,但是由于depth(
·
,
·
)与真实深度存在误差等原因,损失函数的最小值可能不等于0。因此当损失函数的值小于一定阈值∈时,即认为其达到0且t是有解的。在本实施例中∈取5厘米。
[0068]
步骤s4,简化优化损失函数。
[0069]
其中,使用局部线性插值方法对深度图进行插值简化优化损失函数。具体包括以下步骤:
[0070]
步骤s4-1,优化变量可行域。
[0071]
在步骤s3-3的优化目标函数中,使用depth(x,y)表示深度图在坐标(x,y)渲染得到的深度值。而通过gpu渲染的深度图是像素级别的,为了使得depth(x,y)是连续可导,本实施例对深度进行的插值,同时为了使得优化问题容易求解,本实施例使用二维平面上的一次插值方法。
[0072]
为了进行一次插值方法,需要进一步限制变量t的可行域。这是因为t的可行域过大会使得(x
map
(t),y
map
(t))在深度图的轨迹过长,线性插值会有较大的误差。本文以(x
map
(t),y
map
(t))必须与(x
map
(0),y
map
(0))的切比雪夫距离必须小于m为约束条件,而本实施例中一般取m=1.5cm,该约束条件的公式如下:
[0073][0074]
对上式求解,可以得到t的范围:
[0075][0076][0077]
t
left
=max(min(t
x1
,t
x2
),min(t
y1
,t
y2
))
[0078]
t
right
=min(max(t
x1
,t
x2
),max(t
y1
,t
y2
))
[0079]
t∈[t
left
,t
right
]
[0080]
范围t∈[t
left
,t
right
]也符合相邻两帧的激光深度变化不大。结合步骤s3-2中t的范围t∈[-depth
f-1
/n,depth
f-1
/n],因此最终该优化问题的可行域为:
[0081][0082]
为了方便表示,在下文中统一把t的定义域表示为[t
min
,t
max
]。
[0083]
步骤s4-2,采用一次插值方法简化优化损失函数。
[0084]
记(x
min
,y
min
)=(x
map
(t
min
),y
map
(t
min
)),(x
max
,y
max
)=(x
map
(t
max
),y
map
(t
max
)),使用双线性插值的方法求得这两点的深度depth(x
min
,y
min
)和depth(x
max
,y
max
)。使用一次函数去拟合线段(x
min
,y
min
)-(x
max
,y
max
)上的深度值,也就是说使得深度值是随着(x
map
(t),y
map
(t))到(x
min
,y
min
)的距离是线性变化的。由(x
map
(t),y
map
(t))参数方程知道,其轨迹是线性的,因此该插值函数可以看作关于x
map
(t)-x
min
或者y
map
(t)-y
min
的一次函数,带入depth(x
min
,y
min
)
和depth(x
max
,y
max
)的值,得到该插值函数为:
[0085][0086]
其中,δx=|x
max-x
min
|,δy=|y
max-y
min
|。上式的含义为,当δx较大时,使用x
map
(t)作为深度插值的参数,否则使用y
map
(t)作为深度插值的参数。上述做法的原因是为了避免出现δx或者δy过小的情况,插值精度过低。重要的是,该插值方法只选择x
map
(t),y
map
(t)中的一个作为变量,形式简单。因为使用x
map
(t)和y
map
(t)的公式形式是一致的,为了便于表示,后文以δx》δy的公式表示depth(
·
,
·
)。
[0087]
图4是本实施例中一次插值方法示意图。
[0088]
该二次平面一次插值方法的示意图如4所示,其中图的坐标表示深度图的像素,图中斜线表示(x
map
(t),y
map
(t))在深度图的轨迹,中间的点表示点(x
map
(0),y
map
(0)),矩形表示的范围表示切比雪夫距离约束条件,而两侧的两个点分别表示(x
map
(t
min
),y
map
(t
min
))和(x
map
(t
max
),y
map
(t
max
)),而位于矩形中的线段表示当t∈[t
min
,t
max
]时(x
map
(t),y
map
(t))的轨迹,这也正是优化问题时所考虑的范围。可以看到,由于距离约束条件的限制,该轨迹在水平方向和竖直方向的像素数很少,且不大于2m个,因此当t∈[t
min
,t
max
],采用一次插值的方法不会有较大的误差。
[0089]
步骤s5,求出优化问题的最优解。
[0090]
其中,对优化损失函数的高阶项进行一阶泰勒展开,把损失函数进一步简化,从而求出优化问题的最优解的解析形式。
[0091]
本实施例中,首先对高阶项进行泰勒展开。
[0092]
本发明在步骤s3-3中得到的损失函数含有二次项||(x0,y0,z0) (depth
f-1
t)(e
x
,ey,ez)||2项,由于该项的存在使得损失函数难以在常数时间求出形式解,记loss1=||(x0,y0,z0) (depth
f-1
t)(e
x
,ey,ez)||2并对该项进行泰勒展开得到:
[0093][0094]
由于t值较小,可以忽略掉高阶o(t2)项,最终得到
[0095][0096]
使用该近似项代替损失函数的loss1来近似求解问题,在无人车仿真场景中该近似问题的解和原问题的解误差极小,而且在静止的场景中随着求解次数增加误差快速降低并趋近于0。
[0097]
使用泰勒展开后,得到问题的近似形式为:
[0098][0099]
其次,求取最优解的解析形式。
[0100]
对损失函数loss
similar
(t)进行展开可以得到:
[0101][0102]
为了便于表示,记:
[0103][0104]
则优化问题可以表示为:
[0105][0106]
上式的解一定位于区间端点t∈{t
min
,t
max
},或者在loss对t偏导为0处。接下来求loss
similar
对t的偏导:
[0107]
对损失函数loss
similar
(t)进行展开可以得到:
[0108][0109]
为了便于表示,记:
[0110][0111]
则优化问题可以表示为:
[0112][0113]
上式的解一定位于区间端点t∈{t
min
,t
max
},或者在loss对t偏导为0处。接下来求loss
similar
对t的偏导:
[0114][0115]
令上式为0,可以至多求出四个解,记为t1,t2,t3,t4:
[0116][0117]
若δ1《1或者δ2《0,则可能少于四个解,记其导数为0集合为t
partial
,并记候选集合
t
candidate
={t
min
,t
max
}∩t
partial

[0118]
则可以求得损失函数最小值为:
[0119][0120]
步骤s6,根据最优解判断优化损失函数是否达到优化阈值。
[0121]
检测优化损失函数是否达到优化阈值来判断优化是否成功,若成功则最新一帧的深度就是上一帧深度与损失函数取最小值时对应优化变量取值之和,否则采用cpu的方法,使用物理引擎射线求交求得最新一帧的深度。
[0122]
若loss
target
小于阈值,即loss
target
≤∈,则说明找到了解t
*
,且解的值为:
[0123][0124]
可以得到第f帧的该束激光的深度值
[0125]
若loss
target
》∈,则说明由于插值误差等原因求解失败,则采用cpu的方法,使用物理引擎射线求交求得最新一帧的深度
[0126]
步骤s7,将激光雷达的深度信息转化为对应的点云。
[0127]
图5是本发明的实施例中十字路口点云图像。
[0128]
图6是本发明的实施例中隧道场景点云图像。
[0129]
使用深度和点坐标的转换公式得到在σ
car
坐标系下的点云坐标,得到的点云效果如图5、图6所示(单个激光雷达仿真效果平面图)。
[0130]
本实施例依据单车配备多激光雷达场景下激光雷达的距离较近和视差较小的特性,并结合上一帧点云信息和最新一帧深度图信息,把求最新一帧的点云转化为优化问题求解。
[0131]
使用平面上一次插值方法对优化损失函数进行简洁的表示,并采用泰勒展开进一步近似优化问题,把问题表示成简单的关于优化变量的线性项和分式的组合的近似形式。
[0132]
使用极点和端点计算损失函数的最小值,最后可以在常数时间求出优化问题形式解。
[0133]
实施例的作用与效果
[0134]
根据本实施例所涉及的基于gpu加速的无人驾驶多激光雷达协同仿真方法,因为具体步骤为:步骤1,获取车辆初始位置的激光雷达的深度信息,并转化为对应激光雷达的点云输出,得到初始位置激光雷达的深度信息和点云;步骤2,基于车辆的最新位置,使用gpu生成环绕车辆的深度图;步骤3,基于深度图构造优化损失函数和优化问题;步骤4,简化优化损失函数;步骤5,求出优化问题的最优解;步骤6,根据最优解判断优化损失函数是否达到优化阈值;步骤7,将激光雷达的深度信息转化为对应的点云。
[0135]
因此,上述实施例提出的基于gpu加速的多激光雷达协同仿真方法,其依据单车配备多激光雷达场景下激光雷达的距离较近和视差较小的特性,并充分利用仿真前一帧的点云信息,采用gpu和数值优化迭代求解的方法对多激光雷达进行高效率的仿真。
[0136]
上述实施例提出的基于gpu加速的多激光雷达协同仿真方法,高效利用gpu和cpu
计算资源,特别针对单车配备多个激光雷达场景的仿真任务,能够对多激光雷达进行高效率的协同仿真,在保证高效率仿真的同时,能够生成高质量的点云,保证点云不会失真。
[0137]
上述实施方式为本发明的优选案例,并不用来限制本发明的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献