自动驾驶碰撞检查

自动驾驶碰撞检查

简单来说主要从三个维度考虑,空间尺度,时间尺度和维度。举个栗子,和人开车一样,远处看下地图的拥堵情况,空间尺度有10km,时间尺度往往有10分钟,维度上红黄绿,要不要换线。近处看下前面老大爷会不会碰瓷,空间尺度10m,时间尺度100ms,维度上看他动作,要不要避让。这两个行为不一样,但你能感觉到任何一件事消耗的精力差别不大。计算机一样,如果把时空和维度数量算一个三维坐标系,换算栅格的数量往往是一样的。
碰撞算法一般近场时间空间尺度小,维度偏向微观,远场时间空间尺度大,维度偏向宏观,但是计算粒度三者的体积是一样的,也就是说对算力的要求类似。因此,可以在近场使用栅格等精确算法,中场采用polygon box等检测算法,远场使用点表征或者属性表征。并且考虑在CPU等并行架构,可以把三种算法放入三个核处理,进一步提高及时性。

障碍物的表征方法

说到自动驾驶的碰撞算法,先要说的是自动驾驶的障碍物表征,确认表征,才能确认算法。障碍物的表征方法一般有这么几种:

  • 属性表征:很多碰撞并不表征几何位置,可能一个属性就表达了,比如右前方换道并入,常出现在深度学习相关算法中,也会叠加在如下所有的几何表征上
  • 点表征: 最粗的障碍物表征,多用于静态,朝向不敏感的物体
  • 点+一维航向+速度: 粗粒度的障碍物表征,毫米波的输出关键信息
  • obb(box)+一维航向+速度: 中粒度的障碍物表征,视觉语义输出的关键信息, 特别说下Axis Aligned Bounding Box一般是用在图像坐标系下,一般在其他坐标系下是用于粗匹配和粗碰撞筛选上
  • polygon+一维航向+速度: 中高粒度的障碍物表征,激光一般输出关键信息
  • 栅格(点云)+光流:高粒的障碍物表征,激光相机做底层预处理后输出的关键信息

障碍物碰撞算法

  • 配合无属表征,一般都是简单规则算法,针对右前方并入的属性,如果不叠加障碍物位置信息就是一个常规固定值的轻微减速,如果叠加了位置信息就是一个一维的TTC计算,获得减速度。
  • 剩下的就是纯粹的几何计算过程,也就是点,线段,包络的计算。本次也将详细介绍几何计算。

自动驾驶的碰撞检测原理并不新鲜,和2 D游戏中的碰撞检测原理相同,原理大多是超平面分割定理,难点在如何提高碰撞检测的效率或者精度,这个方法和技巧就不简单了。自动驾驶是二维平面上的规划问题,二维平面上常用的有三种:

在这里插入图片描述
在这里插入图片描述

球体

也就是将物体都等效为外接圆/外接球,利用球/圆来检测两个多边形是重合是及其方便的:圆心的距离和半径之和比较即可
这种方法的优点缺点是如此明显:
优点:运算速度快
缺点:精度低
这种球体检测的方式在自动驾驶中应用的不多。一是这种方法的精度太低了,相邻车道的车都会检测出碰撞检测。二是感知给出的障碍物大多是方形的,没必要将其转化为圆形。

AABB(Axis Aligned Bounding Box)

从名称中大致能理解其中意思:沿着轴的包围盒子。也就是将物体用方形的盒子包围,这个方形的盒子的四条边都是和坐标轴平行的。
在这里插入图片描述
这种方法来判断是否重合的计算量比较小:分别提取每个包围盒的x/y轴的最大值和最小值,变为一维轴上的线段重合检测,如果x轴或者y轴存在不相交的情况,则二者不重合。
这种方法的相比于圆的碰撞检测,精度提高很多,尤其适合形状就是方形的物体(车辆),并且运量并不多,没有三角函数这种耗时大的运算。

OBB(Oriented Bounding Box)

但是AABB的碰撞检测精度有限,比如在如下情况:
在这里插入图片描述很明显的是AABB的包围盒与实际相比过大,精度十分有限。因此OBB这种不是一定要沿着坐标轴的包围盒就有优势了。
OBB的定义很简单,就是找一个最小的包围物体的方形。这在自动驾驶中是很自然的,上层的感知给出的数据通常就是这种OBB的图形。其中OBB的碰撞检测原理就是分离轴定理,示意图如下:
在这里插入图片描述为了判断两个OBB是否发生重叠,可使用分离轴定理。因为分离轴应与A和B的表面正交,可选p, q, s, t为分离轴,然后将OBB投影到这些轴上。如果两个OBB在所有这些轴上的投影相互重叠,则两者相交,否则不相交。因此,为了知道两个OBB是否重叠,只需要找到一条可以使A和B的投影不重叠的轴线即可。肉眼可知,q轴是唯一能将这两个投影分开的轴。

碰撞检查注意事项

是不是越复杂的算法越好

碰撞的算法和表征没有最好一说,精确算法都面临三个问题,对感知要求更高,对计算时间需求更大,对关联信息依赖更大,这导致了算法非常脆弱和不稳定。如果全部选择简单的算法,耗时可以保证,稳定性可以保证,但问题是精度不足,导致特别是近距离,司机开个门,车辆体积异常等情况无法处理。所以,算法不是越复杂越好,要考虑使用场景,硬件算力等情况。

参考文献:1.https://www.zhihu.com/question/351926770

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值