MATLAB & Simulink助力低速自动巡航的开发
深圳市豪恩汽车电子装备股份有限公司 曾峰
低速自动驾驶由于其应用场景的复杂性,并没有像强约束应用场景的高速那样短期内实现了创造性的突破。高速场景下类似标准车道线、交通标志、高精地图以及单一的障碍物类型这样的强约束在低速下不存在或存在但没有很强的标准性。低速场景只能依靠车身传感器感知的局部信息来完成路径规划和控制,相对难度更大,但好消息是低速给予自动驾驶系统相对更长的决策时间,能容忍的感知错误也比高速大。一些在高速上只能作为参考的技术在低速下却能发挥重要作用,如基于语义分割进行可行驶区域识别,如近距离探测的超声波技术。
我们具体研究的低速自动巡航场景包括两边有障碍物的窄道场景,车道线场景,限位路桩场景等,它们共同的特点是能够使用成熟的环视和超声波来附加解决此类场景下自动驾驶问题。这样做的好处是不需要使用很昂贵的部件,可以在硬件配置不变的基础上带给车辆更多的功能,有助于推向量产化,从而实现在量产中更快的迭代,而不是一直把技术放在实验室或停留在演示阶段。
MathWorks对于自动驾驶开发来说,是一个很有效的“加速器”。在低速泊车领域,自动驾驶工具箱提供了一个完整的范例框架和理论基础,我们从这个范例框架出发,结合自身的技术沉淀,建立了从仿真系统到核心代码的开发部署,再到实车log数据的记录分析和回放一整套的解决方案。
具体来说,我们首先实现了从测绘地图转换成图像,再映射为世界坐标系下的高精地图,然后模拟车辆在地图中任意姿态时所探测到的实际图像输出,输出图像由核心算法实现路径规划后返回给仿真系统,仿真系统跟踪此路径控制车辆行进,然后再在可控的时机重新输出图像,实现闭环仿真。
另外一点被高效使用到的是基于MATLAB®实现的log回放以及可视化数据分析方法。相对于“打印log分析bug的传统方式”,新方法带来的是跨跃式的突破。首先,log变得完整且灵活,log记录整个事件的完整时间序列及对应的图像数据,车辆姿态数据,超声波数据等,这些数据以结构体的方式存在,可以在MATLAB或C/C++环境中完整回放出来,再现bug发生的场景。其次,灵活的绘图可以让我们直观的看到庞大数据之间的关系,更容易找出规律性或异常点。
MathWorks另一个优点是可生成针对嵌入式的C代码。我们的系统需要部署在多核异构的嵌入式上运行,具体来说可能在ARM上,也可能是DSP上,决定了我们必须选择C作为编译时使用的代码,从而也排除了基于类似openCV库开发的可能。利用MathWorks提供的基础函数库,使用M语言加Simulink®,我们可以轻松把自己的开发思想实现,然后按需生成高效的C代码,辅助以必要的SIL测试后,这些代码就可以交付并集成编译了。如果没有这样的工具链,我们无法想象完全基于C来完成此项工作的难度。
在具体实现的过程中,我们技术上经历了两代产品。第一代使用 RRT + Dubins曲线 + costmap的思路,和MathWorks范例提供的技术路线类似,优点是数学逻辑完备,缺点很多,如“蛇行”,如在嵌入式运行效率差。第二代开发思路上考虑实用,和超声波充分融合,路径作为宏观引导,更近的距离靠超声波调整。为避免“蛇行”,路径规划做了居中和直行优化;为了能够高效的在嵌入式上运行,我们充分使用了Simulink Coder™的诊断优化功能。
低速自动巡航的开发一开始就是面向量产的,在3年多的时间里,此项技术作为我们基于环视和超声波实现低速自动驾驶解决方案的一部分,不断的向车厂推广,以及和客户一起在实际开发过程中迭代。今年会逐步量产成熟度比较高的一些场景,作为实验性功能推送给终端驾驶者。
受制于传感器精度以及SoC算力的限制,很多新的开发思想无法在当前一代的域控制器平台上部署,好消息是新一代的域控制器使这一切变得可能。如遥控泊车场景,需要车辆自主去寻找车位,在车道,车位,导流线,可行驶区域多重约束下,车辆自主巡航去寻找车位或者召唤到指定位置。另外如记忆泊车,低速跟随,地下停车场的旋转路径等场景,低速自动巡航技术都有广泛的应用,需要我们去进一步探索。我们也会持续升级这一技术,并搭载在合作的客户车型上应用量产。
出版年份: 2022 年 8 月 2 日