KineLab kinematika ramene
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.

8. Numerická IK a tlumení

Pro obecné rameno se IK řeší iterativně: spočítej chybu polohy, zeptej se Jakobiánu, jak ji zmenšit, udělej krok, opakuj.

Tři způsoby, jak udělat ten krok

MetodaKrokChování
TranspoziceΔq = α JT evždy stabilní, ale pomalá
PseudoinverzeΔq = J+ erychlá, ale v singularitě exploduje
Tlumené nejmenší čtverceΔq = JT(J JT + λ²I)−1 erychlá i tam, kde ostatní selžou

Nástroj používá tlumené nejmenší čtverce (Levenberg–Marquardt; v robotice Nakamura a Wampler). Člen λ² na diagonále je celý trik: v singularitě je J JT neinvertovatelná a pseudoinverze žádá nekonečnou rychlost kloubu, kdežto λ² tu matici udrží invertovatelnou — zaplatí se za to kouskem přesnosti sledování.

Kolik tlumit

λ² = 0   když σmin ≥ ε     λ² = ( 1 − (σmin/ε)² ) λmax²   jinakChiaverini, Nakamura

Tedy vůbec, dokud je rameno dobře podmíněné, a náběh až v okolí singularity.

Chyba, kterou jsem při psaní tohohle nástroje udělal a stojí za zapamatování. První verze tlumila plynule všude — „jemnější“ a mnohem horší. Tlumí se tím celý pracovní prostor, konvergence spadne z kvadratické na lineární, a u rovinného ramene, po kterém se chce poloha ve třech rozměrech (σmin je přesně nula), vyšlo λ = 2 a rameno se prakticky přestalo hýbat. Ze šedesáti testovacích poloh se jich vyřešilo čtyřicet. Po přechodu na vzorec výše šedesát ze šedesáti. Tlumení je lék na konkrétní nemoc, ne posilující nápoj.

Dvě věci navíc, bez kterých to není spolehlivé

  • Omezení kroku. Lineární model platí lokálně; bez stropu na |Δq| umí jeden krok přehodit rameno přes celý pracovní prostor.
  • Půlení kroku. Zhoršila se chyba? Zkus poloviční krok, až osmkrát. Levné a je to rozdíl mezi „obvykle konverguje“ a „konverguje“.

Chyba orientace se nepočítá odečtením úhlů

Rotační část chyby je osa a úhel rotace RteďTRcíl, ne rozdíl Eulerových úhlů. Ten by u přetečení dal nesmysl — viz RotLab, kapitola 9.

Vzorce v této kapitole

Δq — tlumené nejmenší čtverce
Δq = Jᵀ(J Jᵀ + λ²I)⁻¹ e [rad] Nakamura, Wampler
λ² — kolik tlumit
λ² = 0 když σ_min ≥ ε; jinak (1 − (σ_min/ε)²)·λ_max² [—] Chiaverini