Na ez már egy nagyobb falat lesz, gondoltam magamban és elkezdtem dokumentáció után kutakodni. Elég sok helyen írnak erről a témáról, több-kevesebb sikerrel. A gond az volt, hogy nekem nem egy Euler szöges, Rotációs mátrixal megfűszerezett hat oldalon keresztül levezetett egyenlet kellett, hanem egy olyan, ami megadja nekem, a végpontot a kezdőpont, a karhosszúságok, meg a szögek függvényében. Ezt angolul úgy hívják, hogy forward kinematics. Sajnos magyar megfelelőjét nem tudom (még).
A témában a nekem legjobban megfelelő leírás az MIT oldalán található : Link
Rövid leírása a feladatnak : Adott egy karos mechanizmus, amiben a karok összekapcsolásánál vezérelhető elemek vannak. Határozzuk meg a kar végpontjának pozícióját és irányultságát (vagyis azt a szöget, amit a talajjal, vagy a karos mechanizmus kezdőpontjánál meghatározott síkkal bezár).
Itt tudjuk a szögeket, vagyis a tetákat, valamint az egyes részek hosszát (l1, l2, l3). Ez alapján szeretnénk meghatározni az E pont X illetve Y koordinátáját, valamit a Fi-e szoget. Erre egy viszonylag egyszerű képlet van. A képlet matematikai háttere valahová hetedik osztályba nyúlik vissza, emiatt a magyarázattól eltekintek.
Ha harminchat elemű a robotkarunk és meg szeretnénk határozni a végének a pozícióját, illetve azt, hogy merre néz, akkor a képletben harminchat összeg fog szerepelni, illetve az utolsó koszinusz és utolsó szinusz a harminchat szögnek az összegét fogja tartalmazni. Azért kiváncsi lennék, hogy egy ilyen robotnak is ugyanígy számolják ki, hogy merre néz a feje?
Tesztelési céllal elkészült a feladat implementációja C#-ban is. Kép a programról működés közben :
Forráskódot nem másolom be, mert elég gyengén kidolgozott. Nem az a tiszta kód, amit szivesen kiadok a kezem közűl. Lényeg, hogy a fent említett képlet van felhasználva. (Persze ha valaki akarja, szivesen elküldöm a programot.)
Következő feladat az inverz kinematika. Ha sikerül a programot megírni, akkor írok egy bejegyzést arról is.
Feliratkozás:
Megjegyzések küldése (Atom)
0 megjegyzés:
Megjegyzés küldése