创建自动驾驶器

Donkey支持三种类型的自动驾驶器:深度学习自动驾驶器、路径跟随自动驾驶器和计算机视觉自动驾驶器。

如果您按照创建Donkeycar应用程序部分的步骤进行操作,那么您应该知道在使用createcar命令创建mycar应用程序文件夹时可以选择使用哪个模板。

本节将介绍这些模板的用途,然后我们可以开始训练自动驾驶器。

深度学习自动驾驶器

深度学习自动驾驶器使用一个前置摄像头和一个卷积神经网络来实现自动驾驶,采用了一种称为行为克隆(也称为模仿学习)的技术。行为克隆的目标是创建一个模仿人类行为的自动驾驶器。这是Donkeycar最早支持的自动驾驶器类型,也是其最为知名的。对于驾驶汽车,整个过程如下所示:

  • 人类驾驶汽车来收集数据。当您手动驾驶汽车绕着赛道行驶时,Donkeycar每秒记录数据20次。每个数据都包含3个组成部分:一个摄像头图像、油门值和在拍摄图像时的转向值。我们希望收集大约10,000个这样的数据。
  • 清理数据。我们不希望数据中包含驾驶错误,比如偏离赛道或撞到障碍物。或者,我们可以在驾驶过程中删除此类数据,以防止其进入数据集。
  • 使用收集的数据来计算(训练卷积神经网络
  • 使用训练好的CNN来根据图像推断出油门和转向值。因此,在自动驾驶模式下,我们会拍摄一张图像,将其输入CNN中,获取油门和转向值,并将它们应用到车辆的硬件上。我们每秒这样做20次,这样就实现了自动驾驶!

由于深度学习自动驾驶器依赖于摄像头图像,所以光线条件非常重要。深度学习模板非常适合室内赛道,因为可以控制光线条件和房间的细节,但在室外环境中,光照条件不稳定且环境变化较大,可能更难使其正常工作。

附注: Donkeycar对深度学习驾驶的方法受到了Nvidia的一篇研究论文的启发,该论文名为End to End Learning for Self-Driving Cars

训练深度学习自动驾驶器

路径跟随自动驾驶器(使用GPS、轮子编码器等)

路径跟随模板是深度学习模板的一种替代方案。在室外,我们可以使用GPS。路径跟随模板允许您使用GPS接收器记录路径,然后配置一个可以跟随该路径的自动驾驶器。整个过程如下所示:

  • 人类驾驶汽车来收集数据。数据是通过GPS接收器获取的,表示为米单位的(x,y)位置。每个(x,y)位置称为一个路标点(waypoint)。用户将驾驶一次来收集路标点。完整的路标点集合称为路径(path)。
  • 自动驾驶器从GPS接收器获取汽车当前的(x,y)位置,然后找到路径中最接近的两个点,并调整汽车的转向以朝向路径。它每秒执行这个操作20次,现在我们在行驶!

在下一节中,将详细介绍更多细节。

训练路径跟随自动驾驶器

计算机视觉自动驾驶器

计算机视觉自动驾驶器使用传统的计算机视觉技术,如颜色空间转换和边缘检测算法,来识别摄像头图像中的特征,并将其转化为转向和油门值。这种自动驾驶器相对于其他自动驾驶器具有优势,因为它不需要手动驾驶来收集数据。相反,您将选择或编写一个计算机视觉算法,并修改算法参数以适应赛道。这个自动驾驶器专门设计为使您能够使用OpenCV库和许多Donkeycar提供的基本元素轻松编写自己的算法。

  • 人类选择计算机视觉算法,并修改参数,直到它提供准确可靠的转向和油门值。
  • 人类将汽车放在赛道上,并从用户模式切换到自动驾驶模式。
  • 在自动驾驶模式下,摄像头拍摄的图像传递给计算机视觉算法进行解释,并输出转向和油门值。它每秒执行这个操作20次,现在我们在行驶!

在下一节中,将详细介绍内置算法以及如何编写自己的算法。

计算机视觉自动驾驶器