VSCodeだけでDonkeyCarを管理したい
半年くらいDonkey Carで遊んでいましたが、操作と管理の方法をしょっちゅう変えていました。
面倒になってきたので、ツールを固定することにしました。
選んだのはVSCode。
VSCodeの拡張機能を使って一元管理する方法を試してみました。
環境は以下の通り
- JETSON-nano
- モバイルディスプレイ
- Windows10(NVIDIA GTX1650Ti)
方針
→固定IPにすることで簡単に接続できるようになりました*
1.Windows側、VSCodeでGitHubからPULLする
GitLensをインストールしました。
DonkeyCarを自分のリモートリポジトリにフォークし、そこからmasterをpullしました。
VSCodeのターミナルでAnacondaのプロンプトを動かせるようにしてから、マニュアルに沿ってインストール。
こちらの記事を参考にさせていただきました。
Visual Studio Code のターミナルから Anaconda Prompt を開くようにする (Windows)
設定完了後、DonkeyCarのマニュアル通りに実行します。
WindowsにDonkeycarをインストールする
インストール後に、コンソールから何か動かすときは、
conda activate donkey
を忘れずに。
2.JETSON-nano にDonkey Carをインストールする
ターミナルで接続してから、普通にコマンドを打ちます。
私は3.0.2のインストールでドライバなどは全部入っているので、DonkeyCarだけインストール。
まっさらな状態から入れる場合は、opencvのインストールなどで、かなり大変ですが、頑張ってください。
git clone https://github.com/autorope/donkeycar
cd donkeycar
git checkout master
pip install -e .[nano]
pip install --extra-index-url https://developer.download.nvidia.com/compute/redist/jp/v42 tensorflow-gpu==1.13.1+nv19.3
DonkeyCarアプリケーションの生成は、ディレクトリを切り替えて実施できるので、
donkey createcar --path ~/mycar3
別のディレクトリに作って実行することにします。
3.myconfig.pyの編集
VSCodeにSSH FSをインストールします。
設定を開いてHOST OptionalをIPアドレスで直接設定するか、ホスト名を入れ(.localを付けないこと)、ユーザー名とパスワードを設定して接続します。4
環境を切り替えずに同じエディタ上で編集できるので楽ですね。
4.DonkeyCarを動かしてみる
ターミナルからsshコマンドでDonkeyCarを動かしました。
cd mycar3
python manage.py drive --js
とりあえず、動いているようです。
dataディレクトリに新しいtubディレクトリが追加され、画像ファイルが大量に書き込まれていますので、データの収集ができています。
5.PC側にファイルを持ってくる
ZIP圧縮してPC側にコピーします。圧縮せずに大量コピーするとデータが化けてしまうことがあったので、圧縮するのが無難です。
出来上がったZipファイルをコピーして、ローカル側にペーストします。
VSCodeがファイラーとしても機能するので楽にできます。
解凍します。
Zip File Explorerを入れておくと、右クリックメニューで解凍できます。
これで、PC側で学習する準備ができました。
6.学習
VSCodeのターミナルで実行します。
conda activate donkey
cd mycar
python manage.py train --model ./models/mypilot.h5
mypilot.h5ファイルができていますので、JETSON-nano側にコピーします。
前のファイルが残っていると、別名でコピーされることに注意。
7.オートパイロットを実行
python manage.py drive --model models/mypilot.h5
このコマンドでブラウザで接続して、ローカルパイロットが動きます。
無線LANが使えない環境では、Jetson-nanoの上で自分自身に接続して動かしました。
オートパイロット実行時のJETSON-nanoのCPUの負荷を見ると、コアの1つは100%、他は80%で、かなり高い負荷で動いていました。(メモリ3G使用)
しかし、毎回高負荷になるわけではなく、それ以外の時はコアはすべて20%そこそこの負荷で動いていました。(メモリは2.7G使用)
どのタイミングで発生するかはわかりませんが、調子が悪くて走らないときは、この高負荷状態に陥っていたようです。
少しでも負荷を減らすために、ブラウザ無しでオートパイロットが起動できないものでしょうか。
8.なにができるようになったか
一連の動きをVSCodeでコントロールすることができるようになりました。
GitHub、学習用PC、DonkeyCar(JETSON-nano)のそれぞれで別の装置を使わなくても、VSCodeの操作を覚えるだけでDonkeyCarを操作できます。
VSCodeは本当に優秀ですね。
-
*方針に反しますが、VSCodeのテストのほとんどを無線LANを用いて実施しました。有線LANで接続すると数分で切断された上に、再接続ができませんでした。後日、USB-有線LAN変換を使って再テストします。 ↩
-
2019/8/3,4のMF-TokyoでのDonkeyCarトーナメントでは、データ収集走行と学習処理をすべてJETSON-nanoで行うことで、無線LANの込み合うイベント会場で驚くほどの安定度で自動運転ができました。しかし、12000を超えるデータ量の学習は30分を超えてしまうため、会場での学習を断念しました。蓄積したデータが生かしきれずにやや不完全燃焼でした。 ↩
-
本文の随所に出てくるVSCodeの拡張機能は、VSCode上で[Shift]+[Ctrl]+X して出てくるテキストボックスに、入力して検索できます。インストールボタンで簡単に導入できます ↩
-
有線LANで接続すると、比較的短時間で切断され、ケーブルを一度抜き差ししないと再接続できませんでした。私のPCの有線LAN固有のものかと思われます。無線LAN側では問題なく動作しています。USB-LAN変換コネクタを用意して有線LANでの実施を予定。 ↩