VisionLab kamera jako měřidlo

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.

Hand-eye: AX = XB

Kamera vidí předmět ve svých souřadnicích. Robot se pohybuje ve svých. Chybí jediná transformace — a je to poslední článek, který z kamery udělá měřidlo pro robota.

Odkud se rovnice bere

Nech robota přejet z jedné polohy do druhé a zaznamenej dvě věci: jak se pohnula příruba (to robot ví přesně) a jak se pohnula kamera vůči kalibrační desce (to spočítá kapitola o markeru). Kamera je k přírubě přišroubovaná, takže mezi těmi dvěma pohyby je pevný vztah:

A·X = X·BA je pohyb ruky, B pohyb kamery, X to hledané

Podstatné je, že v rovnici vystupují pohyby, ne pózy. Absolutní póza desky ani báze robotu se znát nemusí a to je celý půvab metody — nic se nemusí měřit metrem.

0.02040608010⁻⁴2·10⁻⁴5·10⁻⁴0.0010.0020.0050.010.020.050.100.200.501.02.05.0102050100200rozmanitost os pohybu [°]chyba [mm]skutečná chyba Xreziduum, které vidíš
Rozmanitost os 70,8°: skutečná chyba 0,052 mm, ale reziduum, které vidíš, je jen 0,0444 mm.
Tohle je ta nejnebezpečnější dvojice čísel v celé labce. Reziduum se počítá na datech, na která se fitovalo, takže vypadá dobře skoro vždycky — a se špatně zvolenými pohyby může být skutečná chyba o tři řády větší. Malé reziduum NENÍ důkaz, že je hand-eye správně. Důkaz je rozmanitost pohybů, a tu je potřeba zajistit předem, ne odhalit potom.
Červená je skutečná chyba, šedá to jediné, co jde v praxi vidět. Táhni rozmanitostí os dolů a sleduj, jak se rozejdou.

Dva algoritmy, které nesdílejí nic

MetodaJak
Tsai–Lenzosově-úhlová: skew(PA+PB)·P′X = PB−PA
Park–Martinmaticový logaritmus: M = Σ log(RB)·log(RA)ᵀ

Obě jsou v tomhle nástroji a testy vyžadují, aby se shodly. Kde se shodnou dvě metody, které spolu nesdílejí nic než řešič soustavy, je správně obojí — a to je silnější tvrzení, než jaké o sobě může udělat kterákoli z nich sama.

Rotace nejdřív, posun potom

Obě metody dělají totéž ve dvou krocích: nejdřív vyřeší rotaci, pak s ní posun z lineární soustavy

(RA − I)·tX = RX·tB − tAaž když se zná R_X

Z toho hned plyne, proč čistý posun nestačí: je-li RA = I, je levá strana nulová a tX z ní nevypadne. Robot se musí otáčet.

A tady je ta nejnebezpečnější dvojice čísel v celé labce. Reziduum se počítá na datech, na která se fitovalo, takže vypadá skvěle skoro vždycky. Se špatně zvolenými pohyby může být skutečná chyba o tři řády větší, aniž by se cokoli tvářilo podezřele. Malé reziduum NENÍ důkaz, že je hand-eye správně. Důkazem je rozmanitost pohybů, a tu je potřeba zajistit předem, ne odhalit potom.

Vzorce v této kapitole

AX = XB — rovnice hand-eye
A·X = X·B [—] Shiu & Ahmad, Tsai & Lenz
t_X — posun až po rotaci
(R_A − I)·t_X = R_X·t_B − t_A [mm] Tsai & Lenz
— — podmínka na pohyby
aspoň dvě rotace kolem RŮZNÝCH os [—] jinak singulární