Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話

Avatar for henjin0 henjin0
August 02, 2026

Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話

2026/07/31 いのうえみのる
フィジカルAIをゆるく学ぶLT会 - フィジカルAI LT

Avatar for henjin0

henjin0

August 02, 2026

More Decks by henjin0

Other Decks in Technology

Transcript

  1. Forza Horizon 6 のテレメトリ機能で 自動運転に使えそうな学習データを集める話 ゲーム × テレメトリ × 画面キャプチャ

    で「視点画像 + 走行データ」を作る 2026/07/31 いのうえみのる フィジカルAIをゆるく学ぶLT会 - フィジカルAI LT
  2. 2 やろうとしていること ゴールは「いろいろな車で自動運転」。まずは足元のデータ集めから 01 02 03 いろいろな車で 自動運転したい 実車は 流石に無理

    まずは ロギングから タクシー / レーシングカー / なのでシミュレータでいい。 学習の前に、そもそも 軽トラ … 挙動が全然違う 車種も路面もすぐ切り替わる データが無い。作る。
  3. 3 構成 「収集 → 学習 → 走らせる」でゲームに戻すループ。今は上半分ができた段階 Forza Horizon 6

    fh6_recorder.py データセット Data Out を On ポート 1234 UDP受信 = クロック + dxcam + XInput frames.avi / telemetry.parquet できた できた できた これから これから これから vgamepad 推論 (TorchScript) Colab で学習 仮想Xboxパッドとして ゲームに入力を返す 同じUDPクロックで steer / throttle / brake PilotNet + テレメトリ入力 dxcam / vgamepad は Windows専用。Python 3.12 固定
  4. 4 Forza Horizon 6 とは? オープンワールド型のレーシングゲーム。今作の舞台は 日本 舞台は 日本 シリーズ初。東京・峠・富士山

    など実在のランドマークを再現 2026年5月19日 発売 Xbox Series X|S / PC。 PS5版は2026年後半予定 550台以上の実在車種 軽トラからレーシングカーまで 車種の幅が広い https://forza.net/ja-JP/japanawaits 出典: Xbox Wire Japan「『Forza Horizon 6』の舞台が日本になった理由」/ GAME Watch 2026-05-19 / ja.wikipedia.org「Forza Horizon 6」
  5. 5 テレメトリ機能(Data Out)とは? ゲームが走行中の状態を UDP で外に投げてくれる、公式機能 一方向 UDP 324 バイト固定

    フレームレートと同頻度 設定はゲーム内から ゲームは受信しない FH6 は形式が1つだけ 60fps なら毎秒60パケット HUD AND GAMEPLAY で指定 取れる値(抜粋) 車の状態 速度 / エンジン回転数 / パワー / トルク / ギア 姿勢・位置 ワールド座標 XYZ / 加速度 / 角速度 / Yaw・Pitch・Roll タイヤ スリップ率 / スリップ角 / 温度 / サスストローク プレイヤー入力 アクセル / ブレーキ / クラッチ / ステア(-127〜127) 出典: Forza Support「Forza Horizon 6 "Data Out" Documentation」(2026-05-15)
  6. 6 dxcam とは? Windows の Desktop Duplication API を使う、高速な画面キャプチャライブラリ 1080p

    で 240fps 以上 ゲームを重くせずに取れる cam = dxcam.create( フルスクリーンの D3D でも安定 output_color="BGR") cam.start(target_fps=120) ゲーム画面がそのまま取れる frame = cam.get_latest_frame() 返り値は numpy 配列 (H, W, 3) なのでそのまま学習に流せる ゲームより速く回して、 「その瞬間の最新フレーム」を鮮度良く取る 出典: GitHub ra1nty/DXcam README
  7. コードの流れ(レコーダー) 7 テレメトリの到着を「クロック」にして、1パケット = 1フレーム = 1行 に揃える 1 2

    3 4 5 UDP を待つ 溜まった分は捨てる 最新フレームを取る パッドも同時に読む Queue に投げる 324B が来たら それが1サンプルの合図 バッファの古いパケットを 読み飛ばし最新だけ使う get_latest_frame → 320×180 に縮小 XInput をポーリング (生のスティック値) 書き出しは別スレッド。 詰まったら捨てて止めない 出力 frames.avi (MJPG) + telemetry.parquet + meta.json 保険 raw_packets.bin に生パケットも保存 → オフセット定義を間違えても後から再パースできる ラベル テレメトリの操作量はゲーム側の適用後。教師ラベルには XInput の生値を使う
  8. 9 まとめ とりあえずデータは取れた。走らせるのはこれから 1 画像と取得値が おおよそ一致 2 ただし高速域はズレそう。要検証 3 速い車でスポーツ走行すると、動体視力が…

    人間側が先に限界を迎える 次:このデータで学習させて、vgamepad でゲームに操作を返すところまで クラッシュでの速度降下が見えて面白い ログを眺めているだけで楽しい 4 Claude 神。数時間で書けた こういう小さい実験の敷居が下がった
  9. 参考・出典 Forza Horizon 6 "Data Out" Documentation(公式) support.forza.net/hc/en-us/articles/51744149102611 Xbox Wire

    Japan:舞台が日本になった理由 news.xbox.com/ja-jp/2025/09/25/forza-horizon-6-japan-setting-2026/ GAME Watch:FH6 発売(2026/5/19、550台以上) game.watch.impress.co.jp/docs/news/2108431.html DXcam(GitHub: ra1nty/DXcam) github.com/ra1nty/DXcam PilotNet: Bojarski et al., End to End Learning for Self-Driving Cars (2016) arxiv.org/abs/1604.07316 vgamepad / ViGEmBus(仮想パッド) github.com/nefarius/ViGEmBus/releases