Donkeycarの公式ドキュメントに Mobile App というセクションが増えていた。
Donkeycar: Mobile App
http://docs.donkeycar.com/guide/mobile_app/
OSSであるDonkeycarをそのまま使う場合、PCやRaspberry Pi上でpythonをコマンドラインで動かす必要があったが、このスマホアプリとDonkeycarのOSイメージを使うとそれが不要になるらしい。
ということで試してみた。
必要なものを準備
使用前提は、Raspberry Piに接続するモータドライバの種類がPCA9685もしくはRoboHAT MM1 のどちらかであることと、搭載しているマイクロコンピュータがRaspberry Pi4Bのみということだったので、昔Robocar Storeで購入した標準仕様のDonkeycarのRaspberry Pi3B+を4Bに取り替えて使った。
4Bのメモリサイズは書かれていなかった。2GBのものを使ったが今の所動作している。
他に必要なものはインターネットに接続できるWiFiルータ、SDカード書き込み可能なPC、それにAndroidもしくはAppleのスマートフォン。
F710 Wireless Gamepad も動作するが、なくてもアプリ上から操作が可能になっている。
RoboHAT MM1を使うと電源の電圧状況がアプリからチェックできるらしいが、持っていないので試していない。Raspberry Pi上に乗せるタイプのHAT基板なので初心者はこっちのほうがピンコネクタの接続に迷わなくてすむ。香港のRobocar Storeでもかえるが、スイッチサイエンスでもとりあつかっているようだ。
スイッチサイエンス:Robo HAT MM1
https://www.switch-science.com/catalog/6381/?gclid=CjwKCAiA9bmABhBbEiwASb35V_3CvCwUEIQk95rCpQly56jUx6-lM61jeg6__svzRFkDHcZJ3PwxZBoCvAoQAvD_BwE
あと余談だが、どうも自分の持っているバッテリがへたったのだとおもうが、4BになってしまったのでラジコンバッテリでのRaspberry Piの起動ができなくなっていた。のでスマホ用モバイルバッテリをくくりつけてそちらから給電させて動かした。
PCを使ってイメージをSDカードへ書き込みDonkeycarへさす(以降PC不要)
イメージをダウンロードしてきてEtcherなどでフォーマット済みのSDカード(自分は32GBを使った)へ書き込む。
wpa_supplicant.confの書き換えとかは不要だ。
なおF710を使いたい場合は、起動前にドングルを指しておくこと。
Donkeycarを起動して2分ほど待つ
初期セットアップがかかるのだとおもうが、まつようにドキュメントに書かれていた。Raspberry Piのランプが安定したら、スマホのWiFi設定画面で接続先として「donkey-<MACアドレス後半>」という名前が出てきたら準備完了だ。
スマホにRobocar Controllerをインストール
セットアップ中にApple Storeで「Robocar Controller」で検索すると、コミュニティロゴであるロバマークのついたアプリがあるのでこれをインストールする。
スマホのWiFi設定をSSID 「donkey-<MACアドレス後半>」 に変更
Donkeycarが起動すると本体がWiFiルータの接続ポイントのようにアクセスポイントが見えるようになる。初回の場合は、まずこれにつないでDonkeycarの設定を色々変更することになる。
アプリで初期設定をおこない反映させる
Robocar Controllerを起動すると初期設定画面がでてくるので、国をJapanに、コントローラタイプをPCA9685(もしくはMM1)に、ホスト名を適当に、WiFi設定をインターネットへ接続可能なSSIDに変更する。走行会の場合はホスト名とパスワードはかならず設定しておくこと。
ちなみにここでSSIDを変更しないでおくと、トレーニング処理を実行できない。ただ、手動運転までは可能なので、外につなぎたくないとか手動運転だけで遊びたい人はやらなくても良い(ただし、スマホはDonkeycar側につなぐので使用中はインターネット接続できなくなる)
アプリから一旦ぬけ、スマホのWiFi設定をDonkeycarに指定したSSIDと同じアクセスポイントに変更。
反映させると、ぐるぐる回る画面が永遠に続いてしまうので、アプリを早々にとじ、WiFi設定変更画面でSSIDを変更して、Donkeycarと同じセグメントのLANにつないでおく。
アプリを再度起動、先ほど指定したホスト名を選択
出てこない場合は何度かRefreshする。星をつけていても、ここで認識していないと接続することはできない。星は走行会でたくさんのDonkeycarが動いているとき自分の車かどうかを判別させるためだとおもう。
キャリブレーションを実行
標準Donkeycarの車体は意外とずれているので最初にしておく。ステアリングがフリー状態で中央にきていること、フルで右左にした時の状態はとくに綿密に設定する。
ステアリングも最大スピードがだせるかを確認する。走行会ではない場合はそれなりの速度しか出ないように設定してもいい。
よさそうなら保存する。
ドライブを選択し手動走行を実行
F710で操作したい場合は「Physical Joystick」を、スマホの場合は「Virtual Joystick」を選択する。
F710の場合は、前方カメラ画像は見ることができないが操作しやすい。ただ、走行会だと混線するのでVirtualを選択せざるを得ないかもしれない。
右上の白丸を押すとTubデータのレコーディングが開始される。ある程度慣れたら、レコーディングを開始して、学習データを収集する。
終了は左端のバツを押す。すると取得したデータの統計情報が表示される。データ自体はDonkeycar本体に保存される。削除したい場合はアプリから実行できる。
1万件くらいで十分なのでとりあえず頑張って取得する。
トレーニングを実行
トレーニングアイコンを押すと何も出てこないので+を押してジョブを追加する。トレーニングジョブは、1日1車両5回までしかできない。Tubデータは複数選択可能だが、100MBまでという制約があるので注意。またトレーニング処理は最大15分までで強制終了になるため、そのあたりは気をつけて使用する。
15分ほど放置し、再度アプリに接続しトレーニングが終了していることを確認する。
Donkeycarを走行位置において、自動運転開始
トレーニングが完了したジョブを選択すると、AutoPilotが選択できるようになっているはずなので、これを押すと自動運転が開始される。
----
PCは最初のSDカードを作成するときだけしか使用しない。トレーニングはアプリ側が用意したAWSインスタンスを使用する。つまり無料だ(いまのところ?)。太っ腹ではあるが、複数同時にジョブキックされたらどうなるかとかは試していない。おそらく失敗になって再度キックしないとだめなんじゃないかとおもう。
4B前提ということなので、今から始める人は Robocar Store の Donkeycar S1 というモデルを選択することになるとおもう。こちらも試していないので、わからないが、おそらくMM1が搭載されているのではないだろうか。
たぶんこれを作ったのは、Pythonを知らなくてもDonkeycarを扱えるようにしたかったのだとおもう。独自のDonkeycarを作っている人はモータコントローラとRaspberryPiの種類に気をつければだいじょうぶだとおもう。
0 件のコメント:
コメントを投稿