torque_decompose — DRIVE tactorque op

• Datenarten: matrix × matrix × scalar × scalar × scalar → table

• Aufruf: import fullseye as fs; fs.ledger.torque_decompose(pts, u, area: 'float', G: 'float', nu: 'float', a: 'float | None' = None, window=None, radius: 'float | None' = None, coef: 'float | None' = None, P: 'float | None' = None, mu: 'float | None' = None, torsion_model: 'str' = 'partial_slip') -> 'dict' (die Implementierung direkt: import tactorque; tactorque.torque_decompose(pts, u, area: 'float', G: 'float', nu: 'float', a: 'float | None' = None, window=None, radius: 'float | None' = None, coef: 'float | None' = None, P: 'float | None' = None, mu: 'float | None' = None, torsion_model: 'str' = 'partial_slip') -> 'dict'; aus dem Register: opsdrive.get("torque_decompose"))

Verwendung

Zerlegt das Markierungsfeld in 3 mechanische Größen: translation = mittlere Verschiebung im Fenster (Scherung Q, gleichgerichtete Komponente), omega = Starrkörperdrehwinkel (rigid_rotation_fit) → Torsion Mz (benötigt a; omega_curl = mittleres curl/2 nur zur Referenz), D = Divergenzdipol (flächengewichtet) → Kippung M1 = D / coef (coef standardmäßig = geschlossene Halbraumform −(1−2ν)/(2G); an realer Hardware den kalibrierten Wert übergeben), tau = (−M1_y, M1_x). Divergenz und curl ändern sich nicht, wenn die mittlere Verschiebung abgezogen wird (die Ableitung einer Konstanten ist 0), daher ist die Reihenfolge egal. Das Fenster (cx, cy, R) ist auf den Kontaktkreis beschränkt (weil im Halbraum reine Scherung im ganzen Fenster einen Divergenzdipol erzeugt; siehe Modul-Docstring). radius = Nachbarschaftsradius für die Divergenz (erforderlich).

Torsion: Die Haftbeziehung ohne Schlupf (Reissner–Sagoci) M = (16Ga³/3)ω wird in Mz_no_slip behalten. ★Mit torsion_model="partial_slip" (Standard, seit 2026-10-06) wird in P der Wert zurückgegeben, der mit der numerischen Lösung für Teilschlupf eines Hertz-Kontakts (Normalkraft mu, Reibung a, Kontaktradius contact) korrigiert ist (from_no_slip_read und Mz von cuttouch.torsion_partial_slip) —— die Torsion eines Hertz-Kontakts gleitet immer vom Rand her, sodass die schlupffreie Beziehung M überschätzt (+33 % bei einem Verhältnis zum vollen Gleiten von 0,5, +85 % bei 0,8). Zurückgegeben werden auch Mz_ratio (Verhältnis zum vollen Gleiten), Mz_c_over_a (Radius des Haftkreises / a), Mz_readable (kein volles Gleiten, und der Haftkreis enthält den Radius des Anpassungsfensters —— wenn falsch, wird die Zahl zurückgegeben, ist aber nicht verlässlich; ohne Fenster falsch). Wird a übergeben, fehlt aber P oder mu, ist keine Korrektur möglich, daher ValueError (es wird nicht stillschweigend der schlupffreie Wert zurückgegeben). "no_slip" liefert die Werte bis 0.4.0 (Mz = Mz_no_slip) —— für Flachstempel (schlupffrei exakt bis zum 8/(3π)-Fachen des vollen Gleitens) oder verklebte Scheiben. Raises ValueError: area, G ≤ 0, ν außerhalb von [0, 0.5], Form der Punkte, kein radius, weniger als 3 Punkte im Fenster, falsch geschriebenes torsion_model, partial_slip mit a, aber P / mu nicht positiv endlich.

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_tactile_dipole_torque — py -3.11 examples/poc_tactile_dipole_torque.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 (tactorque)

punch_pressure · punch_surface_uz · hertz_pressure_shifted · ellipse_pressure_shifted · pressure_first_moment · boussinesq_kernel · boussinesq_surface_displacement · surface_divergence_closed_form


*Provenance: tactorque.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.