Learning_Racer, Jetbot 再現性UP


![IMG_1333a.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/617683/6a554610-9c5e-5ae3-d608-68a0626f89f5.jpeg)

#制御を安定させたい！
前回はLearning_Racerを走らせる事が目的でしたが、今回は再現性UPを目指します。

＜追記＞
高トルクのギア（外寸が同じもの、ギア比1:120）に入れ替えることで制御が安定しました（2020年6月28日）。
https://qiita.com/Hirubi/items/c0554299cb0b3487fbd1

learning_racerのサイト
http://masato-ka.hatenablog.com/entry/2020/04/29/153505


#最低速度UP＋道路の拡張
狙いは「制御が安定するまで最低速度の設定を上げる＋その分道路の拡張してコースアウトを防ぐ。」なのですが、思い通りにはいきません。
道幅をカメラの視野まで広げましたが、モーターの動き出しポイントが安定しない為？片方のタイヤが止まってしまいコースアウトしてしまします。
やはり、低速の制御が重要？

動画サイトです。やっと取れた映像ですが再現性低いです。
https://www.youtube.com/watch?v=mGr7XPHK828

#道路を「カーペット」に変更（走行抵抗UPで低速制御の安定化）
何度もトライしているうちに、道路から脱輪したJetbotがカーペットの上で意外とうまく走ることに気が付きました（！）。そこでカーペットの上に12mmのマスキングテープを2本、20cm幅で張りカーペットを道路に見立てました。
「走行抵抗を上げることで最低速度の設定を高くして低速制御を安定化」を狙います。

カーペット道路だと走行抵抗が大きいため、滑らかな床に対して倍ぐらいの速度指令が必要になり、最低速度の指令値を大きく取れるため低速制御が安定するようです。

今までは「JetBot をハード無改造」を狙っていたのですが、カーペットに引っかかるので前側のプランジャーを外しています。また、学習はエピソード#10ぐらいで安定します。
learning_racer素晴らしいですね！
masato-kaさん、ありがとうございました。

動画サイトです。エピソード#10で撮影、再現性もOKです。
https://www.youtube.com/watch?v=1ViYUV6S8hI

こちらが設定。カーペットでは走行抵抗が大きいのでMIN_THROTTLE: 0.12でも
jetbotは暴走しません。
  # Agent settings
  N_COMMAND_HISTORY: 10
  MIN_STEERING: -0.06
  MAX_STEERING: 0.06
  MIN_THROTTLE: 0.12
  MAX_THROTTLE: 0.17
  MAX_STEERING_DIFF: 0.2

こちらは撮影時のLOGです。
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003   |
| episodes                | 2        |
| fps                     | 7        |
| mean 100 episode reward | 214      |
| n_updates               | 0        |
| time_elapsed            | 28       |
| total timesteps         | 211      |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003     |
| ent_coef                | 0.09770613 |
| ent_coef_loss           | -3.321373  |
| entropy                 | 2.6080444  |
| episodes                | 3          |
| fps                     | 8          |
| mean 100 episode reward | 394        |
| n_updates               | 600        |
| policy_loss             | -2.3340476 |
| qf1_loss                | 0.7673553  |
| qf2_loss                | 0.75859374 |
| time_elapsed            | 87         |
| total timesteps         | 750        |
| value_loss              | 0.357811   |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003      |
| ent_coef                | 0.08045198  |
| ent_coef_loss           | -7.5491405  |
| entropy                 | 2.4184577   |
| episodes                | 4           |
| fps                     | 7           |
| mean 100 episode reward | 302         |
| n_updates               | 1200        |
| policy_loss             | -4.76983    |
| qf1_loss                | 0.52009255  |
| qf2_loss                | 0.519157    |
| time_elapsed            | 122         |
| total timesteps         | 872         |
| value_loss              | 0.103854895 |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003      |
| ent_coef                | 0.066384204 |
| ent_coef_loss           | -8.034262   |
| entropy                 | 2.4219604   |
| episodes                | 5           |
| fps                     | 6           |
| mean 100 episode reward | 243         |
| n_updates               | 1800        |
| policy_loss             | -6.9784927  |
| qf1_loss                | 0.6887778   |
| qf2_loss                | 0.7159845   |
| time_elapsed            | 153         |
| total timesteps         | 948         |
| value_loss              | 0.09552741  |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003      |
| ent_coef                | 0.055318344 |
| ent_coef_loss           | -8.452169   |
| entropy                 | 2.404987    |
| episodes                | 6           |
| fps                     | 6           |
| mean 100 episode reward | 283         |
| n_updates               | 2400        |
| policy_loss             | -9.412445   |
| qf1_loss                | 0.6766623   |
| qf2_loss                | 0.70545053  |
| time_elapsed            | 205         |
| total timesteps         | 1367        |
| value_loss              | 0.105198026 |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003      |
| ent_coef                | 0.046448067 |
| ent_coef_loss           | -8.175938   |
| entropy                 | 2.3233392   |
| episodes                | 7           |
| fps                     | 6           |
| mean 100 episode reward | 306         |
| n_updates               | 3000        |
| policy_loss             | -11.537666  |
| qf1_loss                | 0.75021183  |
| qf2_loss                | 0.7861876   |
| time_elapsed            | 256         |
| total timesteps         | 1769        |
| value_loss              | 0.11728246  |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003     |
| ent_coef                | 0.03939096 |
| ent_coef_loss           | -7.8239355 |
| entropy                 | 2.2643614  |
| episodes                | 8          |
| fps                     | 7          |
| mean 100 episode reward | 345        |
| n_updates               | 3600       |
| policy_loss             | -13.780324 |
| qf1_loss                | 0.8626057  |
| qf2_loss                | 0.86110085 |
| time_elapsed            | 310        |
| total timesteps         | 2316       |
| value_loss              | 0.12341163 |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003     |
| ent_coef                | 0.03374574 |
| ent_coef_loss           | -7.0512705 |
| entropy                 | 2.1917257  |
| episodes                | 9          |
| fps                     | 7          |
| mean 100 episode reward | 389        |
| n_updates               | 4200       |
| policy_loss             | -15.730022 |
| qf1_loss                | 0.90890974 |
| qf2_loss                | 0.9068196  |
| time_elapsed            | 383        |
| total timesteps         | 2973       |
| value_loss              | 0.14013878 |
ーーーーーーーーーーーーーーーーーーーーー
| current_lr              | 0.0003     |
| ent_coef                | 0.02911888 |
| ent_coef_loss           | -6.4689984 |
| entropy                 | 2.1362674  |
| episodes                | 10         |
| fps                     | 7          |
| mean 100 episode reward | 410        |
| n_updates               | 4800       |
| policy_loss             | -17.69184  |
| qf1_loss                | 1.0453998  |
| qf2_loss                | 1.0454738  |
| time_elapsed            | 461        |
| total timesteps         | 3508       |
| value_loss              | 0.15320745 |
ーーーーーーーーーーーーーーーーーーーーー