spin_from_markers — DRIVE balltrack op

• Data kinds: points × points → table

• Call: import fullseye as fs; fs.ledger.spin_from_markers(dirs0, dirs1, dt: 'float') -> 'dict' (implementation को सीधे call करना हो तो import balltrack; balltrack.spin_from_markers(dirs0, dirs1, dt: 'float') -> 'dict', registry से लेना हो तो opsdrive.get("spin_from_markers"))

उपयोग

marker दिशाओं के जोड़ों (पहले (M, 3), बाद (M, 3), unit vectors) से angular velocity vector ω [rad/s] निकालता है।

> नीचे का विस्तृत विवरण मूल text में है — सारांश और headings का अनुवाद हो चुका है।

M ≥ 2 なら Kabsch(SVD)で回転 R を当て、回転角 θ と軸から ω = θ/dt·軸(既知の ω で回した向きを入れると 1e-9 で戻る = 門)。M = 1 なら d₀ → d₁ の最小回転(軸 = d₀ × d₁)を返す("full" = False): 模様の向きまわりの成分は原理的に決まらず、コマ間の回転角が大きいと ω の直交成分の近似としても外れる(模様は ω の軸まわりの小円を描くので、最小回転の大円と違う)。

正直に: 1 つの模様で ω を出したいなら dt を小さく(回転角 ≪ 1 rad)、それでも軸まわりの成分は別の模様が要る。返り値 {"omega", "angle", "axis", "R", "full", "rms"}。

संदर्भ (sample data, साहित्य)

• Sample data catalog (DL URL / license) — 2-D के लिए skimage.data (BSD/public) + synthetic, 3-D के लिए real data sources (Stanford/PDS आदि) के DL URL।

• Operators का स्रोत और संदर्भ — इस op family के मूल research/methods के स्रोत।

• Algorithm का मानक स्रोत (लेखक, वर्ष) और उपयोग ऊपर की family usage guide में दिए गए हैं।

चलाए जा सकने वाले उदाहरण (verified samples जो सच में यह op call करते हैं)

• poc_ball_bounce — py -3.11 examples/poc_ball_bounce.py

वे अगले ops जिनसे type जुड़ता है (table को input के रूप में लेते हैं)

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

इसी category के (balltrack)

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


*Provenance: balltrack.py — DRIVE operator registry. यह per-op note tools/opdocs.py md से अपने-आप generate होता है (हाथ से edit न करें)।*

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