FIELD NOTES / 2026

HUMAN × AI
OBSERVATION LOG

LOG ENTRY / post

直3ターボと4ローターを載せ替えられるエンジンシミュレーターを作った

直3ターボと4ローターを載せ替えられるエンジンシミュレーターを作った

エンジン単体のラボから始めて、気づいたら車一台ぶんになっていました。

→ 直3ターボ / 4ローター ラボ

音が出ます。ヘッドホン推奨。スマホでも動きます。

工夫したところ

  • エンジンを2種類載せ替えられる。 1.6L直3直噴ターボ(324Nm/285PS、REV7,000)と、2.6L 4ローターNA(585Nm/708PS、REV11,500)。直3は720°で3回燃焼して基本次数1.5、ロータリーはシャフト1回転で4回燃焼して基本次数4。同じ回転数でも2.7倍の高さで鳴ります
  • 音は全部リアルタイム合成。 排気パルスをランナー長ぶん遅らせて集合部で干渉させる作りなので、エキマニやスクロールを変えると音が変わります。ノック(燃焼室共鳴5.9kHz)、直噴インジェクタのカチカチ、外部ウェイストゲートのスクリーマーまで別々に鳴っています
  • セルモーターを機構の周波数から組んだ。 「キュキュキュ」の正体は連続音ではなく圧縮1回ごとの短いチャープでした。リングギヤ噛み合いは歯数120×クランク回転、整流子は減速比12×25セグメント。バッテリー電圧も電流で垂れます
  • 熱を実単位で解いている。 燃料投入エネルギーをkWで出して、冷却水・オイル・排気に配分。オイルクーラーを外すと油温が157℃まで上がって保護に入ります。流路も3Dで見えて、サーモスタットが閉じている間はバイパス側だけが流れます
  • 吸排気の流れが実流速。 6,000rpm全開で吸気47m/s、排気253m/s。排気だけ桁違いに速いのはEGT890℃で密度が吸気の1/8になるからで、これは計算から自然に出てきます
  • 駆動系はクラッチのスティック・スリップから。 6速MT+ファイナル、ギヤ比は個別に調整可能(3Dのギヤ径も比率どおりに作り直されます)。常時噛合なので、ニュートラルでクラッチを繋ぐと「ギヤは回っているのに軸は止まっている」のが見えます
  • 後輪駆動と4WD、2wayのLSD。 スプリットμ(右輪だけ氷)で丁寧に発進すると、オープンデフは空転して前に出ないのにLSDだと出られる、というのがちゃんと再現されます
  • ブレーキは四輪独立で熱計算。 ディスク温度→パッドμ→制動力、ディスク温度→キャリパー→フルード温度→沸騰。峠の下りを想定すると、純正パッド+古いDOT3では2分でベイパーロックしてペダルが逃げます。ブレーキダクトや樹脂ピストンで対策できます
  • シャシダイで測れる。 慣性ダイナモなので、低いギヤで測ると掃引が速くて駆動系慣性に食われ、測定値が下がります。実機で「何速で測ったか」が問題になるあの現象です

作りながら「回転体の向きの正負」を5回間違えました。ファン、タービン、コンプレッサ、ギヤ、リングギヤ。最後は目視をやめて、全部品の回転中心が自分のバウンディングボックスの中にあるかを自動判定するテストを書きました。

追記(2026-08-27):車一台ぶんだったものが、コースを走るようになった

エンジン単体から始めて車一台になったところで止めるつもりが、走らせたくなってしまいました。

サスペンションを本当に組んだ

前後ともダブルウィッシュボーンです。形を似せたのではなく、拘束を毎フレーム解いています。

  1. 下アームが車体側の軸まわりに回る
  2. 上下ボールジョイント間の距離が一定という拘束から、上アームの角度を二分法で解く
  3. タイロッド長が一定という拘束から、キングピン軸まわりの回転角=実舵角が決まる

なので諸元は決め打ちではなく幾何から出てきた結果です。キングピン軸傾角12.2°、キャスター6.5°、トレール19mm、スクラブ半径8mm、ロールセンター前84mm/後119mm、キャンバーゲイン−0.25°/10mm、バンプステア0.06°/10mm。静的キャンバーは上アーム長、静的トーはタイロッド長を逆算して合わせているので、アライメントをいじると特性曲線ごと変わります。

ステアリングはラック&ピニオン。ピニオンは実寸(ピッチ半径8.75mm・7枚歯)でラックの歯と噛み、ハンドル→中間シャフト→ユニバーサルジョイント2つ→ピニオンまで軸が繋がっています。アッカーマンは「ステアリングアームの延長が後車軸中心を通る」という構成から創発していて、フルロックで内輪41.8°/外輪37.1°と内輪が多く切れます。

コイルオーバーは、ばねレートから線径を逆算しました。k = Gd⁴/(8D³n) を解くので、75N/mmなら素線φ11.2mm、160N/mmならφ13.5mm。座巻きは上下1巻ずつ密着させてあり、縮むときは有効巻きのピッチだけが詰まります。車高調整はロアシートがねじを上がっていき、装着ばね長=プリロードは変わりません。実物と同じ挙動です。

4輪のタイヤで曲がるようになった

「曲率から横Gを与える」というインチキをやめて、平面3自由度+4輪タイヤモデルにしました。各輪でスリップ角を出し、輪荷重とμで摩擦円を張って、前後力に使った残りが横力の上限。コーナリング係数は荷重感応で頭打ちにしてあるので、荷重移動の大きい軸ほどグリップを失います。

おかげでスタビライザーの前後バランスが効きます。同じ舵角・同じ速度で、前スタビを固めると0.56G、後を固めると0.95G。前を固めればアンダー、後を固めればオーバー。教科書どおりの挙動が、決め打ちではなく荷重とタイヤから出てきました。ロールもピッチも、ばね上3自由度の常微分方程式を解いた結果です。1G制動の前後荷重移動は理論値 m·g·h/wb と完全に一致しました。

コースを2つ作った

ひとつは八の字の立体交差。2kmのストレート2本が中央で交差して、片方が桁高8.2mの橋で跨ぎます。左ループと右ループを1回ずつ通るので、1周の舵角の積分がゼロになる本物の八の字です。

もうひとつは20.8kmのロングコース。アイフェルの森にある20km級のコースへのオマージュですが、路線は完全に自作です(実在コースの測量データは使っていません)。全長20.80km、高低差299m、R250m以下のコーナー72、最小半径47m、最長直線2,184m、最急勾配11.9%。谷を跨ぐ高架と、山を抜ける424mのトンネルがあります。晴天の昼で、路肩の外には森が1,300本ぶん生えています。1周およそ10分半。

自動運転が状況を見て走り方を変える

ドライバーは「横ずれ→目標ヘディング→目標ヨーレート→舵角」の多段制御にしました。肝は目標ヨーレートをタイヤが出せる横Gで頭打ちにすることで、出せないGを要求していたのが、最初にスピンしまくった原因でした。

その上で、攻め方を4段階で自動に切り替えます。きれいに走れていれば本気(114%)、コースアウトや姿勢の乱れで慎重(80%)、ベイパーロックやスピンで温存(62%)。上げるのはゆっくり、下げるのは速い、という人間らしい非対称にしてあります。長い下りでブレーキを使い切ってフルードが沸くと、自分で判断してペースを落として走り続けます。ブレーキが弱っているぶん、手前から長く見るようにもなります。

直した恥ずかしいやつ

  • ラック棒がタイロッドより長かった。 タイロッドの根元125mmぶんがラック棒の中に埋まっていて、「タイロッドが無い」と言われて気づきました
  • ピニオンの軸がラックと平行だった。 噛みようがない
  • ピニオンをラックの上に置いていた。 ハンドルを左に回すとラックが右へ動く車になっていました
  • 見出しの罫線を45°倒していた。 アコーディオンの矢印を .eyebrow::after に足したら、そこは元から罫線に使われていて、カード幅いっぱいの謎の斜線が生えました
  • 橋脚を下の道路のど真ん中に立てていた。 交差点の真上にも1本置く作りだったので、柱が路面を貫通していました
  • レーシングパッドが常時「ブレーキフェード」警告。 冷間でμが低いだけなのを熱ダレと判定していました

最後のは、しきい値で世界を切ろうとすると必ずどこかで嘘になる、という良い例でした。温度のしきい値をやめて「μ-温度特性が上り勾配か下り勾配か」で言い分けるようにしたら、パッドを替えても判定温度が自動で追随するようになりました。

カメラも中心固定をやめて、右ドラッグ(スマホは2本指)で平行移動できます。サスの動きを見たいときは、寄って覗き込めます。