モードドライバー第3回
前回でSimulinkの車両モデル以外の基本的な部分は完成しました。今回は車両モデルの改修について書きます。学習用のオープンループとモード走行用のモデルの2段階の改修となります。
学習用オープンループ
Simulink例題のオートマチックトランスミッション車を開いて入力をシグナルビルダー、matファイル保存用にTO FILEブロックを追加します。シグナルビルダーはアクセル操作量、ブレーキ操作量、目標加速度を基本としたデータを。TO FILEブロックもシグナルビルダーと同じデータの他実加速度やエンジン回転数など必要なデータを保存できる様にしましょう。ただし、注意しなければいけないのはTO FILEブロックやスコープに表示やワークスペース保存するデータが多くなるほど実行時間が長くなりパソコンのメモリも消費します。必要に応じて間引きも必要です。
モード走行用
学習用オープンループに加えて、オープンループアクセル(2ーDルックアップテーブル)とFBブレーキシステムが必要となります。あとはデータ処理の都合で例えば目標速度ー実速度の差をとったり、ブレーキシステムは操作量が開度%でなく力(ニュートン)ということもあり適当なゲインを与えています。その他変化率をとったりサチュレーションしたりしています。
では主な追加要素について説明します。
FBブレーキシステム
学習と問題の簡略化のために機械学習の対象をアクセル操作のみとしました。それ以外にもブレーキ操作が車両に与える影響としては応答遅れはアクセル操作に比べてはるかに小さく、簡単なFB制御で対応可能だということがあらかじめわかっていたためにブレーキのみ車速フィードバックという構成にしました。その条件ですが
ブレーキ条件
・目標加速度がマイナス
・目標車速が0の時はフルブレーキ
という条件での作動としました。個別のブロックで構成するとこんな感じです。なおゲインやコンスタントブロックの850というブレーキ力は適当な値です。
オープンループアクセル
単純にサポートベクタマシンの性能でどこまで勝負できるか試したかったので2-Dルックアップテーブルを使い、オープンループで走行した実速度、実加速度で回帰したアクセル開度のマップを用いました。この図を見るとわかる通り縦軸が本出力であるアクセル開度ですが通常あり得ないマイナスの値をしめしています。これは、アクセル開度0%でもクリープ現象でわずかに加速して車が動いてしまう現象のために、機械学習するとアクセルでマイナス開度を与えよということになります。実際はブレーキ踏まないといけないのでこうしたこともあるのでサチュレーションブロック使ったりします。
車速フィードバックブレーキはかなり優秀だと考えるとモードパターンの加速あるいは巡行時にどれだけ機械学習の成果があるのかが試されるということです。
昔設計したFB型のモードドライバーについて得られた結果は、PID型のコントローラを設計しても単一ゲインではカバーできない。カバーできてもかなり振動的で、車速、加速度に依存したゲインスケジュールを与えるのが一番良いドライバーだろうというのは見えていました。
ただ、実際にはゲインスケジュールの設計がめんどくさくトライ&エラーばかりでした。
そう思うと、このマップが正しければわずか数行から数十行のプログラムで実現できてしまうのでどんな結果がでるかわくわくします。
ということで今回はSimulinkモデルの解説でした。