自动驾驶汽车,作为一个可被控制的人工系统,大致包含以下及部分内容:
(1)硬件:传感器、V2V通信、执行器(发动机、方向盘等);
(2)软件:车载系统,感知、规划、和控制软件,以及其他支撑软件;
(3)算法与模型:算法和模型都是以软件的形式存在,但是这些算法设计到传感器融合、图搜索、路径规划、运动规划、运动控制、深度学习态势评估等。
硬件篇
陈老师在知乎专栏(无人驾驶干货铺)里面详细的介绍了百度无人车的硬件系统,通常来说离开硬件来谈自动驾驶都是耍流氓。自动驾驶汽车所需要的硬件总结如下:
汽车,尽量选择电动汽车,空间尽可能大,电机底层控制要比燃油车底层控制简单些;
自动驾驶控制器,通常选择工控机,根据技术需求选择工控机配置GPU等
通信模块,CAN卡,汽车个不同子系统之间的通信基本上是通过CAN协议进行
GPS+IMU,用于为车辆提供全球位置信息惯性测量单元,提供车体的加速度、角速度、航向等信息
环境感知传感器,主要包括自动驾驶领域耳熟能详的摄像头、激光雷达、毫米波雷达、超声波雷达等,用于感知道路信息、交通状况、行人信息,为车辆规划提供大量的信息。
软件篇
参考
无人驾驶系统简介
,自动驾驶汽车软件主要总结如下:
感知模块,利用各种传感器数据,进行信息融合,得到汽车完成任务所需要的信息、保证安全所需要的信息,具体包括:障碍物位置,速度,以及行为预测,汽车可行驶的管道,实时交通状况、交通信号与指示信息等。其中包括,将激光雷达点云图数据处理得到行人、车辆、障碍物信息,将图像进行处理得到车道线、可行驶区域、其他车辆、行人、交通标志和信号灯信息。另外,感知模块基于GPS和IMU惯性导航系统为无人车进行定位,并利用SLAM、基于激光点云数据匹配定位的高精度地图等软件来对车辆进行高精度定位。
规划模块,主要包含:
任务规划,根据道路信息进行汽车出发点到目标点的路径规划,解决汽车去去哪儿、走哪条路线的问题
行为规划,也称DecisionMaker,在跟踪任务规划给定的路线过程中,根据实时路况和环境(包含其他车辆、行人、交通信号标志灯)信息,给出汽车的行为序列(比如停车,绕行、超车等),可通过有限状态机实现。
动作规划,根据行为规划给定的行为、当前汽车的位置、速度、方向信息、以及环境信息,根据汽车执行器的操作范围,规划汽车在完成给定行为所需的位置、速度、加速度、方向等状态序列,
控制模块,是根据动作规划给定的状态序列、当前汽车的状态,利用反馈控制思路,给出汽车油门、方向盘转向、刹车等执行器的指令。
规划与控制可以这样总结:
任务规划,给出整个任务时间内汽车应该遵循的路线,通常规划一两次;
行为规划,给出某段路线中,汽车应该切换的模态(超车、停车、绕行等),通常某段路线中规划数十次甚至上百次,整个路线中,规划成百上千次;
动作规划,根据行为规划给出的模态,给出汽车在某段路线中、某个模态下应该遵循的状态轨迹(这里不仅仅是路径了,还包括未来某时刻汽车应该在什么位置、速度多大、加速度多大、航向多少等信息),通常一个模态中,汽车需要迭代优化其动作序列,一个动作对应的轨迹可能不同,比如超车怎么超、绕行绕多远,都得根据实时态势来决定,因此汽车需要实时根据自身状态和环境信息进行动作规划,每次间隔时间可在0.1秒,可以更小,也可以稍大。
控制,是要实时根据自身状态和期望状态去进行反馈控制,控制量的改变间隔在10毫秒左右即可,当然考虑到汽车本身的特性,这个间隔量可以根据性能需求来确定。
算法与AI模型
前面介绍的自动驾驶汽车的软硬件情况,各个软件模块的核心是算法,总结如下:
感知模块涉及算法:多传感器信息融合技术(卡尔曼滤波等)、模式识别技术、图像处理技术、深度学习技术、SLAM技术、高精地图构建技术等
规划模块涉及算法:图搜索技术、有限状态机、路径规划算法、轨迹规划算法等
控制模块涉及算法:PID比例-积分-微分控制技术,MPC模型预测控制技术等。
AI模型方面:点云高精地图匹配、车道线检测、行人检测、交通信号灯识别、标志识别、行为检测等都需要利用深度神经网络训练好的模型去实时预测。
AI模型的运行流水线大致如下:利用Python得天独厚的条件、大量采集的离线数据、TF等深度学习工具训练目标模型====》利用C++的高性能优势,基于深度学习工具API,调用训练好的AI模型====》根据当前感知输入,利用模型给出预测结果。
领取专属 10元无门槛券
私享最新 技术干货