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:
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š:
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č.