spin_from_markers — DRIVE balltrack op

• 資料種類:points × points → table

• 呼叫: import fullseye as fs; fs.ledger.spin_from_markers(dirs0, dirs1, dt: 'float') -> 'dict'(要直接呼叫實作,import balltrack; balltrack.spin_from_markers(dirs0, dirs1, dt: 'float') -> 'dict';從台帳取用則 opsdrive.get("spin_from_markers"))

用法

由標記方向對(前 (M, 3)、後 (M, 3),單位向量)求角速度向量 ω [rad/s]。

M ≥ 2 時用 Kabsch(SVD)擬合旋轉 R,由旋轉角 θ 和軸求 ω = θ/dt·軸(輸入按已知 ω 旋轉的方向,可在 1e-9 內還原 = 門)。M = 1 時回傳 d₀ → d₁ 的最小旋轉(軸 = d₀ × d₁)("full" = False):繞標記方向的分量原理上無法確定, 幀間旋轉角較大時,作為 ω 正交分量的近似也會失準(標記繞 ω 軸畫小圓,與最小旋轉的大圓不同)。

老實說:想由一個標記求 ω,應把 dt 取小(旋轉角 ≪ 1 rad),即便如此,繞軸的分量仍需另一個標記。回傳值 {"omega", "angle", "axis", "R", "full", "rms"}。

參考(範例資料、文獻)

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

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

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

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

• poc_ball_bounce — py -3.11 examples/poc_ball_bounce.py

型別可銜接的下一個運算子(可接受 table 作為輸入)

course_layout · course_occupancy · course_contains · world_build · world_camera · world_move · lidar_scan · rss_longitudinal_same

同類別(balltrack)

ball_detect · ball_track · kalman_ca · triangulate_dlt · track_triangulate · bounce_detect · marker_direction · spin_from_marker_sequence


*Provenance: balltrack.py — DRIVE 運算子登記表。本條目由 tools/opdocs.py md 自動產生(請勿手動編輯)。*

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