ball op• データ種: signal × points × table → table
• 呼び出し: import fullseye as fs; fs.ledger.thrust_fit(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict' (実装を直接呼ぶなら import ballistics; ballistics.thrust_fit(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict'、台帳から引くなら opsdrive.get("thrust_fit"))
• GPU: なし(CPU 参照実装のみ)
軌跡 (t_i, p_i) に「重力 + 抗力 + 一定の比推力」の模型を (p₀, v₀, C_d, a_T) の 10 パラメータ で Levenberg–Marquardt (有限差分のヤコビアン、C_d ≥ 0 は射影)で当てる。p は (N, 3) の世界座標か、単眼の側面視で起こした (N, 2) の平面 (x, z)(そのときは y 成分を観測も未知数も持たないので 7 パラメータ、n = 2 × 点数)。bp は ball_params の表(質量・前面積・空気密度・g。radius は前面積を与えるためだけに使う: 車なら A = πr² が前面積になる r を渡す)。返り値 {"p0", "v0", "cd", "thrust" (3,), "thrust_norm", "rms", "rss", "rss_floor", "n", "k", "dims", "cond", "iters", "t0"} (n は残差の個数、k は動かしたパラメータ数。aic_from_rss の入力。rss_floor = RK4 格子を標本時刻へ線形補間する誤差 ≤ a dt² / 8 が残差に残しうる平方和の上限)。dt は標本間隔以下(超えると模型が標本の間で区分線形になる)、iters ≥ 1、真空(rho = 0)では C_d が同定できないので、どれも ValueError。推力つきの真値の軌跡なら a_T は 1e-5 m/s² で戻り、推力 0 で作った軌跡なら thrust_norm は 1e-5 以下になる(門)。
空の入力(t が 0 要素)は ValueError。
• サンプルデータ カタログ(DL URL / ライセンス) — 2-D は skimage.data(BSD/public)+ 合成、3-D は実データ源(Stanford/PDS 等)の DL URL。
• 演算子の来歴・参考文献 — この op 族の元になった研究/手法の出典。
• アルゴリズムの正典(著者・年)と用途は上記ファミリ使い方ガイドに記載。
• poc_video_physics_consistency — py -3.11 examples/poc_video_physics_consistency.py
table を入力に取れる)course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same
ball)ball_params · impact_params · flight_vacuum · flight_ode · flight_simulate · flight_state_at · magnus_lift_coefficient · drag_coefficient_sphere
*Provenance: ballistics.py — DRIVE operator registry. この per-op ノートは tools/opdocs.py md が自動生成(手編集しない)。*
© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.