RotLab orientace v prostoru
Otevřít interaktivní verzi →

Tohle je statická kopie kapitoly pro vyhledávače. Interaktivní verze má animované obrázky, kontrolní otázky a tlačítka, která příklad načtou do kalkulačky.

9. Konvence — Hamilton versus JPL

Tahle kapitola nemá žádný nový vzorec. Přesto je to ta, která ušetří nejvíc času, protože skoro každá chyba v rotacích je neshoda konvencí.

Dvě různá násobení kvaternionů

V oběhu jsou dvě, a liší se pořadím:

(p ⊗ q)JPL = (q ⊗ p)Hamiltonověřeno v testech
 HamiltonJPL / Shuster
Kdo to používáROS, Eigen, Ceres, většina robotikyletectví a kosmonautika, část literatury o filtrech
i·j+k−k
Skládánízleva doprava jako maticeobráceně
Proč se to hledá tak špatně: skalární část je u obou konvencí stejná a liší se jen vektorová. Součin tedy vypadá skoro správně, norma sedí, nic nespadne — jen se to točí opačně a zjistí se to až na hardwaru. V testech je to naschvál zvlášť: skalární část se shoduje na 10⁻¹⁵, vektorová se liší o řády.

Ostatní volby, které se musí říct nahlas

  • Pořadí složek při ukládání. ROS ukládá (x, y, z, w), Eigen (w, x, y, z). Tenhle nástroj používá (w, x, y, z). Přehodit to znamená tichou katastrofu.
  • Aktivní vs. pasivní (kapitola 3). Liší se transpozicí.
  • Vnitřní vs. vnější Eulerovy úhly a která ze dvanácti sekvencí (kapitola 5).
  • Směr transformace: RA←B, nebo RB←A?

Shusterův přehled z roku 1993 tenhle zmatek klasifikuje jako čtyři nezávislé binární volby. Čtyři binární volby jsou šestnáct kombinací, z nichž dvě se běžně používají — a to je celý ten problém v jedné větě.

Praktické pravidlo. Napiš konvenci do komentáře u každé funkce, která vrací orientaci, a do názvu proměnné směr transformace (R_world_tool, ne R). Zní to pedantsky, dokud to poprvé neušetří odpoledne.

Vzorce v této kapitole

⊗ — Hamilton versus JPL
(p ⊗ q)_JPL = (q ⊗ p)_Hamilton; skalární část stejná, vektorová opačná [—] Shuster 1993; Solà et al.