FC2カウンター FPGAの部屋 Donkey Car
fc2ブログ

FPGAやCPLDの話題やFPGA用のツールの話題などです。 マニアックです。 日記も書きます。

FPGAの部屋

FPGAの部屋の有用と思われるコンテンツのまとめサイトを作りました。Xilinx ISEの初心者の方には、FPGAリテラシーおよびチュートリアルのページをお勧めいたします。

Donkey Car の所得したデータで学習し、自動走行させてみた

Donkey Car のキャリブレーション、教師データの取得を行った”の続き。

前回は、Donkey Car のキャリブレーションを行って、コースを走らせて教師データを取得した。今回は、教師データをGoogle Colaboratory で学習して、学習したモデルをDonkey Car に移して自動走行させてみよう。

Donkey Car の ~/mycar/data/ ディレクトリを見ると、tub_.... というディレクトリが並んでいた。
donkey_car_36_190730.png

今回使用するのは、tub_6_19-07-29 と tub_7_19-07-29 だ。両方合わせて 10269 データある。これを datas.zip に圧縮してホストパソコンの ~/Donkey_Car/ ディレクトリにSFTP する。
donkey_car_37_190730.png

Colabでの学習(GPU)

Donkey Car のGoogle Colab を起動した。

”ドライブにコピー”をクリックして、自分のGoogle Drive にコピーした。
donkey_car_38_190730.png

Google Drive にDonkey Car のJupyter Notebook がコピーされたので、それを起動した。
donkey_car_39_190730.png

Donkey Car のJupyter Notebook を実行していった。
donkey_car_40_190730.png
donkey_car_41_190730.png
donkey_car_43_190730.png
datas.zip をアップロードして、解凍し、学習データとしてニューラルネットワークを学習した。

donkey_car_44_190730.png

loading config file: /content/mycar/config.py
loading personal config over-rides

config loaded
"get_model_by_type" model Type is: categorical
training with model type <class 'donkeycar.parts.keras.KerasCategorical'>
Model: "model_1"
__________________________________________________________________________________________________
Layer (type)                    Output Shape         Param #     Connected to                     
==================================================================================================
img_in (InputLayer)             [(None, 120, 160, 3) 0                                            
__________________________________________________________________________________________________
conv2d_1 (Conv2D)               (None, 58, 78, 24)   1824        img_in[0][0]                     
__________________________________________________________________________________________________
dropout_6 (Dropout)             (None, 58, 78, 24)   0           conv2d_1[0][0]                   
__________________________________________________________________________________________________
conv2d_2 (Conv2D)               (None, 27, 37, 32)   19232       dropout_6[0][0]                  
__________________________________________________________________________________________________
dropout_7 (Dropout)             (None, 27, 37, 32)   0           conv2d_2[0][0]                   
__________________________________________________________________________________________________
conv2d_3 (Conv2D)               (None, 12, 17, 64)   51264       dropout_7[0][0]                  
__________________________________________________________________________________________________
conv2d_4 (Conv2D)               (None, 5, 8, 64)     36928       conv2d_3[0][0]                   
__________________________________________________________________________________________________
dropout_8 (Dropout)             (None, 5, 8, 64)     0           conv2d_4[0][0]                   
__________________________________________________________________________________________________
conv2d_5 (Conv2D)               (None, 3, 6, 64)     36928       dropout_8[0][0]                  
__________________________________________________________________________________________________
dropout_9 (Dropout)             (None, 3, 6, 64)     0           conv2d_5[0][0]                   
__________________________________________________________________________________________________
flattened (Flatten)             (None, 1152)         0           dropout_9[0][0]                  
__________________________________________________________________________________________________
fc_1 (Dense)                    (None, 100)          115300      flattened[0][0]                  
__________________________________________________________________________________________________
dropout_10 (Dropout)            (None, 100)          0           fc_1[0][0]                       
__________________________________________________________________________________________________
fc_2 (Dense)                    (None, 50)           5050        dropout_10[0][0]                 
__________________________________________________________________________________________________
dropout_11 (Dropout)            (None, 50)           0           fc_2[0][0]                       
__________________________________________________________________________________________________
angle_out (Dense)               (None, 15)           765         dropout_11[0][0]                 
__________________________________________________________________________________________________
throttle_out (Dense)            (None, 20)           1020        dropout_11[0][0]                 
==================================================================================================
Total params: 268,311
Trainable params: 268,311
Non-trainable params: 0
__________________________________________________________________________________________________
None
found 0 pickles writing json records and images in tub /content/mycar/data/tub_6_19-07-29
found 0 pickles writing json records and images in tub /content/mycar/data/tub_7_19-07-29
/content/mycar/data/tub_6_19-07-29
/content/mycar/data/tub_7_19-07-29
collating 10269 records ...
train: 8215, val: 2054
total records: 10269
steps_per_epoch 64
Epoch 1/100
63/64 [============================>.] - ETA: 0s - loss: 3.3674 - angle_out_loss: 2.2257 - throttle_out_loss: 2.2545 - angle_out_acc: 0.2696 - throttle_out_acc: 0.3826
Epoch 00001: val_loss improved from inf to 3.13174, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 12s 184ms/step - loss: 3.3630 - angle_out_loss: 2.2232 - throttle_out_loss: 2.2514 - angle_out_acc: 0.2706 - throttle_out_acc: 0.3831 - val_loss: 3.1317 - val_angle_out_loss: 1.9923 - val_throttle_out_loss: 2.1356 - val_angle_out_acc: 0.3462 - val_throttle_out_acc: 0.3809
Epoch 2/100
63/64 [============================>.] - ETA: 0s - loss: 3.1067 - angle_out_loss: 2.0148 - throttle_out_loss: 2.0993 - angle_out_acc: 0.3323 - throttle_out_acc: 0.3932
Epoch 00002: val_loss improved from 3.13174 to 2.98889, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 53ms/step - loss: 3.1063 - angle_out_loss: 2.0139 - throttle_out_loss: 2.0994 - angle_out_acc: 0.3337 - throttle_out_acc: 0.3938 - val_loss: 2.9889 - val_angle_out_loss: 1.9188 - val_throttle_out_loss: 2.0295 - val_angle_out_acc: 0.3452 - val_throttle_out_acc: 0.3862
Epoch 3/100
63/64 [============================>.] - ETA: 0s - loss: 3.0231 - angle_out_loss: 1.9465 - throttle_out_loss: 2.0499 - angle_out_acc: 0.3960 - throttle_out_acc: 0.4428
Epoch 00003: val_loss improved from 2.98889 to 2.92830, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 3.0233 - angle_out_loss: 1.9471 - throttle_out_loss: 2.0497 - angle_out_acc: 0.3971 - throttle_out_acc: 0.4431 - val_loss: 2.9283 - val_angle_out_loss: 1.8372 - val_throttle_out_loss: 2.0097 - val_angle_out_acc: 0.4624 - val_throttle_out_acc: 0.4546
Epoch 4/100
62/64 [============================>.] - ETA: 0s - loss: 2.8735 - angle_out_loss: 1.8158 - throttle_out_loss: 1.9656 - angle_out_acc: 0.4970 - throttle_out_acc: 0.4946
Epoch 00004: val_loss improved from 2.92830 to 2.69279, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.8727 - angle_out_loss: 1.8150 - throttle_out_loss: 1.9652 - angle_out_acc: 0.4966 - throttle_out_acc: 0.4950 - val_loss: 2.6928 - val_angle_out_loss: 1.6640 - val_throttle_out_loss: 1.8608 - val_angle_out_acc: 0.5469 - val_throttle_out_acc: 0.5000
Epoch 5/100
62/64 [============================>.] - ETA: 0s - loss: 2.7645 - angle_out_loss: 1.7299 - throttle_out_loss: 1.8995 - angle_out_acc: 0.5219 - throttle_out_acc: 0.5150
Epoch 00005: val_loss improved from 2.69279 to 2.65042, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 52ms/step - loss: 2.7651 - angle_out_loss: 1.7300 - throttle_out_loss: 1.9001 - angle_out_acc: 0.5222 - throttle_out_acc: 0.5144 - val_loss: 2.6504 - val_angle_out_loss: 1.6285 - val_throttle_out_loss: 1.8362 - val_angle_out_acc: 0.5547 - val_throttle_out_acc: 0.5249
Epoch 6/100
63/64 [============================>.] - ETA: 0s - loss: 2.6785 - angle_out_loss: 1.6660 - throttle_out_loss: 1.8455 - angle_out_acc: 0.5433 - throttle_out_acc: 0.5295
Epoch 00006: val_loss improved from 2.65042 to 2.55639, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.6771 - angle_out_loss: 1.6656 - throttle_out_loss: 1.8443 - angle_out_acc: 0.5436 - throttle_out_acc: 0.5295 - val_loss: 2.5564 - val_angle_out_loss: 1.5467 - val_throttle_out_loss: 1.7830 - val_angle_out_acc: 0.5791 - val_throttle_out_acc: 0.5322
Epoch 7/100
62/64 [============================>.] - ETA: 0s - loss: 2.6023 - angle_out_loss: 1.6173 - throttle_out_loss: 1.7936 - angle_out_acc: 0.5557 - throttle_out_acc: 0.5387
Epoch 00007: val_loss improved from 2.55639 to 2.53856, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.6040 - angle_out_loss: 1.6213 - throttle_out_loss: 1.7933 - angle_out_acc: 0.5535 - throttle_out_acc: 0.5383 - val_loss: 2.5386 - val_angle_out_loss: 1.5468 - val_throttle_out_loss: 1.7651 - val_angle_out_acc: 0.5542 - val_throttle_out_acc: 0.5347
Epoch 8/100
63/64 [============================>.] - ETA: 0s - loss: 2.5492 - angle_out_loss: 1.5788 - throttle_out_loss: 1.7598 - angle_out_acc: 0.5590 - throttle_out_acc: 0.5484
Epoch 00008: val_loss improved from 2.53856 to 2.48855, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.5489 - angle_out_loss: 1.5782 - throttle_out_loss: 1.7598 - angle_out_acc: 0.5591 - throttle_out_acc: 0.5487 - val_loss: 2.4886 - val_angle_out_loss: 1.5071 - val_throttle_out_loss: 1.7350 - val_angle_out_acc: 0.5752 - val_throttle_out_acc: 0.5439
Epoch 9/100
63/64 [============================>.] - ETA: 0s - loss: 2.4850 - angle_out_loss: 1.5364 - throttle_out_loss: 1.7168 - angle_out_acc: 0.5671 - throttle_out_acc: 0.5530
Epoch 00009: val_loss improved from 2.48855 to 2.45861, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.4876 - angle_out_loss: 1.5366 - throttle_out_loss: 1.7193 - angle_out_acc: 0.5669 - throttle_out_acc: 0.5521 - val_loss: 2.4586 - val_angle_out_loss: 1.4642 - val_throttle_out_loss: 1.7265 - val_angle_out_acc: 0.5908 - val_throttle_out_acc: 0.5547
Epoch 10/100
63/64 [============================>.] - ETA: 0s - loss: 2.4513 - angle_out_loss: 1.5038 - throttle_out_loss: 1.6994 - angle_out_acc: 0.5754 - throttle_out_acc: 0.5577
Epoch 00010: val_loss improved from 2.45861 to 2.42520, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 52ms/step - loss: 2.4534 - angle_out_loss: 1.5047 - throttle_out_loss: 1.7010 - angle_out_acc: 0.5748 - throttle_out_acc: 0.5569 - val_loss: 2.4252 - val_angle_out_loss: 1.4220 - val_throttle_out_loss: 1.7142 - val_angle_out_acc: 0.5820 - val_throttle_out_acc: 0.5449
Epoch 11/100
62/64 [============================>.] - ETA: 0s - loss: 2.4054 - angle_out_loss: 1.4839 - throttle_out_loss: 1.6635 - angle_out_acc: 0.5725 - throttle_out_acc: 0.5601
Epoch 00011: val_loss improved from 2.42520 to 2.36648, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 52ms/step - loss: 2.4062 - angle_out_loss: 1.4828 - throttle_out_loss: 1.6648 - angle_out_acc: 0.5730 - throttle_out_acc: 0.5603 - val_loss: 2.3665 - val_angle_out_loss: 1.3953 - val_throttle_out_loss: 1.6688 - val_angle_out_acc: 0.6045 - val_throttle_out_acc: 0.5698
Epoch 12/100
63/64 [============================>.] - ETA: 0s - loss: 2.3627 - angle_out_loss: 1.4525 - throttle_out_loss: 1.6365 - angle_out_acc: 0.5794 - throttle_out_acc: 0.5682
Epoch 00012: val_loss improved from 2.36648 to 2.31995, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.3616 - angle_out_loss: 1.4535 - throttle_out_loss: 1.6349 - angle_out_acc: 0.5793 - throttle_out_acc: 0.5680 - val_loss: 2.3199 - val_angle_out_loss: 1.3824 - val_throttle_out_loss: 1.6288 - val_angle_out_acc: 0.5928 - val_throttle_out_acc: 0.5635
Epoch 13/100
63/64 [============================>.] - ETA: 0s - loss: 2.3167 - angle_out_loss: 1.4297 - throttle_out_loss: 1.6018 - angle_out_acc: 0.5877 - throttle_out_acc: 0.5725
Epoch 00013: val_loss improved from 2.31995 to 2.31693, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.3165 - angle_out_loss: 1.4279 - throttle_out_loss: 1.6026 - angle_out_acc: 0.5880 - throttle_out_acc: 0.5724 - val_loss: 2.3169 - val_angle_out_loss: 1.3568 - val_throttle_out_loss: 1.6385 - val_angle_out_acc: 0.5928 - val_throttle_out_acc: 0.5605
Epoch 14/100
62/64 [============================>.] - ETA: 0s - loss: 2.2868 - angle_out_loss: 1.4144 - throttle_out_loss: 1.5796 - angle_out_acc: 0.5868 - throttle_out_acc: 0.5766
Epoch 00014: val_loss improved from 2.31693 to 2.24896, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.2894 - angle_out_loss: 1.4154 - throttle_out_loss: 1.5817 - angle_out_acc: 0.5872 - throttle_out_acc: 0.5752 - val_loss: 2.2490 - val_angle_out_loss: 1.3076 - val_throttle_out_loss: 1.5952 - val_angle_out_acc: 0.6035 - val_throttle_out_acc: 0.5737
Epoch 15/100
63/64 [============================>.] - ETA: 0s - loss: 2.2467 - angle_out_loss: 1.3801 - throttle_out_loss: 1.5566 - angle_out_acc: 0.5887 - throttle_out_acc: 0.5745
Epoch 00015: val_loss did not improve from 2.24896
64/64 [==============================] - 3s 50ms/step - loss: 2.2467 - angle_out_loss: 1.3810 - throttle_out_loss: 1.5562 - angle_out_acc: 0.5884 - throttle_out_acc: 0.5742 - val_loss: 2.2712 - val_angle_out_loss: 1.3112 - val_throttle_out_loss: 1.6156 - val_angle_out_acc: 0.6089 - val_throttle_out_acc: 0.5625
Epoch 16/100
63/64 [============================>.] - ETA: 0s - loss: 2.2113 - angle_out_loss: 1.3579 - throttle_out_loss: 1.5323 - angle_out_acc: 0.5946 - throttle_out_acc: 0.5812
Epoch 00016: val_loss improved from 2.24896 to 2.23349, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 2.2103 - angle_out_loss: 1.3572 - throttle_out_loss: 1.5316 - angle_out_acc: 0.5953 - throttle_out_acc: 0.5813 - val_loss: 2.2335 - val_angle_out_loss: 1.2920 - val_throttle_out_loss: 1.5875 - val_angle_out_acc: 0.6113 - val_throttle_out_acc: 0.5732
Epoch 17/100
62/64 [============================>.] - ETA: 0s - loss: 2.1604 - angle_out_loss: 1.3338 - throttle_out_loss: 1.4935 - angle_out_acc: 0.5997 - throttle_out_acc: 0.5882
Epoch 00017: val_loss improved from 2.23349 to 2.20767, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.1608 - angle_out_loss: 1.3312 - throttle_out_loss: 1.4952 - angle_out_acc: 0.6007 - throttle_out_acc: 0.5875 - val_loss: 2.2077 - val_angle_out_loss: 1.2500 - val_throttle_out_loss: 1.5827 - val_angle_out_acc: 0.6270 - val_throttle_out_acc: 0.5757
Epoch 18/100
62/64 [============================>.] - ETA: 0s - loss: 2.1226 - angle_out_loss: 1.3036 - throttle_out_loss: 1.4708 - angle_out_acc: 0.6040 - throttle_out_acc: 0.5903
Epoch 00018: val_loss improved from 2.20767 to 2.18893, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 2.1239 - angle_out_loss: 1.3017 - throttle_out_loss: 1.4730 - angle_out_acc: 0.6046 - throttle_out_acc: 0.5903 - val_loss: 2.1889 - val_angle_out_loss: 1.2589 - val_throttle_out_loss: 1.5595 - val_angle_out_acc: 0.6172 - val_throttle_out_acc: 0.5835
Epoch 19/100
62/64 [============================>.] - ETA: 0s - loss: 2.0955 - angle_out_loss: 1.2993 - throttle_out_loss: 1.4459 - angle_out_acc: 0.6119 - throttle_out_acc: 0.6006
Epoch 00019: val_loss improved from 2.18893 to 2.16634, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.1009 - angle_out_loss: 1.3013 - throttle_out_loss: 1.4503 - angle_out_acc: 0.6113 - throttle_out_acc: 0.5996 - val_loss: 2.1663 - val_angle_out_loss: 1.2460 - val_throttle_out_loss: 1.5433 - val_angle_out_acc: 0.6211 - val_throttle_out_acc: 0.5923
Epoch 20/100
63/64 [============================>.] - ETA: 0s - loss: 2.0628 - angle_out_loss: 1.2745 - throttle_out_loss: 1.4256 - angle_out_acc: 0.6136 - throttle_out_acc: 0.6017
Epoch 00020: val_loss did not improve from 2.16634
64/64 [==============================] - 3s 50ms/step - loss: 2.0644 - angle_out_loss: 1.2772 - throttle_out_loss: 1.4259 - angle_out_acc: 0.6121 - throttle_out_acc: 0.6019 - val_loss: 2.1808 - val_angle_out_loss: 1.2118 - val_throttle_out_loss: 1.5749 - val_angle_out_acc: 0.6313 - val_throttle_out_acc: 0.5771
Epoch 21/100
63/64 [============================>.] - ETA: 0s - loss: 2.0410 - angle_out_loss: 1.2611 - throttle_out_loss: 1.4104 - angle_out_acc: 0.6146 - throttle_out_acc: 0.6104
Epoch 00021: val_loss improved from 2.16634 to 2.15919, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 2.0427 - angle_out_loss: 1.2631 - throttle_out_loss: 1.4111 - angle_out_acc: 0.6147 - throttle_out_acc: 0.6101 - val_loss: 2.1592 - val_angle_out_loss: 1.2323 - val_throttle_out_loss: 1.5430 - val_angle_out_acc: 0.6284 - val_throttle_out_acc: 0.5903
Epoch 22/100
63/64 [============================>.] - ETA: 0s - loss: 2.0196 - angle_out_loss: 1.2475 - throttle_out_loss: 1.3958 - angle_out_acc: 0.6190 - throttle_out_acc: 0.6040
Epoch 00022: val_loss improved from 2.15919 to 2.09381, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 2.0210 - angle_out_loss: 1.2475 - throttle_out_loss: 1.3973 - angle_out_acc: 0.6200 - throttle_out_acc: 0.6041 - val_loss: 2.0938 - val_angle_out_loss: 1.1728 - val_throttle_out_loss: 1.5074 - val_angle_out_acc: 0.6406 - val_throttle_out_acc: 0.5923
Epoch 23/100
63/64 [============================>.] - ETA: 0s - loss: 1.9801 - angle_out_loss: 1.2206 - throttle_out_loss: 1.3698 - angle_out_acc: 0.6231 - throttle_out_acc: 0.6128
Epoch 00023: val_loss improved from 2.09381 to 2.08714, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.9815 - angle_out_loss: 1.2210 - throttle_out_loss: 1.3710 - angle_out_acc: 0.6224 - throttle_out_acc: 0.6121 - val_loss: 2.0871 - val_angle_out_loss: 1.1866 - val_throttle_out_loss: 1.4938 - val_angle_out_acc: 0.6401 - val_throttle_out_acc: 0.6104
Epoch 24/100
62/64 [============================>.] - ETA: 0s - loss: 1.9418 - angle_out_loss: 1.2092 - throttle_out_loss: 1.3372 - angle_out_acc: 0.6261 - throttle_out_acc: 0.6196
Epoch 00024: val_loss did not improve from 2.08714
64/64 [==============================] - 3s 50ms/step - loss: 1.9433 - angle_out_loss: 1.2085 - throttle_out_loss: 1.3391 - angle_out_acc: 0.6266 - throttle_out_acc: 0.6180 - val_loss: 2.0993 - val_angle_out_loss: 1.1816 - val_throttle_out_loss: 1.5085 - val_angle_out_acc: 0.6465 - val_throttle_out_acc: 0.5864
Epoch 25/100
62/64 [============================>.] - ETA: 0s - loss: 1.9338 - angle_out_loss: 1.2083 - throttle_out_loss: 1.3297 - angle_out_acc: 0.6255 - throttle_out_acc: 0.6216
Epoch 00025: val_loss improved from 2.08714 to 2.06859, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 1.9345 - angle_out_loss: 1.2086 - throttle_out_loss: 1.3302 - angle_out_acc: 0.6249 - throttle_out_acc: 0.6223 - val_loss: 2.0686 - val_angle_out_loss: 1.1483 - val_throttle_out_loss: 1.4944 - val_angle_out_acc: 0.6548 - val_throttle_out_acc: 0.5981
Epoch 26/100
62/64 [============================>.] - ETA: 0s - loss: 1.9065 - angle_out_loss: 1.1931 - throttle_out_loss: 1.3100 - angle_out_acc: 0.6347 - throttle_out_acc: 0.6264
Epoch 00026: val_loss improved from 2.06859 to 2.04724, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 50ms/step - loss: 1.9099 - angle_out_loss: 1.1940 - throttle_out_loss: 1.3129 - angle_out_acc: 0.6349 - throttle_out_acc: 0.6260 - val_loss: 2.0472 - val_angle_out_loss: 1.1247 - val_throttle_out_loss: 1.4849 - val_angle_out_acc: 0.6597 - val_throttle_out_acc: 0.6099
Epoch 27/100
63/64 [============================>.] - ETA: 0s - loss: 1.8839 - angle_out_loss: 1.1701 - throttle_out_loss: 1.2988 - angle_out_acc: 0.6394 - throttle_out_acc: 0.6255
Epoch 00027: val_loss did not improve from 2.04724
64/64 [==============================] - 3s 50ms/step - loss: 1.8852 - angle_out_loss: 1.1681 - throttle_out_loss: 1.3012 - angle_out_acc: 0.6398 - throttle_out_acc: 0.6250 - val_loss: 2.0572 - val_angle_out_loss: 1.1412 - val_throttle_out_loss: 1.4866 - val_angle_out_acc: 0.6479 - val_throttle_out_acc: 0.5933
Epoch 28/100
63/64 [============================>.] - ETA: 0s - loss: 1.8520 - angle_out_loss: 1.1541 - throttle_out_loss: 1.2749 - angle_out_acc: 0.6404 - throttle_out_acc: 0.6341
Epoch 00028: val_loss did not improve from 2.04724
64/64 [==============================] - 3s 50ms/step - loss: 1.8504 - angle_out_loss: 1.1530 - throttle_out_loss: 1.2740 - angle_out_acc: 0.6406 - throttle_out_acc: 0.6342 - val_loss: 2.0524 - val_angle_out_loss: 1.1295 - val_throttle_out_loss: 1.4877 - val_angle_out_acc: 0.6543 - val_throttle_out_acc: 0.5962
Epoch 29/100
62/64 [============================>.] - ETA: 0s - loss: 1.8219 - angle_out_loss: 1.1461 - throttle_out_loss: 1.2488 - angle_out_acc: 0.6444 - throttle_out_acc: 0.6342
Epoch 00029: val_loss did not improve from 2.04724
64/64 [==============================] - 3s 50ms/step - loss: 1.8202 - angle_out_loss: 1.1419 - throttle_out_loss: 1.2493 - angle_out_acc: 0.6456 - throttle_out_acc: 0.6344 - val_loss: 2.0724 - val_angle_out_loss: 1.1363 - val_throttle_out_loss: 1.5042 - val_angle_out_acc: 0.6602 - val_throttle_out_acc: 0.6060
Epoch 30/100
63/64 [============================>.] - ETA: 0s - loss: 1.8018 - angle_out_loss: 1.1369 - throttle_out_loss: 1.2334 - angle_out_acc: 0.6469 - throttle_out_acc: 0.6393
Epoch 00030: val_loss improved from 2.04724 to 2.03566, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.8012 - angle_out_loss: 1.1339 - throttle_out_loss: 1.2343 - angle_out_acc: 0.6475 - throttle_out_acc: 0.6389 - val_loss: 2.0357 - val_angle_out_loss: 1.1356 - val_throttle_out_loss: 1.4679 - val_angle_out_acc: 0.6475 - val_throttle_out_acc: 0.6104
Epoch 31/100
62/64 [============================>.] - ETA: 0s - loss: 1.7853 - angle_out_loss: 1.1236 - throttle_out_loss: 1.2235 - angle_out_acc: 0.6479 - throttle_out_acc: 0.6462
Epoch 00031: val_loss improved from 2.03566 to 2.02520, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.7898 - angle_out_loss: 1.1253 - throttle_out_loss: 1.2271 - angle_out_acc: 0.6472 - throttle_out_acc: 0.6450 - val_loss: 2.0252 - val_angle_out_loss: 1.1151 - val_throttle_out_loss: 1.4677 - val_angle_out_acc: 0.6616 - val_throttle_out_acc: 0.6143
Epoch 32/100
62/64 [============================>.] - ETA: 0s - loss: 1.7563 - angle_out_loss: 1.1123 - throttle_out_loss: 1.2002 - angle_out_acc: 0.6503 - throttle_out_acc: 0.6525
Epoch 00032: val_loss did not improve from 2.02520
64/64 [==============================] - 3s 50ms/step - loss: 1.7569 - angle_out_loss: 1.1140 - throttle_out_loss: 1.1998 - angle_out_acc: 0.6493 - throttle_out_acc: 0.6523 - val_loss: 2.0255 - val_angle_out_loss: 1.1203 - val_throttle_out_loss: 1.4654 - val_angle_out_acc: 0.6572 - val_throttle_out_acc: 0.6123
Epoch 33/100
63/64 [============================>.] - ETA: 0s - loss: 1.7554 - angle_out_loss: 1.1136 - throttle_out_loss: 1.1985 - angle_out_acc: 0.6458 - throttle_out_acc: 0.6498
Epoch 00033: val_loss did not improve from 2.02520
64/64 [==============================] - 3s 50ms/step - loss: 1.7560 - angle_out_loss: 1.1128 - throttle_out_loss: 1.1996 - angle_out_acc: 0.6458 - throttle_out_acc: 0.6493 - val_loss: 2.0505 - val_angle_out_loss: 1.1340 - val_throttle_out_loss: 1.4835 - val_angle_out_acc: 0.6592 - val_throttle_out_acc: 0.6099
Epoch 34/100
63/64 [============================>.] - ETA: 0s - loss: 1.7325 - angle_out_loss: 1.1067 - throttle_out_loss: 1.1791 - angle_out_acc: 0.6527 - throttle_out_acc: 0.6545
Epoch 00034: val_loss improved from 2.02520 to 1.99127, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.7275 - angle_out_loss: 1.1035 - throttle_out_loss: 1.1757 - angle_out_acc: 0.6533 - throttle_out_acc: 0.6553 - val_loss: 1.9913 - val_angle_out_loss: 1.0866 - val_throttle_out_loss: 1.4480 - val_angle_out_acc: 0.6636 - val_throttle_out_acc: 0.6226
Epoch 35/100
63/64 [============================>.] - ETA: 0s - loss: 1.7103 - angle_out_loss: 1.0837 - throttle_out_loss: 1.1684 - angle_out_acc: 0.6601 - throttle_out_acc: 0.6572
Epoch 00035: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.7076 - angle_out_loss: 1.0810 - throttle_out_loss: 1.1672 - angle_out_acc: 0.6608 - throttle_out_acc: 0.6576 - val_loss: 1.9994 - val_angle_out_loss: 1.0877 - val_throttle_out_loss: 1.4555 - val_angle_out_acc: 0.6660 - val_throttle_out_acc: 0.6099
Epoch 36/100
63/64 [============================>.] - ETA: 0s - loss: 1.6924 - angle_out_loss: 1.0825 - throttle_out_loss: 1.1511 - angle_out_acc: 0.6592 - throttle_out_acc: 0.6610
Epoch 00036: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.6950 - angle_out_loss: 1.0821 - throttle_out_loss: 1.1539 - angle_out_acc: 0.6593 - throttle_out_acc: 0.6594 - val_loss: 2.0371 - val_angle_out_loss: 1.1129 - val_throttle_out_loss: 1.4807 - val_angle_out_acc: 0.6567 - val_throttle_out_acc: 0.6104
Epoch 37/100
63/64 [============================>.] - ETA: 0s - loss: 1.6769 - angle_out_loss: 1.0704 - throttle_out_loss: 1.1417 - angle_out_acc: 0.6638 - throttle_out_acc: 0.6616
Epoch 00037: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.6785 - angle_out_loss: 1.0716 - throttle_out_loss: 1.1427 - angle_out_acc: 0.6636 - throttle_out_acc: 0.6611 - val_loss: 2.0072 - val_angle_out_loss: 1.0874 - val_throttle_out_loss: 1.4635 - val_angle_out_acc: 0.6646 - val_throttle_out_acc: 0.6118
Epoch 38/100
63/64 [============================>.] - ETA: 0s - loss: 1.6569 - angle_out_loss: 1.0749 - throttle_out_loss: 1.1194 - angle_out_acc: 0.6618 - throttle_out_acc: 0.6710
Epoch 00038: val_loss did not improve from 1.99127
64/64 [==============================] - 3s 50ms/step - loss: 1.6566 - angle_out_loss: 1.0776 - throttle_out_loss: 1.1178 - angle_out_acc: 0.6605 - throttle_out_acc: 0.6713 - val_loss: 2.0223 - val_angle_out_loss: 1.0740 - val_throttle_out_loss: 1.4853 - val_angle_out_acc: 0.6782 - val_throttle_out_acc: 0.6196
Epoch 39/100
63/64 [============================>.] - ETA: 0s - loss: 1.6337 - angle_out_loss: 1.0643 - throttle_out_loss: 1.1015 - angle_out_acc: 0.6638 - throttle_out_acc: 0.6716
Epoch 00039: val_loss improved from 1.99127 to 1.94174, saving model to /content/mycar/models/mypilot.h5
64/64 [==============================] - 3s 51ms/step - loss: 1.6348 - angle_out_loss: 1.0660 - throttle_out_loss: 1.1018 - angle_out_acc: 0.6639 - throttle_out_acc: 0.6718 - val_loss: 1.9417 - val_angle_out_loss: 1.1158 - val_throttle_out_loss: 1.3838 - val_angle_out_acc: 0.6641 - val_throttle_out_acc: 0.6177
Epoch 40/100
63/64 [============================>.] - ETA: 0s - loss: 1.6047 - angle_out_loss: 1.0482 - throttle_out_loss: 1.0806 - angle_out_acc: 0.6632 - throttle_out_acc: 0.6727
Epoch 00040: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.6059 - angle_out_loss: 1.0478 - throttle_out_loss: 1.0820 - angle_out_acc: 0.6638 - throttle_out_acc: 0.6726 - val_loss: 2.1267 - val_angle_out_loss: 1.1378 - val_throttle_out_loss: 1.5578 - val_angle_out_acc: 0.6611 - val_throttle_out_acc: 0.5977
Epoch 41/100
63/64 [============================>.] - ETA: 0s - loss: 1.6027 - angle_out_loss: 1.0421 - throttle_out_loss: 1.0816 - angle_out_acc: 0.6705 - throttle_out_acc: 0.6760
Epoch 00041: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.6017 - angle_out_loss: 1.0461 - throttle_out_loss: 1.0786 - angle_out_acc: 0.6697 - throttle_out_acc: 0.6770 - val_loss: 2.0650 - val_angle_out_loss: 1.0897 - val_throttle_out_loss: 1.5202 - val_angle_out_acc: 0.6782 - val_throttle_out_acc: 0.6074
Epoch 42/100
62/64 [============================>.] - ETA: 0s - loss: 1.6009 - angle_out_loss: 1.0586 - throttle_out_loss: 1.0716 - angle_out_acc: 0.6682 - throttle_out_acc: 0.6746
Epoch 00042: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 51ms/step - loss: 1.5973 - angle_out_loss: 1.0587 - throttle_out_loss: 1.0679 - angle_out_acc: 0.6682 - throttle_out_acc: 0.6753 - val_loss: 2.0174 - val_angle_out_loss: 1.0967 - val_throttle_out_loss: 1.4690 - val_angle_out_acc: 0.6685 - val_throttle_out_acc: 0.6221
Epoch 43/100
63/64 [============================>.] - ETA: 0s - loss: 1.5671 - angle_out_loss: 1.0455 - throttle_out_loss: 1.0444 - angle_out_acc: 0.6656 - throttle_out_acc: 0.6837
Epoch 00043: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.5656 - angle_out_loss: 1.0453 - throttle_out_loss: 1.0430 - angle_out_acc: 0.6660 - throttle_out_acc: 0.6840 - val_loss: 2.0173 - val_angle_out_loss: 1.1034 - val_throttle_out_loss: 1.4656 - val_angle_out_acc: 0.6606 - val_throttle_out_acc: 0.6128
Epoch 44/100
63/64 [============================>.] - ETA: 0s - loss: 1.5590 - angle_out_loss: 1.0230 - throttle_out_loss: 1.0475 - angle_out_acc: 0.6747 - throttle_out_acc: 0.6850
Epoch 00044: val_loss did not improve from 1.94174
64/64 [==============================] - 3s 50ms/step - loss: 1.5619 - angle_out_loss: 1.0276 - throttle_out_loss: 1.0481 - angle_out_acc: 0.6736 - throttle_out_acc: 0.6849 - val_loss: 2.0355 - val_angle_out_loss: 1.0995 - val_throttle_out_loss: 1.4858 - val_angle_out_acc: 0.6763 - val_throttle_out_acc: 0.6069
Epoch 00044: early stopping
Training completed in 0:02:31.


donkey_car_45_190730.png

68 % 程度の精度だった。低い。。。やはり、家の中を白線無しで学習させたのが良くなかったのかも?

学習済みデータ mypilot.h5 をダウンロードした。
donkey_car_46_190731.png

自動走行
Donkey Car のRaspberry Pi に mypilot.h5 をアップロードした。
donkey_car_47_190731.png

myconfig.py を表示して、

DEFAULT_MODEL_TYPE="categorical"

に変更した。
donkey_car_48_190731.png

mycar ディレクトリで下のコマンドを実行して自動走行させた。
python manage.py drive --model ~/mycar/models/mypilot.h5
donkey_car_50_190731.png

(env) pi@donkeypi:~/mycar $ python manage.py drive --model ~/mycar/models/mypilot.h5
using donkey v3.0.2 ...
loading config file: /home/pi/mycar/config.py
loading personal config over-rides

config loaded
cfg.CAMERA_TYPE PICAM
PiCamera loaded.. .warming camera
Adding part PiCamera.
Starting Donkey Server...
Adding part LocalWebController.
Adding part ThrottleFilter.
Adding part PilotCondition.
Adding part RecordTracker.
"get_model_by_type" model Type is: categorical
loading model /home/pi/mycar/models/mypilot.h5
finished loading in 12.697422981262207 sec.
Adding part FileWatcher.
Adding part FileWatcher.
Adding part DelayedTrigger.
Adding part TriggeredCallback.
Adding part KerasCategorical.
Adding part DriveMode.
Adding part AiLaunch.
Adding part AiRunCondition.
Init ESC
Adding part PWMSteering.
Adding part PWMThrottle.
Tub does NOT exist. Creating new tub...
New tub created at: /home/pi/mycar/data/tub_8_19-07-30
Adding part TubWriter.
You can now go to <your pi ip address>:8887 to drive your car.
Starting vehicle...
8887
/usr/lib/python3/dist-packages/picamera/encoders.py:544: PiCameraResolutionRounded: frame size rounded up from 160x120 to 160x128
  width, height, fwidth, fheight)))
WARNING: Logging before flag parsing goes to stderr.
W0730 20:43:33.409733 1518576752 web.py:2246] 404 GET /favicon.ico (192.168.3.7) 11.80ms


ブラウザで 192.168.3.34:8887 を見るとカメラ画像が表示されていた。
donkey_car_49_190731.png

Mode & Pilot を Local Pilot (d) に変更したところ、自動走行がスタートした。
精度が低いので、自動走行では正しく走らなかったが、正しい方向に曲がる意志は確認できた。

^CShutting down vehicle and its parts...
stoping PiCamera
Part Profile Summary: (times in ms)
+--------------------+------------------+-------+--------------+
|        part        |       max        |  min  |     avg      |
+--------------------+------------------+-------+--------------+
|    PWMThrottle     |      20.27       |  1.46 |     2.60     |
|    FileWatcher     |       7.28       |  0.08 |     0.23     |
|    PWMSteering     | 1564516404941.14 |  1.55 | 128660891.52 |
| LocalWebController |       0.63       |  0.04 |     0.11     |
|     DriveMode      |       0.80       |  0.04 |     0.08     |
|   AiRunCondition   |       0.46       |  0.02 |     0.05     |
|   ThrottleFilter   |       0.49       |  0.03 |     0.06     |
|   PilotCondition   |       0.26       |  0.02 |     0.05     |
|   RecordTracker    |       0.30       |  0.02 |     0.05     |
|  KerasCategorical  |     2200.69      | 42.03 |    72.93     |
| TriggeredCallback  |       0.29       |  0.02 |     0.03     |
|      PiCamera      |       0.50       |  0.02 |     0.07     |
|      AiLaunch      |       0.76       |  0.03 |     0.06     |
|    FileWatcher     |       1.64       |  0.04 |     0.08     |
|   DelayedTrigger   |       0.18       |  0.02 |     0.04     |
+--------------------+------------------+-------+--------------+


tub_7_19-07-29 ディレクトリの最初の学習データ (160 x 120 ピクセル)を示す。
donkey_car_51_190731.png

そのJSON ファイル、record_1.json を示す。

{"user/mode": "user", "user/angle": 0.0, "user/throttle": 3.051850947599719e-05, "cam/image_array": "1_cam-image_array_.jpg", "milliseconds": 323}

  1. 2019年07月31日 05:35 |
  2. Donkey Car
  3. | トラックバック:0
  4. | コメント:0

Donkey Car のキャリブレーション、教師データの取得を行った

Donkey Car のMicroSD カードを作成した”の続き。

前回は、Donkey Car のMicro SDカードを作成し、Donkey Car のRaspberry Pi 3B+ に無線LAN経由でログインすることができた。今回は、Donkey Car のキャリブレーションを行って、コースを走らせて教師データを取得した。

キャリブレーション
最初にモーターのキャリブレーションを行った。
donkey calibrate --channel 0 --bus 1
donkey_car_24_190728.png

370 を停止状態として、前進が 420 、後進が 330 くらいにした。

~/mycar/myconfig.py に記述した。
donkey_car_25_190728.png

ただし、実際に動かしてみた時に動かなかったので 450 と 300 に変更した。

次に、ステアリングのキャリブレーションを行った。
donkey calibrate --channel 1 --bus 1
donkey_car_26_190728.png

左 440、右 340 とした。
この値を~/mycar/myconfig.py に記述した。
donkey_car_27_190728.png

Cameraの有効化
~/mycar/myconfig.py のカメラ部分のコメントを外して、設定した。
donkey_car_28_190728.png

教師データの作成
Donkey Car のUSB ポートにジョイスティックのドングルを取り付けた。

教師データの取得
cd ~/mycar
python manage.py drive --js

donkey_car_29_190728.png
donkey_car_30_190728.png

donkey_car_31_190728.png

教師データを取得している間、コースを走らせてみた。
donkey_car_34_190729.jpg

コースが狭くて、うまく走らせることができなかった。
でも、データは取得できた。JPEGの画像ファイルと、その時のスロットルやステアリングの情報が書かれたJSON ファイルの組になっている。
donkey_car_33_190728.png

donkey_car_34_190728.png

なお、Donkey Car に nautilus をインストールした。
sudo apt install nautilus
でインストールすることができた。
  1. 2019年07月29日 04:35 |
  2. Donkey Car
  3. | トラックバック:0
  4. | コメント:0

Donkey Car のMicroSD カードを作成した

Donkey Car を組み立てた”の続き。

前回は、Donkey Car を組み立てた。今回は、Donkey Car のMicro SDカードを作成する。

FaBo DonkeyCar Docs の RaspPi3用のイメージ作成”を参考にする。

まずは、MicroSD カードにイメージを焼く Etcher をインストールした。インストールの参考にしたのは、”balena-io/etcher
Ubuntu 18.04 には、
echo "deb https://deb.etcher.io stable etcher" | sudo tee /etc/apt/sources.list.d/balena-etcher.list
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 379CE192D401AB61
sudo apt-get update
sudo apt-get install balena-etcher-electron

でインストールできた。
起動のコマンドは、
balena-etcher-electron
だった。
「Google Colaboraotoryと連携するために、DonkeyCar 3.0.2, TernsorFlow 2.0.0 beta1をインストールしたRaspberryPi用イメージ」を”balena-io/etcher”からダウンロードして、Etcher で書いた。
Etcher では、ZIPファイルのまま指定するようだ。
donkey_car_15_190727.png

書き込み後、カードリーダーを抜いて挿すと、boot 、 rootfs の 2 つのパーティションがUbuntu 18.04 にマウントされた。
donkey_car_16_190727.png

donkey_car_17_190727.png

boot の容量は 44.3 MB。その内の 23.4 MB を使用している。
donkey_car_18_190727.png

rootfs の容量は、 3.5 GB で、その内の 2.6 GB を使用している。32 GB のMicroSD カード使っているので、容量を拡張したいと思ったが、Raspberry Pi で起動したら容量が増えていた。
donkey_car_19_190727.png

Wifi の設定
FaBo DonkeyCar Docs の”Wifi の設定”に基づいて、Raspberry Pi 3 B+ のWifi の設定を行った。
donkey_car_20_190727.png

SSHでRaspberryPiのログイン
ここで、Raspberry Pi 3 B+ のIP アドレスを調べる方法だが、IP アドレスのスキャンのarp-scan コマンドを使用することにした。
”LAN内で利用されているIPアドレスを調べる『arp-scan』コマンド”を参照しながら、arp-scan をインストールした。
sudo apt install arp-scan

Donkey Car の Raspberry Pi 3B+ を起動しておいて、arp-scan を行うと、Raspberry Pi 3B+ が見えた。
donkey_car_21_190727.png

Raspberry Pi 3B+ の IP アドレスは、192.168.3.34 だった。

Raspberry Pi 3B+ の IP アドレスが分かったので、ホストパソコンから接続する。
ssh 192.168.3.34 -X -l pi
パスワードは raspberry だった。
donkey_car_22_190727.png

Projectの作成
donkey createcar --path ~/mycar
を実行した。
donkey_car_23_190727.png
  1. 2019年07月28日 05:10 |
  2. Donkey Car
  3. | トラックバック:0
  4. | コメント:0

Donkey Car を組み立てた

今日はDonkey Car を組み立てた。

組み立て”を見ながらDockey Car を組み立てていった。

まずは、プレートにスペーサを立てて、Raspberry Pi 3B+ を固定した。
donkey_car_4_190721.jpg

プレートにアクリルのスペーサを入れて、プラネジで降圧型変換器内蔵電圧計を取り付けた。
donkey_car_5_190721.jpg

降圧型変換器内蔵電圧計からRaspberry Pi 3B+ に電源を接続した。
donkey_car_6_190721.jpg

降圧型変換器内蔵電圧計の入力ポートを接続した。
donkey_car_7_190721.jpg

Donkey アームを取り付けた。
donkey_car_8_190721.jpg

PiCameraを取り付けた。
donkey_car_9_190721.jpg

Donkey アームを固定ピンでポートに固定した。
donkey_car_10_190721.jpg

モーターとハンドル制御用のI2C ポートを接続した。
donkey_car_11_190721.jpg

完成。だけど、バッテリーは接続されていません。
donkey_car_12_190721.jpg

donkey_car_13_190721.jpg

donkey_car_14_190721.jpg

次には、MicroSD カードを焼こう。
  1. 2019年07月21日 21:59 |
  2. Donkey Car
  3. | トラックバック:0
  4. | コメント:0

注文したDonkey Car が来ました

「AI RCカー勉強会@柏の葉「Donkey Carハンズオン」」に行ってきました”でハンズオンしたDonkey Car を思い切って買っちゃいました。お値段は、4万円ですが、消費税 3,200円に送料が 2,500 円付いて、総額 45,700 円でした。
それで、先週の木曜日6月27日に届きました。

箱を開けるとラジコンカーの箱とジョイスティックが入ってました。
donkey_car_1_190630.jpg

箱の中身です。
donkey_car_2_190630.jpg

ラジコンカーの箱を開けるとDonkey Car の部品が入っていました。
donkey_car_3_190630.jpg

Donkey Car を作って、まずはノーマルで走らせてみたいです。十分遊んだら、Ultra96 + Pcam5C に載せ替えてシステム構築してみたいですね。。。
  1. 2019年06月30日 04:50 |
  2. Donkey Car
  3. | トラックバック:0
  4. | コメント:0

「AI RCカー勉強会@柏の葉「Donkey Carハンズオン」」に行ってきました

AI RCカー勉強会@柏の葉「Donkey Carハンズオン」」に行ってきました。

Donkey Car はRaspberry Pi 3+ + Pi Camera で動作するロボットカー・キットです。4 輪駆動車をベースにしていて前輪の向きを変えて曲がることができます。ジョイスティックで自分でコースを走らせて、学習データを取得します。Raspberry Pi 3+ のアプリケーションソフトで、学習データを作成して、それを Google のColab にアップロードして学習します。そのモデルをDonkey Car に入れてコースを走らせます。

最初にDonkey Car を組み立てましたが、さほど苦労せずに組み立てることができました。
DonkeyCar_1_190623.jpg

パソコンでマニュアルを見ながらやっています。後で、SSH でRaspberry Pi 3+ に入るときや、SFTP で学習データをRaspberry Pi 3+ から取り出すときや、学習済みモデルをRaspberry Pi 3+ にアップロードするときにもパソコンを使いました。
DonkeyCar_2_190623.jpg

Donkey Car を無線LAN に接続します。
DonkeyCar_3_190623.jpg

学習データを取得するアプリケーションソフトを起動して、Donkey Car を走らせます。学習データはJPG ファイルとステアのアングルとスロットルのデータが書かれたJSON ファイルの組でした。これを 5000 個程度取得しました。
DonkeyCar_4_190623.jpg
DonkeyCar_5_190623.jpg
DonkeyCar_6_190623.jpg

とにかく、私には走らせるのが難しいですね。。。練習が必要でした。ですので、学習データの質は推して知るべしです。。。

学習データをColab にアップロードして学習させます。
学習が終了したら、生成されたモデルをダウンロードしてRaspberry Pi 3+ にアップロードします。
そして、他の方ですが、学習済みモデルで走らせているところです。
DonkeyCar_7_190623.jpg

私のは、学習の時にスピードが出てなかったので、スロットルの値が低く、そのままでは走り出しませんでしたが、ズルしてスロットルに下駄をはかせて走るようにしました。でも学習データがよろしくなく、途中でコースアウトしちゃいました。
とっても面白かったです。それにツールが充実しているのがとっても良いですね。Zybot と違ってステアリング切れるし、欲しくなりました。4万円だそうです。買っちゃおうかな?でも、コースが取れないんですよね。特に今回のDonkey Car はスピード出るので、ある程度の広さの場所が必要です。

Donkey Car ではないですが、JetBot を持ってきていらっしゃる方がいらしゃいました。
DonkeyCar_8_190623.jpg
  1. 2019年06月23日 04:49 |
  2. Donkey Car
  3. | トラックバック:0
  4. | コメント:0