APP下载

主控芯片采用i.MX6的低成本自动驾驶系统方案实现

2021-12-01付建宽靳志刚余楚礼

科技经济导刊 2021年9期

付建宽,靳志刚,余楚礼

(中汽数据(天津)有限公司,天津 300000)

1.自动驾驶发展现状

随着新能源技术、超大规模集成电路微电子技术、高性能GPU并行计算处理技术等前沿科技的蓬勃发展,自动驾驶近年来风起云涌,各类传统车辆主机厂、初创公司、互联网巨头纷纷斥资投入研发,一些新产品相继问世,国外谷歌系Waymo、通用旗下Cruise、科技大厂特斯拉等几乎每年都有新的自动驾驶车辆发布[1]。据维基百科参考资料显示,美军的自动驾驶技术已经进入装备阶段;国内蔚来汽车、地平线、百度等公司也逐步将一部分可靠自动驾驶技术下放至量产车型[2]。

2.自动驾驶发展趋势

自动驾驶技术可以大大降低各类交通事故的发生率,减少交通拥塞,实现节能减排,更好地管理交通流量,进一步解放驾驶员,基于这些优势,在可见的未来,自动驾驶技术前景被十分看好,必将不断推陈出新,甚至可以孵化出新的商业模式[3]。

3.系统整体设计

3.1 传统控制器方案

当前L0~L3自动驾驶系统控制器主流采用的是性能模块和安全模块的组合。性能模块一般是由AI处理器模组来担当,比如华为的MDC300采用的是12核的鲲鹏920并扩展昇腾310来实现;Nvidia的 Jetson AGX Xavier则采用了 8核 ARM v8.2 64位CPU并扩展512核Volta GPU来实现;还有一些工控机厂商比如宸曜科技、研华科技等则基于Intel高性能处理器并搭载Nvidia的图形引擎来实现。安全模块一般由英飞凌TC297/397之类的MCU充当,不要求太高的算力,但是对于功能安全等级要求很高。

3.2 低成本控制器方案

华为MDC300的硬件成本大约在20万人民币左右,我们之前采用 Nvidia的 Jetson AGX Xavier和外部自研 STM32控制板的方案成本大约在一万块钱左右,如果采用工控机替代AGX的话成本将会更贵。而当前很多应用场景并不十分需要视觉传感器的感知信息,也就是说控制器并不是必须要支持深度学习,只要能够处理光电雷达传感器的信息并在此基础上实现规划决策控制也可以实现L3级别的自动驾驶,基于这种考虑,我们尝试采用明远智睿公司的MY-IMX6-EK200-6Q-1G开发板来担当大脑控制器,成本大约在一两千块钱左右,汽车级的i.MX6工作温度范围是-40℃~125℃,可以扩展多种硬件接口,同时支持Ubuntu开源操作系统,另外能够保证至少15年的供货周期。

4.硬件设计

4.1 系统硬件组成

低成本的自动驾驶系统硬件采用NXP的i.MX6作为主控芯片,外部扩展两路CAN总线,一路接中云智车车辆线控底盘,另外一路接德尔福前向毫米波雷达和华测组合惯导;两路千兆以太网,一路接速腾聚创16线激光雷达,另外一路连接4G路由器来实现和云服务器的交互。各模块的具体连接如下如所示。

4.2 系统各模块功能

云服务器支持SVN的代码版本控制,同时部署OTA远程升级功能,还通过gRPC实现了车辆运行现场的远程监控。

4G无线路由器是本地控制器和云服务器的中转媒介,支持物联网卡,可以提供wifi支持本地无线网络调试,可以支持使用scp和ssh进行文件传输,使用telnet进行远程shell操作。

主控板是系统的大脑,低功耗设计,可以通过HDMI接口连接显示器输出基于QT的图形界面显示车辆运行实况;可以通过串口shell输出和Ubuntu系统进行交互;可以通过gpio输出控制底盘车辆的一些灯光、继电器等开关量;可以通过外置传感器实现温湿度、PM2.5值的监测报警;内置软件看门狗(WDT),方便无人值守。

组合惯导内置MEMS陀螺仪与加速度计,融合卫星导航信息(支持RTK)和车辆信息(轮速、档位等),实时提供高精度的载体厘米级位置、姿态、速度和传感器等信息。

激光雷达通过发射高频率激光束对周边环境进行持续性的线束发射,经过内置测距算法提供三维空间点云数据及周围物体的反射率,可以为自动驾驶车辆的定位、导航、避障等提供有力的保障。

毫米波雷达可以全天候工作,对前方物体进行高精度的距离、方位、速度、频率和空间位置的测量和定位。

底盘是自动驾驶系统控制技术的核心硬件,提供可以线控的油门或扭矩、制动、转向、自动挡位等的控制。

5.软件设计

5.1 嵌入式系统搭建

由于i.MX6是ARM处理器,因此需要在X86架构的PC上移植gcc和g++的交叉编译工具链,编译arm版本的QT库、PCL库、boost库、protbuf库、yaml-cpp库等。另外如果条件允许还可以直接在Jetson AGX Xavier上开发,然后将生成可执行文件直接拷贝到i.MX6主控板上运行。

我们移植了Ubuntu16.04的系统到i.MX6主控板上,采用fastboot机制[4],大大加快了Linux系统开机时间。在软件开发过程中使用shell自动化脚本统一进行编译。

5.2 自动驾驶系统的环境感知

首先完成传感器的内参和外参标定,确定其内部映射关系和外部坐标关系[5]。

激光雷达我们直接调用速腾聚创感知算法SDK,实现障碍物检测、障碍物分类识别、动态物体跟踪。

ESR毫米波雷达在其视域内可以同时检测到64个目标障碍物并将解析数据通过CAN总线输出,值得一提的是,毫米波雷达能够依据多普勒频移测算出车身和障碍物之间相对速度,同时还能实现对障碍物的追踪。

我们利用组合惯导提供的精准航向、位置等信息录制或者规划高精地图,并在车辆自动驾驶过程中以100Hz的频率更新车身的定位信息。

最后对传感器的信息根据使用路况和天气情况做一些简单的融合算法,方便自动驾驶系统的决策更加精准。

5.3 自动驾驶系统决策控制策略

在汇集了车辆感知的车身和周边障碍物的位置、姿态、速度、加速度等信息后,结合全局和局部路径规划结果,软件上以20ms作为一个计算周期,根据设定的规则引擎,在结构化道路上不断做出加速、减速、停车、转弯、换道、泊车等行驶策略。

通过考虑车辆的运动学约束,抽象出其动学模型,保证车辆按照预先设定车辆的轨迹安全平稳地行驶。自动驾驶系统的纵向控制主要是通过对油门和刹车的调节来实现速度控制,采用PID控制策略,通过整定PID控制器参数,实现对目标车速的追踪;由于模型预测控制(MPC)需要复杂的数据处理,对处理器要求有点高,因此我们的横向控制方案也采用经典的PID控制策略,依据车辆实际行驶的预瞄航向偏差来调节前轮转向,实现横向的跟随[6]。

5.4 自动驾驶系统运行效果

本次开发实现了车辆的自动循迹、自动紧急制动、自动泊车、自动车道保持、自动变道避障等L3级别的自动驾驶功能,车辆运行稳定可靠,多次参加各种类型的产品展示,并开始进行商业推广。下图是车辆实际运行时的展示效果。

6.结语

本文介绍了一种基于汽车级i.MX6主控芯片实现的低成本L3级自动驾驶方案,大大节省用户费用,降低技术开发和市场风险,并在一些场合进行了小范围的落地应用。今后我们将继续优化算法,在算力允许的情况下添加camera视觉支持,实现障碍物类型、交通标识、交通信号灯的识别,并和雷达数据进行融合。由于Ubuntu不是实时操作系统,后面我们将尝试在QNX或VxWorks上来移植自动驾驶算法软件,使得车辆的控制响应更加及时。同时将加快国产化硬件方案的研究,后面争取采用龙芯或者飞腾的主控芯片重构软硬件,最终实现硬件的完全自主可控。