自律走行型のロボットをNVIDIA JetBot で作ってみる【導入編】

[SENSYN ROBOTICS（センシンロボティクス） Advent Calendar 2019](https://qiita.com/advent-calendar/2019/sensyn-robotics) の 10日目 担当の @Chitama です。

今回は、AIコンピューターを乗せた自律走行型のロボットを作ってみます。
話題のテクノロジーで手軽に動くものを作れることをゴールにしました。

## 作ろうと思った理由
- 自律型ロボットのソフトウェアでどこまでできるのか試してみたい
- ロボットは人間に直接リーチできる存在だから

## 自律走行型のロボットを走らせるまで

1. 必要な部品を揃える
2. ハードウェアを組み立てる
3. ソフトウェアのセットアップする
4. 自律走行を試してみる


# 1. 必要な部品を揃える
今年３月Jetsonシリーズから発表された `Jetson Nano` ベース [NVIDIA JetBot パートナー AIロボットキット](https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/)で揃えました。
JetBotの仕様は、GitHub [JetBot AI ロボット プラットフォーム](https://github.com/NVIDIA-AI-IOT/jetbot)で公開されています。
GitHubのドキュメントを参考に必要なパーツを購入したり、CADで設計/3Dプリンター出力したりします。
キットを使わずお好みの形をCADで設計して3Dプリンターで車体部品を作ることもできます。

### Jetson Nanoとは
Jetsonシリーズは、NVIDIA®から提供されているGPUで高速化された並列処理用のビジュアル コンピューティング プラットフォームです。

> NVIDIA® Jetson Nano™ 開発者キットは、画像の分類、オブジェクトの検出、セグメンテーション、および音声処理のようなアプリケーションにおいて複数のニューラル ネットワークを並列に実行できる、小型でパワフルなコンピューターです。様々な機能がわずか 5 ワットの消費電力で稼働する使いやすいプラットフォームです。

[出典：Jetson Nano 開発キット](https://www.nvidia.com/ja-jp/autonomous-machines/jetson-store/)

| 仕様 |　スペック　|
|:--|:--|
|  開発キット価格 | $99 |
| サイズ | 100 mm x 80 mm x 29 mm |
| GPU | 128-core Maxwell |
| CPU | Quad-core ARM A57 @ 1.43 GHz |
| メモリ | 4 GB 64-bit LPDDR4 25.6 GB/s |
| ストレージ | microSD (同梱されていない場合も) |
| Video Encoder | 4K @ 30 : 4x 1080p @ 30 : <br>9x 720p @ 30 (H.264/H.265) |
| Video Decoder | 4K @ 60 : 2x 4K @ 30 : <br>8x 1080p @ 30 : 18x 720p @ 30 : (H.264/H.265) |
| カメラ | 1x MIPI CSI-2 DPHY lanes |
| LANモジュール| Gigabit Ethernet, M.2 Key E |
| ディスプレイ | HDMI 2.0 and eDP 1.4 |
| USB | 4x USB 3.0, USB 2.0 Micro-B |
| その他 | GPIO, I2C, I2S, SPI, UART |

### NVIDIA JetBotとは
NVIDIAのシングルボードコンピュータ `Jetson Nano` を使って自律型走行ロボット作るための部品が揃ったkitです。
公式サイトには４種類のJetBotが掲載されています。
各Kitに同梱されている部品をまとめてみました。
これを参考に自分で部品を買うとよりお得に作れます😁
[出典：NVIDIA JetBot パートナー AI ロボットキット](https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/)



## SparkFun JetBot
　<img width="200" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91552/f4514dc4-72f5-f37f-9f7b-ee5c287a5c8c.png"/>[SparkFun JetBot AI ロボット キット](https://www.sparkfun.com/products/15365)


| 1 | Jetson | NVIDIA Jetson Nano開発者キット | 1 |
|--:|:--|:--|--:|
| 2 |  | SparkFun Jetbotイメージ（事前フラッシュ） | 1 |
| 3 | メインボード | Raspberry Pi用のSparkFun Qwiic HAT | 1 |
| 4 | バッテリー | リチウムイオンバッテリーパック-10Ah（3A / 1A USBポート） | 1 |
| 5 | カメラ | Leopard Imaging 145FOV広角カメラとリボンケーブル | 1 |
| 6 |  | SparkFun JetBotカメラマウント用アクリルサイドウォール | 1 |
| 7 | アンテナ | なし | 0 |
| 8 | 無線LANカード | EDIMAX WiFiアダプタ | 1 |
| 9 |  | Edimax 2-in-1 WiFiおよびBluetooth 4.0アダプター | 1 |
| 10 | モーター | SparkFunシリアル制御モータドライバ | 1 |
| 11 | ディスプレイ | SparkFun Micro OLEDブレイクアウト（Qwiic） | 1 |
| 12 | SDカード | 64GB MicroSDカード - JetBotイメージで事前フラッシュ済 | 1 |
| 13 |  | 円形ロボティクスシャーシキット（2層） | 1 |
| 14 | 車体部品 | シャドーシャーシモーター（ペア） | 1 |
| 15 |  | ボールキャスターメタル-3/8 " | 1 |
| 16 |  | SparkFun JetBotアクリルマウンティングプレート | 1 |
| 17 |  | ホイールとタイヤ-円形ロボットシャーシの一部 | 2 |
| 18 | 付属品 | SparkFun microB USBブレイクアウト | 1 |
| 19 |  | SparkFunシリアル制御モータードライバー | 1 |
| 20 |  | ブレッドボードミニ粘着レッド | 1 |
| 21 |  | ヘッダー-オス-PTH-40ピン-ストレート | 1 |
| 22 |  | デュアルロックベルクロ | 1 |
| 23 |  | SparkFun JetBotアクリルカメラマウント＆4xナイロンマウントハードウェア | 2 |
| 24 |  | ネジ留め式端子2.54mmピッチ（2ピン） | 2 |
| 25 | ケーブル | USB Micro-Bケーブル-6 " | 2 |
| 26 |  | Qwiicケーブル-100mm | 1 |
| 27 |  | 2 in-22ゲージのソリッドコアフックアップワイヤ（赤） | 1 |
| 28 |  | Qwiicケーブル-メスジャンパー（4ピン） | 1 |
| 29 | コントローラー | なし | 0 |
| 30 | クラウドサービス | AWS IoT Greengrass | 1 |

[出典：NVIDIA](https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/)

## Waveshare JetBot
　<img width="200" alt="j2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91552/06000f5e-6071-1db4-78e8-7f8de8806d11.png"/>[Waveshare JetBot AI キット](https://www.waveshare.com/product/mini-pc/jetson/packages/jetbot-ai-kit.htm)

| 1 | Jetson | NVIDIA Jetson Nano開発者キット | 1 |
|--:|:--|:--|:--|
| 2 | メインボード | Jetbot 拡張ボード | 1 |
| 3 | バッテリー |  12.6V バッテリチャージャー | 1 |
| 4 | 電源 | パワーアダプター EUヘッド | 1 |
| 5 | カメラ | IMX219-160 カメラ | 1 |
| 6 |  | カメラホルダー | 1 |
| 7 | アンテナ | デュアル周波数アンテナ | 2 |
| 8 | 無線LANカード | Wireless-AC8265 | 1 |
| 9 | モーター | モーター | 2 |
| 10 | ディスプレイ | なし | 0 |
| 11 | SDカード | マイクロ SD カード 64GB  | 1 |
| 12 | 車体部品 | メタルボックス(車体) | 2 |
| 13 |  | ホイール | 2 |
| 14 |  | ユニバーサルホイール | 2 |
| 15 | 付属品	 | ネジパック | 一式 |
| 16 | | ねじまわし 2種 | 1 |
| 17 |  | スパナ | 1 |
| 18 | ケーブル | 16ピン 9cmケーブル | 1 |
| 19 | コントローラー | ワイヤレスゲームパッド | 1 |
| 20 | クラウドサービス | なし | 0 |

[出典：NVIDIA](https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/)

## Seeed JetBot 
　<img width="200" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91552/2bcd871b-3b9e-63f6-3ab8-e322c61f569e.png"/>[Seeed JetBot スマート カー キット](https://www.seeedstudio.com/Seeedstudio-JetBot-Smart-Car-Powered-by-NVIDIA-Jetson-Nano-p-4054.html)


| 1 | Jetson | NVIDIA Jetson Nano開発者キット | 1 |
|--:|:--|:--|--:|
| 2 | メインボード | モータードライバーボードPCA9685 + TB6612 | 1 |
| 3 | バッテリー | なし | 0 |
| 4 | カメラ | IMX219 8MPカメラ | 1 |
| 5 | アンテナ | Intel Dual Band Wireless-Ac 8265 W / Bt 1 WiFi | 1 |
| 6 | | デュアル周波数アンテナ2 | 2 |
| 7 | 無線LANカード | Intel Dual Band Wireless-Ac 8265 W / Bt | 1 |
| 8 | モーター | TTモーター | 2 |
| 9 | ディスプレイ | PiOLEDディスプレイ128x32 OLED | 1 |
| 10 | | OLED用ピンボード | 1 |
| 11 | SDカード | 64G TFカード | 1 |
| 12 | 車体部品 | シャシー | 1 |
| 13 |  | ホイール | 2 |
| 14 | | ユニバーサルホイール | 1 |
| 15 | 付属品	 | M2 * 5ネジ式A | 12 |
| 16 |  | M3 * 5ネジ式B | 2 |
| 17 |  | M3 * 30ネジ式C | 4 |
| 18 |  | M3ナット | 4 |
| 19 | カメラ用 | M2 * 5 + 5ネジ式D | 4 |
| 20 | マザーボード用 | M2 * 5 + 5ネジ式D | 4 |
| 21 | ケーブル | USB-マイクロUSBケーブル：電力ケーブル | 1 |
| 22 |  | モーターケーブル | 3 |
| 23 |  | Jetson Nanoからドライバーボードケーブル | 1 |
| 24 | コントローラー | なし | 0 |
| 25 | クラウドサービス | なし | 0 |
[出典：NVIDIA](https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/)

## Silicon Highway Nano
　<img width="200" alt="" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/91552/992eb196-4d11-42c6-6e18-be9270fd978a.png"/>[Silicon Highway Nano JetBot キット](https://www.siliconhighwaydirect.co.uk/product-p/jetbot-kit.htm)

NVIDIA Jetson Nano開発者キット　は個別での購入になります。

| 1 | Jetson | 梱包なし | 0 |
|--:|:--|:--|--:|
| 2 | メインボード | 1927 x 2927モータードライバー | 1 |
| 3 | バッテリー | INIU 10000mAhポータブル電源バンク | 1 |
| 4 |  | アダプター(EU/英国) | 1 |
| 5 | カメラ | Raspberry Pi BMP（V2）カメラモジュール | 1 |
| 6 |  | 160度FoV-カメラレンズアタッチメント | 1 |
| 7 | アンテナ | 2042811100 Wi-Fiアンテナ | 2 |
| 8 | 無線LANカード | 8265.NGWMG.NV Intel WIFIカード | 1 |
| 9 | モーター | 200RPMギアボックス付き 3777 TTモーター | 2 |
| 10 | ディスプレイ | 3527128 x 32 OLEDディスプレイ | 1 |
| 11 |  | 6130362102136直角ヘッダー | 2 |
| 12 | SDカード | MB-MC64GA / EU Micro SDカード（64GB / u3） | 1 |
| 13 | 車体 | 3757 60mmホイール | 2 |
| 14 | 付属品 | 粘着パッド | 2 |
| 15 |  | M2ネジ | 20 |
| 16 |  | M2ワッシャー | 20 |
| 17 |  | M3ネジ | 4 |
| 18 |  | M3ナット | 4 |
| 19 |  | 1”デルリンPOMボール | 1 |
| 20 | ケーブル | ジャンパー線 | 4 |
| 21 |  | B071KWZBL3直角2パックUSBケーブル | 1 |
| 22 |  | SKU2614 Micro USB、5V 2.5A | 1 |
| 23 | コントローラー | なし | 0 |
| 24 | クラウドサービス | なし | 0 |

[出典：NVIDIA](https://www.nvidia.com/ja-jp/autonomous-machines/embedded-systems/jetbot-ai-robot-kit/)


### Kitの比較

| キットの種類  | 日本で購入可能 | 参考価格  | Jetson<br>Nano | 工具以外<br>の準備 | ドキュメント<br>充実度 | AWS<br>Greengrass |
|:------------|:------------:|--------:|:--------:|:------:|:------:|:------:|:------:|
| SparkFun   | ○           | $274.95 | ○ | 不要 | ○ | ☆ |
| Waveshare  | ○           | $219.99 | ○ | 一部必要 | △ | × |
| Seeed      | ○           | $248.00 | ○ | 一部必要 | △ | × |
| Silicon Highway | ヨーロッパ<br>のみ  | £212.00 | × | 一部必要 | △ | × |

## 選定と購入
　手軽に動かしてみたかったのでいろいろ揃った`SparkFun JetBot`にしました。
　AWS IoT Greengrass もおもしろそうです。

　SparkFunのサイトでは、BACK ORDERでしたが、運良く[US版Amazon](https://www.amazon.com/SparkFun-JetBot-Powered-NVIDIA-Jetson/dp/B07YCT1CDX/ref=sr_1_1?keywords=SparkFun+JetBot+AI+Kit+Powered+by+NVIDIA+Jetson+Nano&qid=1573309991&sr=8-1)で最後の一個を購入できました。
　（$20ほど割増...）
　ただ、SparkFunのサイトで在庫切れなのは `Jetson Nano` がセットものだけです。
　[Jetson Nano付属なしのJetBot AI Kit](https://www.sparkfun.com/products/15437) と [Jetson Nano Developer Kit](https://www.sparkfun.com/products/15297)を別々に購入することができたようです。
　注文から約２週間で到着しました。

### ここまでの費用
合計：32,223円

| 品名       | 参考価格  | 備考 | 
|:----------:|----------:|:----------:|
| [SparkFun JetBot with Jetson Nano](https://www.sparkfun.com/products/15365) | 32,036円| $294.95 |
| [半田ごてセット](https://www.amazon.co.jp/dp/B07VPDG16J/ref=psdc_2039403051_t1_B07TWTZDSZ)     | 1,999円|        |
| プラスドライバー  | 0円  |    |

## 今回はここまで
　ここまでは、NVIDIA JetBot の前準備です。
　次回は組み立ててみます。


11日目は コテツさん です。