Autopilot研发总监Ashok:电动车如何检测障碍物并自动避让

  • 来源:电脑报
  • 关键字:关注,电动车,研发
  • 发布时间:2022-09-22 19:38

  8月底, 伴随着FSD beta10.69版本的发布, 特斯拉自动驾驶Autopilot研发总监Ashok Elluswamy(艾什克·艾卢艾米,以下文章用第一人称表述)公布了一段视频,其中特别演示了一段智能电动车如何实时检测车辆周围的障碍物,并如何进行自动避让的影像。实际上,自动驾驶和避障、刹停,在国内一直是车迷们热议的话题,也是大家从油换电绕不开的关注点。

  Autopilot的基本情况

  人们也许不知道,过去几年生产的每一辆特斯拉,都带有Autopilot基本功能。Autopilot基本功能允许车辆保持车道,跟随前车,弯道减速,等等。除了Autopilot基本功能,电动车还配备了标准安全功能,这些功能,如紧急制动、紧急转向,可以避免许多类型的碰撞。

  目前大约有10万辆特斯拉拥有完全自动驾驶FSDbeta软件,这是目前最先进的自动驾驶软件,它能够处理从停车场到城市街道,再到高速公路的所有驾驶过程。这个软件可以控制汽车在交通灯和停车标志前停车,合理避让横穿的车辆,并执行有交通灯保护和无保护的左转和右转,绕过停放的汽车和其他障碍物。

  比如这些在旧金山密集的街区里开车的视频。你在视频里看到的所有内容,如道路边界、车道线、车辆,包括它们的位置、方向和速度,都是在我们车载计算机上,接收8个120万像素的摄像头数据,运行算法和神经网络生成的。

  电动车如何处理一般障碍物

  当开始搭建高级的技术栈时,我们想用某种方法来表示一般障碍物,一开始使用的是图像空间的分割方法,这几乎是个标准方法。这里,图像空间的每个像素,都被标记为可驾驶或不可驾驶。然后,我们希望规划技术栈可以使用这个信息来导航场景。

  但这种方法有几个问题。首先,这些关于某个像素是否可驾驶的预测是在图像空间中完成的,基于图像的UV值,或者说,某个像素是可驾驶的像素,还是不可驾驶。但为了让汽车能够在三维世界中导航,它需要在三维空间中进行预测,这样才能建立互动的物理模型,并处理驾驶任务。

  但在从图像空间转变到三维空间的过程中,如果采用这样的方式,像素分割会在系统中产生不必要的瑕疵或不必要的杂讯。

  对一般障碍物进行建模的另一个方法,是使用密集的深度信息。在这个任务中,你可以以像素为基础,让网络预测深度,这样每个像素都会产生某个深度值。

  但是,尽管这些深度图在颜色空间中进行可视化时,看起来非常漂亮,但把射线反向投影计算得到三维点,并可视化这些三维点云时,你就会发现随着距离的增加,它们就变得不一致,而且数据很难被后续流程所使用。例如,局部的深度变得不一致,因此,墙就不直了,可能是弯弯扭扭的。

  这些深度图是基于每个摄像机的图像平面生成的,很难生成一个汽车周围统一的三维空间。对于这个问题,我们的解决方案就是内部所称的占用网络(OccupancyNetwork)。

  什么是占用网络?

  占用网络,是一种基于学习的三维重建的方法,在应用层面,汽车接收所有8个摄像机流作为输入,并生成一个车周围空间体积化的占用值。汽车周围的每一个位置,网络都会生成是否被占用的结果。事实上,它生成了一个三维位置被占用或不被占用的概率值。

  如我所说,它接收所有8个摄像头作为输入,并生成了一个单一的体积化的输出。这个输出的产生,并不是通过拼接各个独立的预测结果完成的,而是网络完成所有的内部传感器融合,并产生一个单一的一致的输出空间。

  这些网络能生成静态物体的占用值,比如墙壁和树木之类的东西,也能生成移动物体的动态占用值,比如车辆(大多数情况下),但有时,也包括其他移动的障碍物,如道路上的碎片.由于输出空间直接是在三维空间中,我们可以通过遮挡来进行预测,你可以预测一条曲线的存在,尽管它可能暂时被汽车遮挡。

  这个方法在内存和计算方面都非常高效,尽管表面上看可能并非如此,因为它生成了密集的三维的占用值,看起来可能体积过于庞大。但最终,在内存和计算效率上,这是一种更优的方法,因为它把分辨率分配在那些关键的地方。

  密集的深度图或图像中的可驾驶空间,远处的分辨率非常低,而近处的分辨率非常非常高。但在占用网络中,在与驾驶有关的所有体积中,分辨率几乎都一致,这让它变得极其高效。例如在我们的计算平台上运行的时间小于10毫秒,这使得网络可以以100赫兹的速度运行,比摄像机产生图像的速度快得多。

  避障和刹车,需要让人类满意吗?

  当我们开始这个项目的时候,最初的目标是只处理静态物体,如墙或树。因为我们有很多不同的神经网络在车内运行,处理不同类型的障碍物,我们并没有继续搭建一个主要处理移动物体的网络,如车辆、行人、自行车手等。

  而这时网络也生成了车辆的完整运动学数据,如速度、加速度、动力等。

  当时我们想,好的,这里不需要处理移动物体,只需要处理静态物体,如树、墙等。但事实证明,这是有问题的,比如有一辆皮卡车看起来像一个栅栏。

  当一辆车在高速公路上移动时,我们显然知道,它是一个移动物体,它被计算机正确判断为一辆卡车。但当车辆在红绿灯下停了好几分钟后,好吧,它看起来像个栅栏。但显然,任何人都不想开车撞上这辆车,我们想要绕过它,或者适当地放慢速度。

  这显然是一场不可能打赢的仗,我们也不想打这场仗,我们只想避开这些障碍物,既不撞到移动的,也不撞到静止的障碍物,不撞到任何东西。我们解决这个问题的方法,是在同一个框架中同时生成移动和静止的障碍物,这样一来,就不会有什么东西在移动和静止之间的缝隙中逃脱。

  为了说明这一点,举一个假想的例子,如果一辆汽车拥有无限的动力,它在高速公路上全速行驶,时速比如65英里。然后就在撞车前,在距离撞车前几厘米,它进行了猛烈的刹车,使用了几乎无限的制动力。显然,它会在撞上障碍物的那一瞬间之前停下来。

  这样做,虽然说达成了安全的目标,但首先,这不现实,因为没有一辆汽车有无限的制动力。即使它有无限的制动力,我们也不想不必要地加以使用。例如,对于我们的特斯拉来说,它有每平方秒10到11米的制动力,但我们也不希望在不必要的情况下使用这所有的制动力。

  其次,汽车可以开得很慢,比如汽车以1~2英里的时速低速“蠕动”。它可以在任何时候刹车,可以非常容易地避免碰撞,但开这么慢就太烦人了。这就是为什么我说,要以安全、舒适和速度合理的方式进行驾驶,驾驶员还需要一点点智慧。

关注读览天下微信, 100万篇深度好文, 等你来看……