シミュレータを起動します
シミュレーターを開始するのと同じ方法で開始します。
https://github.com/tawnkramer/gym-donkeycar/releases
シミュレータをメニュー画面にとどまらせます。
シミュレーターを開始するのと同じ方法で開始します。
https://github.com/tawnkramer/gym-donkeycar/releases
シミュレータをメニュー画面にとどまらせます。
複数のDonkeyCarコンテナを同時に作成したい場合に使用します。実行しますpython multi_player.py
。スクリプトは、作成したいレーサーの数を表示します。上記のように、DockerハブからDockerイメージをプルしているため、初めて実行するのに時間がかかります。
chen@Hongs-MacBook-Pro donkeycar-docker % python multi_player.py
Enter number of racer: 4
docker run -p 8000:8000 -p 8887:8887 -v /Users/chen/Docker/donkeycar-docker/mycar1:/root/mycar -v mycar1_db:/donkeycar-console -e WEB_CONTROL_PORT=8887 -e mode=docker –name donkeycar1 –hostname donkeycar1 -d robocarstore/donkeycar:latest
8ada9e9e07a62d1c07c872d1ac5cef78cea931d2d3783e88797bdc25c4f3128f
using donkey v3.1.5 …
Creating car folder: /root/mycar
making dir /root/mycar
Creating data & model folders.
making dir /root/mycar/models
making dir /root/mycar/data
making dir /root/mycar/logs
Copying car application template: complete
Copying car config defaults. Adjust these before starting your car.
Copying train script. Adjust these before starting your car.
Copying calibrate script. Adjust these before starting your car.
Copying my car config overrides
Donkey setup complete.
docker run -p 8001:8000 -p 9887:9887 -v /Users/chen/Docker/donkeycar-docker/mycar2:/root/mycar -v mycar2_db:/donkeycar-console -e WEB_CONTROL_PORT=9887 -e mode=docker –name donkeycar2 –hostname donkeycar2 -d robocarstore/donkeycar:latest
5271640695a91d97204f4df669a358f0ceb72bd46eea65bf9b8e6e8c262ddcf4
using donkey v3.1.5 …
Creating car folder: /root/mycar
making dir /root/mycar
Creating data & model folders.
making dir /root/mycar/models
making dir /root/mycar/data
making dir /root/mycar/logs
Copying car application template: complete
Copying car config defaults. Adjust these before starting your car.
Copying train script. Adjust these before starting your car.
Copying calibrate script. Adjust these before starting your car.
Copying my car config overrides
Donkey setup complete.
docker run -p 8002:8000 -p 10887:10887 -v /Users/chen/Docker/donkeycar-docker/mycar3:/root/mycar -v mycar3_db:/donkeycar-console -e WEB_CONTROL_PORT=10887 -e mode=docker –name donkeycar3 –hostname donkeycar3 -d robocarstore/donkeycar:latest
6ea11e310c4b039199d101c68e5898736120f3912bf2ddba4b931f5a051cff4c
using donkey v3.1.5 …
Creating car folder: /root/mycar
making dir /root/mycar
Creating data & model folders.
making dir /root/mycar/models
making dir /root/mycar/data
making dir /root/mycar/logs
Copying car application template: complete
Copying car config defaults. Adjust these before starting your car.
Copying train script. Adjust these before starting your car.
Copying calibrate script. Adjust these before starting your car.
Copying my car config overrides
Donkey setup complete.
docker run -p 8003:8000 -p 11887:11887 -v /Users/chen/Docker/donkeycar-docker/mycar4:/root/mycar -v mycar4_db:/donkeycar-console -e WEB_CONTROL_PORT=11887 -e mode=docker –name donkeycar4 –hostname donkeycar4 -d robocarstore/donkeycar:latest
ffb1b61eaaa207e4bd8ac9be7bfe6603f9943c267a633654516579b827a4e0da
using donkey v3.1.5 …
Creating car folder: /root/mycar
making dir /root/mycar
Creating data & model folders.
making dir /root/mycar/models
making dir /root/mycar/data
making dir /root/mycar/logs
Copying car application template: complete
Copying car config defaults. Adjust these before starting your car.
Copying train script. Adjust these before starting your car.
Copying calibrate script. Adjust these before starting your car.
Copying my car config overrides
Donkey setup complete.
chen@Hongs-MacBook-Pro donkeycar-docker % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ffb1b61eaaa2 robocarstore/donkeycar:latest “/bin/sh -c ‘/${RUNT…” 11 seconds ago Up 10 seconds 0.0.0.0:11887->11887/tcp, 0.0.0.0:8003->8000/tcp donkeycar4
6ea11e310c4b robocarstore/donkeycar:latest “/bin/sh -c ‘/${RUNT…” 14 seconds ago Up 13 seconds 0.0.0.0:10887->10887/tcp, 0.0.0.0:8002->8000/tcp donkeycar3
5271640695a9 robocarstore/donkeycar:latest “/bin/sh -c ‘/${RUNT…” 17 seconds ago Up 16 seconds 0.0.0.0:9887->9887/tcp, 0.0.0.0:8001->8000/tcp donkeycar2
8ada9e9e07a6 robocarstore/donkeycar:latest “/bin/sh -c ‘/${RUNT…” 19 seconds ago Up 19 seconds 0.0.0.0:8000->8000/tcp, 0.0.0.0:8887->8887/tcp donkeycar1
chen@Hongs-MacBook-Pro donkeycar-docker %
4台立ち上げていることを確認した。
DonkeySimを予め立ち上げてください。
Dockerイメージを単独の目的(v4ブランチの開発やテストなど)で使用したい場合は、リポジトリでstart.sh
/start.bat
を実行できます。モバイルアプリのテストによく使用します。
初期では、動いてるdockerにはない。
chen@hongs-mbp donkeycar-docker % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
デフォルトでは、このスクリプトはDockerイメージをゼロから構築することに注意してください。初めては少し時間がかかります。
chen@hongs-mbp donkeycar-docker % ./start.sh
Creating network “donkeycar-docker_default” with the default driver
Pulling donkey (robocarstore/donkeycar:latest)…
latest: Pulling from robocarstore/donkeycar
e4c3d3e4f7b0: Pull complete
101c41d0463b: Pull complete
8275efcd805f: Pull complete
751620502a7a: Pull complete
0a5e725150a2: Pull complete
397dba5694db: Pull complete
88f0c2440f8d: Pull complete
788145ec04e5: Pull complete
596d3ac3bc76: Pull complete
40ca4aef2ef5: Pull complete
87ea2ef1374d: Pull complete
ed6b491920b4: Pull complete
541356a5c8a9: Pull complete
29e6394d4b47: Pull complete
7ce63a883dfe: Pull complete
e491cf5735be: Pull complete
41d9f34e17a6: Pull complete
a0cb20c5d69f: Pull complete
8952866a42e8: Pull complete
423eaa08cdad: Pull complete
c183f420a0cf: Pull complete
85f38d48878d: Pull complete
1ebe7130d062: Pull complete
5154cb95f68b: Pull complete
eac8084e778b: Pull complete
a0f3ba3e8d40: Pull complete
4bd0e60f825c: Pull complete
1070cc2006bd: Pull complete
6f1a4cfc07a2: Pull complete
9814f898c51d: Pull complete
71abaa3a0e71: Pull complete
Digest: sha256:cf62e84ad64f81914cf8459cc0644da1ba5ccd907922761a2188be71144dde13
Status: Downloaded newer image for robocarstore/donkeycar:latest
Creating donkeycar … done
Obtaining file:///donkeycar
Requirement already satisfied: numpy in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (1.19.4)
Requirement already satisfied: pillow in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (7.1.2)
Requirement already satisfied: docopt in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (0.6.2)
Requirement already satisfied: tornado in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (6.1)
Requirement already satisfied: requests in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (2.23.0)
Requirement already satisfied: h5py==2.10.0 in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (2.10.0)
Requirement already satisfied: moviepy in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (1.0.3)
Requirement already satisfied: pandas in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (1.1.4)
Requirement already satisfied: PrettyTable in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (2.0.0)
Requirement already satisfied: paho-mqtt in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (1.5.1)
Requirement already satisfied: simple_pid in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (0.2.4)
Requirement already satisfied: matplotlib in /env/lib/python3.7/site-packages (from donkeycar==3.1.5) (3.3.3)
Requirement already satisfied: chardet<4,>=3.0.2 in /env/lib/python3.7/site-packages (from requests->donkeycar==3.1.5) (3.0.4)
Requirement already satisfied: urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 in /env/lib/python3.7/site-packages (from requests->donkeycar==3.1.5) (1.25.11)
Requirement already satisfied: idna<3,>=2.5 in /env/lib/python3.7/site-packages (from requests->donkeycar==3.1.5) (2.10)
Requirement already satisfied: certifi>=2017.4.17 in /env/lib/python3.7/site-packages (from requests->donkeycar==3.1.5) (2020.11.8)
Requirement already satisfied: six in /env/lib/python3.7/site-packages (from h5py==2.10.0->donkeycar==3.1.5) (1.15.0)
Requirement already satisfied: proglog<=1.0.0 in /env/lib/python3.7/site-packages (from moviepy->donkeycar==3.1.5) (0.1.9)
Requirement already satisfied: tqdm<5.0,>=4.11.2 in /env/lib/python3.7/site-packages (from moviepy->donkeycar==3.1.5) (4.51.0)
Requirement already satisfied: imageio<3.0,>=2.5; python_version >= “3.4” in /env/lib/python3.7/site-packages (from moviepy->donkeycar==3.1.5) (2.9.0)
Requirement already satisfied: decorator<5.0,>=4.0.2 in /env/lib/python3.7/site-packages (from moviepy->donkeycar==3.1.5) (4.4.2)
Requirement already satisfied: imageio-ffmpeg>=0.2.0; python_version >= “3.4” in /env/lib/python3.7/site-packages (from moviepy->donkeycar==3.1.5) (0.4.2)
Requirement already satisfied: python-dateutil>=2.7.3 in /env/lib/python3.7/site-packages (from pandas->donkeycar==3.1.5) (2.8.1)
Requirement already satisfied: pytz>=2017.2 in /env/lib/python3.7/site-packages (from pandas->donkeycar==3.1.5) (2020.4)
Requirement already satisfied: setuptools in /env/lib/python3.7/site-packages (from PrettyTable->donkeycar==3.1.5) (47.1.0)
Requirement already satisfied: wcwidth in /env/lib/python3.7/site-packages (from PrettyTable->donkeycar==3.1.5) (0.2.5)
Requirement already satisfied: cycler>=0.10 in /env/lib/python3.7/site-packages (from matplotlib->donkeycar==3.1.5) (0.10.0)
Requirement already satisfied: kiwisolver>=1.0.1 in /env/lib/python3.7/site-packages (from matplotlib->donkeycar==3.1.5) (1.3.1)
Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in /env/lib/python3.7/site-packages (from matplotlib->donkeycar==3.1.5) (2.4.7)
Installing collected packages: donkeycar
Attempting uninstall: donkeycar
Found existing installation: donkeycar 3.1.5
Uninstalling donkeycar-3.1.5:
Successfully uninstalled donkeycar-3.1.5
Running setup.py develop for donkeycar
Successfully installed donkeycar
WARNING: You are using pip version 20.1.1; however, version 20.2.4 is available.
You should consider upgrading via the ‘/env/bin/python3 -m pip install –upgrade pip’ command.
using donkey v3.1.5 …
Creating car folder: /root/mycar
making dir /root/mycar
Creating data & model folders.
making dir /root/mycar/models
making dir /root/mycar/data
making dir /root/mycar/logs
Copying car application template: complete
Copying car config defaults. Adjust these before starting your car.
Copying train script. Adjust these before starting your car.
Copying calibrate script. Adjust these before starting your car.
Donkey setup complete.
セットアップ完了
動いてるdockerには、donkeycarが確認できた。
chen@hongs-mbp donkeycar-docker % docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7b6cca26513a robocarstore/donkeycar:latest “/bin/sh -c ‘/${RUNT…” 10 minutes ago Up 10 minutes 0.0.0.0:8000->8000/tcp, 0.0.0.0:8887->8887/tcp donkeycar
chen@hongs-mbp donkeycar-docker %
App からコントロールするのですが、ブラザーから繋ぐと、APIらしい画面が出る
また、ブラウザからのコントロールもできます。
モバイルアプリを起動すると、モバイルアプリは同じネットワーク上で(物理的または仮想的に)ロバの車を検出し始めます。あなたはこのようなものを見ているはずです。
仮想ロバカーの使用が終了したら、stop.shまたはstop.batを使用してすべてのコンテナを停止します。stop.bat
は、システム内で実行中のすべてのDockerコンテナを強制終了することに注意してください。他のDockerコンテナを実行している場合は、このコマンドを使用しないように特に注意してください。
シングルプレイヤーモードを使用している場合myconfig.py
は、mycar
フォルダーを変更します。
マルチプレイヤーモードを使用している場合myconfig.py
は、各mycarX
フォルダーの下で変更します。
Pythonの専門知識のレベルによっては、PCで実行するようにDonkeyCarソフトウェアを設定するのは難しい作業になる可能性があります。また、使用しているプラットフォームによっても異なります。Windowsユーザーは、より多くの問題に遭遇する傾向があります。あなたが教師の場合、Donkey Carソフトウェアの実行に成功せずに、生徒がCondaまたはPythonを適切にセットアップする方法を理解するのに1時間を費やしたくないでしょう。
ソフトウェアをインストールしなくても、どうすればDonkey Carを試してみることができるのでしょうか。モバイルアプリをダウンロードしてからシミュレーターに接続し、一緒にレースをすることができたらどうでしょうか。それは可能ですか?
Donkey Carソフトウェアをコンテナ化することで、両方の問題を解決できることがわかりました。さらに良いことに、1つのホストで複数の仮想ロバカーコンテナを実行し、同じシミュレータに接続して、直接対戦することができます。
DockerホストにDockerをインストールする必要があります。次の手順に従って、Windows 10 Home、Mac、およびLinuxにDockerをインストールします。比較的古いWindows10 HomeをDockerホストとして使用している場合、Win 10バージョン1903以降が必要になるため、Dockerのインストールにはかなり長い時間がかかることに注意してください。
git clone https://github.com/sctse999/donkeycar-docker
上記の順の操作をして、エラーが発生。
これは(手順2. DonkeySIMの実行★)うまくできてないかな?
この日も問題なく操作できました。
「手順3」を実行後、次のメッセージがあったでしょう
Starting Donkey Server…… you can now go to Hong-ezbook3p01.local:8887 to drive your car.
ここの Hong-ezbook3p01.local:8887 はわたしのPC名で、localhost と同じ意味。
しばらくしたら以下のURLにWEBブラウザでアクセスしてください。コントロール画面が表示されます。
USB接続のゲームコントローラがある場合は、PCに接続してPCのブラウザから接続します。
ない場合は、スマートフォンからアクセスしてください。スマートフォンからアクセする場合は「localhost」をローカルPCのIPアドレスに読み替えてアクセスしてください。
つまり、ローカルPCのIPアドレスは、192.168.33.101の場合、スマートフォンのブラウザから、http://192.168.33.101:8887 へアクセスしてください。
通常は、データ収集が終わって、車を止めたい時に、DonkeyCarソフトウェアを止まるしか方法がないようですが、
しかし、数回か、勝手にDonkeyCarソフトウェアが止まったと体験しました。
次は、1000回データ取ったら、勝手に Shutting down vehicle and its parts… !なぜでしょう?
loading config file: C:\Users\chen4\workspace\mycar\config.py
myconfig myconfig.py
loading personal config over-rides from myconfig.py
config loaded
cfg.CAMERA_TYPE PICAM
starting DonkeyGym env
connecting to 127.0.0.1 9091
Adding part DonkeyGymEnv.
Starting Donkey Server…… you can now go to Hong-ezbook3p01.local:8887 to drive your car.
Adding part LocalWebController.
Adding part ThrottleFilter.
Adding part PilotCondition.
Adding part RecordTracker.
Adding part ImgPreProcess.
Adding part DriveMode.
Adding part AiLaunch.
Adding part AiRunCondition.
Tub does NOT exist. Creating new tub…
New tub created at: C:\Users\chen4\workspace\mycar\data\tub_8_20-06-21
Adding part TubWriter.
You can now go to http://localhost:8887 to drive your car.
Starting vehicle at 20 Hz
recorded 10 records
recorded 20 records
recorded 30 records
recorded 40 records
recorded 50 records
recorded 60 records
recorded 70 records
recorded 80 records
recorded 90 records
recorded 100 records
recorded 110 records
recorded 120 records
recorded 130 records
recorded 140 records
recorded 150 records
recorded 160 records
recorded 170 records
recorded 180 records
recorded 190 records
recorded 200 records
recorded 210 records
recorded 220 records
recorded 230 records
recorded 240 records
recorded 250 records
recorded 260 records
recorded 270 records
recorded 280 records
recorded 290 records
recorded 300 records
recorded 310 records
recorded 320 records
recorded 330 records
recorded 340 records
recorded 350 records
recorded 360 records
recorded 370 records
recorded 380 records
recorded 390 records
recorded 400 records
recorded 410 records
recorded 420 records
recorded 430 records
recorded 440 records
recorded 450 records
recorded 460 records
recorded 470 records
recorded 480 records
recorded 490 records
recorded 500 records
recorded 510 records
recorded 520 records
recorded 530 records
recorded 540 records
recorded 550 records
recorded 560 records
recorded 570 records
recorded 580 records
recorded 590 records
recorded 600 records
recorded 610 records
recorded 620 records
recorded 630 records
recorded 640 records
recorded 650 records
recorded 660 records
recorded 670 records
recorded 680 records
recorded 690 records
recorded 700 records
recorded 710 records
recorded 720 records
recorded 730 records
recorded 740 records
recorded 750 records
recorded 760 records
recorded 770 records
recorded 780 records
recorded 790 records
recorded 800 records
recorded 810 records
recorded 820 records
recorded 830 records
recorded 840 records
recorded 850 records
recorded 860 records
recorded 870 records
recorded 880 records
recorded 890 records
recorded 900 records
recorded 910 records
recorded 920 records
recorded 930 records
recorded 940 records
recorded 950 records
recorded 960 records
recorded 970 records
recorded 980 records
recorded 990 records
recorded 1000 records
Shutting down vehicle and its parts…
Part Profile Summary: (times in ms)
+——————–+——–+——+——+——+——-+——-+——-+
| part | max | min | avg | 50% | 90% | 99% | 99.9% |
+——————–+——–+——+——+——+——-+——-+——-+
| DonkeyGymEnv | 7.98 | 0.00 | 0.03 | 0.00 | 0.00 | 1.00 | 2.02 |
| LocalWebController | 14.96 | 0.00 | 0.04 | 0.00 | 0.00 | 1.00 | 3.01 |
| ThrottleFilter | 4.99 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 1.01 |
| PilotCondition | 2.00 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 1.00 |
| RecordTracker | 8.97 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 1.99 |
| DriveMode | 4.99 | 0.00 | 0.02 | 0.00 | 0.00 | 1.00 | 1.99 |
| AiLaunch | 4.99 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 1.99 |
| AiRunCondition | 4.00 | 0.00 | 0.01 | 0.00 | 0.00 | 0.00 | 1.00 |
| TubWriter | 125.66 | 2.93 | 7.69 | 6.97 | 12.27 | 23.86 | 34.90 |
+——————–+——–+——+——+——+——-+——-+——-+