条件をそろえる比較と、スクワットの原因探し
私たちAI Maker Labは、AIコーディングエージェントとブラウザー運転シム「Seat Time」を作っています。10月28日、シミュレーション部分だけで物理テストが142ファイルありました。ただ、その多くは同じモデルの答え同士を比べていました。一方、私たちのステアリングホイールG923で走らせたSable S1には別の疑問がありました。後輪が空転しているのに、加速時の沈み込み、つまりスクワットが感じられなかったのです。
車をまた変える前に、外部との比較が必要でした。それで欠けた物理を発見できましたが、私たちが組んだ参照側にも誤りがありました。10月28日から11月3日まで、調査はテストの両側を追う作業になりました。
合格したテストにも死角がありました
最初の監査で、テストの役割を分けました。実測データとの比較、内部整合性の確認、既存結果の固定です。結果の固定は、答えが変わったことを知らせます。開発の安定には役立ちますが、元の答えが車を正しく表している証拠にはなりません。
私たちはエージェントに97の物理現象を整理させました。独立モデル、公開値、実測データでは証拠の重みを変えました。恒等式や自分の計算の複製は、独立した証拠の代わりにしません。レポートは助言用で、自動的にリリースを止める仕組みにはしませんでした。
最初はカバー済み36、比較不一致14、死角38、適用除外9でした。Sable S1の46のパラメーター群のうち、30には出典がありませんでした。「カバー済み」は私たちの規則による判定で、認証ではありません。重要度の低い項目には弱い証拠も認めていたため、この言葉にも条件が必要でした。
ドリフト練習では、テストの途中で参照範囲を外れていました。全タイヤ参照の範囲外で動く時間の割合を測り、ドリフト時の滑りを比較ケースに追加しました。その割合は46.2%から1.1%へ下がりました。増えたのは他のタイヤモデルとの比較で、路上の実測ではありません。残った範囲外の挙動には、極端な滑りや荷重が含まれました。
剛体の参照車は別の問いに答えていました
操舵の最初の比較では、モデルの条件が違っていました。Seat Timeのステアリング機構は荷重でたわみますが、Chrono側は剛体でした。たわむと車輪の向きも変わります。その違いを残したままでは、何が不一致を作ったのか判断できません。
アンダーステア勾配は1.19対0.638 deg/gでした。これは横加速度の増加に対して必要になる追加の操舵角です。診断用に私たちの操舵も剛体にすると、0.702対0.638になりました。ステップ操舵時のヨー応答差も−27%から+1%へ動きました。ゲームからたわみを削るためではなく、条件をそろえて原因を見るための変更です。

Chrono::Vehicleの資料では、車両を操舵、サスペンション、タイヤ、駆動系などのモデルから組み立てます。この分割が、問いを小さくする助けになりました。操舵のたわみの妥当性確認は別に残しました。使えた出典は公表された数値の範囲を伝える二次情報だけだったためです。一次資料の測定値は確認していません。自分たちで確認した測定値と同じ重みにはできません。
参照側にもデバッグが必要でした
空転の不一致は、参照側の読み出しから始まっていました。転がり半径の推定により、駆動していない前輪が−0.016の縦滑り率を示しました。変換を直すと−0.0006になりました。読み出しの誤りをタイヤの問題として扱うところでした。
加速度にはサンプリングの問題がありました。比較プログラムは記録区間の平均ではなく、最後の0.25ミリ秒の積分ステップを保存していました。それがグリップ回復の比較を歪めていました。区間平均にすると相関は0.79から0.92へ上がりました。ただし、ほかの加速度の不一致は残りました。一つの修正で一覧全体を説明したことにはなりません。
参照車の慣性テンソルも、軸の割り当てが間違っていました。ロール慣性は820.3ではなく3,870.8 kg·m²で、約4.7倍でした。Chronoの軸の定義は前、左、上です。座標系を移す際、数値だけを移して意味を対応させていませんでした。そのため参照車は、ロールに強く抵抗しすぎていました。
タイヤの応答時間も条件をそろえる必要がありました。緩和は、力が瞬時に出るのではなく、走行距離に応じて立ち上がることを表します。Chronoのタイヤ資料も、過渡的な滑りの式とベルトの動特性を区別しています。記録された比較では、参照設定に私たちのベルトモデルに相当する走行時の緩和がありませんでした。両側にその応答を持たせると、周波数応答の項目が基準内に入りました。Seat Timeのヨー運動は単に減衰が弱い、という以前の説明を撤回しました。
空中では反力をごまかせませんでした
スクワット調査の発端は、私たちのG923での報告でした。後輪が空転しているのに、加速時の沈み込みや食いつきがありませんでした。それでも荷重移動の恒等式は合格していました。初期計画では、車輪の加速反力によるピッチを約0.1°と見積もりました。変更するほどではない、という判断でした。しかし、それは角運動量保存の確認ではありません。
そこで自由飛行だけのテストにしました。外部からの合成トルクがなければ、車輪の角運動量の変化には車体側の反対向きの変化が必要です。OpenStaxの角運動量保存の説明にある基本則です。この判定には、タイヤのグリップ理論も運転者の感想も要りません。
車輪は97.6 N·m·sの角運動量を失いました。ところが車体の増加はゼロでした。欠けた反力を入れると、車体は97.8 N·m·sを得ました。ハンドル越しの印象がどうであれ、この切り分けたテストでゼロは誤りでした。
反力を加えると、各車の制動、空中、限界付近のテストが動きました。最初は任意に有効化する形にし、変化の理由を確認してから標準で有効にしました。解消した項目もあれば、比較プログラムの問題もありました。反力が欠けていたから合格していた項目もありました。変化を隠すために許容幅は広げませんでした。この車輪反力の作業は、物理16と呼ぶリリースに入りました。
それでも後部は沈みすぎました
次の問題は修正後にも残りました。標準状態の1速発進では、Seat Timeのスクワットは3.62 deg/g、Chronoは3.21でした。約13%大きい結果です。後部の沈み込みは39.3 mm対31.4 mmでした。これで「もっと動いてほしい」ではなく、説明すべき具体的な差ができました。
五つの候補を切り分けました。慣性の対応、バンプストップ、アンチスクワット形状、ハーフシャフトの柔軟性、そして測定です。バンプストップは70 mmの隙間を使い切っていません。シャフトを剛体にしても3.62 deg/gでした。加速度は速度の時間変化と一致しました。形状も一致していたため、そこを調整するのは原因を隠すことになります。
アンチスクワットは、加速で生じる車体の動きに抗するサスペンション形状です。Joseph Saginawの公開ノートには側面から見た説明があります。これは入門資料で、私たちの車の寸法の証拠ではありません。候補を除外した根拠は、記録された両モデルの比較です。

手掛かりは、傾いた車体の座標で上向きになるタイヤ力でした。その成分をサスペンション経由ではなく、直接車体に加えていました。ピッチ約1.9°で、後輪一つ当たり約110 Nです。ばね定数14.6 N/mmで割ると約7.5 mmになります。測定した差の7.9 mmに近い値でした。
力がばねを迂回していました
修正では、力をハブに加え、ばねとリンクを通して車体へ伝えました。九つの条件でスクワットは3.25〜3.34 deg/gとなり、参照は同じ3.21でした。残る差は約+1%〜+4%です。合格幅ではなく、差を生んだ仕組みを変えました。

有効化すると、2速で新たに−10.5%の不一致が出ました。初期速度と加速度の読み出しをそろえると−7.4%になり、選んだ10%の許容幅に入りました。ここでも一部の作業は比較プログラム側にありました。残差はChronoの荷重下の転がり半径が小さいことに帰属させました。単に解決済みとはしていません。
11月3日時点では、この力の経路は未リリースの物理18の作業にありました。その後、11月6日にソースを確認すると、主開発コードへ入り、プレイ時も有効になっていました。コードの現在の表記は物理20です。これはコード状態の追記で、新しい運転報告ではありません。スクワット変更後のハードウェアでの走行記録はまだありません。
道路の障害物も説明だけで閉じていました
Kaedeでも、似た問題がありました。10月29日、助言用のGemini画像レビューは、道路を横切る灰色の橋板を指摘しました。モデルの信頼度は0.95でした。ところが文章の注記が、約250 m離れた地面の指摘に結び付けて終了扱いにしました。その注記を書いた人は記録されていません。
後に私たちは、道路の中央に障害物を見つけました。橋のスパンは舗装から最大0.33 m突出し、下り側の橋台には0.49 mの壁がありました。道は下がるのに、橋の部品は水平なままでした。画像の対象と照合せず、もっともらしい説明を受け入れていたのです。
新しい規則では、15 m以内の一致する測定結果か、名前の残る人による明示的な判断を必要にしました。なければ監査は失敗します。新しい検出器は旧版で両方を見つけ、修正版ではどちらも検出しませんでした。ただし、保存された広域画像レビューは442視点中64視点だけです。橋の局所的な結果をコース全体の確認とは扱えません。
カバー数は途中で下がりました
カバー数は一直線には増えませんでした。コミットごとの履歴には59、57、56、54と下がってから回復する記録があります。統合された開発履歴も含むため、主開発ラインのリリース順そのものではありません。古い生成表や新たに記録した不一致でも数が動きました。適用除外も9から19へ増えましたが、その全理由を説明する記録はありません。
日誌終盤の状態はカバー済み69、不一致9でした。未リリースの状態では70と8にも達しました。しかし11月6日のソース確認では68、不一致10、死角ゼロ、適用除外19です。低いほうの数も残します。死角ゼロは私たちの規則でその分類がなくなっただけで、運転の全要素に十分な証拠があるという意味ではありません。
車線変更の項目にも、その注意が必要です。公開された速度の証拠でカバー済みとしていますが、別のChrono比較では不一致が残ります。ISO 3888-2は障害物回避の試験路を定める規格です。名前を挙げても、シミュレーションの認証にはなりません。2011年版は廃止され、2025年版に置き換わっています。アクセルを戻した際の挙動、クラッチ応答なども未解決です。
Physics Labで検証実験を一つ選んでみてください。次は個々の修正から少し離れ、五週間の開発で何を学んだかを振り返るつもりでした。
注記と出典
測定・自社記録:10月の監査は142のテストファイルを数えました。97現象の初回集計は36カバー済み、14不一致、38死角、9適用除外です。Sable S1の46パラメーター群中30に出典がありませんでした。46.2%から1.1%への変化はタイヤ参照範囲の拡大で、実測に対する精度ではありません。履歴はコミット単位です。11月6日の記録は68/10/0/19です。この記事のための再実験ではなく、保存された開発記録を使いました。
モデル比較・自社記録:操舵、滑り率、加速度相関、慣性、スクワットは、私たちが設定したモデル間の結果です。標準発進は3.62対3.21 deg/g、修正後は九条件で3.25〜3.34でした。自由飛行では車輪が−97.6 N·m·s、車体は修正前ゼロ、後は+97.8です。私たちの解釈:110 Nとばね定数の計算が力の経路の差を説明します。選択した規則:証拠の重み、許容幅、適用除外、15 mの距離は私たちの判断です。スクワット変更後のハードウェア走行記録はまだありません。
AIモデル出力・自社記録:0.95はGeminiの信頼度で、私たちが測った確率ではありません。橋の高さは形状の測定値、64/442は画像レビューの記録範囲です。注記の著者は不明です。新検出器の広域実行と統合後の公開ゲーム確認は、統合時点で完了記録がありませんでした。
外部資料:Project Chrono、Chrono::Vehicle、BSD-3-Clauseライセンス。当時はChrono::Vehicle 10.0.0を使いました。Tasoraほか、“Chrono: An Open Source Multi-physics Dynamics Engine”、2016年、19–49頁の書誌情報を確認しました。読んだのは公開抄録と書誌情報で、有料の章本文ではありません。Chronoは独立モデルであり、実車測定や推薦ではありません。
背景資料:OpenStaxの角運動量、ChronoのPacejkaなどのタイヤ資料、Saginawのサスペンション資料、ISOの試験範囲と版の状態。公開資料の確認日は2026年11月6日です。調査の整理、執筆、図版、翻訳にはAIを利用しました。開発と判断の責任はAI Maker Labにあります。