AWS DeepRacer(実機)の初期設定をしてみた

# AWS DeepRacerについて

[AWS DeepRacer](https://aws.amazon.com/jp/deepracer/)
re:Invent2018で発表された、強化学習により駆動する1/18スケールの完全自走型レーシングカーです。
ワークショップに参加し実機を入手できたので触ってみました。
備忘録も兼ねて、初期設定〜テスト走行まで書いてみたいと思います。

ちなみに、
実機の発売日はUSでは2019/4/15となっているようです。
[AWS DeepRacer – Fully autonomous 1/18th scale race car for developers](https://www.amazon.com/dp/B07JMHRKQG)

また、AWSのサービスの方は現在[プレビュー](https://pages.awscloud.com/Deep-Racer-Preview.html)の申込み受付中となっています。

# マニュアル  
[公式ページ](https://aws.amazon.com/jp/deepracer/getting-started/)からセットアップ方法についての[PDFファイル](https://d1.awsstatic.com/deepracer/AWS-DeepRacer-Getting-Started-Guide.pdf)がダウンロードできます。
この他、チュートリアルのマニュアル等も用意されています。

# 初期設定
公式のPDFの手順に沿って設定していきます。
※各設定手順の説明画像はPDFにあるので省略します。  

## 内容物
  省略します。
### 他に必要なもの
* PC等(USBポートを備えた、インターネット接続可能なもの)
* USBフラッシュドライブ
* Wi-Fiネットワーク
* AWSアカウント

## DeepRacerの組み立て
車体用とコンピュータ用の２種類バッテリーを取り付けます。
車体のボディを外した状態から始めます。  

### 車体用バッテリー
車体横にある4本のピンを外して車体を持ち上げ、赤いコネクタを接続します。
バッテリーからは赤いコネクタと白いコネクタの２本が出ていますが、白い方は充電用です。
コネクタを接続したら車体に載せてストラップで固定し、車体を戻して再度ピンで留めます。  

### コンピュータ用バッテリー
USB-CのASUS製モバイルバッテリーです。容量なんと13600mAh
車体上部のスペースに載せ、ストラップで固定します。車体にはまだ接続しません。
車体に載せる際は、接続の都合上バッテリーのUSB-Cコネクタが右後ろ側に来るように配置します。

## DeepRacerとの接続
Wi-Fiネットワークを通してDeepRacerとPCを接続します。
DeepRacerをネットワークに接続 → DeepRacer側のIPアドレス取得 → PCからDeepRacerに接続という流れになります。

### コンピュータ部分の電源を入れる  
車体左側にあるUSB-Cポートに付属のACアダプタを接続し、コンセントから給電される状態にします。
車体右側にある電源ポタンを押します。LEDが緑→青に点灯すればOKです。
(緑から青に変わるまで少し時間がかかりました)  

### Wi-Fiの設定
Wi-Fiの[認証用設定ファイル](https://d1.awsstatic.com/deepracer/wifi-creds.txt)をPC側でダウンロードします。
ここに接続したいネットワークのSSIDとパスワードを書き込みます。

```wifi-creds.txt
###################################################################################
#                                 AWS DeepRacer                                   #
# File name: wifi-creds.txt                                                       #
#                                                                                 #
# To connect the device to Wi-Fi, type your Wi-Fi SSID name and password          #
# (case sensitive) in the corresponding fields below.                             #
# For example:                                                                    #
#      ssid: 'Your-WiFi 100'                                                      #
#      password: 'Passwd1234'                                                     #
#                                                                                 #
# Then follow the instructions on https://aws.amazon.com/startyourengines to      #
# finish the setup process.                                                       #
#                                                                                 #
# WARNING:                                                                        #
#                                                                                 #
# 1. Please make sure the Wi-Fi that the device connects to for the first time    #
# has Internet connection. If not, it will impact the software update and any     #
# subsequent Wi-Fi connections.                                                   #
#                                                                                 #
# 2. Do NOT change the file name or the field name of 'ssid' and 'password',      #
# which are all case sensitive.                                                   #
#                                                                                 #
# 3. Do NOT replace the default single quote signs (''), which are plain text and #
# may not be recognized by the device after editing.                              #
#                                                                                 #
#                                                                                 #
# If the USB drive was plugged into the device before, a list of available Wi-Fi  #
# networks will be automatically generated below, you can simply uncomment the    #
# one you want to connect to by removing the pound sign.                          #
#                                                                                 #
# If you have validated the Wi-Fi credentials but still find the Wi-Fi LED does   #
# not turn to solid blue, try rebooting the device by pressing the 'RESET' button #
# and then plugging in the USB drive again after the power LED turns blue.        #
#                                                                                 #
###################################################################################

# Provide your SSID and password below
ssid: hogehoge
password: fugafuga
```

※SSIDとパスワードを''で括るとうまく認識されませんでした。

USBフラッシュドライブのルートディレクトリに`wifi-creds.txt`(ファイル名変更不可)を保存し、DeepRacer機体後部にあるUSBポートに接続します。
設定情報が読み込まれ、WiFiネットワークへの接続がDeepRacer側で行われます。
車体右側のWiFiマークのLEDが青く点灯したら接続OKです。
接続に失敗した場合はLEDが赤く点灯します。

### DeepRacer側のネットワーク情報を取得
接続に成功したら一度USBフラッシュドライブを取り外します。そのまま引っこ抜いて大丈夫です。
PC側に接続すると、DeepRacer側のネットワーク状態等が書かれたファイル`device-status.txt`がルートディレクトリに保存されています。

```device-status.txt
Hostname: amss-xxxx
Timestamp: 03/01/19 00:00:00
Successfully connected to 'hogehoge':
Device 'mlan0' successfully activated with '12345678-1234-1234-1234-123456789012'.
Connected to WiFi network: hogehoge
Active connections:
  mlan0: 192.168.1.100
```

DeepRacerに`192.168.1.100`というIPが割り振られたことが分かります。

### DeepRacerに接続
`device-status.txt`から取得したIPをPCからブラウザに入力しアクセスします。
自己証明書の警告が出ますがそのままアクセスします。
ソフトウェアアップデートの画面が出るので適宜アップデートを行います。

## 初期設定完了
これで初期設定は完了です。
テスト走行ではバッテリーから給電する必要があるので一度電源を切ります。

### コンピュータ部分の電源を切る
車体右側の電源ボタン長押し(5秒程度)でOFFになります。


# 走らせてみる

## 電源を入れる
ACアダプタを外し、付属のUSB-Cケーブルでコンピュータ用のバッテリーを接続します。
バッテリーとコンピュータ部分の電源をONにし、Wi-Fiが接続完了になるのを待ちます。
※初期設定が完了していればUSBフラシュドライブを接続する必要はありません。

### 車体部分の電源を入れる
ホイール4輪の向きを正面に合わせます。
左前輪付近にある車体側の電源スイッチをONにします。

## DeepRacerに接続

先程取得したDeepRacerのIPをPC等のブラウザに入力しアクセスします。
ログイン画面が表示され、パスワードの入力を要求されます。パスワードは車体の裏に記載されています。
ログインすると下のような画面になります。左側には車載のカメラの映像が表示されます。
![autonomous.png](https://qiita-image-store.s3.amazonaws.com/0/66217/ad28fb05-540e-e84d-dbee-05f5146affb8.png)
ManualモードとAutonomousモードが選択でき、上の画面はAutonomousモードになります。

## Manualモード
Manualモードに切り替えると実コースがなくても走行させることができます。
画面右側の領域をクリックorタップしドラッグすることでDeepRacerを手動で操縦することができます。
![manual.png](https://qiita-image-store.s3.amazonaws.com/0/66217/a6ecb612-dd41-d0bf-a926-df95265eba6b.png)
思ったよりもかなり速く走ります。
スロットルの最大を50%にしてもコントロールが難しいです。
軽い気持ちで机上で走らせようとすると大変なことになるかもしれません。。

これでDeepRacerを走行させることができました。

## Autonomousモード

Autonomousモードでは作成したモデルを実機にロードして走行させることができます。
こちらが本来のDeepRacerの走らせ方になります。
実コースが無いのでここでの説明は省略します。

## 問題発生…
私が持っているDeepRacer、なぜか後ろ向きに走ります。
ManualモードのUIでは下向きにドラッグで前進していたので違和感を感じていたのですが、試しにAutonomousモードにしてみたところ、勢い良く後ろ向きに走り出しました。
バッテリーを逆に接続してしまったかと思いましたが、コネクタの形状的に+-は間違いようがないのでそもそも配線が逆になっている疑惑。。

### 配線の繋ぎ直しで解決
ネットで画像検索してみたところ、いくつか配線まで写っている画像が出てきました。
手元の実機では太い導線が下の画像のように <font color="Blue">青</font>→黒、<font color="Gold">黄</font>→<font color="Red">赤</font> と繋がっていますが、
画像検索で出てきたものは <font color="Blue">青</font>→<font color="Red">赤</font>、<font color="Gold">黄</font>→黒 と配線されていました。
やはり間違っている。。
![cable.png](https://qiita-image-store.s3.amazonaws.com/0/66217/783fd135-b35d-19b9-32f5-ec5deb63475d.png)

ということで、結束バンドをちょん切って配線を繋ぎ直したところ無事前向きに走るようになりました。

# まとめ
DeepRacer(実機)の初期設定を行い、(初期不良を修理し)走行させることができました。

2019年は世界各地のAWS SummitでAWS DeepRacerリーグが開催予定で、入賞者はre:Invent2019で開催されるAWS DeepRacer チャンピオンカップへの出場権が与えられるそうです。

車体にはmicroSDポートやHDMIポート、未使用のUSBポートもあるので今後の拡張なども期待できそうです。

実コースどこかにないかなぁ。。