一个合格的自动驾驶产品一定具备两种基本能力:自动行走能力及自动作业能力。前者是该产品能称之为自动驾驶产品的根本,它的关键在于自动驾驶软件系统的设计,也是本文重点介绍的对象;后者会在下文重点讲述。
对于一个自动驾驶产品,如果说车身底盘及壳体等是其骨架,制动、转向等执行器是其手脚,雷达、摄像头等 传感器 是其眼睛与耳朵,车规级线束、接口等是其血液,那么自动驾驶软件系统就是自动驾驶产品的大脑。核心大脑部分包括负责感知世界、认知自我的感知及定位系统,负责行为分析决策的决策规划系统,负责指导执行的控制系统及 车辆 平台软件,以及负责任务交互的人机交互系统。
上一期文章介绍了蜗小白的骨架、眼睛、耳朵、手脚及血液,接下来则重点介绍蜗小白自动行走大脑,即自动驾驶软件系统。主要分为以下五个部分:
系统软件架构
环境感知系统
地图与定位系统
决策规划系统
车辆控制系统
一、系统软件架构
如果将蜗小白自动驾驶软件系统比作大脑,系统软件架构就是对大脑的组织与结构进行设计。从概念上来说,软件架构是对软件组织与逻辑关系的描述。良好的架构设计可以大大降低软件设计与开发的复杂性,同时能够满足用户对软件系统性能的要求。
那么具体到蜗小白,软件架构设计会面临什么挑战呢?
首先,蜗小白采用了大量复杂算法以应对各种作业场景,这些算法通常具有计算时间长、计算时间抖动大等问题。需要在大量复杂计算的基础上确保系统反应时间。
其次,蜗小白属于L4级 无人驾驶 系统,作业安全是其系统设计的基础。必须从软件架构角度出发,设计一套适用于整个产品生命周期的安全性保障机制。
最后,算法的持续发展使得感知、定位、决策、控制等核心模块的能力快速提高。软件架构必须具备良好的升级能力,以确保新的软件算法与硬件不会对整个软件系统稳定性产生非常大的影响。
为了解决上述问题,蜗小白通过软件分层、核心任务重点保障等方法达到良好的软件可升级性、计算资源分配效率。蜗小白软件架构如图2所示。总的来看,蜗小白软件系统包括三大部分:自动驾驶操作系统、云端平台及移动端APP、车辆底层平台。
其中,AVOS又分为应用层软件与支持层软件。应用层软件主要负责实现自动驾驶功能,其主要包括感知、定位、决策规划、控制等自动驾驶核心功能,以及OTA升级、HMI、远程任务管理等附属功能。支持层主要用于保障系统性能与稳定性,其主要包括关键任务运行状况监控、计算资源调度、通信、传感器与计算平台时间同步、系统运行监控、诊断和日志等功能。应用层与支持层架构的深度优化为蜗小白量产打下坚实基础。
二、环境感知
环境感知技术是利用各类传感器采集车辆周围的环境信息,通过智能算法对空间环境进行建模,从而实现对空间动态环境深刻理解的过程。看上去很深奥的样子,其实简单来说就是利用 激光雷达 、超声波雷达、摄像头等传感器感知周围的世界,并且分析周围有什么可能会影响小白行驶的物体,然后利用感知的信息进行避障、行驶等驾驶行为。
蜗小白感知传感器包括激光雷达、超声波雷达和摄像头。激光雷达用于远距离探测,能实现环境建模、定位、路面检测、障碍物识别等功能;超声波雷达用于近距离探测,包括近距离障碍物检测、紧急避障等;摄像头主要用于障碍物识别、环境建模、增强定位、视频监控等功能。
摄像头就像是小白的眼睛,激光、超声波雷达就像是小白的耳朵。有了眼睛和耳朵,小车就能感知周围的环境。
为了支持复杂场景下的自动行走及安全作业,小白的感知能力必须达到L4级别。常见的城市结构化道路感知系统面对的场景,需要识别的目标较为单一:车、行人、非机动车、车道线等,如下图所示。
但是蜗小白日常的工作场景相对复杂,需要覆盖社区道路、广场、园区等,检测目标类型多样且存在各种意外状况,比如下面这样的场景。
蜗小白需要检测影响车辆通行的所有障碍物,否则就有可能出现安全风险。为了保证蜗小白在复杂运营环境中感知功能的稳定可靠,他必须通过所有你想得到和想不到的各类测试,例如下图的各类测试物品。
除此之外,蜗小白还有自己的杀手锏:能够识别各种类型的道路边界,并在此能力的基础上实现了高精度贴边清扫。
三、定位与地图系统
在谈论地图与定位系统之前,我们不妨先来想想一个基本的问题:人们是如何过马路的?显然,我们在过马路时要做两件非常简单,却又非常必要的事情:低头查手机,抬头看车辆。
“低头查手机”,是因为当我们身处陌生的城市,手机会告诉我们自身的位置及到达目的地的路线,这是我们在陌生城市中的自我定位。“抬头看马路”,是希望了解周围来往的车辆及行人,以防被撞到,这就属于上段介绍的环境感知范畴了。
蜗小白在行走和作业时,同样面临这两个问题,其中高精度定位帮助蜗小白完成“低头查手机”的部分。无论在哪条道路上,蜗小白必须精确地知道自己身处何方。为了确定自身的位置,它必须把自己看到的信息与一张地图进行比较,而这张地图代表了它对周围环境的先验认知。
蜗小白工作环境的复杂性及多样性,给三维场景重建带来了诸多挑战:
1、盘旋交错的不规则道路,高低错落的3D环境,极大地增加了点云拼接和闭环检测的难度;
2、公园、商业街、工业园区、住宅小区、学校等多种多样的应用场景下快速的标准地图生产流水线作业;
3、因季节变化、局部场景变化导致的局部地图更新,保证地图的时效性和准确性。
通过以下图片可以看出,无论场景多大多复杂,无论楼宇多密集,无论道路多曲折,蜗小白都能够完成精准的三维环境重建。
蜗小白典型作业场景包括校园、公园、工厂、社区、广场、科技园区等,相对当前自动驾驶乘用车行驶的高速公路和城区主干道,其对激光雷达、惯性传感器、卫星导航和轮速计等定位传感器的可用性要求更高,需要克服环境变化导致激光/视觉误匹配、楼宇/树木遮挡带来的GPS多路径误差及长时间失效、低成本惯性传感器器件误差、轮速计测量噪声等问题。
蜗小白选用低成本定位传感器,采用传感器原始信息进行故障诊断和融合滤波后定位信息再校验的双重保障,解决了融合定位连续性和高可靠性双重矛盾,实现复杂多样封闭区域无缝导航定位,清扫作业时平均定位精度优于10cm。
四、决策规划系统
决策规划系统是蜗小白自动驾驶大脑的中枢。具体来说,决策规划系统需要解决两个问题:蜗小白接下来做什么,怎么做?“做什么”就是行为决策,判断蜗小白是要回到功能点还是进行全覆盖清扫、是要直行还是避障、是要停等还是靠边让行等等;“怎么做”就是轨迹规划,计算如何运动才能实现返回、清扫、避障、让行等行为。通过对环境感知系统和地图定位系统给出的信息进行综合分析,再结合当前任务,对车辆应该执行的行为进行合理决策,同时计算出对应这个行为的一条车辆行驶轨迹,最后将这条轨迹交给控制系统进行跟踪。
蜗小白行驶的环境通常是一些封闭园区,没有公共道路上那些具体的道路标志标线和交通规则,也没有换道、超车、汇入等交通行为,看似会比乘用车简化些。但也正因为行驶环境没有具体交通规则约束,环境中的其他参与者也更加复杂并且不可预测,这给轨迹规划带来了巨大的挑战。乘用车躲避障碍物一般比较简单,不会面临太复杂的工况,但是我们的小白就可能会遇到狭窄拥堵的胡同,也可能会遇到人流密集的广场,环境的复杂与随机性使得小白面临的轨迹规划问题异常复杂,如下图所示。
通过结合多种避障模式,蜗小白已经可以实现各种复杂工况下的自由行驶。
除了行驶和避障以外,蜗小白的本职工作还是清扫,为了将地面清扫干净,蜗小白必须走过所有需要清扫的路面,这就是蜗小白需要解决的另一个规划问题——全覆盖路径规划。使用过扫地机器人的朋友应该知道,扫地机器人是以一种类似地毯式搜索的模式进行清扫的,蜗小白的全覆盖路径规划与扫地机器人的地毯式清扫目的相同,但是两者差异很大,有以下几方面原因:
1、作业环境不同:扫地机器人是在一般的室内工作,其环境一般都是笔直的墙面组成的规则矩形,而蜗小白工作的环境有各种可能,导致清扫区域可能是各种复杂的形状,单纯的走直线无法覆盖所有地面;
2、转向系统不同:扫地机器人一般都可以原地转向,所以即使是折线路径也可以完美跟踪,而蜗小白是前轮转向,且体型较大,有最小转弯半径限制,只能沿着曲率连续的曲线行驶,如果清扫路径不光滑或超出转弯半径限制,自然也无法精确跟踪,更谈不上全覆盖了;
3、外形轮廓不同:扫地机器人一般都设计成圆形,因此其原地转向时不会撞到障碍物,非原地转向时路径宽度即代表了碰撞关系,而蜗小白近似为矩形,沿着曲线清扫路径行驶时其车体在路径两侧的分布是不对称的,因此单纯的路径宽度无法表达蜗小白的碰撞关系,全覆盖路径必须考虑到这一点才有实际意义。
以上差异导致扫地机器人的全覆盖路径和蜗小白的全覆盖路径完全不是一个难度层次的问题,如下图所示。
经过智行者小伙伴们无数个日日夜夜的设计和调试,最终我们摸索出来一套有效的全覆盖路径生成办法,大家看看效果。
正是有着这样强大的通行能力和全覆盖清扫能力,我们的蜗小白才能在各种复杂环境下圆满完成任务。
五、车辆控制
车辆控制系统是基于车辆实时状态信息,通过控制车辆转向、驱动、制动执行器实现对车辆期望轨迹的精确跟踪控制。我们可以把车辆的转向、驱动、制动等执行器比作小白的手脚,控制系统就是接收小白前端大脑发出的指令后,按照指令操控手脚执行动作的模块,如图所示。
蜗小白作为L4级别低速自动 清扫车 ,需要实现复杂环境下的全自动行走及作业功能,对车辆控制提出了很大的技术挑战。
如复杂环境下的贴边清扫功能,要求车辆的循迹控制具备厘米级精度并保证其贴边控制的安全性。又如,小白在作业时需要进行无线充电与垃圾清倒,厘米级精度的定点停车功能也是小白需要具备的。
除此之外,对于车辆控制极具挑战的技术难题在于产品的自动适配,车辆个体必然存在差异,如何实现成千上万辆的小白具备高精度且高一致性的控制能力,这是量产控制系统必须要解决的问题。