「プラレール」に「ラズパイ」を載せて、自動運転に挑戦します。
※今回の記事では、概要編として概観を記しておきたいと思います。
"AIプラレール" とは
世の中に「AIプラレール」という言葉があるのかは定かではないですが、この記事ではAIプラレールと称して、プラレールの動力をラズパイとモータードライバー経由で制御し、速度調整(前後進・停止)を行えるようにします。
加えて、Piカメラの画像から物体識別を行い、その結果により停止・前進等の自動運転できる環境を整えます。
※おまけとして、スマホから手動遠隔操作できるようにもします。(ラジコンみたいな感じ)
環境
実装環境は以下の通りです。(2020年2月時点)
- AI環境(パソコン)
- GPU:GeForce GTX 1070(Driver Ver418.87.01, CUDA Ver10.1)
- ホストOS:CentOS release 7.7.1908
- コンテナ:Docker Ver19.03.4(イメージ:Ubuntu 18.04.3 LTS)
- エッジ環境(プラレール)
- シングルボード:Raspberry Pi Zero WH
- カメラ:Raspberry Pi Camera V2
- プラレール:S-60 EF66電気機関車(中古)
- モータードライバー:HiLetgo L9110S
- バッテリー:Anker PowerCore 5000、cheero Canvas 3200mAh IoT機器対応
- USBケーブル:そこらへんに転がっているType-A(オス)とmicro-B(オス)の口があるもの
- ジャンパーワイヤーを少々(取り回しを良くするために、ハウジングキットがあると尚良し)
- ミニブレッドボード(無くてもよいけど、あった方が試行錯誤するときに便利)
- モバイル環境
- 手持ちのスマホ(私はZenFone3、古い)
仕組み
プラレール
プラレールの各車両の役割は次の通りとしました。
- 1号車:一般的なプラレールと同じで動力車両となります。DCモーターはプラレールに搭載されているものを流用します。電池はダミー電池に置き換え、モータードライバーに接続します。また、Piカメラを搭載し、運転席から見える景色を撮影できるようにします。
- 2号車:プラレールの動力を制御するシステム車両となります。ラズパイにはモータードライバー(動力制御用)とPiカメラ(物体識別用)を接続します。
- 3号車:DCモーター(モータードライバー経由)とラズパイへ給電を行う電源車となります。バッテリーは、合計2つ搭載します。
システム
エッジからバックエンドまでの各システムの役割と、システム間の連携は以下の通り。
- AI環境:AI環境では、車両から送られてくる画像を常時ひたすら物体識別を行い、特定の物体(人)を検知した場合に、エッジのプラレールに対して「停止」の命令を発します。
- エッジ環境:プラレールの電源を起動し、車両の走行や停止を行います。初期走行は、初期設定として走行状態とするか、モバイル環境からの操作で走行を開始します。AI環境から停止を命令を受けた場合には、一定期間停止(今回は適当に5秒間)し、その後は自動で運転を再開します。
- モバイル環境:プラレールの電源が起動した状態で、スマホのブラウザに表示されている操作画面から、前進・後進・停止の操作を行います。
AIプラレール概要編のまとめ
今回は、概要編として以下の内容をまとめておきました。
- AIプラレールのコンセプトとイメージ
- 物理・論理のハイレベルアーキテクチャ
- 工作に必要な(使った)材料の明示
次回は、実装編を公開予定(時期未定)です。