

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 了解赛车类型并启用 AWS 支持的传感器 DeepRacer
<a name="deepracer-choose-race-type"></a>

在 AWS Le DeepRacer ague 中，您可以参加以下类型的赛车赛事：
+ **计时赛**：在畅通无阻的赛道上争分夺秒，力求以最快的速度完成一圈。
+ **避障赛**：在有固定障碍物的赛道上争分夺秒，力求以最快的速度完成一圈。
+ **Head-to-bot 赛车**：在同一条赛道上与一辆或多辆其他车辆竞赛，目标是在其他车辆之前越过终点线。

AWS DeepRacer 社区竞赛目前仅支持计时赛。

您应该在 AWS DeepRacer 车辆上尝试使用不同的传感器，使其具备足够的能力来观察给定比赛类型的周围环境。下一节将介绍 [AWS DeepRacer 支持的传感器，这些传感器](#deepracer-how-it-works-autonomous-driving-sensors)可以支持支持的自动驾驶赛事类型。

**Topics**
+ [为 AWS DeepRacer 赛车类型选择传感器](#deepracer-how-it-works-autonomous-driving-sensors)
+ [配置用于训练 AWS DeepRacer 模型的代理](#deepracer-configure-agent)
+ [为计时赛量身定制 AWS DeepRacer 培训](#deepracer-get-started-training-simple-time-trial)
+ [为避开物体竞赛量身定制 AWS DeepRacer 训练](#deepracer-get-started-training-object-avoidance)
+ [为 head-to-bot比赛量身定制 AWS DeepRacer 训练](#deepracer-get-started-training-h2h-racing)

## 为 AWS DeepRacer 赛车类型选择传感器
<a name="deepracer-how-it-works-autonomous-driving-sensors"></a>

您的 AWS DeepRacer 车辆配有前置单目摄像头作为默认传感器。您可以添加另一台前置单目摄像机来制作前置立体摄像机，或者使用 LiDAR 单元来补充单目摄像机或立体摄像机。

以下列表总结了 AWS DeepRacer 支持的传感器的功能以及简要 cost-and-benefit分析：

**前置摄像机**  <a name="term-deepracer-sensor-front-facing-monocular-camera"></a>
 单镜头前置摄像机可以捕捉主机赛车前方环境的图像，包括赛道边界和形状。它是最便宜的传感器，适用于处理更简单的自动驾驶任务，例如在标记良好的赛道上进行无障碍计时赛。通过适当的训练，它可以避开赛道上固定位置的静止障碍物。但是，障碍物位置信息内置在经过训练的模型中，因此，该模型可能会过度拟合，并且可能无法推广到其他障碍物的放置位置。当静止物体放置在随机位置上或赛道上有其他移动的赛车时，模型不太可能聚合。  
在现实世界中，AWS DeepRacer 车辆配备了单镜头前置摄像头作为默认传感器。该摄像机配备 120 度广角镜头，可捕获 RGB 图像，然后以每秒 15 帧 (fps) 的速度将其转换为 160 x 120 像素的灰度图像。这些传感器属性保留在模拟器中，以最大限度地提高训练后的模型从仿真顺利转移到现实世界的机会。

**前置立体摄像机**  <a name="term-deepracer-sensor-front-facing-stereo-cameras"></a>
立体摄像机有两个或更多镜头，可以以相同的分辨率和频率捕捉图像。来自两个镜头的图像用于确定观测到的物体的深度。来自立体摄像机的深度信息对于主机赛车非常有用，可以避免撞到前方的障碍物或其他赛车，尤其是在更动态的环境下。但是，增加的深度信息会使训练的收敛速度更慢。  
 在 AWS DeepRacer 实体车辆上，双镜头立体摄像头是通过添加另一台单镜头摄像头并将每个摄像头安装在车辆的左侧和右侧来构造的。AWS DeepRacer 软件可同步两台摄像机拍摄的图像。捕获的图像被转换为灰度图像，堆叠起来，然后输入神经网络进行推理。在模拟器中复制了相同的机制，以便训练模型很好地推广到现实世界的环境。

**LiDAR 传感器**  <a name="term-deepracer-sensor-rear-mount-lidar"></a>
 LiDAR 传感器使用旋转激光发出可见光谱之外的光脉冲，以及每个脉冲返回所需的时间。特定脉冲击中的物体的方向和距离被记录为以 LiDAR 单元为中心的大型 3D 地图中的一个点。  
例如，LiDAR 可以帮助探测主赛车的盲点，以避免在赛车变道时发生碰撞。通过将 LiDAR 与单目或立体摄像机相结合，可以使主机赛车捕获足够的信息，从而采取适当的行动。但是，与摄像机相比，LiDAR 传感器的成本更高。神经网络必须学习如何解析 LiDAR 数据。因此，需要更长的时间训练才能收敛。  
 在 AWS DeepRacer 实体车辆上，LiDAR 传感器安装在后部并向下倾斜 6 度。它以每秒 10 次旋转的角速度旋转，范围为 15 厘米到 2 米。它可以检测主机赛车后方和旁边的物体，以及不受赛车部件阻挡的前方高大物体。选择角度和范围是为了使 LiDAR 单元不易受到环境噪声的影响。

 您可以使用以下支持的传感器组合来配置 AWS DeepRacer 车辆：
+ 仅限前置单镜头摄像机。

  这种配置非常适合计时赛，也适合在固定位置有物体的避障赛。
+ 仅前置立体摄像机。

  这种配置非常适合在固定或随机位置有物体的避障赛。
+ 带 LiDAR 的前置单镜头摄像机。

  这种配置非常适合避障或 head-to-bot赛车。
+ 带 LiDAR 的前置立体摄像机。

  这种配置非常适合避障或 head-to-bot赛车，但对于计时赛来说，可能不是最经济的。

当您添加更多传感器以使您的 AWS DeepRacer 车辆从计时赛到避开物体再到 head-to-bot赛车时，车辆会收集更多有关环境的数据，以便在训练中输入底层神经网络。这使得训练更具挑战性，因为模型需要处理日益增加的复杂性。最后，您学习训练模型的任务变得更加艰巨。

要逐步学习，你应该先开始计时赛训练，然后再开始避开物体，然后再开始 head-to-bot比赛。您将在下一节中找到更多详细建议。

## 配置用于训练 AWS DeepRacer 模型的代理
<a name="deepracer-configure-agent"></a>

 要训练强化学习模型，让 AWS DeepRacer 车辆参加避障或 head-to-bot赛车比赛，您需要为代理配置适当的传感器。对于简单的计时赛，您可以使用配置了单镜头摄像机的默认代理。在配置代理时，您可以自定义操作空间并选择神经网络拓扑，以便它们能够更好地与所选传感器配合使用，满足预期的行驶要求。此外，您还可以在训练期间更改代理的外观以在视觉上帮助识别。

配置后，代理配置将记录为模型元数据的一部分，用于训练和评估。为了进行评估，代理会自动检索记录的配置，以使用指定的传感器、操作空间和神经网络技术。

本部分将引导您完成在 AWS DeepRacer 控制台中配置代理的步骤。

**在 AWS DeepRacer 控制台中配置 AWS DeepRacer 代理**

1. 登录 A [WS DeepRacer 控制台](https://console.aws.amazon.com/deepracer)。

1. 在主导航窗格中选择 **Garage (车库)**。

1. 首次使用 **Garage (车库)** 时，您会看到 **WELCOME TO THE GARAGE (欢迎使用车库)** 对话框。选择 **>** 或 **<** 浏览 AWS DeepRacer 车辆支持的各种传感器的简介，或者选择 **X** 关闭对话框。您可以在 **Garage (车库)** 的帮助面板中找到此介绍性信息。

1. 在 **Garage (车库)** 页面上，选择 **Build new vehicle (构建新车辆)**。

1.  在 **Mod your own vehicle (改装自己的车辆)** 页面上，在 **Mod specifications (改装规范)** 下，选择一个或多个传感器，尝试了解能够满足预期赛车类型的最佳组合。

   要为你的 AWS DeepRacer 车辆计时赛进行训练，请选择 C **amera**。对于避障或 head-to-bot赛车，您需要使用其他类型的传感器。要选择**立体摄像机**，请确保您已经购买了额外的单镜头摄像机。AWS 用两台单镜头相机 DeepRacer 制造了立体相机。您可以在一辆车上使用单镜头摄像机或双镜头立体摄像机。无论哪种情况，如果您只想让经过训练的模型能够检测和避开避避避障碍物或 head-to-bot赛车中的盲点，则可以在代理中添加激光雷达传感器。

1. 在 **Garage (车库)** 页面的 **Neural network topologies (神经网络拓扑)** 下，选择支持的网络拓扑。

   一般来说，更深的神经网络（层次较多）更适合在具有复杂曲线和急转弯的更复杂赛道上行驶、规避静止障碍物的比赛或与其他移动车辆的比赛。但是，更深的神经网络的训练成本更高，模型需要更长的时间才能融合。另一方面，更浅的网络（层次较少）成本更低，需要的训练时间更短。训练后的模型能够处理较简单的赛道条件或行驶要求，例如在没有竞争对手的无障碍赛道上进行的计时赛。

   具体而言，AWS DeepRacer 支持 **3 层 CNN** 或 **5 层** CNN。

1. 在 **Garage (车库)** 页面上，选择 **Next (下一步)** 以继续设置代理的操作空间。

1. 在 **Action space (操作空间)** 页面上，保留第一次训练的默认设置。对于后续训练，请尝试不同的转向角度、最高速度及其粒度设置。然后选择**下一步**。

1. 在 “为**你的车辆着色以在人群中脱颖而出**” 页面上，在 “命**名你的**车型” 中输入一个名字， DeepRacer然后从**车辆颜色列表中为特工选择一种颜色**。然后，选择 **Submit (提交)**。

1. 在 **Garage (车库)** 页面上，检查新代理的设置。要进行其他修改，请选择 **Mod vehicle (改装车辆)**，然后从**步骤 4** 开始重复上述步骤。

现在，您的代理已准备好进行训练了。

## 为计时赛量身定制 AWS DeepRacer 培训
<a name="deepracer-get-started-training-simple-time-trial"></a>

如果这是您首次使用 AWS DeepRacer，则应从简单的计时赛开始，熟悉如何训练 AWS DeepRacer 模型来驾驶您的车辆。这样，您就可以更好地了解奖励函数、代理、环境等基本概念。您的目标是训练一个模型，让赛车保持在赛道上并尽可能快地完成一圈。然后，您可以将经过训练的模型部署到您的 AWS DeepRacer 车辆上，在无需任何额外传感器的情况下在物理轨道上测试驾驶。

要针对此场景训练模型，您可以从 AWS DeepRacer 控制台上的 **Garag** e 中选择默认代理。默认代理已配置为单个前置摄像机、默认操作空间和默认神经网络拓扑。在转向更复杂的 DeepRacer 模型之前，使用默认代理开始训练 AWS 模型会很有帮助。

要使用默认代理训练模型，请遵循以下建议。

1. 开始使用形状更规则且转弯较少的简单赛道来训练模型。使用默认的奖励函数。然后训练模型 30 分钟。训练作业完成后，在同一条赛道上评估您的模型，以观察代理能否完成一圈。

1. 阅读有关[奖励函数参数](deepracer-reward-function-input.md)的信息。通过不同的激励措施继续训练，以奖励代理人更快地前进。将下一个模型的训练时间延长到 1-2 小时。比较第一次训练和第二次训练之间的奖励图。继续试验，直到奖励图表停止改善。

1. 阅读有关[操作空间](deepracer-how-it-works-action-space.md)的更多信息。通过提高最高速度（例如 1 m/s）对模型进行第 3 次训练。要修改操作空间，您必须在有机会进行修改时在**车库**中建造一个新的代理。更新代理的最高速度时，请注意，最高速度越高，代理在评估中完成赛道的速度就越快，您的 AWS DeepRacer 车辆在物理赛道上完成一圈的速度也就越快。但是，更高的最高速度通常意味着训练的收敛时间更长，因为代理更有可能在弯道上超冲从而偏离轨道。您可能需要降低粒度，为代理提供更多的加速或减速空间，并通过其他方式进一步调整奖励函数，以帮助训练更快地收敛。训练收敛后，评估第三个模型，看看单圈时间是否有所改善。继续探索，直到没有更多改进。

1. 选择更复杂的赛道，然后重复**步骤 1** 到**步骤 3**。在与您用来训练的赛道不同的赛道上评估您的模型，看看模型如何推广到不同的虚拟轨道并[推广到现实世界的环境](deepracer-how-it-works-virtual-to-physical.md)。

1. （可选）尝试不同的[超参数](deepracer-console-train-evaluate-models.md#deepracer-iteratively-adjust-hyperparameters)值以改进训练过程，然后重复**步骤 1** 到**步骤 3**。

1. （可选）检查和分析 AWS DeepRacer 日志。有关可用于分析日志的示例代码，请参阅 [https://github.com/aws-samples/aws-deepracer-workshops/tree/master/log-](https://github.com/aws-samples/aws-deepracer-workshops/tree/master/log-analysis) analysis。

## 为避开物体竞赛量身定制 AWS DeepRacer 训练
<a name="deepracer-get-started-training-object-avoidance"></a>

 

在您熟悉计时赛并训练了几个融合模型之后，接下来是下一个要求更高的挑战——避障赛。在这里，您的目标是训练一个能够在不偏离轨道的情况下尽可能快地完成一圈的模型，同时避免撞到放置在赛道上的物体。对于代理来说，这显然是一个更难学习的问题，而且训练需要更长的时间才能收敛。

AWS DeepRacer 控制台支持两种类型的避障训练：可以将障碍物放置在轨道上的固定位置或随机位置。在固定位置下，障碍物在整个训练作业中都固定在同一位置。在随机位置下，障碍物会随机改变各自的位置。

由于系统的自由度较低，因此对于固定位置的避障赛，训练更容易收敛。但是，当位置信息内置到训练后的模型中时，模型可能会过度拟合。因此，模型可能过度拟合，可能无法很好地推广。为了避开随机放置的障碍物，训练更难融合，因为代理必须不断学习，避免在以前从未见过的地方碰到障碍物。但是，使用此选项训练的模型往往可以更好地推广，并且可以很好地转移到现实世界的比赛中。首先，在固定位置放置障碍物，熟悉行为，然后应对随机位置。

在 AWS DeepRacer 模拟器中，障碍物是长方体箱子，其尺寸（9.5 英寸（长）x 15.25 英寸（宽）x 10/5 英寸（高））与 AWS 车辆的包裹箱相同。 DeepRacer 如果您将包装盒作为障碍物放在物理赛道上，则可以更轻松地将经过训练的模型从模拟器转移到现实世界。

要尝试避障，请遵循以下步骤中概述的推荐做法：

1. 使用默认代理或通过自定义现有代理或构建新代理来尝试新的传感器和操作空间。您应将最高速度限制在 0.8 以下 m/s ，将速度粒度限制为 1 或 2 级。

   首先在固定位置放置 2 个物体，训练模型约 3 小时。使用示例奖励函数，在您将要参加比赛的赛道或与该赛道非常相似的赛道上训练模型。**AWS S DeepRacer mile Speedway（中级）**赛道是一条简单的赛道，这使其成为准备登顶比赛的不错选择。在同一赛道上放置相同数量的障碍物，以评估模型。观察预期的奖励融合数（如果有）。

1. 阅读有关[奖励函数参数](deepracer-reward-function-input.md)的信息。试用您的奖励函数的变体。将障碍物数量增加到 4。训练代理，看看训练是否在相同的训练时间内趋于一致。如果没有，请再次调整奖励函数，降低最高速度或减少障碍物的数量，然后再次训练代理。重复试验，直到没有更显著的改进。

1. 现在，继续训练避开随机位置的障碍物。您需要为代理配置其他传感器，这些传感器可从 **Garag** e 的 AWS DeepRacer 控制台中获得。您可以使用立体摄像机。或者，您可以将 LiDAR 单元与单镜头摄像机或立体摄像机结合使用，但训练时间应该更长。将操作空间设置为相对较低的最高速度（例如 2 m/s），以便训练更快地收敛。对于网络架构，请使用浅层神经网络，经发现，该网络足以避障。

1. 开始训练新代理 4 个小时的避障，在简单的赛道上随机放置 4 个物体。然后在同一条赛道上评估您的模型，看看它能否在随机放置障碍物的情况下完成圈数。如果不行，您可能需要调整奖励函数，尝试不同的传感器并延长训练时间。另一个技巧是，您可以尝试克隆现有模型以继续训练，以利用以前学到的经验。

1. （可选）为操作空间选择更高的最高速度，或者在赛道上随机放置更多障碍物。尝试不同的传感器组合，调整奖励函数和超参数值。尝试 **5 层 CNN** 网络拓扑。然后，重新训练模型以确定它们如何影响训练的收敛性。

## 为 head-to-bot比赛量身定制 AWS DeepRacer 训练
<a name="deepracer-get-started-training-h2h-racing"></a>

在完成了避障训练之后，你现在已经准备好迎接更高级别的挑战了：为 head-to-bot比赛训练模型。与避障赛事不同， head-to-bot赛车的环境充满活力，车辆在移动。您的目标是训练您的 AWS DeepRacer 车辆的模型，使其与其他行驶中的车辆竞争，从而在不偏离轨道或撞向任何其他车辆的情况下先到达终点线。在 AWS DeepRacer 控制台中，您可以让您的代理与 1-4 辆机器人车辆竞争，从而训练 head-to-bot赛车模型。一般来说，您应该在更长的赛道上设置更多的障碍物。

每辆自动程序赛车都以恒定速度沿着预定义的路径行驶。您可以让它改变车道或保持在起跑车道上。与避障训练类似，您可以让自动程序赛车在两条车道上均匀分布在赛道上。控制台限制您在赛道上最多有 4 辆自动程序车辆。赛道上有更多的竞争赛车可以让学习代理有更多机会与其他赛车一起面对更多不同的情况。这样，它可以在一次训练作业中学到更多知识，并且代理可以更快地接受训练。但是，每次训练可能需要更长的时间才能收敛。

要使用自动程序赛车训练代理，应将代理操作空间的最高速度设置为高于自动程序赛车的（恒定）速度，以便代理在训练期间有更多的超越机会。作为一个好的起点，你应该将特工的最高速度设置为0.8 m/s ，将机器人飞行器的移动速度设置为0.4 m/s。如果您允许自动程序车辆变道，则训练将变得更具挑战性，因为代理不仅必须学习如何避免在同一车道上撞上前方行驶中的赛车，还必须学习如何避免在另一条车道上撞上前方行驶中的另一辆行驶中的赛车。您可以将自动程序车辆设置为以随机间隔更改车道。间隔长度是在开始训练作业之前从您指定的时间范围（例如 1s 到 5s）中随机选择的。这种变道行为更类似于现实世界的 head-to-bot赛车行为，训练有素的经纪人应该能产生更好的表现。但是，模型将需要更长的训练时间来收敛。

请按照以下建议步骤重复 head-to-bot赛车训练：

1. 在 AWS DeepRacer 控制台的 **Garag** e 中，构建一个配置有立体摄像头和激光雷达单元的新训练代理。仅使用立体摄像机对抗自动程序赛车，就可以训练出相对较好的模型。当代理变道时，LiDAR 有助于减少盲点。不要将最高速度设置得太高。1 m/s 是一个好起点。

1. 要进行 head-to-bot赛车训练，请从两辆机器人车辆开始。将机器人的移动速度设置为低于代理的最高速度（例如， m/s 如果代理的最高速度为 1 m/s，则为 0.5）。禁用变道选项，然后选择您刚创建的训练代理。使用其中一个奖励函数示例或进行最少的必要修改，然后训练 3 小时。使用您将要参加比赛的赛道，或者使用与该赛道非常相似的赛道。**AWS S DeepRacer mile Speedway（中级）**赛道是一条简单的赛道，这使其成为准备登顶比赛的不错选择。训练完成后，在同一赛道上评估训练后的模型。

1. 要完成更具挑战性的任务，请克隆你训练过的模型以制作第二个 head-to-bot赛车模型。继续使用更多自动程序赛车进行实验，或者启用变道选项。从随机间隔超过 2 秒的慢速变道操作开始。您可能还想尝试使用自定义奖励函数。通常，如果您不考虑超越其他赛车和保持正轨之间的平衡，则您的自定义奖励函数逻辑可能与避障的逻辑类似。基于您之前的模型表现，您可能需要再训练 3 到 6 个小时。评估您的模型并查看模型的性能。