Szilágyi Zoltán

Szilágyi Zoltán

Euler vs. Kvaternió

Rutin készítése az orientáció kvaternió értékeinek euler szögre történő átszámítására és vissza.

A robot programozási nyelvekben akár egy pontról (rapidban robtarget), egy szerszámról (rapidban tool), vagy koordináta rendszerről (rapidban workobject) van szó, és egyéb más helyeken is (pl.: robot terhelés, loaddata) az orientációs információk megadásához jellemzően az Euler szögek hármas egységét használják. Ettől eltérően az ABB rapid programnyelve a kvaterniókat használja ezen orientációs információ megadására. Ennek vannak bizonyos előnyei, de hátrányos lehet, ha manuálisan akarjuk a pont vagy koordináta rendszer orientációját beállítani. Itt jelenthet segítséget az a program, mely a két rendszer között elvégzi a szükséges konverziókat.

Az ABB rapid nyelvén megadott orientációs információ egy ORIENT típusú ROT (rotation) nevű változóban kerül megadásra, mely változó egy RECORD, ami 4 db elemi NUM (numeric) típusú változóból áll. Ezen változók nevei sorrendben q1, q2, q3, q4.:

A robtarget változóban található orientációs adatokat (ésminden mást is) módosítani csak akkor lehet, ha a robtarget módosítható, vagyis PERS (persistent) típusúként van definiálva.

Amint ez biztosított, az adatokat a következő módon érhetjük el:

Erre szükség lesz, ha a kiszámított értékeket szeretnénk a robtargetben alkalmazni.

Kvaterniókkal megadott orientációs adatokból visszanyerni az Euler szögeket a következő módon lehet:

A rutin bemenő paramétere egy robtarget, mely tartalmazza azt az orientációs változót melyet Euler szögek formájában szeretnénk visszakapni. Első lépésben a bemeneti pontból kiolvassuk az orientációs adatokat, melyeket változóban tárolunk. Az átmeneti változók felhasználásával kiszámoljuk a megfelelő Euler szögeket melyek a kimeneten az a, b, c numerikus változóban érhetők el.

A rutin a kezelőpanelra kiírja a bemenetként kapott kvaterniókat és az eredmény Euler szögeket is.

Euler szögekkel megadott orientációs adatokat kvaterniókká alakítani, a következő módon lehet:

A rutinnak három numerikus paramétere van, melyen keresztül adhatok meg az egyes tengelyek szerinti orientációs adatok. A rutin kimeneteként megjelenő négy (qw, qx, qy, qz) változó érték hordozza a bemeneti adatoknak megfelelő kvaterniókat.

A rutin a kezelőpanelra kiírja az eredmény kvaterniókat.