spin_from_marker_sequence — DRIVE balltrack op

• Datenarten: any → table

• Aufruf: import fullseye as fs; fs.ledger.spin_from_marker_sequence(dirs, dt: 'float', *, lag: 'int' = 4, max_angle: 'float' = 0.5) -> 'dict' (die Implementierung direkt: import balltrack; balltrack.spin_from_marker_sequence(dirs, dt: 'float', *, lag: 'int' = 4, max_angle: 'float' = 0.5) -> 'dict'; aus dem Register: opsdrive.get("spin_from_marker_sequence"))

Verwendung

Liest die Winkelgeschwindigkeit aus den Markierungsrichtungen dirs[k] einer Frame-Folge ((M_k, 3)-Einheitsvektoren; None für Frames ohne Fund) (2 Stufen).

Stufe 1: Zwischen benachbarten Frames werden die nächstgelegenen Marker, deren Richtungen innerhalb von max_angle [rad] liegen, gepaart und Kabsch angewandt (spin_from_markers); der Median ist ω₁. Stufe 2: Paare im Abstand von lag Frames werden neu angepasst, indem jeweils der Marker gewählt wird, der der Vorhersage (früherer Frame um ω₁ gedreht) am nächsten liegt (innerhalb max_angle/2) —— da der Drehwinkel lag-mal größer ist, wirkt sich der Positionsfehler der Marker nur mit dem Anteil 1/lag aus. ★Der Drehwinkel pro Frame muss deutlich kleiner als max_angle sein (sonst Verwechslung der Marker), und die Drehung über lag Frames muss kleiner als π sein (Kabsch liefert die kürzeste Drehung). Rückgabewert {"omega", "omega_stage1", "n_pairs", "per_pair" (N, 3)} (ω im selben Koordinatensystem wie dirs). Gibt es kein einziges Paar, ist ω NaN. Es werden Paare von Richtungen gesehener Marker benötigt, daher braucht jeder Frame 2 oder mehr Marker.

Leere Eingabe (dirs mit 0 Einträgen) löst ValueError aus.

Referenzen (Beispieldaten, Literatur)

• Katalog der Beispieldaten (Download-URLs / Lizenzen) — 2-D nutzt skimage.data (BSD/Public Domain) plus synthetische Bilder, 3-D nennt Download-URLs echter Datenquellen (Stanford, PDS, …).

• Herkunft und Literatur der Operatoren — die Quellen der Forschung/Verfahren, auf denen diese Operatorfamilie beruht.

• Der kanonische Algorithmus (Autor, Jahr) und seine Anwendungen stehen im Familienleitfaden oben.

Ausführbare Beispiele (verifizierte Samples, die diesen Operator wirklich aufrufen)

• poc_table_tennis_bounce — py -3.11 examples/poc_table_tennis_bounce.py

• poc_table_tennis_spin — py -3.11 examples/poc_table_tennis_spin.py

Typkompatible Folge-Operatoren (nehmen table als Eingabe)

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

Gleiche Kategorie (balltrack)

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


*Provenance: balltrack.py — DRIVE Operator-Registry. Diese Notiz wird von tools/opdocs.py md erzeugt (nicht von Hand bearbeiten).*

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