モードドライバ(続報)

休みなのでちょっと試してみた。具体的にはモード走行した結果を反映してそのデータで学習。結論から言えばさほどパフォーマンス上がらなかったのでアクセル側にも簡単な速度フィードバックで試したところちょっとおもしろい結果になった。ちなみにブレーキだけ少しゲイン調整しました。

まず最初にモードパターンをオープンループのアクセル開度としてシミュレーションした結果です。これでも十分ですが80秒付近で2km/h超えてしまいます。

モードパタンで学習後

そこで、上記のシミュレーション結果に基づいて新たに学習したらどうなるか試してみました。ブレーキ操作まで含めてとりあえず学習してみました。ブレーキのおかげでどうしても不自然なマイナス加速度が発生するために学習範囲としてはマイナス側の加速度が大きくなります。またマップ形状が大きく変わりました。シミュレーション結果としては全体的に偏差が大きくなった気もしますが±2km/hを超えていません。

さらに学習

シミュレーション結果は悪くなってしまいました。きっとマイナスの加速度が影響してるのではと思います。うまく加工する必要があります。ちなみに、このパターンを繰り返しても結果はさほど変わらないか悪くなります。

先ほどとマップ形状そのものは大きく変わってませんがマイナス側の加速度がさらに大きくなっています。

またさらに学習

ここでモードパターンで学習した結果を用いて、アクセル側も簡単な速度フィードバックしたものにしてみました。アクセルマップの形状は上記のものとさほど変わりませんが加速度のマイナス側の振れが小さくなっています。またシミュレーション結果は偏差は±2km/hの範囲内です。オープンループとの大きな違いは巡行状態の時に速度フィードバックを与えているおかげで速度偏差がほぼなくなっています。優秀ですね。ちなみに、これをもとにさらに繰り返しシミュレーションするとだんだん偏差が大きくなる様です。もともとのブレーキ踏まずオープンループで学習という条件から外れてるので仕方ないかもしれません。

FBして作ったマップ

プログラムを5分、10分少し手を加えるだけで劇的に変化するので面白いですよね。

ちなみにオープンループでシミュレーションする場合に人間がアクセル操作する場合最も偏差が少なそうなは停車時と巡行時だと思いますが、どうしてずれるのか?という一つの要因です。

車速20加速度0の時のアクセルマップです。シミュレーション開始からずっと7.8%くらいでアクセル踏んでいます。それに対して車速は0から23km/hと変化しています。この場合30秒かけて到達しその後も緩やかに23km/h近くまで加速するのですが学習した時はアクセル操作をしているなかで30秒間アクセル固定することなく、過渡領域だけで評価したことに起因すると思います。そもそも学習用データが青点をもとに学習し回帰するのに無理があるんでしょうね。