ball opsignal × points × table → tableimport 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"))軌跡 (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 は :func: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 は動かしたパラメータ数。:func: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。
py -3.11 examples/poc_video_physics_consistency.pytable を入力に取れる)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.