Nu există o singură notație standard pentru dinamica robotului. Notațiile utilizate în prezent includ vectori 3-D, matrici 4x4 și câteva tipuri de vector 6-D: șuruburi, motoare, elemente de algebră Lie și vectori spațiali. În general, notațiile vectoriale cu șase dimensiuni sunt cele mai bune, fiind mai compacte decât vectorii 3-D, și mai puternice decât matricile 4x4. Prin urmare, noi folosim vectori 6-D de-a lungul acestui capitol. În special, vom folosi algebra vectorială spațială descrisă în [3.8]. Această secțiune oferă un scurt rezumat al vectorilor spațiali. Descrieri de notații matrici 4x4 pot fi găsite în [3.2, 9] și descrieri ale altor notații vectoriale 6-D pot fi găsite în [3.10–12].
În acest manual, de obicei, vectorii sunt notați de litere italice bold (de exemplu, f, v). Dar, pentru a evita câteva ciocniri de nume, vom folosi litere drepte bold pentru a indica vectori spațiali (de exemplu, f, v). Rețineți că acest lucru se aplică numai la vectori, nu la tensori. De asemenea, doar în această secțiune, vom sublinia vectorii de coordonate pentru a-i distinge de vectorii pe care îi reprezintă (de exemplu, v și v , reprezentând v și v).
3.2.1 Mișcare și forță
Din motive matematice, este util să distingem între acei vectori care descriu mișcările corpurilor rigide și cei care descriu forțele care acționează asupra lor. Prin urmare, plasăm vectorii de mișcare într-un spațiu vectorial numit M6 și vectorii forță într-un spațiu numit F6. (Puterile indică dimensiunea.) Vectorii de mișcare descriu cantități precum viteza, accelerația, deplasare infinitezimală și direcții de libertate a mișcării; vectorii de forță descriu forța, impulsul, normalele la contact și așa mai departe.
3.2.2 Vectori de bază
Să presupunem că v este un vector 3-D și că v = (vx; vy; vz)T este vectorul de coordonate carteziene care reprezintă v în baza ortonormală
Relația între v și v este dată de formula:
Aceeași idee se aplică și vectorilor spațiali, cu excepția că folosim coordonatele Plücker în locul coordonatelor carteziene, și o bază Plücker în locul unei baze ortonormale.
Fig.3.1a, b Vectorii de bază Plücker pentru mișcări (a) și forțe (b)
Coordonatele Plücker au fost introduse în secț. 2.2.6, dar vectorii de bază sunt arătați în Fig. 3.1. Sunt 12 vectori de bază în total: șase pentru vectori de mișcare și șase pentru forțe. Fiind dat un cadru de coordonate carteziene, Oxyz, vectorii de bază Plücker sunt definiți după cum urmează: trei rotații unitare în jurul liniilor direcționate Ox, Oy și Oz, notate cu dOx, dOy și dOz, trei translații unitate în direcțiile x, y și z, notate cu dx, dy și dz, trei cupluri unitate în jurul direcțiilor x, y și z, notate prin ex, ey, și ez și trei forțe unitare de-a lungul liniilor Ox, Oy și Oz, notate prin eOx, eOy și eOz.
3.2.3 Viteza și forța spațială
Având în vedere orice punct O, viteza unui corp rigid poate fi descrisă de o pereche de vectori 3-D ω și vo, care specifică viteza unghiulară a corpului și viteza liniară a punctului curent fixat pe corp la O. Rețineți că vo nu este viteza lui O în sine, ci viteza punctului fixat pe corp care se întâmplă să coincidă cu O la momentul curent.
Viteza acestui același corp rigid poate fi, de asemenea, descrisă de către un singur vector de mișcare spațială, v ∈ M6. Pentru a obține v din ω și vo, introducem mai întâi un cadru cartezian, Oxyz, cu originea la O. Acest cadru definește un sistem cartezian de coordonate pentru ω și vo, și, de asemenea, un sistem de coordonate Plücker pentru v. Având în vedere aceste sisteme de coordonate, se poate arăta că
(3.1)
unde ωx, ...,v0z sunt coordonatele carteziene ale lui ω și vo în Oxyz. Astfel, coordonatele Plücker ale lui v sunt coordonatele carteziene ale lui ω și vo. Vectorul de coordonate reprezentând v în Oxyz poate fi scris
(3.2)
Notația de la extrema dreaptă a acestei ecuații este pur și simplu o prescurtare convenabilă a listei de coordonate Plücker.
Definiția forței spațiale este foarte similară. Dat orice punct O, orice sistem de forțe care acționează asupra unui singur corp rigid este echivalent cu o singură forță f care acționează pe o linie care trece prin O, împreună cu un cuplu pur, no, care este momentul sistemului de forțe în jurul lui O. Astfel, cei doi vectori f și no descriu forța ce acționează asupra unui corp rigid în același mod în care ω și vo descriu viteza acestuia. Această aceeași forță poate, de asemenea, să fie descrisă de un singur vector de forță spațială, f ∈ F6. Introducând cadrul Oxyz, ca mai înainte, se poate arăta că
(3.3)
unde nox, ..., fz sunt coordonatele carteziene ale no și f în Oxyz. Vectorul de coordonate reprezentând f în Oxyz poate fi apoi scris
(3.4)
Din nou, acestea sunt coordonatele Plücker ale lui f în Oxyz, iar notația din extrema dreaptă este pur și simplu o prescurtare convenabilă a listei de coordonate Plücker.
3.2.4 Adunare și înmulțire scalară
Vectorii spațiali se comportă în mod evident sub adunare și înmulțire scalară. De exemplu, dacă f1 și f2 acționează ambele asupra aceluiași corp rigid, atunci rezultanta lor este f1 + f2; dacă două corpuri diferite au vitezele v1 și v2, atunci viteza celui de-al doilea corp în raport cu primul este v2-v1; iar dacă f indică o forță de 1N ce acționează de-a lungul unei anumite linii din spațiu, atunci αf semnifică o forță de αN care acționează de-a lungul aceleași linii.
3.2.5 Produs scalar
Un produs scalar este definit între oricare doi vectori spațiali, cu condiția ca unul dintre ei să fie o mișcare și celălat o forță. Dat fiind orice m ∈ M6 și f ∈ F6, produsul scalar poate fi scris fie f·m fie m·f, și exprimă lucrul făcut de o forță f care acționează asupra unui corp cu mișcare m. Expresii ca f·f și m·m nu sunt definite. Dacă m și f sunt vectori de coordonate reprezentând m și f în același sistem de coordonate atunci
(3.5)
3.2.6 Transformate de coordonate
Vectorii de mișcare și forță se supun diferitelor reguli de transformare. Fie A și B două cadre de coordonate, fiecare definind un sistem de coordonate cu același nume; și fie mA, mB, fA și fB vectori de coordonate reprezentând vectorii spațiali m ∈ M6 și f ∈ F6 în coordonatele A și B, respectiv. Regulile de transformare sunt atunci
(3.6)
și
(3.7)
unde BXA și BXAF sunt matricele de transformare a coordonatelor de la A la B pentru vectorii de mișcare și, respectiv, de forță. Aceste matrici sunt legate de identitatea
(3.8)
Să presupunem că poziția și orientarea cadrului A în raport cu cadrul B sunt descrise de un vector de poziție BpA și o matrice de rotație 3x3 BRA, așa cum este descris în sect. 2.2. Formula pentru BXA este atunci
(3.9)
iar inversa sa este
(3.10)
Cantitatea S(p) este matricea simetrică-variabilă care satisface S(p)v =p x v pentru orice vector 3-D v. Este definită prin ecuația
(3.11)
3.2.7 Produse vectoriale
Există două produse vectoriale (cruce) definite pe vectori spațiali. Primul ia două argumente vector-mișcare, și produce un rezultat vector-mișcare. Este definit de formula
(3.12)
Al doilea ia un vector mișcare ca argument pe partea stânga și un vector forță drept argument pe partea dreaptă și produce un rezultat vector-forță. Este definit de formula
(3.13)
Aceste produse apar în formule de diferențiere.
Este posibil să definiți un operator spațial de produs-cruce, în analogie cu (3.11), după cum urmează
(3.14)
în care caz
(3.15)
dar
(3.16)
Observați că S(m) ilustrează vectorii mișcare ca vectori de mișcare, iar S(m)T ilustrează vectorii forță ca vectori forță.
3.2.8 Diferențierea
Derivata unui vector spațial este definită de
(3.17)
unde s este aici orice vector spațial. Derivata este un vector spațial de același fel (mișcare sau forță) ca cel de diferențiat.
Formula pentru diferențierea unui vector de coordonate spațiale într-un sistem de coordonate în mișcare este
(3.18)
unde s este orice vector spațial, ds/dt este derivata în timp a lui s, A este sistemul de coordonate în mișcare, (ds/dt)A este vectorul de coordonate care reprezintă ds/dt în coordonatele A, sA este vectorul de coordonate care reprezintă s în coordonate A, dsA/dt este derivata în timp a lui sA (care este derivata pe componente, deoarece sA este un vector de coordonate), iar vA este viteza cadrului de coordonate A, exprimat în coordonate A.
Derivata în timp a unui vector spațial care se schimbă numai pentru că se mișcă este dată de
(3.19)
unde v este viteza lui s. Această formulă este utilă pentru diferențierea cantităților care nu se modifică în partea lor dreaptă, dar sunt atașate de corpuri rigide în mișcare (de exemplu, vectori de axe articulare).
3.2.9 Accelerația
Accelerația spațială este definită ca viteza de modificare a vitezei spațiale. Din păcate, acest lucru înseamnă că accelerația spațială diferă de definiția clasică de manual a accelerației corpului rigid, pe care o vom numi accelerația clasică. În esență, diferența poate fi rezumată după cum urmează
(3.20)
unde
unde a este accelerația spațială, a' este accelerația clasică, vo˙ este derivata lui vo luând O ca fiind fixat în spațiu și vo˙' este derivata lui vo luând O fixat pe corp. Cele două accelerații sunt legate de
(3.21)
Dacă r este un vector de poziție care dă poziția punctului fixat pe corp la O în raport cu orice punct fixat atunci
(3.22)
Diferența practică este că accelerațiile spațiale sunt mai ușor de utilizat. De exemplu, dacă corpurile B1 și B2 au vitezele v1 și, respectiv, v2, iar vrel este viteza relativă a lui B2 în raport cu B1, atunci
Relația dintre accelerațiile lor spațiale este obținută prin diferențierea formulei de viteză
Observați că accelerațiile spațiale sunt compuse prin adunare, exact ca și vitezele. Nu există termeni Coriolis sau centrifugali de care să vă faceți griji. Acest lucru este o îmbunătățire semnificativă a formulelor de compunere clasică a accelerațiilor, cum ar fi cele din [3.2, 13, 14].
3.2.10 Impulsul spațial
Să presupunem că un corp rigid are o masă m, un centru de masă la C și o inerție rotațională
în jurul lui C (Fig. 3.2). Dacă acest corp se mișcă cu o viteză spațială , atunci impulsul său liniar este h = mvC, iar momentul unghiular intrinsec este
hC =
ω. Momentul impulsului său în jurul unui punct general, O, este hO = hC + c x h, unde . Putem asambla acești vectori într-un vector de impuls spațial, după cum urmează
(3.23)
și
(3.24)
Impulsul spațial este un vector forță și se transformă în consecință.
Fig. 3.2 Impulsul spațial
3.2.11 Inerție spațială
Impulsul spațial al unui corp rigid este produsul inerției sale spațiale și viteza
(3.25)
unde I este inerția spațială. Exprimat în coordonate Plücker la C, avem
(3.26)
Ceea ce implică
(3.27)
Aceasta este formula generală pentru inerția spațială a unui corp rigid exprimată în centrul său de masă. Pentru a exprima în alt punct, O, procedăm după cum urmează.
Din (3.24), (3.26) și (3.27)
Dar avem și
, deci
(3.28)
Această ecuație poate fi, de asemenea, scrisă
(3.29)
unde
(3.30)
este inerția de rotație a corpului rigid în jurul lui O.
Matricele de inerție spațială sunt simetrice și definite pozitive. În cazul general, sunt necesare 21 de numere pentru a specifica o inerție spațială (de exemplu, pentru o inerție de corp-articulat sau spațiu-operațional); dar o inerție de corp rigid are nevoie de doar 10 parametri: masa, coordonatele centrul de masă și cele șase elemente independente ale fie
Regula de transformare pentru inerții spațiale este
(3.31)
unde A și B sunt oricare două sisteme de coordonate. In practică, de multe ori trebuie să calculăm IA din IB, dat fiind numai BXA. Formula acestei transformări este
(3.32)
Dacă două corpuri, având inerțiile I1 și I2, sunt conectate rigid pentru a forma un singur corp compozit, atunci inerția compozitului, Itot, este suma inerțiilor părților sale
(3.33)
Această ecuație singură ia locul a trei ecuații în abordarea tradițională a vectorului 3-D: una de calculat masa compozită, una pentru calcularea centrul de masă al compozitului și una pentru calcularea inerţiei de rotație a compozitului. Dacă un corp rigid cu inerție I se mișcă cu viteza v, atunci energia sa cinetică este
(3.34)
Dacă un corp rigid, B, face parte dintr-un sistem mai mare, atunci este posibil să se definească o matrice de inerție aparentă pentru B, care descrie relația dintre o forță care acționează pe B și accelerația sa rezultată, ținând cont de efectele celorlalte corpuri din sistem. Astfel de cantități se numesc inerții de corp-articulat. Dacă se întâmplă ca B să fie efectorul final al unui robot, atunci inerția aparentă a acestuia se numește inerție de spațiu-operațional.
3.2.12 Ecuația mișcării
Ecuația spațială a mișcării afirmă că forța netă ce acționează asupra unui corp rigid este egală cu rata de schimbare a impulsului
Se poate arăta că expresia se poate înlocui cu (v x Iv) [3.8, 15],
deci ecuația mișcării poate fi scrisă
(3.35)
Această ecuație singură include ecuațiile de mișcare ale lui Newton și ale lui Euler pentru un corp rigid. Pentru a verifica acest lucru, le putem recupera după cum urmează. Exprimând (3.35) la centrul de masă al corpului și folosind (3.16), (3.14) și (3.22) avem
(3.36)
3.2.13 Implementarea în computer
Cel mai simplu mod de a implementa aritmetica vectorială spațială pe un computer este să începi cu un instrument de aritmetică matricială existentă, cum ar fi MATLAB și scrieți (sau descărcați de pe Web) rutine pentru a face următoarele:
1. Calculați S(m) din m conform (3.14).
2. Compuneți X din R și p conform cu (3.9).
3. Compuneți I din m, c și conform cu (3.28).
Toate celelalte operații aritmetice spațiale pot fi efectuate folosind rutine aritmetice matrice standard. Dar, unele rutine suplimentare ar putea fi adăugate în mod util la această listă, cum ar fi:
. Rutine pentru calcularea R din diferite alte reprezentări ale rotației.
. Rutine de conversie între cantități spațial și cantități matrici 4x4.
Aceasta este abordarea recomandată ori de câte ori este productivitatea umană este mai importantă decât eficienţa calculului. Un pachet software de-a lungul acestor linii poate fi găsit la [3.16].
Dacă este necesară o eficiență mai mare, atunci trebuie utilizată o biblioteca aritmetică spațială mai elaborată, în care
1. O structură de date dedicată este definită pentru fiecare fel de cantitate spațială și
2. Este prevăzută o suită de rutine de calcul, fiecare implementând o operație aritmetică spațială prin intermediul unei formule eficiente.
Câteva exemple de structuri de date adecvate și formule eficiente sunt prezentate în tabelul 3.1. Observați că structurile de date sugerate pentru inerțiile corpului-rigid și transformările Plücker conțin doar o treime din atât de multe numere pe care matricele 6x6 le reprezintă. Formulele eficiente de aritmetică enumerate în acest tabel oferă economii de costuri variind de la un factor de 1,5 la un factor de 6, în raport cu utilizarea aritmeticii matriciale generale 6x6 și 6x1. Pot fi găsite formule chiar și mai eficiente în [3.17].
Tabelul 3.1 Rezumatul notației vectoriale spațiale
3.2.14 Rezumat
Vectorii spațiali sunt vectori 6-D care combină aspecte liniare și unghiulare ale mișcării corpului-rigid, rezultând într-o notație compactă care este foarte potrivită pentru descrierea algoritmilor de dinamică. Pentru a evita câteva ciocniri de nume cu vectori 3-D, am folosit litere drepte boldate pentru a nota vectorii spațiali, în timp ce tensorii sunt încă notați cu italice.
În secțiunile care urmează, vor fi folosite litere drepte pentru a indica atât vectori spațiali, cât și vectori care sunt concatenări ale altor vectori, precum .
Tabelul 3.1 prezintă un rezumat al cantităților spațiale și operatorii introduși în această secțiune, împreună cu formulele care le definesc în termeni de cantități și operatori 3-D. Prezintă, de asemenea, structuri de date și formule pentru implementarea eficientă pe computer a aritmeticii spațiale. Acest tabel trebuie citit împreună cu Tabelele 2.5 și 2.6, care arată cum se calculează orientarea, poziția și vitezele spațiale pentru o varietate de tipuri de articulații. Rețineți că jRi și jpi în acestea tabelele corespund lui
și, respectiv, ApB, când citiți împreună cu tabelul 3.1.