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.

3. Skládání rotací a rámce

Dvě rotace za sebou jsou součin matic. Jenže rotace nekomutují — RaRb a RbRa jsou obecně dvě různé orientace, a to i když jsou obě rotace „malé“. Zkus si to s knihou: otoč ji o 90° kolem svislé osy a pak o 90° dopředu, potom totéž v opačném pořadí. Skončí jinak.

Zápis, který se nedá splést

Používej indexy rámců a nech je krátit se:

RA←C = RA←B · RB←C

Vnitřní index B se „vykrátí“ a zůstane A←C. Když se ti indexy nekrátí, máš to obráceně — a je to tahle jednoduchá kontrola, která ušetří většinu ztracených hodin.

Strom rámců

Robot je řetěz (nebo strom) rámců: svět → základna → rameno → zápěstí → nástroj. Orientace nástroje ve světě je součin všech rotací po cestě, v pořadí, ve kterém jdeš. Přesně tohle dělá tf v ROSu, jen k tomu ještě přidává posuvy.

Chceš-li opačný směr, obrátíš pořadí a každou rotaci transponuješ:

(R1R2R3)T = R3TR2TR1T

Aktivní versus pasivní

Dvě čtení téže matice, lišící se transpozicí — a druhý nejčastější zdroj zmatku po konvencích kvaternionů:

  • Aktivní (alibi): otočím těleso. R vezme souřadnice bodu a vrátí souřadnice otočeného bodu, obojí v témž rámci.
  • Pasivní (alias): otočím soustavu. Bod se nehnul, jen ho popisuju v pootočeném rámci.

Jedno je transpozice druhého. Tenhle nástroj počítá aktivně a píše to u obrázku, protože nedopsat to je přesně ta chyba, o které je řeč.

Vzorce v této kapitole

R_A←C — skládání rotací přes rámce
R_A←C = R_A←B · R_B←C; (R₁R₂R₃)ᵀ = R₃ᵀR₂ᵀR₁ᵀ [—] group property