1 / 76

Intelektikos pagrindai

Intelektikos pagrindai. P176B100 2012 m. Robertas Damaševičius r obertas.damasevicius @ktu.lt. Robotų kinematika. Turinys. Robotinės rankos kinematika Tiesioginė kinematika Atvirkštinė kinematika Robotinio vežimėlio judėjimo teorija Pavaros Odometrinis modelis. Kas yra kinematika?.

tierra
Download Presentation

Intelektikos pagrindai

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Intelektikos pagrindai P176B100 2012 m. Robertas Damaševičius robertas.damasevicius@ktu.lt

  2. Robotų kinematika

  3. Turinys • Robotinės rankos kinematika • Tiesioginė kinematika • Atvirkštinė kinematika • Robotinio vežimėlio judėjimo teorija • Pavaros • Odometrinis modelis

  4. Kas yra kinematika? • Mokslas apie judėjimą, geometrines judėjimo savybes • Kinematinė roboto būsena yra kiekvieno jo judančio elemento (vežimėlio rato / rankos sąnario) padėtis • Tiesioginė kinematika • Žinomos visų sąnarių padėtys (pasukimo kampai) • Rasti griebtuvo koordinates po judesio • Atvirkštinė kinematika • Žinomos griebtuvo koordinatės • Rasti sąnarių padėtis, kad griebtuvas atsidurtų norimoje vietoje

  5. Robotinė ranka • Mechaninė ranka • Pagal atliekamas funkcijas panaši į žmogaus ranką • Gali būti programuojama • Manipuliatorius juda taip, kad • jo galūnė (griebtuvai, pirštai) • Atsidurtų norimoje 3D padėtyje ir būtų nukreipta tam tikra kryptimi

  6. Lynxmotion robotinė ranka • Turi: • besisukantį pagrindą, • petį, • alkūnę, • riešą, • griebtuvą • SSC-32 Servo valdiklis • Maitinama iš baterijų arba naudojant elektros tinklo srovės adapterį

  7. Manipuliatoriaus judėjimo problemos • Manipuliatorių užduotys: • sugriebti objektą, • perkelti objektą. • Tai turi būti padaryta efektyviaiir saugiai: • Ranka turi judėti taip, kad nepažeistų nustatytų apribojimų sąnariams • Neatsitrenktų į save arba į kitas aplinkos kliūtis

  8. Sudėtingos manipuliavimo ranka užduotys • Griebimo jėgos valdymas • Trapių objektų ėmimas • Kontakto su objekto paviršiumi palaikymas • Dinaminis manipuliavimas: • žongliravimas • mėtymas, • gaudymas

  9. Manipuliavimas – Nuotolinis valdymas • Autonominio manipuliatoriaus valdymas yra sudėtinga problema • Pirmosios robotinės rankos buvo operatoriaus valdomos nuotoliniu būdu dirbant su pavojingomis medžiagomis • Tai buvo žmogaus rankų imitacijos • Operatoriams buvo sunku išmokti valdyti tokias rankas

  10. Kodėl sudėtinga valdyti manipuliatorius? • Nėra tiesioginio ryšio tarp to, ką: • Robotinė ranka turi padaryti realiame pasaulyje, ir • Ką daro rankos sąnarių vykdytuvai (varikliai). • Tokį ryšį nagrinėja kinematika • Reikia žinoti • 1. kas ir kaip yra sujungta, • 2. kiek yra jungčių (sąnarių), • 3. kiekvieno sąnario laisvės laipsnių skaičių, • ir t.t.

  11. Jungtys Sąnariai Tipinė manipuliatoriaus struktūra Griebtuvas Bazė

  12. Kinematikos problemos • Kaip patikimai perkelti griebtuvą į norimą padėtį • Nekliūdyti kliūčių • Judėti tolygiai • Neviršijant greičio ir pagreičio apribojimų • Prisitaikyti prie kintančių sąlygų, • pvz. pasikeitusios apkrovos pakėlus objektą

  13. Rankos kinematinis modelis Standžių kūnų grandinė, sujungta lanksčiais sąnariais griebtuvas, vykdantis roboto užduotis sąnariai

  14. (x, y) l2 2 l1 1 Tiesioginės kinematikos pavyzdys • Roboto rankos struktūros pavyzdys

  15. (x, y) l2 2 l1 1 Tiesioginės kinematikos pavyzdys • Ryšys tarp roboto rankos galo pozicijos (x, y) ir sąnarių kampų 1, 2, aprašomos tokiomis lygtimis:

  16. (x, y) l2 r 2 l1 1 Atvirkštinė kinematika • Norint valdyti robotą reikia rasti kampus 1, 2 • ryra atstumas tarp pirmojo sąnario ir rankos galo (x, y):

  17. (x, y) l2 r 2 l1 1 Atvikštinė kinematika • Tuomet lygtis • galima išspręsti taip:

  18. Atvirkštinės kinematikos lygčių sprendinių charakteristikos • Gali būti 0, 1 arba daug sprendinių • Jei taškas (x, y) nepasiekiamas, sprendinių nėra • Jei taškas (x, y) gali būti pasiekiamas keliais skirtingais būdas, bus keli sprendiniai

  19. Du galimi sprendimai Du galimi kinematinės lygties sprendiniai 1 2

  20. Geriausias sprendinys • Jei yra keli galimi sprendiniai, tuomet geriausiu laikomas tas, kuriam pasiekti reikia nueiti trumpiausią kelią nuo prieš tai buvusios manipuliatoriaus būsenos 2 sprendiniai!

  21. Sprendimas 3 sąnarių atveju (1) // robot geometry const float e = 115.0; // end effector const float f = 457.3; // base const float re = 232.0; const float rf = 112.0; // trigonometric constants const float sqrt3 = sqrt(3.0); const float pi = 3.141592653; // PI const float sin120 = sqrt3/2.0; const float cos120 = -0.5; const float tan60 = sqrt3; const float sin30 = 0.5; const float tan30 = 1/sqrt3;

  22. Sprendimas 3 sąnarių atveju (2) // forward kinematics: (theta1, theta2, theta3) -> (x0, y0, z0) // returned status: 0=OK, -1=non-existing position int delta_calcForward(float theta1, float theta2, float theta3, float &x0, float &y0, float &z0) { float t = (f-e)*tan30/2; float dtr = pi/(float)180.0; theta1 *= dtr; theta2 *= dtr; theta3 *= dtr; float y1 = -(t + rf*cos(theta1)); float z1 = -rf*sin(theta1); float y2 = (t + rf*cos(theta2))*sin30; float x2 = y2*tan60; float z2 = -rf*sin(theta2); float y3 = (t + rf*cos(theta3))*sin30; float x3 = -y3*tan60; float z3 = -rf*sin(theta3); float dnm = (y2-y1)*x3-(y3-y1)*x2;

  23. Sprendimas 3 sąnarių atveju (3) // ... Continued forward kinematics float w1 = y1*y1 + z1*z1; float w2 = x2*x2 + y2*y2 + z2*z2; float w3 = x3*x3 + y3*y3 + z3*z3; float a1 = (z2-z1)*(y3-y1)-(z3-z1)*(y2-y1); float b1 = -((w2-w1)*(y3-y1)-(w3-w1)*(y2-y1))/2.0; float a2 = -(z2-z1)*x3+(z3-z1)*x2; float b2 = ((w2-w1)*x3 - (w3-w1)*x2)/2.0; float a = a1*a1 + a2*a2 + dnm*dnm; float b = 2*(a1*b1 + a2*(b2-y1*dnm) - z1*dnm*dnm); float c = (b2-y1*dnm)*(b2-y1*dnm) + b1*b1 + dnm*dnm*(z1*z1 - re*re); float d = b*b - (float)4.0*a*c; // discriminant if (d < 0) return -1; // non-existing point z0 = -(float)0.5*(b+sqrt(d))/a; x0 = (a1*z0 + b1)/dnm; y0 = (a2*z0 + b2)/dnm; return 0; }

  24. Sprendimas 3 sąnarių atveju (4) // inverse kinematics // helper functions, calculates angle theta1 (for YZ-pane) int delta_calcAngleYZ(float x0, float y0, float z0, float &theta) { float y1 = -0.5 * 0.57735 * f; // f/2 * tg 30 y0 -= 0.5 * 0.57735 * e; // shift center to edge // z = a + b*y float a = (x0*x0 + y0*y0 + z0*z0 +rf*rf - re*re - y1*y1)/(2*z0); float b = (y1-y0)/z0; // discriminant float d = -(a+b*y1)*(a+b*y1)+rf*(b*b*rf+rf); if (d < 0) return -1; // non-existing point float yj = (y1 - a*b - sqrt(d))/(b*b + 1); // choosing outer point float zj = a + b*yj; theta = 180.0*atan(-zj/(y1 - yj))/pi + ((yj>y1)?180.0:0.0); return 0; }

  25. Sprendimas 3 sąnarių atveju (5) // inverse kinematics: (x0, y0, z0) -> (theta1, theta2, theta3) // returned status: 0=OK, -1=non-existing position int delta_calcInverse(float x0, float y0, float z0, float &theta1, float &theta2, float &theta3) { theta1 = theta2 = theta3 = 0; int status = delta_calcAngleYZ(x0, y0, z0, theta1); // rotate coords to +120 deg if (status == 0) status = delta_calcAngleYZ(x0*cos120 + y0*sin120, y0*cos120-x0*sin120, z0, theta2); // rotate coords to -120 deg if (status == 0) status = delta_calcAngleYZ(x0*cos120 - y0*sin120, y0*cos120+x0*sin120, z0, theta3); return status; }

  26. Kaip naudoti atvirkštinę kinematiką • Naudojant atvirkštinės kinematikos metodą rastas sprendimas negarantuoja, kad ranka judės nuspėjamai, t.y. tiesiai tarp pradinio ir galinio taško • Rekomenduojama kiekvieną žymesnį judesį skaidyti į atskirus žingsnelius ir po kiekvieno žingsnio perskaičiuoti kampus

  27. Laisvės laipsnių skaičius (LLS) 3 padėties koordinatės 3D erdvėje = 6 LL 3 kryptys Robotikoje, LLS = nepriklausomai valdomų sąnarių skaičius Jei LLS valdymo tikslumas skaičiavimų sudėtingumas kaštai

  28. Valdomų laisvės laipsnių skaičius (LLS) • Dauguma vykdytuvų turi tik 1 LLS • Svarbu žinoti • Roboto LLS • Roboto valdomų LLS • Jei kiekvienam LL yra valdymo įtaisas, visi LLS yra valdomi • Jei valdomų LLS < visų LLS, robotą valdyti yra sudėtinga

  29. Valdomų laisvės laipsnių skaičius (LLS) • Automobilis turi 3 laisvės laipsnius: • padėtis (x,y) ir • kryptis (posūkio kampas). • Tik 2 laisvės laipsnius galima valdyti: • važiuojant:greičio pedalas ir pavara • vairuojant:naudojant vairą. • Kadangi laisvės laipsnių skaičius didesnis nei valdomų laisvės laipsnių skaičius, kai kuriuos judesius atlikti sunku arba neįmanoma • Pvz., važiuoti į šoną

  30. Žmogaus ranka • Turi 7 LLS: • 3 - petyje, • 1 - alkūnėje, • 3 - rieše • Visi LLS yra valdomi, todėl pasiekti tam tikrą objektą erdvėje žmogaus ranka gali daugeliu būdų

  31. Žmogaus plaštaka • Žmogaus LLS • 23

  32. Humanoidiniai HONDA ir SONY robotai • 98 LLS

  33. Pakartojamumas ir tikslumas • Pakartojamumas:kaip tiksliai manipuliatorius gali sugrįžti į nurodytą tašką? • Tikslumas:kaip tiksliai manipuliatorius gali pereiti į nurodytą tašką

  34. Ratinių robotų judesio programavimas

  35. Ratinių robotų judėjimas • Stabilumui užtikrinti pakanka 3 ratų • Differencialinė pavara (TurtleBot) • Automobilio (Ackerman’o) pavara • Sinchroninė pavara • Omni pavaros: Mecanum ratai y x x

  36. Ratinių robotų tipai • Pagal ratų skaičių • 1-ratės sistemos • 2-ratės sistemos • 3-ratės sistemos • 4-ratės sistemos • Daugiaratės sistemos

  37. Campion* klasifikacija • Naudojama skaičių pora (m, s), kur m – mobilumas s - vairuojamumas • Tipas(3,0) – omni robotai • Turi 3 valdomus ratus • Gali važiuoti bet kuria kryptimi • Tipas(2,0) - balansuojantys robotai • Turi 2 valdomus ratus • Tipas(2,1) • 2 valdomi ratai, vienas vairavimo ratas • Type (1,1) • 1 arba daugiau valdomų ratų ant tos pačios ašies • 1 vairavimo ratas, esantis ant kitos ašies • Type (1,2) • Mažiausiai du vairavimo ratai Šaltinis: G. Campion, W. Chung, Springer Handbook of Robotics, Springer Verlag, 2008, Ch. Wheeled robots, pp. 391–410.

  38. Vienratės sistemos • Balansuojantys robotai • Labai nestabilūs ir sunkiai programuojami • Murata Girl http://www.murata.com Šaltinis: http://www.robotplatform.com

  39. Dviratės sistemos • Balansuojantys robotai • Sudėtingas valdymas, programavimas • 2 tipai: • Dviračio • 1 ratas - priekyje, • 1 ratas – gale • Lygiagretaus išdėstymo • Svorio centras turi būti žemiau ašies • Nbot

  40. Triratės sistemos • Lenvai valdomi ir programuojami • Diferencialinė pavara • Ackerman‘o pavara • Sinchroninė pavara • Omni sistemos

  41. Ratinių robotų tipai

  42. Diferencialinė pavara Pranašumai: • Pigus sprendimas • Paprasta konstrukcija • Paprasta realizuoti • Simple design • Trūkumai: • Sudėtinga važiuoti į priekį

  43. Differencialinės pavaros tipai (1) • Du užpakaliniai varomi ratai • Vienas priekinis (pasyvus) ratas • Pvz., TurtleBot

  44. Differencialinės pavaros tipai (2) • Du užpakaliniai nepriklausomai varomi ratai • Vienas priekinis (pasyvus) ratas

  45. Diferencialinės pavaros valdymo principai • Abu ratai sukasi vienodu greičiu ir vienoda kryptimi – robotas važiuoja tiesiai • Ratai sukasi vienodu greičiu, bet skirtingomis kryptimis – robotas sukasi vietoje • Vienas ratas nejuda, kitas sukasi – robotas apsisuks • Vienas ratas sukasi greičiau nei kitas – robotas sukasi į vieną pusę

  46. Diferencialinė pavara Pictures from “Navigating Mobile Robots: Systems and Techniques” Borenstein, J. D – rato nuvažiuotas kelias

  47. Diferencialinės pavaros valdymas • Du atskirai valdomi varomieji ratai • Robotas gali suktis vienoje vietoje • Roboto nuvažiuotas kelias D ir greitis V: Kairiojo rato kelias ir greitis , Dešiniojo rato kelias ir greitis , = kairiojo taško atstumas iki sukimosi taško

  48. v l v r Diferencialinės pavaros kinematinės lygtys  ICC  R (x,y) y l/2 x

  49. Diferencialinės pavaros kinematinės lygtys ICC R P(t+t) P(t)

  50. y x Diferencialinės pavaros kinematika w(R+d) = VL w(R-d) = VR w = ( VR - VL ) / 2d w R = 2d ( VR + VL ) / ( VR - VL ) Roboto greitis: V = wR = ( VR + VL ) / 2 VL 2d VR ICC R Roboto sukimosi spindulys

More Related