モードドライバー第4回(その1)
走行パターン、pythonのサポートベクタマシン、Simulinkによるドライバモデルが概ね完成しました。多少、微修正しますが作ったものを組み合わせてモードドライバを評価してみましょう。
STEP1.簡単なアクセル操作であたりを付ける。
STEP2.学習用アクセルパターンの作成。
STEP3.Simulinkのオープンループで学習。
STEP4.回帰曲線の作成(アクセルパターンの作成)。
STEP5.Simulinkでモード走行。(ブレーキは車速フィードバック)
STEP6.評価
以上6ステップですすめます。
STEP1.簡単なアクセル操作であたりを付ける。
モード走行は車速0(アイドリング)から40km/hの間で実際の道路を走行するイメージで作られています。ということは、いきなりフルスロットルで加速することもなければ仮に最高速度100km/h程度で巡行したとしてもアクセル開度100%必要とすることもほとんどありません。
ですから、本格的に学習する前に適当なランプ関数などでアクセルと車速、加速度の関係をみてあたりをつけてみましょう。

以前解説したランプ関数でのシミュレーションです。ランプが緩やかな気もしますがここでわかったことは。
・アクセル開度30%でも40km/h以上でる。
・アクセルをほぼ踏んでいない状態でも、車速が低い状態では大きな加速度が得られる。
・アクセル開度を固定してもこの車両であれば加速度を緩やかに落としながら60km/h 以上の速度がでる。
ということがわかります。このことから学習用パターンとしてモード走行パターンの車速部分をアクセル開度とみなし、それに適当な係数をかければ簡単に学習用パターンができそうな気がしますので、その方向で進めます。
STEP2.学習用アクセルパターンの作成。
以前モードパターンを作成してでーたをより細かく線形補間しました。これを車速ではなく学習用アクセルパターンとしてシグナルビルダーに実装します。
load('mode10.mat')
tspeed=interp1(a(:,1),a(:,2),[0:1:135]')
ttime=[0:1:135]'
おさらいになりますがMatlabコードを実行してエクセルで作った12点のモードパターンを線形補間します。やり方はいろいろありますが、今回はエクセルを使った方法で進めます。そしてワークスペース変数ttime、tspeedを再びエクセルに貼り付けて1行目にラベルをTime、THと付けます。(シグナルビルダーの都合)


それをシグナルビルダーに展開するとこんな感じです。ちなみにlearn.xlsxというファイルで保存しました。

外観はこの様になりアクセル部分にこのブロックを付けます。ゲインブロックここでは1ですが1~2程度の範囲で試すと良いかと思います。もしくはMatlab上でtspeedを2倍したものを作り、それをエクセルにコピペしこのパターンの後にくっつけて学習データを増やすことも可能です。ここではモード走行で減速、またはアイドリング時はブレーキをフィードバック制御使うためアクセルのみを対象とすることに注意してください。