PacejkaのMagic Formulaってなんぞ

ドライブシムなんか見てるとたまに出てくるんですが、あんまり解説を見かけないので、ほんの上辺だけ説明しようと思います。

モデルの種類

ドライブシムで使われるタイヤのモデルには、物理的なパラメータに基づくものと、そうでないものがあります。前者は例えばLFSやなんかがそうで、ドライブシム毎に独自のモデルを作ってるパターンも多いです。次元は低くなりますけどRのタイヤもこのパターン。

で、問題の後者ですが、これは有名なモデルがありまして、それがPacejka1のMagic Formulaってやつです。物理的なパラメータに基づいていないので、謎パラメータ2がいくつも並びます。実際に使うときはこの謎パラメータの数字を決めないといけないわけですが、多くの場合既に計測された値をそのまま使っているようです。(Ferrari328のが有名らしい?)

長所と短所

前者のようにパラメータに物理的な意味を持たせている場合、その値を変えればそれに応じた結果が得られるわけです。例えば空気圧を変えたり、タイヤの大きさを変えたりとか。レゲーでセッティングを煮詰めるのが好きな人にはおもしろいんですが、なんと言ってもこいつの短所は現実にそぐわない結果になりやすいこと。ついでに計算コストも馬鹿高いです。

後者の方は計測データにフィットするようにパラメータが設定されているので、少なくとも計測の範囲内では現実に則した結果になります。が、非常に強い力のかかる場合など、測定の条件を外れる入力値を入れたときに返ってくる値は全く信憑性がありません3。ついでにパラメータの値の意味が無いので、値を変えることが現実のタイヤにおいてどういう変化をしたことに等しいのか不明。タイヤに関するセッティングはほぼ出来ません4

以上のようなことを考慮に入れて、使用するタイヤモデルを選択するわけですが、特に個人で開発している場合など、PacejkaのMagic Formulaは後に述べるように数式として簡単なので、導入のしやすさから選ばれることが多いようです。モデルを一から構築するのは大変ですからね…。

Magic Formulaの式

式は以下のような形になります(Racerのページより転載、B,C,Dは定数)

y(x) = D sin[ C arctan { Bx – E ( Bx – arctan(Bx))}]

グラフはDolphinity Racerのページを探せば見つかります。このグラフは横軸がタイヤのスリップ率もしくはスリップ角5、縦軸がタイヤと地面との間にはたらく力を表します。現実のタイヤをしかるべき装置で計測するとこのようなグラフが描けます。この形に合うような簡素な数式を探したい。これがPacejkaのMagic Formulaの基本的アイデアです。

まず-πからπまでの範囲のsinカーブを考えます。これを先のグラフの形になるように弄っていきます。

イメージとしては、-πからπまでのsin関数のグラフを横向きにグーンと引き延ばした感じ。実際にはsinの中にatan関数を入れる(=合成関数にする)ことによって実現します。これにより最大値はよりx=0寄りになり、xをいくら大きくしても(=どれだけタイヤが滑っても)タイヤの力が0にならなくなるようなグラフになります。Pacejkaの式の基本構造はたったこれだけのことです。簡単でしょう?

あとは色々と形状を弄れるように、関数に係数を付けたり、定数を付けたりしていきます。それがさっき出したa1~a10、b1~b11のことです。sinとatanの合成関数の形を弄るために付けたパラメータなので、物理的意味は全くありません6

しかしタイヤってのは縦方向と横方向の力の両方が同時に発生するので、先の式をそのまま使うって訳にはいきません。なので、縦横別々に計算してからそれらを用いて補正する必要があります。ってもうここまで来ると本当にプログラムを書くのでもなけりゃどうでも良いので、とりあえず理解すべきなのは、PacejkaのMagic Formulaはsinカーブをatanとかを合成することで変形しただけのものということです。

グラフを眺めて…

普通にクルマに乗ってるだけでは気づかないことですが、このグラフを信用するならば、タイヤが滑らないとクルマは発進出来ないということになりますね。だってスリップ率0のところは力0ですから。クルマが加減速するとき、タイヤはほんの少しずつ、滑ることによって力を発揮しているのです。

縦方向の力のグラフは、急激に上がって、ストンと落ちて、その後はどれだけ滑っても発揮する力があまり変わりませんよね?これ静止摩擦力と、動摩擦力の関係にソックリでしょう?それをただの一つの関数で表現出来ているのがこの式の凄いところ。

スリップ角もある程度を過ぎると力が低下していきます。この場合の力ってのはいわゆるコーナリングフォースってやつで、曲がる内側へ向かう力のこと。舵角をいたずらに大きくしても曲がる力は低下する一方で、最適な舵角に設定することで最も効率よく曲がることが出来る、というわけです。

ついでに言うとRacerのページにあるグラフの、緑のやつはセルフアライメントトルク7で、スリップ角が0でないときに、スリップ角が0になるようにタイヤにかかる力のこと。交差点曲がったときにハンドルから手を離すとスルスルと真ん中に戻っていくアレです。ゲーム的にはFFBとして感じることが出来ますね。グラフを見れば、こいつにも力の山がありますね?この山を越えるとFFBの力の大きさは低下し、ついでにコーナリングフォースも山を越えて低下し始めます。なので、コーナリング中にFFBの急激な低下を感じたらそれは舵角が大きすぎのサイン。舵角を下げるかアクセルを戻してグリップを取り戻さないといけません。

終わりに

PacejkaのMagic Formulaの成り立ちとかをちょっとだけ書きましたが、こういうのをちょっとでも知っておくとドライブシムをやるとき役に立つ…かも?

またこのMagic Formulaですが、自動車工学の第一線で今でも使われる非常に実用的なものです。それゆえ未だにあちこち改良が加えられてるんだそう。部分的に物理的なパラメータを導入してみたりするものもあるみたいで、突き詰めると本当は結構難しいんですよね。ちなみにRacerではVer.5.2が使われているらしい?プログラムのソースも載ってるので興味のある方は見てみると良いかも。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です