Build an Autonomous Vehicle on AWS and Race It at the re:Invent Robocar Rally 自動運転車は近い将来に車道を埋め尽くすことが見込まれています。ディープラーニングと自動運転のアプリケーションの進歩がこの自動運転車を実現しました。このポストでは、Amazon AI サービスを活用したリモートコントロール (RC) 自動車を製作する方法のチュートリアルを紹介していきます。 通常、各自動運転車には高度なテレメトリを提供する多くのセンサーが搭載されています。このテレメトリは、個々の自動車の運転と共に、ユーザーエクスペリエンスを向上するために使用できます。こういった向上の例には、スマートドライブルーチングによる時間の短縮、車両航続可能距離と効率の向上や安全性とクラッシュリポートの増大などがあります。AWS では、TuSimple などのカスタマーが Apache MXNet を使用した繊細な自動化プラットフォームを構築しました。最近では、TuSimple が 200 マイルドライバーレス運転を成功しました。 ディープラーニング、AWS IoT と人工知能 (AI) の技術による運転の認知を目的として、AWS はワークショップ形式のハッカソンである Robocar Rally を re:Invent 2017 で開催します。このポストは、開発者を対象に自動化 AI 技術を学習し、ハッカソンに備えるためのブログポストと Twitch ビデオシリーズの第 1 弾となります。ハッカソンについての詳細は、Robocar Rally 2017 をご覧ください。 このチュートリアルでは、Donkey という名称のオープンソースプラットフォームを活用します。希望する場合には、お手持ちの 10 分の 1 スケールの電気自動車で体験することもできます。ただし、Donkey プロジェクトで使用される 16 分の 1 スケールの RC カーの使用がより推奨されます。 次の 2 本のビデオでは、これから説明するチュートリアルを使用して AWS で製作した 2 台の自動車を紹介しています。 自動車ビルドプロセス 自動運転車の組立てと設定のプロセスは、このレポで説明しています。このレポには、素材の完全リストと個々のコンポーネントの購入場所を示すリンクも含まれています。主なコンポーネントは、RC カー、Raspberry Pi、Pi カメラと Adafruit Servo HAT となり、この合計額は 250 ドル以下です。ステレオカメラ、LIDAR データコレクタや加速度計などのさまざまな追加センサーを購入することもできます。 基本的なレベルの性能と工程を確実にすることで、未分化状態の運用負荷を最小限に抑えるために、この Github レポ の手順に従うことが推奨されます。 プラットフォームを完全に作動するためには、次の手順に従ってください。 自動車の組立て Raspberry Pi の設定 Amazon EC2 インスタンス上でパイロット (制御) サーバーをセットアップする 自動車のデフォルトモデルを実行する GitHub へのリンクのステップ 1 と 2 の説明に従うことをお勧めします。 AWS における Donkey サーバービルド Donkey ソリューションの主要な部分は、自動車とクラウド間のコミュニケーションを斡旋するパイロットサーバーの制御です。手動による制御とオートパイロットを切り替える「ため」の指示を行います。車は Pi カメラからのイメージを使用して移動します。また、イメージは Pi でローカルマシンに保存することも、検査や訓練用目的で EC2 インスタンスにストリームできます。 パイロットサーバーは、AWS ディープラーニング AMI 上に構築され、Docker コンテナとしてデプロイされます。これによって、高度なパフォーマンス、変更不可、そして AI が構築されるプラットフォームの簡単な操作が可能になります。 まず初めに、AWS マネジメントコンソールにログインし、近接するリージョンの EC2 をサービスのリストから選択します。このブログポストでは、US-EAST-1 を選択します。 ステップ 1: Amazon Machine Image (AMI) の選択 AWS Marketplace で 「Deep Learning AMI Amazon Ubuntu」を検索して、選択を選びます。 ステップ 2: インスタンスタイプを選択する EC2 インスタンサイズとタイプを選択します。このブログポストでは、GPU が最適化されている G2.2xlarge を使用します。G2.2xlarge インスタンスタイプは、人気が高い 7 つのディープラーニングフレームワーク (MXNet、Caffe、Caffe2、TensorFlow、Theano、Torch、CNTK) をサポートするビルトインを提供します。より低価な EC2 インスタンスでも、使用が成功する場合があります。 ステップ 3: インスタンスの詳細を設定する すべてをデフォルト状態のままにし、インターネットを介して接続される自動運転車からのインバウンド通信が許可される適切なパブリックサブネットを使用していることを確認してください。 ステップ 4: ストレージを追加する このソリューションは大きな容量を必要としないため、32 GB 凡庸 GP2 ボリュームで十分です。 ステップ 5: タグの追加 タグを追加することは、リソースの使用度を追跡できる観点から、常に推奨されます。 ステップ 6: セキュリティグループを設定する Donkey サーバーには、TCP ポート 8885-8888 が自動運転車に属するすべての IP アドレスに開放されていることが必要です。最初のセットアップ後に、SSH アクセスが必要になることもあります。セキュリティグループには、無制限範囲の 0.0.0.0/0 ではなく、既知の IP アドレスを指定することが推奨されます。 ステップ 7: インスタンス起動の確認 すべての最終確認を行い、起動を選択します。 ステップ 8: キーペアの選択 最後のステップとして、新規のキーペアを作成するか、既存のキーペアを選択します。このキーペアファイルは、SSH を使用するこのサーバーに接続するために必要となります。このキーペアを安全な場所に保存します。 数分以内に EC2 インスタンスの準備が完了します。EC2 コンソールに新しいインスタンスが実行状態として表示されます。EC2 インスタンスを選択し、接続を選択します。SSH へのスニペットの例をインスタンスにコピーします。パイロットサーバーおよび車 (Raspberry Pi) に必要となるため、パブリック IP アドレスをメモしておきます。 ターミナル画面から SSH を使用して Donkey サーバー EC2 インスタンスに接続します。 ssh -i "DonkeyKP-us-east-1.pem" ec2-user@ec2-your-ip.compute-1.amazonaws.com インスタンスのアップデート実行: sudo yum update –y Git をインストール: sudo yum install git –y Docker をインストール: sudo yum install docker -y Docker の開始: sudo service docker start ec2-user を Docker グループに追加して、sudo を使用せずに Docker コマンドを実行できるようにする: sudo usermod -a -G docker ec2-user 切断して、再度接続する: exit ssh -i "DonkeyKP-us-east-1.pem" ec2-user@Your-Instance-IP Docker 機能を確認する: docker info Donkey GitHub repo をクローンする: git clone http://github.com/wroscoe/donkey.git サーバーを起動する: cd donkey sudo bash start-server.sh 初めてサーバーを起動する場合は、すべての依存関連をダウンロードしてインストールするために数分かかります。Docker イメージが作成されたら、その後の起動時間がはるかに短縮されます。 別のブラウザウィンドウで Donkey サーバー ec2 インスタンスのパブリック IP アドレスに接続します。必ずポート 8887 を含めるように確認します。 この URL に接続する際、パイロットサーバーが正常に作動していることを確認します。コスト削減のために、Amazon EBS-backed EC2 インスタンスをシャットダウンして、自動車を動かさない間にコンピューティング料金が発生することを回避するようお勧めします。このインスタンスの主要な使用目的は、Donkey 自動車によって修正されるトレーニングデータを実行することです。Raspberry Pi の処理能力には制限があります。GPU が有効化された EC2 インスタンスは、中立ネットワークをイメージでトレーニングし、Raspberry Pi よりもさらに高速でテレメトリデータを送信します。自動運転車で使用された中立ネットワークのサンプルは、サンプルデータセットと共に Jupyter ノートブックに表示され、robocar2017 GitHub レポジトリから閲覧できます。 自動運転車に接続して運転する方法および運転コースの設定に関するチュートリアルと説明を引き続いて行う次のブログポストを是非ご覧ください。