Edited at

Donkey Carの操作と管理をVSCodeで行う


VSCodeだけでDonkeyCarを管理したい

半年くらいDonkey Carで遊んでいましたが、操作と管理の方法をしょっちゅう変えていました。

面倒になってきたので、ツールを固定することにしました。

選んだのはVSCode

VSCodeの拡張機能を使って一元管理する方法を試してみました。

環境は以下の通り


  • JETSON-nano

  • モバイルディスプレイ

  • Windows10(NVIDIA GTX1650Ti)

方針


  • イベント会場を想定して無線LANを使わない1

  • 操作と管理はPCで行う

  • 学習はPCで行い、JETSON-nanoでは学習しない 2

  • VSCodeの拡張機能を当てにして、他のアプリは使用しない3

→固定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がファイラーとしても機能するので楽にできます。

PC側にペースト

解凍します。

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は本当に優秀ですね。





  1. *方針に反しますが、VSCodeのテストのほとんどを無線LANを用いて実施しました。有線LANで接続すると数分で切断された上に、再接続ができませんでした。後日、USB-有線LAN変換を使って再テストします。 



  2. 2019/8/3,4のMF-TokyoでのDonkeyCarトーナメントでは、データ収集走行と学習処理をすべてJETSON-nanoで行うことで、無線LANの込み合うイベント会場で驚くほどの安定度で自動運転ができました。しかし、12000を超えるデータ量の学習は30分を超えてしまうため、会場での学習を断念しました。蓄積したデータが生かしきれずにやや不完全燃焼でした。 



  3. 本文の随所に出てくるVSCodeの拡張機能は、VSCode上で[Shift]+[Ctrl]+X して出てくるテキストボックスに、入力して検索できます。インストールボタンで簡単に導入できます 



  4. 有線LANで接続すると、比較的短時間で切断され、ケーブルを一度抜き差ししないと再接続できませんでした。私のPCの有線LAN固有のものかと思われます。無線LAN側では問題なく動作しています。USB-LAN変換コネクタを用意して有線LANでの実施を予定。