本文使用ResNet+BERT分类模型来实现APA自动泊车算法
首先定义模型的输出动作类别
类别名 | 说明 |
---|---|
S0 | 停车 |
S+ | 直行前进单位距离 |
S- | 直行后退单位距离 |
L+ | 左转前进单位角度 |
L- | 左转后退单位角度 |
R+ | 右转前进单位角度 |
R- | 右转后退单位角度 |
设单位距离为0.05米,单位角度为0.5度。为了降低复杂性,在转弯过程中,方向盘都打到底。
接下来定义模型的输入: 1、障碍物的位置 2、小车的当前位置以及目标位置 3、附加状态:例如上次执行的动作
在本实验中,使用384×384像素的图片来表示障碍物的位置、小车的当前位置以及目标位置,在输入BERT分类模型前需先将2D图片转为1D序列,如下所示:
(B, C_in, 384, 384) -- ResNet --> (B, C, 24, 24) -- Rearrange --> (B, 576, C)
在建模过程中,主要考虑以下参数:
参数名 | 值 |
---|---|
车长 Vehicle Length | 4.360米 |
车宽 Vehicle Width | 1.785米 |
轴距 Wheelbase | 2.535米 |
前轮距 Front Track Width | 1.525米 |
后轮距 Rear Track Width | 1.535米 |
前悬 Front Suspension | 0.840米 |
后悬 Rear Suspension | 0.985米 |
最小转弯半径 Minimum Turning Radius | 5.5米 |
由于算力有限,在生成图片时使用较低的分辨率(20像素/米)。设小车后轴的中心点为小车原点
这个项目中唯一比较麻烦的部分就是训练数据的合成,因为自动泊车的场景太多(例如倒车入库、侧方位停车、斜方位停车),需要针对每一种场景开发对应的数据合成代码。经过几天的开发,我也只合成了几种简单场景下的训练数据,可视化效果如下:
添加图片注释,不超过 140 字(可选)
上图中,黑色为障碍物位置,红色为小车当前位置,绿色为小车目标位置
从起始位置到目标位置,小车需执行一系列的动作,例如:
R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-R-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-S-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-L-
为什么要连续密集决策,而不是在一次决策中让小车移动更长的距离呢?因为在现实中存在着不确定性,比如在泊车过程中小车旁边有人行走。
若不考虑附加状态,则模型输入可表示为(3, 384, 384)的张量,其中通道0为小车当前位置,通道1为小车目标位置,通道2为障碍物位置,模型输出为小车下一步该执行的动作类别,如图所示:
输出动作类别:R-
可以看到问题简化成了一个普通的图像分类问题,我觉得不用BERT模型只用ResNet图像分类模型也是值得尝试的,但考虑到在实际项目中,模型的输入可能来自摄像头、激光雷达、超声波雷达等多个传感器的组合,加入BERT模型后有利于融合多模态的数据。
有了训练数据,接下来就可以训练模型了。训练方法跟普通的图像分类几乎一样,需要一张不低于16G显存的显卡,经过30个小时的训练,得到模型V1.1。
下面对模型V1.1进行指标测试
首先定义泊车成功标准: 1、不与障碍物发生碰撞 2、在规定的步数(800步)内到达目标位置。允许有轻微的偏差,小车当前位置与目标位置的距离小于0.16米,夹角小于1.6度,这里的距离为小车原点之间的距离 随机生成1000条测试样本,统计成功率。测试结果如下: 成功876个,失败124个(其中5个与障碍物发生了碰撞,119个在规定的步数内未到达目标位置)
泊车成功率为87.6%左右,如果增加训练时间,还可以提升成功率。让我们先看看泊车失败的例子 1、在规定的步数内未到达目标位置,具体又分下面几种情况 1.1、 靠近目标位置,有偏差但偏差不大,这种占绝大部分
1.2、分不清车头车尾
1.3、偏差较大,这种比例很少
2、与障碍物发生了碰撞
从失败的例子可以看出要想提升泊车成功率,还必须增加训练样本的多样性,让模型“见多识广”。我觉得不应该过分要求模型每次转向的时机都刚刚好,而应该在轨迹出现偏差时让模型学会如何调整。
由于在写这篇文章前,本人对无人驾驶技术了解的很少,因此文中难免有错误之处,欢迎读者在评论区指出。 参考文章
下一篇:基于模仿学习的自动泊车运动规划算法 Training Data Is All You Need
标签:BERT,障碍物,小车,模型,位置,ResNet,384,泊车 From: https://blog.csdn.net/weixin_42885381/article/details/143035190