Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

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_git.png

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

無題VSCode_fs.png

環境を切り替えずに同じエディタ上で編集できるので楽ですね。

4.DonkeyCarを動かしてみる

ターミナルからsshコマンドでDonkeyCarを動かしました。

cd mycar3
python manage.py drive --js

image.png

とりあえず、動いているようです。

dataディレクトリに新しいtubディレクトリが追加され、画像ファイルが大量に書き込まれていますので、データの収集ができています。

5.PC側にファイルを持ってくる

ZIP圧縮してPC側にコピーします。圧縮せずに大量コピーするとデータが化けてしまうことがあったので、圧縮するのが無難です。
無題VSCode_fs_zip.png

出来上がったZipファイルをコピーして、ローカル側にペーストします。
VSCodeがファイラーとしても機能するので楽にできます。
無題VSCode_fs_cp.png

PC側にペースト
無題VSCode_fs_past.png

解凍します。
Zip File Explorerを入れておくと、右クリックメニューで解凍できます。

無題VSCode_fs_extract.png

これで、PC側で学習する準備ができました。

6.学習

VSCodeのターミナルで実行します。

conda activate donkey
cd mycar
python manage.py train --model ./models/mypilot.h5

完了すると学習グラフのウィンドウが開きます。
Figure_1.png

mypilot.h5ファイルができていますので、JETSON-nano側にコピーします。
前のファイルが残っていると、別名でコピーされることに注意。

無題VSCode_fs_mypilot.png

無題VSCode_fs_mypilot2.png

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での実施を予定。 

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした