お久しぶりです。学生競技会を担当している飯島です。
本日のブログの記事は、MathWorksの海外版のブログにも掲載され、人気だった”Magic Formulaを使ったタイヤのモデリング”に関する記事を和訳させていただきました。こちらの記事は自動車を作っている人たちにはヒットする内容になっているので最後までお楽しみください。(
オリジナル記事)
以下和訳
————————————————————————————
今回の記事はUPBracing Formula StudentチームのTom Teasdaleを迎えてお話を進めていきます。Tomにはこの場を利用して、彼の開発したタイヤモデリング用ツールについて紹介をしていただきます。
はじめに
このブログでは、Magic Formula Tire モデルの作成、フィッティング、評価のための新しい MATLAB ツール(
GitHub)を簡単に紹介します。このツールは、学生フォーミュラ用タイヤテストコンソーシアム(以後
FSAE TTC)のデータを使用してタイヤモデルを実装しようとする学生向けに作成されました。フィッティングしたモデルは、TIR ファイルまたは構造体として出力して、このツールの外部で使用することができます。
モチベーション
あなたは学生フォーミュラ(FSAE)に参加していますか?もし答えが「はい」であれば、車がいかにタイヤに大きく影響をされるのかはご存知でしょう。エンジン(またはモーター)の路面への最大伝達力を制限するため、タイヤの特性を理解し比較することで、適切なタイヤを選定する必要があります。また、MATLAB/Simulinkで車両運動制御アルゴリズムや高精度の車両モデルを開発する場合にも、タイヤのモデリングが必要になります。私自身、学生フォーミュラの現役学生であり、私のチーム
UPBracingでは、これらの典型的な課題に直面しました。
幸いなことに、学生フォーミュラのチームはFSAE TTCのメンバーになることで、高品質のタイヤデータにアクセスすることができます。わずかな会費で、学生フォーミュラで利用するほとんどのタイヤの完全なデータをダウンロードすることができ、それを使って、高精度で計算効率の高い、経験的なタイヤモデルを作成することができるのです。
Magic Formula Tireは、経験的タイヤモデリングの唯一の手法ではなく、数あるうちのひとつに過ぎません。しかし、(線形タイヤモデルを除けば)最も人気のあるモデルであり、それには理由があります。下記に示す式は、有名で古典的なMagic Formulaの発展版と理解することができます。
y=D⋅sin(C⋅arctan(B⋅x–E(B⋅x–arctan(B⋅x))))
ここで,y は出力変数(例:横方向のタイヤ力),x は入力変数(例:スリップ角)である.B、C、D、E はチューニングパラメータとします。
古典的なMagic Formulaをデータにフィットさせる方法の例として、MathWorks社のスタッフによるブログ記事「
Analyzing Tire Test Data」を参照することができます。彼らの場合、フィッティングの結果、現在の定常状態に応じてパラメータを変更する大きな補間グリッドを生成しています。しかし、補間グリッドは、特に実行速度が重要な場合、不利になることがあり、また、フィット処理後に修正することも困難です。
古典的なMagic Formulaをさらに発展させたものに、約100のパラメータを持つ半経験的Magic Formulaモデルがあります。半経験的とは、そのモデルがタイヤの力学に関する知識を方程式に組み込んでいることを意味し、例えば多項式モデルのように純粋に経験的であるわけではありません。そのため、半経験的Magic Formulaモデルは、いわゆる
類似性法を用いてタイヤ特性を現実的に外挿することも可能です。通常、起こりうるすべての定常状態に対するテストベンチデータがあるわけではないので、これは非常に便利です。例えばTTCでは、スリップ角は6度までしかテストしていません。このモデルは100以上のパラメータを調整する必要があり、非常に複雑に見えますが、モデル-データ-フィットのために必要なパラメータは、通常そのうちのほんの一部だけです。しかし、MATLABスクリプトだけでMagic Formula Tireモデルを構築するのは、特にパラメータを手動で調整する場合、少々面倒な作業になります。私のツールが、そのような点で学生の皆さんのお役に立てれば幸いです。
以下Magic FormulaやMagic Formula Tireの表記は半経験式を意味する。
方法論
ここで紹介する Magic Formula Tire Tool は、Magic Formula Tire モデルをデータに適合させるための、商業製品に代わるオープンソースの代替品です。このツールは、Magic Formula Tire
MATLABライブラリと密接に関連したプロジェクトのグラフィカルラッパーとして機能します。つまり、GUIで行うほぼすべての作業をMATLAB上のライブラリで行うことができます。また、GUI でフィッティングに使用される Magic Formula Tire の方程式は、ライブラリで使用されるものと同じであることを意味します。つまり、フィッティングされたパラメータ・セットは、Magic Formula Tire MATLAB ライブラリのコマンドライン・ツールを使った場合と同じ結果を GUI で得ることができるのです。
ところで、上記のライブラリの評価関数はコード生成に互換性があり、UPBracingではその目的で使用されています。ですから、あなたのコード生成プロジェクトにおいて、GUIを使用してモデルを適合させ、ライブラリを使用して評価することができますので、ご安心ください。
Magic Formula Tireの実装
Magic Formula Tire モデルの実装を理解したい人のために、簡単にまとめておきます。ここで、絶対的な参考文献は、Hans B. Pacejka著「
Tire and Vehicle Dynamics」(2012年)です。4.3.2.章に、方程式のフルセットが載っています。また、MF-Tyre/MF-Swiftのマニュアルは、
パラメータのカンニング用紙のようなものなので、近くに置いておくとよいでしょう。これらの実装は非常に簡単です。Fx0のソースコードを見てみましょう。これは、純粋な縦滑りに対する縦方向のタイヤ力を計算するものです。
——————————————————————————–
function [Fx0,mux,Cx,Dx,Ex] = Fx0(p,longslip,inclangl,pressure,Fz)
FNOMIN = p.FNOMIN.*p.LFZO;
dfz = (Fz-FNOMIN)./FNOMIN;
dpi = (pressure-p.NOMPRES)./p.NOMPRES;
Fx0 = Dx.*sin(Cx.*atan(Bx.*longslip-Ex.*(Bx.*longslip-atan(Bx.*longslip))))+SVx;
———————————————————————————
パラメータ名はMagic Formula Tire/MF-Swiftのマニュアルに準拠して実装し、変数名はPacejkaの本に忠実に従おうとしています。それ以外は、本の中の数式をMATLABのコードに変換するだけです。
Fitterの作成
タイヤデータの分析では、lsqcurvefit 関数を使用して Magic Formula Tire モデルをデータに適合させます。その名の通り、誤差の二乗和を最小化します。Magic Formula Tire Tool は、Magic Formula Tire MATLAB Library に含まれる Fitter を使用します。これも最小二乗法を用いていますが、fmincon関数を用いています。これは、Magic Formula Tireの特定の変数が常に一定の範囲内にあることが望ましいため、非線形制約も実装したかったからです。たとえば、Pacejkaの本には次のように書かれています。
Cx=pCx1⋅λCx >0, Dx=μx⋅Fz⋅ζ1>0, Ex=…≤1
ここで Cx と Dx は 0 よりも大きくなければならない。この式はFitterの非線形制約として実装することができる(
ソースコード参照)
——————————————————————————————
[~,~,Cx,Dx,Ex] = mftyre.v62.equations.Fx0(params,longslip,inclangl,pressure,Fz);
c = [-Cx+eps;-Dx+eps;Ex-1];
——————————————————————————————
ここでcは非線形制約としてfminconに渡された関数ハンドルの出力である(
nonlcon参照)。次に、モデルをデータに適合させる順序を考えなければなりません。時系列データを定常状態に分離した、つまり、各入力が一定とみなせる分離したデータ配列があると仮定すると(滑り率や滑り角などの掃引変数を一つ除いて)、次のようになります。
Magic Formula Tire はより多くの出力をモデル化できるため、このリストは不完全なものですが、デモンストレーションには十分です。この表は,常に最初に純粋なスリップ条件(Fx0, Fy0)にモデルを適合させ,それから他の方程式に移行すべきことを示しています.この順序は、方程式の依存関係から自然に来るものです。FxはFx0を使い、それにスケーリング項を適用させ、Fyも同様にスケーリング項を適用します。Fx0 と Fy0 のどちらを先に当てても同じであることに注意してください。ここで説明した順序は、Fitterにも実装されています。つまり、GUIで複数のfit-modeを選択すると、fitterは段階的に進行します。
GUIの構築
私のGUI構築のアプローチは、MATLABが提供する
カスタムUIコンポーネントクラスを使って、
AppDesignerを使わずにモジュール化されたアプリケーションを開発することでした。カスタムコンポーネントを使ってアプリを構築すると、アプリの一部にのみフォーカスすることが非常に容易になります。個々のUIコンポーネントを単独で実行し、バグが発生しないかどうかを確認することができます。カスタムUIコンポーネントクラスを開発する際に、常にアプリの全てを実行する必要はありません。
私は今でもMockupsを素早く作成し、計画したUIがうまく見えるかどうかを確認するためにAppDesignerを使っていますが、AppDesignerはプロパティの利用レベルを制限したり、ループでコンポーネントを作成できなくするなどの理由から、アプリケーションに使用しない方が良いと考えています。しかし、R2021aから、AppDesignerでカスタムUIコンポーネントを使用できるようになったことは特筆すべきことです。これによって、今までの問題が解決されるかもしれませんが、私はまだ試していません。(
使用方法参照)
アプリのデモ
これから、FSAEタイヤテストコンソーシアムのデータを使って、重要なワークフローのデモを行います。データは、ライセンス契約に準拠するため、不明瞭にされ、非特定化されています。
アプリのインストール
アプリをインストールするには複数の方法がありますが、推奨される方法は
FileExchangeからダウンロードする方法です。または、
GitHubから最新リリースをダウンロードすることもできますが、いずれにせよ新しいリリースはFileExchangeに同期されます。アプリを含むツールボックス (*.mltbx) をダウンロードし、インストールします。その後、アプリのカタログからツールを起動することができます。
タイヤデータの取り込み
まず、測定データを取得する必要があります。学生フォーミュラ TTCのメンバーであれば、彼らのフォーラムに進み、そこからデータをダウンロードすることができます。MAT形式でSI単位でフォーマットされたデータでないと、あらかじめインストールされているパーサーは失敗する可能性があるためご注意ください。
一般に、TTCのデータは次の2種類のテストに分かれています。
ドライブ/ブレーキは、ゼロスリップ角または一定のスリップ角(ステアリング角)を持つ操作です。他のすべての入力を一定に保ちながら、スリップ率を掃引します(タイヤの駆動と制動によって)。コーナリングはスリップ率を全く考慮せず、他の入力が一定のまま、スリップ角だけを掃引する。このように、完全なMagic Formula Tireモデルを適合させるためには、与えられたタイヤのドライブ/ブレーキとコーナリングの両方のデータセットが必要です。この例は、インストールされたツールボックスに含まれる非識別化および不明瞭化されたデータを使用することで行うことができます。toolboxフォルダに移動すると、doc/examples/fsae-ttc-data/の下にサンプルデータがあります(TTCにまだアクセスできない場合)。タイヤの特性は変更されており、結果として得られるモデルは実際のタイヤのように動作することに留意してください。
次に、「タイヤデータ」タブに移動し、図のようにインポート処理を行います。
Fitterの設定と実行
まず、新しいタイヤモデルを作成する必要があります。このためには、Tyre Modelタブに戻り、New Modelをクリックし、保存するファイルを選択すると、以下のようなデフォルトのモデルが表示されます。
[タイヤ分析]タブに移動して、このモデルがどの程度データに適合しているかを見ることができます。ネタバレ注意:まだフィットしていないため、意味をなしません。
次に、fit-mode を設定する必要があります。ここでいうfit-modeとは、これからあてはめようとする方程式のことです。先に説明したように、方程式によってフィットさせるべきデータが異なります。たとえば、Fx0をフィットさせるには、すべり角のない(純粋な縦すべり)データが必要です。いずれにせよ、モードFx0とFy0を最初にフィットさせるのが常道です。では、そうしてみましょう。タイヤモデルタブに戻り、フィットモードを調整し、フィットを開始します。
目的関数が非常にゆっくり減少していることに気づいたとき、処理をキャンセルしました。しかし、fminconの現在の状態は失われず、最後の反復は保存されています。なお、Fy0がフィットする前にキャンセルしているので、Fx0だけが改善されているはずです。これでフィットした値を見て、モデルに追加することができます。
フィットした値が信用できない場合は、値フィールドにタイプして手動で変更することも可能です。
モデル–データ–フィットの検証
再びタイヤ分析タブに移動して、モデルの適合性を検証するために、いくつかの定常状態をプロットしてみましょう。
完全ではないが、満足のいくフィットができました。Fy0、Fx、Fyについてはまだフィットしていないので、これらのモードについては悪い結果が予想されることに注意します。
モデルを手動で調整
モデルで遊びたい場合やモデルをいじってすぐに結果を見たい場合は、ウィンドウのレイアウトを変更したり、プロットの自動更新オプションを使用することをお勧めします。これらを行うことで、モデルパラメータの意味や結果を理解するのに役立ちます。また、完全な適合を目指すのであれば、必要なステップです。Fitterは良いですが、完璧ではありません。
フィットしたタイヤモデルのエクスポート
このファイルは、Magic Formula Tireツールにモデルを保存して再インポートするのに便利ですが、市販の多くのツール(ADAMS、Siemens NX、Simulinkなど)とのインターフェースにもなっています。エクスポートされたファイルは次のようなものです。
————————————————————–
[LONGITUDINAL_COEFFICIENTS]
—————————————————————
また、MAT としてエクスポートを選択すると、タイヤモデルのパラメータが構造体に変換され、MAT ファイルに保存されます。このエクスポートは、例えばライブラリの mftyre.v62.eval 関数を使用して MATLAB 内で Magic Formula タイヤモデルを使用する必要がある場合に有効です。
現在、MATファイルをツールにインポートすることはできませんので、TIRファイルは常にMATエクスポートとは別に保存しておく必要があります。
結果と結論
我々は、Magic Formula TireモデルをFSAE TTCからの実データに適合させました。デモのためにいくつかのステップを省略しましたが、すべてのプロセスは5分未満で完了しました。前述のように、TIR-fileをサードパーティのシミュレーションに使用するか、エクスポートした構造体を直接MATLABで使用するかのどちらかを選択することができます。Magic Formula Tire MATLABライブラリを使用する場合、以下のコードをご使用ください。
—————————————————————–
[Fx,Fy] = mftyre.v62.eval(p,slipangl,longslip,inclangl,inflpres,FZW,tyreSide)
—————————————————————–
ここで、p はエクスポートされたパラメータ構造体です。私の経験では、この評価関数はオーバーヘッドが少なく、実行速度が非常に速いことが証明されています。リアルタイム制御や推定アルゴリズムでの使用を念頭に置いて作成したため、これは必要条件でした。
ただし、現在のところ式は完全ではありません。例えばモーメントMz0、Mz、Mx、Myが計算されていません。また、ターンスリップは無視されています。
Marco Furlanによって作成された
mfevalプロジェクトを使って、エクスポートされたTIRファイルを評価することもできます。ただ、GUIもモードに合わないことに注意してください。
—————————————————————————————
mentioned.output = mfeval(TIRfile, inputs, useMode);
—————————————————————————————-
このツールが学生フォーミュラの一部の学生の役に立ち、最終的に詳細なタイヤモデルを自分で作ることができるようになればいいと考えています。
今後の展望
Magic Formula Tire Tool は、数人のベータテスターによると、すでに素晴らしい働きをしているようです。しかし、近い将来、いくつかの機能が計画されています。
– Magic Formula Tire の旧バージョンとの互換性
– より多くの分析オプション(例:Kamm-Circle)
– クオリティ・オブ・ライフの改善(使いやすさ)
– Fitterのための重み付け機能(例えば低荷重に重きを置くなど)
もしあなたがループの中にいたいなら、私の
GitHubリポジトリにスターを付けるか、
FileExchangeで私のツールを評価することを検討してください。どちらも、ツールに機能を追加するための私のモチベーションを保つことができます。もし、あなた自身が貢献したいのであれば、遠慮なくそうしてください。私に連絡すれば、協力する方法を見つけられます!
謝辞
このプロジェクトは Formula SAE Tire Test Consortium (FSAE TTC) と Calspan Tire Testing Research Facility (TIRF) から提供されたデータなしには成り立ちませんでした.アプリケーションの例や画像,記録には,ライセンス契約に準拠するため,非識別化され,不明瞭なテストデータが使用されています.Edward M. Kasprzak博士には、デモのためにユーザー、非識別化、および不明瞭化されたデータの提供を許可していただき、特別に感謝します。
また、LinkedInで楽しいやりとりをしたMarco Furlanにも謝意を表したいです。彼は、Magic Formula TireのオープンソースMATLAB実装の決定版であるmfeval toolboxを開発しました。彼のプロジェクトは、私がMagic Formula Tireを使い始めてから3年近く経ちますが、大変感謝しています。
最後に、MATLAB関数histcountsを使用して時系列データを定常状態に自動的に分離する天才的な方法を学んだ、MathWorksスタッフの「タイヤ試験データの分析」という以前参照したブログ記事に謝意を表したいと思います。この技術は、計測インポートパーサーの開発に使用されています。
Comments
To leave a comment, please click here to sign in to your MathWorks Account or create a new one.