分享

自动驾驶车辆调试:一辆车如何变身L4级无人车?

 宋洋sy 2019-10-18
01

从L0到L4级无人车,“新手”的蜕变

如何教人开车与如何调试自动驾驶车辆有很多共通之处。

步骤一:线控改装

线控,即不通过传统机械结构去连接方向盘和前轮,而是通过导线。说得通俗点,就相当于你用一台模拟方向盘/游戏手柄玩赛车游戏。

那么,什么样的车适合被改装进而用来做自动驾驶呢?

简单讲,不同的改装方案决定了可选择的车辆范畴。一个极端的例子是,如果选择采用在驾驶位上放一个仿真机器人来实现自动驾驶车辆的功能,那么所有人类可驾驶的车辆都能纳入改装的范围。在现有技术条件下,这个“极端”的改装方案在系统响应和安全性上有比较大的问题,所以我们今天讨论的是通过改装一些“底子”本身比较好的车辆来实现线控。

性能测试的指标与安全性非常相关,也是最受车出厂自身配置限制的一个指标。比如,一辆豪华小轿车和一辆普通大卡车的响应时间肯定不一样。大卡车的响应或者反馈时间可能会比小轿车长将近100毫秒,这时如果针对大卡车进行自动驾驶研发,则必须采取相对偏保守的规划策略。

步骤二:地图及计算平台

地图决定了自动驾驶能行驶的区域,通常来说地图采集会是检测好车辆的下一步。

拿驾校学习的例子来看,这就是我们熟悉场地的过程,我们需要仔细检查场地里有多少路口,S形弯道从哪里开始,坡道的坡度多少,红绿灯的大概位置在哪里,做到这些都了然于胸了,再去上车实际操作。

高精度地图的细节在之前的分享中已经提到,这里我不做过多介绍。

除了地图之外,还有一个重点是搭建车载计算平台,主要包含:稳定的供电系统,通信系统,存储系统和计算系统。

在设计时,计算平台既要在保证可靠性和高性能,同时也要兼顾灵活性,这需要系统的软件与硬件有很好的协作。计算平台的好坏是所有车上系统的基础,计算平台的性能高低与车辆行驶的最终效果直接相关,决定了整个自动驾驶系统的上限。

步骤三:传感器与定位

标好地图并搭建完计算平台之后,我们就可以基于现在的情况,进行传感器的选型。

自动驾驶领域常见的传感器包括激光雷达,毫米波雷达和摄像头等,能够提供这些传感器的供应商也非常多。自动驾驶技术研发会基于自身需求做不同的考量,考量标准包括:传感器的成本、功耗、性能以及视野。

传感器的安装是感知和定位的基础,根据自身特性,不同传感器对于安装朝向、方式会有不同的要求,比如某些传感器需要与车体刚性连接,而有的传感器需要有比较好的减震保护等等。

安装后要做的第一件事就是标定,简单来讲,标定包括内参标定和外参标定,内参标定是为了去掉一些传感器自身内部数据的一些误差,而外参是为了让自动驾驶系统明白各个传感器被安装在什么位置,以便做数据融合和进一步的感知。

定位模块的作用是提供车辆的运动状态,包括车辆的位置,速度以及朝向等。

步骤四:感知系统

当传感器安装好后,自动驾驶系统就可以进行原始数据的采集。首先装有传感器的车需要在测试区域不断地测试,目的是采集足够多的道路数据,为感知做准备。

采集到的数据会用于模型训练和算法迭代。每一版感知模型生成并通过评估之后,都会在进行上车测试,通过不断地迭代感知系统,它开始拥有障碍物和简单交通标志的识别能力。

讲到这儿,这辆“新手”车已经具有了基本的感知能力,虽然还没有到车辆控制的阶段,但它已经可以对于车辆周围的危险进行一些基本的警示。这就是目前一些车辆L0级别功能的思路,包括 PDC(泊车辅助装置,俗称倒车雷达),FCW(前方碰撞预警系统),LDW(车道偏离预警系统)。当然,这些系统并不要求有高精度地图以及线控改装。

步骤五:控制系统

接下来就要调试控制模块。一般车辆控制分为纵向和横向两方面:纵向控制是为了通过油门和刹车来控制车轮转速,而横向控制是通过方向盘来控制车辆行驶方向。

对于自动驾驶控制系统,初期我们也会按照先纵向后横向的方式去调试,场地一般都是在封闭道路上。

当车辆通过横纵向独立测试后,我们会进行集成测试,先由人手动开一个任意轨迹,然后将其中经过的一些位置点记录下来当作控制模块的input(输入),通过不断调试让车辆能够自动沿着记录下来的轨迹行驶。

到这个阶段,“新手”车拥有了模仿能力。如果还拿学驾照比喻,此时我们已经可以完成教练演示过的操作,也就是说我们可以去考科目二了。

这就是L1和L2的思路,他们的共同点是没有强大的规划模块,但是基本完成了对感知系统和控制模块的掌握。

步骤六:规划系统

真实的路况远远比直线加速和简单循迹复杂得多。

为了实现车辆真正的自动驾驶,我们还需要拥有足够强大的规划系统。简单讲,规划系统的作用就是基于当前车辆周围环境决定车辆接下来怎么走。

这有点像驾校考试的科目三练习里,教练会给学员下指令变道还是掉头,决定什么时候应该将车辆加速到50km/h,在实际自动驾驶车的调试过程中也是类似的。只不过我们会充当教练的角色,而自动驾驶系统就是学员。

配备了部分L3级别辅助驾驶功能的汽车一般拥有类似简单的规划能力,比如自动泊车系统。车辆配备的功能以及可完成的规划/决策越复杂,其自动驾驶级别也就相应越高。

通过了前面的测试,也就可以说我们的系统考过了科目三,可以持证上路了。但取得驾驶证/测试牌照与会开车并不等价,生活中大家周围都会有一些持证十多年但是从未开上过公开道路的“资深”司机,这说明如果要进一步提升能力成长为驾轻就熟的“老司机”,仍然需要不断地练习。

步骤七:驾驶技能迭代

最后一步其实是小马智行对于自动驾驶系统内部功能开发的一个基本流程。一个新功能从 idea(想法)被提出到代码实现,基本需要经过以下流程:

首先,功能开发完成之后需要先在内部的模拟环境中充分测试,模拟环境包含丰富的测试场景,这其中的测试场景既来自于程序生成,也来自于之前的真实路测。

其次,在完成仿真测试之后,需要对新功能进行实车路测。为了保证系统的平稳迭代和发布,我们会随着功能的稳定程度的提升,一步步增加实际路测环境的复杂程度。实车路测的全部数据都会被很好记录并被有效追踪,其中暴露出来的问题会被重新加入到仿真环境的测试样例中。

直到现有版本通过所有测试,才可以进行下一次路测流程。只有当一个功能在路测中被测试了足够长时间并且没有问题,我们才会将它作为稳定版本发布

正是经过这样一步一步的迭代,“新手”车从最开始只能开直线、转弯、掉头,到最后能完成一些超车、加塞等高级的“老司机”动作。

02

成为“老司机”之后


考虑到自动驾驶的目标是用机器代替人的操作,在教会一辆车成为“老司机”之后,理论上也可以教会一群车成为“老司机”。

这也意味着,我们可以建立一支自动驾驶车队,而车队中每辆车的驾驶技术都一样娴熟。

建立这样的一支车队,对于自动驾驶整体解决方案的稳定性要求是很高的,但它同时也带来了很多好处,除了数据采集速度成倍提升以外,我们可以同时在多辆车上测试不同的功能或者进行对照试验,算法的迭代效率也大大提升了。

另外,我们还可以将“教”自动驾驶系统开小轿车的经验移植到大卡车、公交车上,就像人类驾驶员增持驾照一样。这同样是非常值得尝试的方向,也是我们在努力的方向。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多