memorandums

日々の生活で問題解決したこと、知ってよかったことなどを自分が思い出すために記録しています。

donkey car simulator (macos & pipenv)

以下の経緯で急にdonkey carで遊びたくなりちょっとあれこれやっていました。やっとSimulatorが動作しました。先人の書いてくれた内容の二番煎じですが、とりあえず手順をメモしておきます。

人は変わる - memorandums

環境はmacos14.5(homebrew)です。推奨環境はpython3.7かつminicondaだそうです。condaと聞くだけで嫌な気分になるので(PC環境汚染)...pipenvでやりたかったのでした。とりあえず以下の手順で動作しました。

homebrewとpipenvとgitがインストールされた状態からスタートします。いろいろと彷徨きましたが結局、参考にしたのは以下の記事でした。ありがとうございました。

monomonotech.jp

(0) こちらからシミュレータをダウンロードして/Applications以下にコピーします。この時点のバージョンはv22.11.06でした。

(1)ターミナルを起動して以下を実行します。

cd ~/Desktop
mkdir projects
cd projects

(2) 以下の2つのレポジトリをcloneします。

git clone -b master https://github.com/autorope/donkeycar
git clone https://github.com/tawnkramer/gym-donkeycar

(3) pipenvの環境をセットアップします。python3.7が推奨とのことですが3.7はM1macでは動作させるのが至難の技らしく、brewでもdeprecatedになっていたので3.8にしました。

pipenv install --python 3.8
pipenv --python 3.8
pipenv install pandas
pipenv install setuptools
pipenv install tensorflow
pipenv install opencv-python
pipenv install imgaug

(4) pipenv環境下に入ります。

pipenv shell

(5) donkey関係のモジュールをpip installします。

pip install -e donkeycar
pip install -e gym-donkeycar

(6) プロジェクトを作成します。

donkey createcar --path ./mycar
cd ./mycar
code .

(7) myconfig.pyの295〜297をコメントアウトを外し以下のようにします。

DONKEY_GYM = True
DONKEY_SIM_PATH = "/Applications/donkey_sim.app/Contents/MacOS/donkey_sim"
DONKEY_GYM_ENV_NAME = "donkey-generated-track-v0"

(8) 以下のコマンドを実行します(シミュレータが自動起動するはずですがしない場合は手動で起動してください)。

python manage.py drive

(9) ブラウザで http://localhost:8887/drive にアクセスします。「Gamepad」をクリックし「Max Throttle」を10%にします。

(10) macにコントローラ(Pro Controller or PS4コントローラあたり)をつなげると、ジョイスティックでコントロールできます。ブラウザ上でマウスをドラッグすれば操作はできなくはないですがもう無理なくらい難しいです。何等かのコントローラを使用することをオススメします。頑張って運転して1周くらいします。

(11) 1周終わったら操作データと画像データがmycar/dataに入っているはずです。ターミナルでCtrl+Cを押します。

(12) 以下のコマンドで学習を開始します。

 donkey train --tub ./data --model models/mypilot.h5

(13) 学習が終わったら以下のコマンドを実行すると自動運転の制御が開始されます。

 python manage.py drive --model models/mypilot.h5

(14) 運転の開始のため、ブラウザでhttp://localhost:8887にアクセスします。そして、Mode&Pilotを「Local Pilot (d)」にすると制御が始まるようです。合っているのかわかりませんが動きました。

とりあえず。