サーキットシミュレーションの考え方

皆さんはサーキットシミュレーションというものをご存知ですか?

サーキットシミュレーションとは、クルマの性能と走行ラインから、そのクルマで実現可能な最速タイムを計算する方法です。
今回紹介するサーキットシミュレーションは、みんカラのお友達のタツゥさんによって考案されたものです。
曰く、「Honda R&Dテクニカルレビューに掲載されている”F-1サーキットシミュレーション”を参考にして、それをエクセル化したもの」とのこと。
初めて知ったときは「なんじゃそりゃあああ!」と思いました。
2桁の足し算が出来ない僕なんかがタツゥさんから指導を頂くのは恐れ多いのですが、興味があったので、厚かましくも「教えて教えて」って言ってたら親切にいろいろ教えてもらえました。
言ってみるもんです(笑)

タツゥさんは「こういった手法がもっと一般化してほしい」という意図から、その作成方法をすべて公開されています。

 エクセル版サーキットシミュレーション作成方法第一回
 エクセル版サーキットシミュレーション作成方法第二回
 エクセル版サーキットシミュレーション作成方法第三回
 エクセル版サーキットシミュレーション作成方法第四回
 エクセル版サーキットシミュレーション作成方法第五回
 エクセル版サーキットシミュレーション作成方法コース図

基本的な考え方は「第一回」に全て書いてあるのですが、僕はこのたったひとつの記事を理解するだけでめちゃくちゃに時間を費やしました(汗)
ただ、ちゃんと項目毎に分けてあるので、ひとつずつ時間をかけて見ていけばいつかは理解できます。
いったん理解してしまうと、この記事がいかに丁寧で分かりやすく書かれているかが分かります。
もしもこれだけ分かりやすく書かれていなかったら、一生理解できてないでしょう…(苦笑)

余談ですが僕は高校時代に先生から呼び出しを食らって、「お前は数学以外のテストの点数はいいのに、なんで数学だけこんなに点数が悪いんだ!先生同士の会議で名前が出てたぞ!というわけで他の数名と一緒に数学強化プログラムを受けなさい」と言われて、数ヶ月間、意味の分からない居残りをさせられたことがあります。
だって仕方ないんです、国語とか英語は覚えたの書けばいいだけだから簡単だけど、数学は問題を見てもさっぱり分からないんだもの(涙)

そんな僕でも頑張れば何とか理解できたくらいなので、皆さんも頑張ればきっと大丈夫です。
偉い人が「元気があれば何でも出来る」とか何とか言っていました。
元気があってもかめはめ波は打てないので、何でもは出来ないと思います。
でもこれなら理解できると思います(笑)

基本的な考え方その1「まずは走行ラインありき」

前提として、走行ラインは計算では出しません。
自分で曲率半径を何百回も入力して、走行ラインを決定します。
基本的には実際の走行ラインに重なるように入力します。
そして「このラインを走る限り、最も速く走ったときのタイムは何秒か」というのを、後の計算によって出します。

仮に「もっとこういうラインで走ったほうが良さそうだ」というのがあれば、そちらのラインでも計算してみます。
計算結果が速くなればOK、遅くなればNGなので、評価は簡単です。
何度も何度もいろんなラインを描いてみて最速になるようなラインを決定します。

基本的な考え方その2「最大横Gのときの速度は何km/hか?を計算する」

まずはGPSロガーを使って、そのクルマの最大横Gを計測します。
LAP+の場合は実際の横Gより高く表示されるので、最大横Gとなった地点における「ラインの曲率半径(旋回半径)」と「速度」の2つの数値を拾って計算し直します。
具体的な計算式は重要ではないので省略しますが、知りたい人はエクセル版サーキットシミュレーション作成方法第一回をご覧下さい。
とりあえず「曲率半径」「速度」の2つが分かれば横Gが算出できる、とだけ覚えておけば十分です。
これは逆に言うと「速度」を知りたい場合、他の2つが分かれば計算で出せる、ということです。

ちなみに僕の場合はロガーのデータから、最大横Gを1.15Gとしました。
走行ラインがすでに決定しているという前提から、コーナ毎の各地点における曲率半径が分かるので、例えば1コーナで最大横Gが出るときの速度は何km/hか?
2コーナの場合は?3コーナの場合は?というのが算出できます。

(※次に最大加速G、最大減速Gも求めますが、ちょっと難しいので割愛します。でも分からなくてOKです。かくかくしかじかで僕のクルマの場合は加速側0.7G、減速側0.8Gを最大とします。)

基本的な考え方その3「タイヤグリップは摩擦円を超えない」

皆さんご存知の摩擦円です。
今回紹介するサーキットシミュレーションの場合は「タイヤ使用率」というかたちで扱います。
ここで、タイヤ使用率={ (縦G÷最大縦G)^2 + (横G÷最大横G)^2 }^0.5 と定義します。
やはり具体的な計算式は重要ではありません、「現在発生している縦と横のG」と「最大で発生できる縦と横のG」の2つが分かればタイヤ使用率が算出できる、とだけ覚えておけば十分です。
摩擦円の淵で走っている場合はタイヤ使用率は1(100%)です。

基本的な考え方その4「最低速度となる地点から加速・減速を逆算して速度を求める」

今回の本題です。
例えばタカスサーキット2コーナの最低速度が45km/hだったとします。
このとき、最低速度となった地点よりも手前、あるいはその奥では必ず45km/h以上の速度が出ていることになります。
「最低の速度が45km/h」だと言ってるんだから当たり前ですね(笑)

レコードラインの場合、基本的には「最低速度になる地点」に近づくほど曲率半径が小さくなり、そこから遠ざかるに従って曲率半径が大きくなります。
例えばコーナ進入時を考えてみると、まずハンドルを真っ直ぐにした状態から、徐々にハンドルを切り込んでいって、最低速度になる地点で舵角が最大になる、という操作になるわけですから、ラインの曲率半径は当然それに応答するように徐々に小さくなっていきます。

さて、ここでまず「走行ライン上の各地点における速度」を仮設定します。
走行ライン上の各地点において、クルマの速度は「横Gが常に1.15となるような速度」であるとしましょう。
理由は横に置いといて、とりあえずそのように設定します。

ところで「基本的な考え方その2」で説明したように、クルマの速度は「横G」「曲率半径」の2つが決まれば、自動的に決まります。
そして横Gは1.15だという前提になっているので、つまりこのときクルマの速度は曲率半径の大小によって変化します。
当然ですが、曲率半径が小さければ速度が低くなり、曲率半径が大きければ速度が高くなりますね。

タカスサーキットの2コーナを考えた場合、まずコーナに入る前の直線区間がありますね。
直線は曲率半径が無限大なので、ここで横方向に1.15G出そうと思ったときの速度は、計算上は無限大です。
実際にはまったくの直線になるわけではないので、多少なりとも曲率半径は無限大より小さくなりますが、速度がめちゃめちゃに高くなることに変わりはありません。
(※繰り返しますが、あくまで「横Gが常に1.15となるような速度」を考えた場合です)

逆に、2コーナの最低速度になる地点では、ラインの曲率半径は最も小さくなって、大体15mくらいになります。
LAP+でも旋回半径を表示する機能がありますから、実際の走行データを見てみると皆さん大体そのへんになってるはずです。
そしてこのときの速度は、一番最初に書いた前提から、約45km/hであるとします。

曲率半径が無限大から15mまで変化する間には、例えばですが500m、100m、50m、30m、20m、17m……といったように滑らかな変化が存在します。
その各地点において「横Gが1.15となるような速度」を求めると、例えばですが270km/h、120km/h、85km/h、65km/h、55km/h、50km/h…といった変化になります。

ところがここで残念なお知らせがあります、実際の僕のクルマではこのような速度変化…つまり85km/h、65km/h、55km/h、50km/h…といった速度変化で2コーナを走ることは出来ません。
何故ならこれらの速度は前提上「横Gが1.15となるような速度」として算出された速度であるため、横Gのことしか考慮されていないんです。
タイヤのグリップ力は摩擦円を超えることは出来ない、そして僕のクルマは最大で1.15Gまでしか横Gを出せない。
にも関わらず、上記の速度変化を見てみると、速度が落ちていますね。
速度が落ちる…つまり、減速している。
空気抵抗などの外部の力を除けば、クルマはタイヤの力を使って減速せざるを得ませんから、「タイヤが常に1.15Gのグリップ力を横方向に出し続けているにも関わらず、さらに減速方向にもグリップ力を使っている」という状態になっていることになります。
これは実際には有り得ない、矛盾した出来事なわけですね。

では一体どうすれば実際の速度変化を算出できるんでしょうか?
答えは簡単、各地点での速度を初めから遅くしてあげればいいです。
速度が低ければ、同じ曲率半径でも、発生する横Gが低くて済むので、そのぶん余ったタイヤのグリップ力を減速のほうに回すことが出来ますね。
やったぁ♪めでたしめでたし。

…じゃありません(汗)、それではどのくらい速度を低くすればいいのか?
85km/hのところを、10km/hまで落とせばいいのか?それとも2km/hくらいまで落とすの?
そんなんじゃすごーくタイムが遅くなってしまいますね。
最速タイムを計算するためのサーキットシミュレーションですから、それでは意味がありません。

というわけで速度の低下は最小限に抑えたい、まずは1km/hだけ速度を落として計算してみます。
ここで登場するのが「考え方その3」で出てきた「タイヤ使用率」です。
かくかくしかじかで、タイヤ使用率の計算に必要な要素は全て決定していますから、あとは数字を入力してタイヤ使用率を計算します。
すると、84km/h…つまり1km/h速度を落としただけではタイヤ使用率が100%を大幅に超えてしまいました。
これではダメですね。

次に、すかさず速度を2km/h落とした場合で計算し直します。
結果は…まだ100%を超えています。
すぐさま3km/h落とした場合で計算し直します。
だめでした。
間髪入れずに4km/h落とした場合で計算し直します。
だめでした。
一瞬の間もなく5km/h落とした場合で計算し直します。
それでもだめなら6km/h………7km/hでは…。
……というのを繰り返して、

ちょうど100%になるところまで何度も何度も計算し直します!!!

表計算ソフトの「マクロ」という機能を使うと、いわゆる「繰り返し処理」が出来るので、こういったやり方が可能になるようです。
パソコンの機能で自動的に何回も何回も、求める値が出るまで計算させるわけですね。
そうしてタイヤ使用率が100%となる速度が決定されたら、そこから遡ってもう一つ前の地点における速度を算出する際も、同じやり方によって算出します。
そうして減速側の速度が決定されていきます。

加速側についても、同様の処理を行います。
ただし減速側はタイヤ使用率のみを考えれば良いのに対して、加速側は「タイヤ1輪あたりの駆動力」および「駆動タイヤの本数(駆動方式)」を考慮する必要があるので、少し計算は面倒になります。
でも基本的には同じことをやります。

そうして加速側、減速側の速度を算出し、どちらか低い方を「その地点における速度」として決定すると、コース1周の走行ラインの各地点における速度がすべて決定され、それによってラップタイムが算出できます。

今回、具体的な計算方法は大幅に省略して考え方のみを(僕が理解できた範囲で)書きました。
実際にエクセルでサーキットシミュレーションを作成するには、いくつかある実務上の問題をクリアしなければいけませんから、やってみたい方は引き続きタツゥさんのブログを参考にしながら作ってみてください。

ややこしい説明になってしまったかもしれませんが、基本的な考え方はこのような感じだと思っています。
今まで「クルマがコース上を最速で走るというのはどういう物理現象なのか」ということについて、いまいち理解できなかったのですが、少しずつ分かりかけてきました。

ちなみに「加速側の速度の算出」において、2WDと4WD、あるいはローパワー車とハイパワー車では前提となる加速性能が異なることから、最適な走行ラインも微妙に異なります(ただしコーナ形状によります)。
それとヨーモーメントなどはこの計算に一切使用していないので、曲がりやすさや曲がりにくさはシミュレーションのラップタイムに一切関わりがありません。
あくまで重心点の移動のみを計算しています。

しかし実車では重量配分などが走りに影響します、それがどのように影響するかというと「理想状態からどれくらいかけ離れているか」という影響であり、言い換えると「何らかの要因によって理想のラインを理想の速度で走れない」ということになります。
駆動方式、タイヤのレスポンス、ハンドリングのクイックさ、ゲインの大きさ、減衰力の調整、アライメントによる要因、ロールの大小、荷重移動の具合などなど、ラップタイムに影響を与える要因は全て加速または減速またはコーナリングフォースのいずれかに影響し、最終的には「ある地点における前後Gと横G」で表されます。

以上、サーキットシミュレーションの考え方でした。
誤って理解しているところがあったら申し訳ありません。
いまいち分かりにくい説明になったうえに、記事が長すぎですね…反省。