ballistic_vs_thrust — DRIVE ball op

• 資料種類:signal × points × table → table

• 呼叫: import fullseye as fs; fs.ledger.ballistic_vs_thrust(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict'(要直接呼叫實作,import ballistics; ballistics.ballistic_vs_thrust(t, p, bp: 'dict', *, iters: 'int' = 20, dt: 'float' = 0.001) -> 'dict';從台帳取用則 opsdrive.get("ballistic_vs_thrust"))

• GPU:無(僅 CPU 參考實作)

用法

對同一條軌跡同時擬合「重力 + 阻力」(drag_fit)與「重力 + 阻力 + 恆定比推力」(thrust_fit),回傳 AIC(aic_from_rss)之差 ΔAIC = AIC_彈道 − AIC_推力。回傳 {"ballistic", "thrust"}(兩個擬合)並附上 "aic_ballistic", "aic_thrust", "delta_aic", "thrust_norm"。不回傳判定(與 imgforensics 同一流派):按簡約原則來讀——推力模型多 3 個參數,即使只有雜訊也會略微降低 RSS,除非贏過罰項 2Δk,否則取較簡單的彈道模型。僅有雜訊時 ΔAIC 以 −2Δk 為下界、按 χ²(Δk) 近似的寬度散布(中位數約 −2Δk + 1;嚴格說是混合分布,因為有些擬合撞到 C_d = 0 的牆);推力側從彈道側的解出發,所以 ΔAIC ≥ −2Δk 成立。「決定性」的慣用值是 10(偽陽性遠低於 1 %),但不內建閾值,由呼叫方決定。當推力側的 RSS 低於離散化下限 rss_floor 的 10 倍(無雜訊、或比網格解得更細的軌跡)時引發 ValueError——AIC 比較的是雜訊而不是捨入屑(無雜訊真值在預設 dt 下曾得到 ΔAIC = +144,2026-10-23)。

空輸入(t 為 0 個元素)會引發 ValueError。

參考(範例資料、文獻)

• 範例資料目錄(下載 URL / 授權) —— 2-D 用 skimage.data(BSD/公有領域)加合成圖,3-D 給出真實資料源(Stanford/PDS 等)的下載 URL。

• 運算子來歷與參考文獻 —— 該運算子族所依據的研究/方法出處。

• 演算法的正典(作者、年份)與用途見上面的族使用指南。

可執行的範例(實際呼叫該運算子並已驗證的樣例)

• 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 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

© 2026 Kazufumi Furuse — Fullseye operator documentation. Licensed under Apache-2.0.