亚马逊AWS官方博客

在 AWS 上制造一辆无人驾驶车辆,并参加 re:Invent 机器人车拉力赛

在未来数年内,我们的道路上将会看到有许许多多的无人驾驶车辆在行驶。这归功于深度学习的发展及其在无人驾驶技术方面的应用。在本博客文章中 | 原文链接,我们将向您展示一个教程,介绍如何制造使用 Amazon AI 服务的遥控 (RC) 车辆。

通常,每个无人驾驶车辆上都会安装各种各样的传感器,这些传感器可提供充分的遥测数据。这些遥测数据可用于改善单个车辆的驾驶,而且还能帮助提升用户体验。一些改进示例包括智能驾驶路线确定、增加车辆可行驶里程、提高效率、增强安全性以及更好地报告碰撞情况。在 AWS 上,像 TuSimple 这样的客户已经使用 Apache MXNet 打造了一个尖端的无人驾驶平台。TuSimple 已于近期实现了 200 英里的无人驾驶里程。

为了在无人驾驶车辆的驾驶中提高深度学习意识,推动 AWS IoT 的运用以及凸显人工智能 (AI) 的作用,AWS 将在 re:Invent 2017 大会期间,举办一个研讨会形式的机器人车马拉松拉力赛。这是一系列博客文章和 Twitch 视频中的第一个,利用这些文章和视频,开发人员可以学习无人驾驶 AI 技术,并为这场马拉松赛做好准备。有关马拉松赛的更多详情,请参阅 2017 年机器人车拉力赛

在本教程中,我们将利用一个称为 Donkey 的开源平台项目。如果您愿意的话,可以使用您自己的 1:10 比例的电动汽车进行试验。不过,我们将坚持使用 Donkey 项目中使用的 1:16 比例的电动汽车。

下面是一些视频,其中演示了我们使用后面教程在 AWS 中制造的其中两款汽车。

车辆制造过程

在此存储库中可以找到组装和配置无人驾驶车辆的过程。其中还包括一个完整的材料清单,并且提供了链接,说明在什么地方购买各种部件。主要车辆部件来自于 RC Car、Raspberry Pi、Pi Cam 和 Adafruit Servo HAT,总成本不超过 250 美元。您可以购买其他传感器,如立体摄像机、LIDAR 数据采集器和加速度计等等。

我们建议您遵循此 Github 存储库中的步骤,这样可确保车辆具备各项基本功能,并且让您在成功的道路上最大程度地减少一些意义不大的繁重工作。

下面是为了使端到端平台正常工作而需要遵循的步骤:

  1. 组装汽车
  2. Raspberry Pi 配置
  3. 在 Amazon EC2 实例上设置导航 (控制) 服务器
  4. 对汽车运行默认模型

我们建议您按照 GitHub 链接中提供的说明完成步骤 1 和 2。

在 AWS 上构建 Donkey 服务器

Donkey 解决方案的一个关键部分是控制导航服务器,该服务器负责协调车辆与云之间的通信。它可以指示在手动控制和自动驾驶之间切换。汽车使用 Pi 相机拍摄的图像进行导航。此外,图像可以本地保存在 Pi 上,或者流式传输到 EC2 实例进行检查并最终用于训练。

导航服务器构建在 AWS 深度学习 AMI 之上,并作为 Docker 容器部署。这为我们提供了一个易于管理的固定式高性能平台,我们可以在此平台上构建我们的 AI。

首先,登录到您的 AWS 管理控制台,并从最接近您区域的服务列表中选择 EC2。在此博客文章中,我将选择“US-EAST-1”。

步骤 1:选择 Amazon 系统映像 (AMI)

在 AWS Marketplace 中搜索“Deep Learning AMI Amazon Ubuntu”,然后选择 Select

步骤 2:选择实例类型

选择 EC2 实例大小和类型。在此博客文章中,我将使用 G2.2xlarge,因为这是经过 GPU 优化的实例。G2.2xlarge 实例类型为下面七种流行的深度学习框架提供了内置支持:MXNet、Caffe、Caffe2、TensorFlow、Theano、Torch 和 CNTK。使用较低成本的 EC2 实例也可能会成功。

步骤 3:配置实例详细信息

保留所有默认值,并确保您使用适当的公有子网,该子网允许来自通过互联网连接的无人驾驶车辆的入站通信。

步骤 4:添加存储

该解决方案不需要太多空间,因此 32 GB 通用 GP2 卷应该已足够。

步骤 5:添加标签

添加标签始终是一个好主意,因为它有助于跟踪您的资源使用情况。

步骤 6:配置安全组 

Donkey 服务器需从属于无人驾驶车辆的任何 IP 地址打开 TCP 端口 8885-8888。初始设置后也可能需要 SSH 访问。我们建议您在安全组中放置已知的 IP 地址,而不是 0.0.0.0/0 这样的开放地址范围。

步骤 7:复查实例启动 

最后复查一下所有内容,然后选择 Launch

步骤 8:密钥对选择

最后一步,创建一个新的密钥对或者选择一个现有的密钥对。您将需要使用此密钥对通过 SSH 连接到此服务器。将密钥对保存在安全位置。

EC2 实例将在几分钟内准备就绪。在您的 EC2 控制台中,将看到您的新实例处于运行状态。选择该 EC2 实例,然后选择“Connect”。将示例代码段通过 SSH 复制到该实例。记下公共 IP 地址,因为导航服务器和车辆 (Raspberry Pi) 将需要该地址。

  1. 在终端屏幕中,使用 SSH 连接到 Donkey 服务器 EC2 实例:
    ssh -i "DonkeyKP-us-east-1.pem" ec2-user@ec2-your-ip.compute-1.amazonaws.com
  2. 更新实例运行:
    sudo yum update –y
  3. 安装 Git:
    sudo yum install git –y
  4. 安装 Docker:
    sudo yum install docker -y
  5. 启动 Docker:
    sudo service docker start
  6. 将 ec2-user 添加到 Docker 组,以便您能够执行 Docker 命令,而无需使用 sudo:
    sudo usermod -a -G docker ec2-user
  7. 断开连接,然后重新连接:
    exit
    ssh -i "DonkeyKP-us-east-1.pem" ec2-user@Your-Instance-IP
  8. 验证 Docker 功能:
    docker info
  9. 克隆 Donkey GitHub 存储库:
    git clone http://github.com/wroscoe/donkey.git
  10. 启动服务器:
    cd donkey
    sudo bash start-server.sh

首次启动服务器时,需要一段时间来下载并实例化所有依赖项。创建 Docker 映像后,以后启动时执行速度会快得多。

在单独的浏览器窗口中,连接到 Donkey 服务器 ec2 实例的公共 IP 地址。请务必包含端口 8887。

当您连接到此 URL 时,您已经确认导航服务器工作正常。为了节省成本,我们建议您关闭 Amazon EBS 支持的 EC2 实例,以避免在不驾驶车辆时产生计算费用。该实例的主要用途是执行由 Donkey 车辆收集的训练数据。Raspberry Pi 的计算能力有限。启用 GPU 的 EC2 实例将训练神经网络熟悉图像,并以比 Raspberry Pi 快得多的速度发送遥测数据。用于无人驾驶汽车的神经网络示例在 Jupyter 笔记本中展示,并附有示例数据集,该示例数据集可在我们的 robocar2017 GitHub 存储库中找到。

敬请继续关注我们的下一篇博客文章,我们将继续介绍本教程,并向您展示如何连接和驾驶无人驾驶车辆并安排驾驶课程。