0 引 言
无人车综合了人工智能、计算机视觉和自动化等技术的一种新型智能汽车[1]。通过利用传感器等对四周的环境和自身的各项指标进行监测,从而实现在各类道路和环境下的自主控制运动。障碍物聚类分析法通过聚类分析的方法将点云信息的内在属性进行分析并分类,根据同类别中点信息的近似属性或特征确定障碍物的位置信息,从而实现避障[2]。该方法具有障碍物探测准确、分析速度快和探测范围广的优点,尤其适用于对复杂环境障碍物的检测,可以将其应用于物流无人车。因此将基于障碍物聚类分析对物流无人车的环境感知进行研究。
1 智能物流无人车设计
智能物流无人车根据功能需求,将其划分为通信层、人机交互层、控制层、执行层和数据库共五层。
1.1 通信层
通信层用于为物流无人车提供数据的传递功能,该层主要包括Wifi无线网和服务器,根据TCP/IP的协议设定进行数据的传输。通信层与数据库和人机交互层连接,一方面将物流无人车作业所需要的信息如传递至数据库存储,同时将已送达商品的开柜码等信息及时的发送给发件人;一方面将收件人相关地址信息传递至控制层,自动规划行驶路线,实现自动导航和配送。
1.2 人机交互层
人机交互层用于实现用户和物流无人车之间的互动,对无人车进行控制和操作。该层主要包括PC端和移动端,用户可根据需要进行注册和登录,采用如图1所示的ROS机器人系统进行控制。
1.3 控制层
控制层是物流无人车的核心控制层,用于对无人车整体的控制,实现道路信息的采集、路径规划、避障和商品的投递等功能。该层包括各类传感器[3],一般包括UWB定位套件、摄像头、激光雷达、速度传感器、姿态传感器和角位移传感器等。UWB定位套件采用3个基站方式进行监测,用于对物流无人车进行定位,可以实现距离和坐标的测算。摄像头安装于物流无人车的头部,用于实时采集无人车行驶过程中的道路状态,以识别道路。为了保证监测速度和准确性,采用SICK激光雷达。在监测时,激光发射器自身产生的电脉冲转化为光脉冲发射出去,在行驶过程中一旦出现障碍物,则光脉冲会反射回来,此时光接收机将接收的光脉冲转换为电脉冲,通过分析后可以确定障碍物距离,其计算方式如下:
d=Δt×c2" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative; font-size: inherit !important;">d=Δt×c2(1)
式(1)中,Δt为光脉冲发射与接收的时间差;c为光速。速度传感器安装于物流无人车的车头和4个车轮位置,用于实时监测无人车的行驶速度,以及各车轮速度。姿态传感器用于监测无人车进行商品投递的状态,以保证商品投递的准确性。角位移传感器安装于四个车轮下方,确定无人车行驶过程中转角。
1.4 执行层
执行层用于执行控制层下达的相关指令,该层主要包括车身和执行装置。车身是整个物流无人车硬件装置的承载平台,在进行设计时,利用左右轮之间的转速差进行转向的控制,以有效避免物流无人车行驶过程中出现原地打转或者进入死角的情况[4]。执行装置主要包括转向驱动阀、电子气节门和辅助控制装置等。物流无人车通过环境感知系统获取无人车行驶状态后,实时传递至控制系统,经过处理分析后向执行层发出相应的指令,通过电子气节门和辅助控制装置控制无人车的行驶速度和转角等,获取最佳行驶状态。
1.5 数据库
数据库用于对物流无人车在任务布置前和作业过程中的作业参数进行实时存储,以便于后期对数据的查询和管理。
2 物流无人车环境建模和避障
2.1 环境建模算法设计
采用激光雷达获取环境信息后,对环境建模。第一步是坐标系的转换。令世界坐标系为XsYsOs,车体坐标系为XcYcOc,两坐标系之间的关系图如图2所示。
对于车体坐标系中的任意一点,若考虑其位姿,其坐标可表示为(x0,y0,θ0),其在世界坐标系中可表示为(x1,y1),两点之间具有以下关系:
激光雷达在无人机坐标系的坐标为(xsense,ysense)。在监测过程中,t时刻可达到的最远点在世界坐标系中为(x2,y2),此时的无人车所在位置的坐标为(x3,y3,θ3),以上坐标具有以下映射关系:
(x2y2)=(x3y3)+(cosθ3-sinθ3sinθ3+cosθ3)(xsenseysense)+(cos(θ3+ω)sin(θ3+ω)) (3)" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; font-size: 15.66px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative;">(x2y2)=(x3y3)+(cosθ3−sinθ3sinθ3+cosθ3)(xsenseysense)+(cos(θ3+ω)sin(θ3+ω)) (3)
第二步是数据预处理。由于物流无人车作业的主要道路路面较为平坦,可假设地面具有小于20°坡度的平面。对于采集环境中的任意点A和激光雷达光脉冲环上的点B,在车体坐标系中的坐标分别为:
A=(xa,ya,za),B=(xb,yb,zb) (4)
δ=arctan[2za-zb(xa-xb)2+(ya-yb)22] (5)" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; font-size: 15.66px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative;">δ=arctan[2za−zb(xa−xb)2+(ya−yb)2−−−−−−−−−−−−−−−−−−√2] (5)
点云分割采用运算速度快、计算精度较高的深度图的分割方法。对于点云中的任意相邻两点C和D,两点关系图如图3所示。
图3中的O为激光雷达,可视为原点。以较长的脉冲光束作为y轴,与其垂直方向即为x轴。ε是激光雷达的分辨率,一般为0.2°或2°。η可通过式(6)计算,当η大于某结果时,可认为C和D点位于同一物体上。设定阀值,对所有相邻点云数据的η进行计算,聚类获取同一物体的所有点,完成点云分割。
η=arctanDΜΜC=arctanΟDsinεΟC-ΟDcosε" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative; font-size: inherit !important;">η=arctanDMMC=arctanODsinεOC−ODcosε(6)
第三步是道路环境的建模。一旦发现空洞,采用线性差值的方法将数据补全,ξ为插值系数。对于任意相邻两点(x4,y4),(x5,y5),这两点区间内的任一点(x,y)符合以下关系:
y-y4y5-y4=x-x4x5-x4=ξ" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative; font-size: inherit !important;">y−y4y5−y4=x−x4x5−x4=ξ(7)
2.2 障碍物识别算法设计
静态障碍物在经过激光雷达扫描后,一般呈现“I”或者“L”形,其上的点云可以看做在两个垂直方向均呈高斯分布,高斯分布模型如式(8)所示:
Ρ=∑i=1d2D|σi|1/2exp{-12(x-qi)σi-1(x-qi)} (8)" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; font-size: 15.66px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative;">P=∑i=1d2D|σi|1/2exp{−12(x−qi)σ−1i(x−qi)} (8)
式(8)中,i为点云中符合正太模型点中的模型个数;σi为第i个模型的点的方差;qi为第i个模型的期望;D为模型的权值。根据点云的高斯分布模型,确定静态障碍物聚类的最小点数要求dmin:
dmin=dx⋅sin(90-ω)⋅λτ⋅dy⋅sinω" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative; font-size: inherit !important;">dmin=dx⋅sin(90−ω)⋅λτ⋅dy⋅sinω(9)
式(9)中,dx和dy分别为符合高斯模型分布点的x和y方向坐标值;ω为激光雷达扫描线与x方向夹角;λ为激光雷达扫描经验值,根据不同障碍物经验值不同;τ为点数的调整系数,此时可以确定障碍物聚类的最小点数要求。若扫描后,某位置的点数符合障碍物聚类的最小点数要求,即该位置的扫描结果大于最小点数dmin,则此位置即为静态障碍物,从而确定障碍物位置。
对于动态障碍物,需要对不同时刻的数据进行分析,确认障碍物之间的关系。采用跟踪门方法以某周期的障碍物作为中心,以矩形波门作为分析区域,确定障碍物再次落入波门的概率,具体如式(10)所示:
J(k)=|C(k)-C(k-1)|≤Ρ⋅vgi2+vci2 (10)" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; font-size: 15.66px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative;">J(k)=|C(k)−C(k−1)|≤P⋅v2gi+v2ci−−−−−−−√ (10)
式(10)中,C(k)为第k个周期扫描结果;P为障碍物落入矩形门的概率系数;vgi和vci分别为第i个候选测量结果的观测噪声和过程噪声的对角线结果。其后,采用匀速运动模型跟踪障碍物:
[x(k)x˙(k)y(k)y˙(k)]=[1Τ000100001Τ0001][x(k-1)x˙(k-1)y(k-1)y˙(k-1)]+[Τ2211000Τ21][ω1ω2] (11)" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; font-size: 15.66px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative;">??????x(k)x˙(k)y(k)y˙(k)??????=??????1000T100001000T1????????????x(k−1)x˙(k−1)y(k−1)y˙(k−1)??????+???T21020T2101???[ω1ω2] (11)
式(11)中,x(k),x˙" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative; font-size: inherit !important;">x˙(k)分别表示x方向的位置和速度,y(k)和y˙" role="presentation" style="margin: 0px; padding: 0px; border: 0px; outline: 0px; background: transparent; display: inline; line-height: normal; text-indent: 0px; word-spacing: normal; overflow-wrap: normal; text-wrap: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0px; min-height: 0px; position: relative; font-size: inherit !important;">y˙(k)分别表示y方向的位置和速度;ω1和ω2分别表示x和y方向的高斯白噪声;T为周期。从以上过程可以有效的识别障碍物,从而有效避开。
3 试验结果
3.1 道路环境建模试验
选择校园内的一条平坦、宽阔且道路状态较为良好的道路作为测试道路,将物流无人车在该道路上行驶,分别在无行人和行驶车辆、有行人和行驶车辆的状态下使用该无人车进行环境信息的采集,自动滤除地面上的物体,最终采用该无人车获取的点云信息如图4所示。
由图4可知,该物流无人车能够在无行人和行驶车辆的环境下,进行道路环境的建模;在有行人和行驶车辆的条件下,自动识别行人、车辆和数目,对实际的环境进行建模。以上结果说明该物流无人车能够进行道路环境的建模,且可以有效识别道路环境中的障碍物。
3.2 障碍物识别精度试验
随机放置5个箱子,由于箱子尺寸较大,将开始识别到障碍物的起始位置和识别障碍物的结束位置即终点位置做差,即可确定某障碍物尺寸。将其与实际尺寸进行对比,以验证识别精度。结果如表1所示。
表1障碍物识别精度试验结果
序号 |
长度 |
宽度 |
测量值
/m |
实际值
/m |
误差
/m |
测量值
/m |
实际值
/m |
误差
/m |
1 |
3.12 |
3.15 |
0.03 |
1.12 |
1.16 |
0.04 |
2 |
2.99 |
3.01 |
0.02 |
2.05 |
2.02 |
0.03 |
3 |
1.55 |
1.59 |
0.04 |
1.00 |
0.96 |
0.04 |
4 |
2.51 |
2.47 |
0.04 |
2.04 |
2.02 |
0.02 |
5 |
2.35 |
2.32 |
0.03 |
1.88 |
1.85 |
0.03 |
由表1可知,该物流无人车的环境建模精度较高,对于障碍物尺寸的识别精度误差小于0.03m, 满足物流无人车的精度要求。
4 结 论
为了使物流无人车能够有效的感知和避障障碍物,设计物流无人车行驶过程的环境建模算法。采用激光雷达获取环境信息,对信息进行坐标系转换,确认物流无人车的坐标位置;预处理获取的信息,获得有效信息,采用插值法和三维网络模型构建的方法对行驶路径进行环境建模。在充分考虑障碍物的静态和动态方式的基础上识别障碍物,以有效避障。试验结果表明该物流无人车能够进行道路环境建模,对障碍物尺寸的识别精度误差小于3%,满足物流无人车的精度要求。