社会焦点

无人驾驶刚刚开始的未来(2)

字号+ 作者: 来源: 2017-05-25

卷积神经网络(CNN)是一类在物体识别中被广泛应用的深度神经网络。通常,卷积神经网络由三个阶段组成:1. 卷积层使用不同的滤波器从输入图像中提取不同的特征,并且每个过滤器在完成训练阶段后都将抽取出一套“可

  卷积神经网络(CNN)是一类在物体识别中被广泛应用的深度神经网络。通常,卷积神经网络由三个阶段组成:1. 卷积层使用不同的滤波器从输入图像中提取不同的特征,并且每个过滤器在完成训练阶段后都将抽取出一套“可供学习”的参数;2. 激活层决定是否启动目标神经元;3. 汇聚层压缩特征映射图所占用的空间以减少参数的数目,并由此降低所需的计算量;4. 对物体进行分类。一旦某物体被CNN识别出来,下一步将自动预测它的运行轨迹或进行物体追踪。

  无人驾驶刚刚开始的未来

  图5 面向行为预测的随机模型

  物体追踪可以被用来追踪邻近行驶的车辆或者路上的行人,以保证无人车在驾驶的过程中不会与其他移动的物体发生碰撞。近年来,相比传统的计算机视觉技术,深度学习技术已经展露出极大的优势,通过使用辅助的自然图像,离线训练好的模型直接应用在在线的物体追踪中。

  决策

  在决策阶段,行为预测、路径规划以及避障机制三者结合起来实时完成无人驾驶动作规划。

  行为预测

  车辆驾驶中的一个主要考验是司机如何应对其他行驶车辆的可能行为,这种预判断直接影响司机本人的驾驶决策,特别是在多车道环境或者交通灯变灯的情况下,司机的预测决定了下一秒行车的安全。因此,过渡到无人驾驶系统中,决策模块如何根据周围车辆的行驶状况决策下一秒的行驶行为显得至关重要。

  为了预测其他车辆的行驶行为,可以使用随机模型产生这些车辆的可达位置集合,并采用概率分布的方法预测每一个可达位置集的相关概率。

  路径规划

  为无人驾驶在动态环境中进行路径规划是一件非常复杂的事情,尤其如果车辆是在全速行驶的过程中,不当的路径规划有可能造成致命的伤害。路径规划中采取的一个方法是使用完全确定模型,它搜索所有可能的路径并利用代价函数的方式确定最佳路径。然后,完全确定模型对计算性能有着非常高的要求,因此很难在导航过程中达到实时的效果。为了避免计算复杂性并提供实时的路径规划,使用概率性模型成为了主要的优化方向。

  避障

  安全性是无人驾驶中最为重要的考量,我们将使用至少两层级的避障机制来保证车辆不会在行驶过程中与障碍物发生碰撞。第一层级是基于交通情况预测的前瞻层级。交通情况预测机制根据现有的交通状况如拥堵、车速等,估计出碰撞发生时间与最短预测距离等参数。基于这些估计,避障机制将被启动以执行本地路径重规划。如果前瞻层级预测失效,第二级实时反应层将使用雷达数据再次进行本地路径重规划。一旦雷达侦测到路径前方出现障碍物,则立即执行避障操作。

  Client系统

  Client系统整合之前提到的避障、路径规划等算法以满足可靠性及实时性等要求。Client系统需要克服三个方面的问题:其一,系统必须确保捕捉到的大量传感器数据可以及时快速地得到处理;其二,如果系统的某部分失效,系统需要有足够的健壮性能从错误中恢复;其三,系统必须在设计的能耗和资源限定下有效地完成所有的计算操作。

  机器人操作系统

  机器人操作系统ROS是现如今广泛被使用、专为机器人应用裁剪、强大的分布式计算框架。每一个机器人任务,比如避障,作为ROS中的一个节点存在。这些任务节点使用话题与服务的方式相互通信。

  ROS非常适用于无人驾驶的场景,但是仍有一些问题需要解决。

  • 可靠性:ROS使用单主节点结构,并且没有监控机制以恢复失效的节点。

  • 性能:当节点之间使用广播消息的方式通信时,将产生多次信息复制导致性能下降。

  • 安全:ROS中没有授权和加密机制,因此安全性受到很大的威胁。

  •   尽管ROS 2.0 承诺将解决上述问题,但是现有的ROS版本中仍然没有相关的解决方案。因此为了在无人驾驶中使用ROS,我们需要自行克服这些难题。

      可靠性

      现有的ROS实现只有一个主节点,因此当主节点失效时,整个系统也随之奔溃。这对行驶中的汽车而言是致命的缺陷。为了解决此问题,我们在ROS中使用类似于ZooKeeper的方法。如图6所示,改进后的ROS结构包括有一个关键主节点以及一个备用主节点。如果关键主节点失效,备用主节点将被自动启用以确保系统能够无缝地继续运行。此外,ZooKeeper机制将监控并自动重启失效节点,以确保整个ROS系统在任何时刻都是双备份模式。

      无人驾驶刚刚开始的未来

      图6 面向ROS的Zoo-Keeper结构

      性能

      性能是现有ROS版本中有欠考虑的部分,ROS节点之间的通信非常频繁,因此设计高效的通信机制对保证ROS的性能势在必行。首先,本地节点在与其他节点通信时使用回环机制,并且每一次回环通信的执行都将完整地通过TCP/IP全协议栈,从而引入高达20微秒的时延。为了消除本地节点通信的代价,我们不再使用TCP/IP的通信模式,取而代之采用共享内存的方法完成节点通信。其次,当ROS节点广播通信消息时,消息被多次拷贝与传输,消耗了大量的系统带宽。如果改成目的地更明确的多路径传输机制则将极大地该改善系统的带宽与吞吐量。

      安全

      安全是ROS系统中最重要的需求。如果一个ROS节点被挟制后,不停地在进行内存分配,整个系统最终将因内存耗尽而导致剩余节点失效继而全线奔溃。在另一个场景中,因为ROS节点本身没有加密机制,黑客可以很容易地在节点之间窃听消息并完成系统入侵。

      为了解决安全问题,我们使用Linux containers (LXC)的方法来限制每一个节点可供使用的资源数,并采用沙盒的方式以确保节点的运行独立,这样以来可最大限度防止资源泄露。同时我们为通信消息进行了加密操作,以防止其被黑客窃听。

      无人驾驶刚刚开始的未来

      图7 基于Spark和ROS的模拟平台硬件平台

      为了深入理解设计无人驾驶硬件平台中可能遇到的挑战,让我们来看看现有的领先无人车驾驶产品的计算平台构成。此平台由两个计算盒组成,每一个装备有Intel Xeon E5处理器以及4到8个Nvidia Tesla K80 GPU加速器。两个计算盒执行完全一样的工作,第二个计算盒作为计算备份以提高整个系统的可靠性,一旦第一个计算盒发生故障,计算盒二可以无缝接手所有的计算工作。

    转载请注明出处。


    1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

    相关文章