基于CARLA平台的主动刹车算法仿真

2021-06-08 09:58解仁浩黄宏成徐炜鹏
传动技术 2021年1期
关键词:刹车边界距离

解仁浩 黄宏成 徐炜鹏

(上海交通大学机械与动力工程学院,上海 200240)

1 AEB应用现状

研究表明,“跟车距离太近”是车辆最危险的驾驶行为之一[1],为了尽可能减少跟车距离过近所导致的交通事故,交通运输部专门为此制定了《JT/T 1094-2016》标准,该标准要求自2018年4月1日起,新生产的9米以上营运客车需安装前向防碰撞预警系统(Forward Collision Warning System, FCWS)。借助不同类型的传感器如摄像头、雷达等,该系统可以实时地检测前方道路情况,如果前方存在车辆,而且存在碰撞的风险,就会通过灯光、震动、声音等方式向驾驶员发送警告信号。

进一步地,如果驾驶员在即将面临碰撞时没有及时制动,主动刹车系统(Autonomous Emergency Braking System, AEB)将会代替驾驶员进行紧急制动以避免碰撞。2016年3月,美国国家公路交通安全管理局(NHTSA)和公路安全保险协会宣布,美国20%的汽车制造商已同意在2022年之前将AEB系统作为在美国销售的几乎所有新车的标准配置。NHTSA预计,自此之后如果AEB功能可以按照预计加速普及,将可以防止大约28,000起碰撞和12,000人受伤[2]。在一项针对警方报告的撞车事故的研究中,发现自动紧急制动可以将追尾撞车的发生率降低39%[3]。

AEB功能作为车辆主动安全功能的核心,减少车祸与伤亡的重要作用已经显现,而利用计算机仿真平台可以快速、低成本地对目标检测、距离估计、决策算法等顶层部分进行测试与改进,增强AEB功能的可靠性与在更多工况下的适用性。

2 仿真过程

2.1 CARLA仿真平台

CARLA是一个为了支持自动驾驶系统的开发、训练和验证而被开发出来的开源的自动驾驶仿真平台。除了开源代码和许可协议,CARLA还提供了专为自动驾驶系统的仿真与测试需求而制作的开源内容,比如城市的规划布局、建筑物的外观设计和现实生活中常见的车辆类型,而使用它们也同样是免费的,并且任何人都可以在此基础之上创建定制化的内容。此外CARLA平台支持众多的传感器类型,可以模拟真实传感器的读数,基本覆盖了自动驾驶系统所需要的主流传感器,同时可对所有静态和动态参与者完全控制,生成自定义地图等等[4]。

2.2 部署车辆

为了测试AEB算法,首先需要在CARLA中布置相应的场景。在现实世界中,AEB所面临的场景十分复杂,包括了针对车辆的识别与对行人的识别。对于车辆识别,存在动态与静态两种情况:动态情况为前方车辆与我方车辆均在运动,前车突然刹车导致出现碰撞风险;静态情况为前方车辆静止我方车辆接近出现碰撞风险;对于行人识别,则可分为在较远距离时即可被探测到的行人以及近距离突然出现的行人。为了简化测试,本仿真仅考虑前车静止情况下的车辆识别。

利用CARLA的PythonAPI可以在CARLA中部署车辆。这一简单的场景包括了四台静止的汽车,它们分布在三个车道。由于本仿真仅针对汽车进行,因此需要在部署时过滤掉两轮车辆。部署完成后四台车中的两台在左侧车道,一台在中间车道,一台在右侧车道,如图1所示。

图1 CARLA中布置的AEB测试场景Fig.1 Layout for AEB test in CARLA

仿真所用的ego车辆采用ros-carla-bridge的示例车辆example_ego_vehicle的布置方式,车上部署有激光雷达、相机等传感器。

2.3 PID车速控制

为了测试30 km/h、40 km/h和50 km/h三种速度时AEB的工作情况,需要在每次测试时让ego车辆稳定在目标速度。为此一个负责控制速度的节点从/carla/ego_vehicle/vehicle_status订阅车辆目前的状态,具体为速度和刹车强度。如果目前刹车强度为100%,且当前AEB已被触发,此时需要让刹车强度继续维持在100%,并将这一命令发布至:/carla/ego_vehicle/vehicle_control_cmd;如果刹车强度不为100%,则说明此时AEB没有被触发,这时需要利用PID控制方法将速度维持在目标值。

在仿真的PID控制器中,为了调试方便,仅保留了比例和微分单元,因此实际上是一个PD控制器。控制器的实现部分被放在了callback函数中,每调用一次callback函数即会计算一次输出值。经过在CARLA中的多次测试,选择了kp=40,kd=0.01作为此PD控制器的参数。但是由于callback函数的调用速度很快,虽然这样的参数可以让最终车速保持稳定,但是控制面板检测的数据显示油门的变化过于剧烈。为了消除这种情况,在最终的输出前增加了一个均值滤波部分,这样便可以得到平滑的油门输出。运行结果如图2所示。

图2 PID车速控制的稳态情况

从图中可以看出在达到目标速度后油门较为稳定,且稳态误差在3%以内,可以接受。

2.4 AEB决策

本文仿真方法采用2D图像作为输入,为2D检测,无法确定物体的三维轮廓和在空间中的具体位置。但2D图像检测也能进行一定精度的距离估测,主要基于:相机的成像存在近大远小的现象,同时,由于AEB算法所需要检测的目标一般在中心位置,镜头的畸变影响也很小。

在各个用于训练目标检测模型的数据集中,汽车这一分类一般都为普通私家车,至于卡车、货车则被归类到单独的类型。

在实际检测中,前车的角度可能会有改变,而不是恰好与测试车辆平行,因此这导致检测得出的边界框在水平方向上的尺度会有相对比较明显的变化,但是,在垂直方向的尺度上,各型号车辆都比较接近,而且除了前后两车恰好分别处在陡峭的坡道与平地上这种十分罕见的情况以外,车辆高度在相机焦平面上的投影几乎不随着前车的位置、角度等发生改变。因此,以边界框的高度作为距离判定的基准是可行的。

在测试中,判定逻辑为,如果在当前帧的检测结果数量不为0,则查找是否存在中心位于测试车辆行进方向,且检测结果分类为“car”的边界框,如果存在,则将其高度存入一个列表。查找完所有检测结果时,将列表内最大的高度值与设定的阈值进行比对,如果超过,则触发紧急刹车,使车辆停下。

接下来需要解决的是阈值取值问题。随着车速的增加,从开始制动到车辆完全停下经过的距离会越来越长,因此,显然阈值会随着速度的改变而变化。根据三角形相似原理,边界框的高度与离目标的距离成反比,可表示为:

(1)

其中:h为边界框高度,k为系数,d为与目标的距离。根据刹车距离公式:

(2)

在底面摩擦系数一定的前提下,刹车距离公式可以简化为:

db=k2v2

(3)

假设AEB触发后停车时ego车辆与前车预留1 m的安全距离,则:

dt=db+1

(4)

所以:

(5)

通过实验测试可以确定k1、k2的取值。不过,由于相机焦距和分辨率限制以及目标检测模块的检测能力限制,h的取值需要分段确定。同时,由于callback函数会不断地被重复调用,因此在边界框满足条件触发AEB后,在后续的调用中就不需要继续判断边界框是否符合条件,只需要维持刹车,直到手动解除。这可以通过订阅/carla/ego_vehicle/vehicle_status获取目前刹车状态来实现。

3 结论

使用以上方法,分别以30 km/h、40 km/h、50 km/h的接近速度进行仿真测试,运行结果如图3所示:

图3 30 km/h、40 km/h、50 km/h主动刹车测试结果

可以看出,在以上三种速度下,该AEB算法均可在正确的时机及时刹车,避免碰撞,且在不同速度条件下刹停后与前车的距离几乎相同。此类前车静止的AEB工况仅为众多工况之一,但是这一结果证实了使用仿真平台模拟自动驾驶算法的可行性,并可以在以后方便地加入更多特性,利用更多的传感器输入,使用更好的模型等等,充分发挥仿真平台的优势。

猜你喜欢
刹车边界距离
拓展阅读的边界
意大利边界穿越之家
算距离
论中立的帮助行为之可罚边界
每次失败都会距离成功更近一步
为什么突然刹车时人会向前倾?
还有94分
刹车系统:跑得快也要刹得住
爱的距离
刹车边遇到爱