Calcolo della matrice giacobina per la cinematica inversa


19

Nel calcolare la matrice giacobina per risolvere analiticamente una cinematica inversa, ho letto da molti punti che potrei usare questa formula per creare ciascuna delle colonne di un giunto nella matrice giacobina:

Ji=eϕi=[[ai×(eposri)]T[ai]T]

Tale che è l'asse di rotazione nello spazio del mondo, è il punto di rotazione nello spazio del mondo, e è la posizione dell'effettore finale nello spazio del mondo.arepos

Tuttavia, non capisco come possa funzionare quando le articolazioni hanno più di un DOF. Prendi il seguente esempio:

inserisci qui la descrizione dell'immagine

I sono il DOF rotazionale, è l'effettore finale, è l'obiettivo dell'effettore finale, , e sono i giunti.θegP1P2P3

Innanzitutto, se dovessi calcolare la matrice giacobina in base alla formula sopra per il diagramma, otterrò qualcosa del genere:

J=[((0,0,1)×e)x((0,0,1)×(eP1))x((0,0,1)×(eP2))x((0,0,1)×e)y((0,0,1)×(eP1))y((0,0,1)×(eP2))y((0,0,1)×e)z((0,0,1)×(eP1))z((0,0,1)×(eP2))z000000111]

Si presume che tutti gli assi di rotazione siano e che tutti abbiano un solo DOF rotazionale. Quindi, credo che ogni colonna sia per un DOF, in questo caso, il .(0,0,1)θ#

Ora, ecco il problema: cosa succede se tutte le articolazioni hanno 6 DOF completi? Dì ora, per ogni giunto, ho DOF rotazionali in tutti gli assi, , e , e anche DOF traslazionali in tutti gli assi, , e .θxθyθztxtytz

Per chiarire la mia domanda, supponiamo che se dovessi applicare "con forza" la formula sopra a tutti i DOF di tutte le articolazioni, allora probabilmente otterrò una matrice giacobina come questa:

inserisci qui la descrizione dell'immagine

(clicca per ingrandire)

Ma questo è incredibilmente strano perché tutte e 6 le colonne del DOF per ogni giunto ripetono la stessa cosa.

Come posso usare la stessa formula per costruire la matrice giacobina con tutti i DOF? Come sarebbe la matrice giacobina in questo caso?


In realtà, non sono sicuro che avrei dovuto pubblicare questa domanda qui, in matematica, in GamesDev o in fisica. Ho la sensazione di aver postato questa domanda nel posto sbagliato.
xeno,

Penso che il tuo errore sia che non hai cambiato a 'per ogni DOF, ecco perché sembrano tutti uguali.

Risposte:


11

Devo ammettere che non ho visto quella formula specifica molto spesso, ma la mia ipotesi sarebbe che in caso di più di un DOF, lo valuteresti per ogni giunto in ogni colonna e quindi (forse?) Moltiplichi quei risultati in ogni colonna.

Ma lasciatemi suggerire un approccio più semplice ai giacobini nel contesto di molti DOF arbitrari: in sostanza, il giacobino ti dice quanto si muove ogni articolazione, se sposti il ​​telaio dell'effettore finale in una direzione scelta arbitrariamente. Let sia la cinematica forward, dove θ = [ θ 1 , . . . , θ n ] sono i giunti, f pos è la parte posizionale della cinematica in avanti e f rot la parte rotazionale. Quindi puoi ottenere il giacobino differenziando la cinematica diretta rispetto alle variabili congiunte: f(θ)θ=[θ1,...,θn]fposfrot è il giacobino del tuo manipolatore. Inversione ti darebbe la cinematica inversa con rispetto dellevelocità. Può comunque essere utile, se si desidera sapere fino a che punto deve spostarsi ciascun giunto se si desidera spostare l'effettore finale di unapiccolaquantità diΔxin qualsiasi direzione (poiché a livello di posizione, si tratterebbe effettivamente di una linearizzazione): Δθ=J-1Δx

J=fθ=[fposθ1,fposθ2...,fposθnfrotθ1,frotθ2...,frotθn]
Δx
Δθ=J1Δx

Spero che questo aiuti.


Grazie per la risposta! Ciò significherebbe che dovrò calcolare i valori numericamente? In realtà, ho visto questo esempio analitico da graphics.cs.cmu.edu/nsp/course/15-464/Fall09/handouts/IK.pdf da Slide 19 e graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt su Slide 78. Dalle diapositive, sembra che non debba passare attraverso i metodi numerici. In situazioni in cui non ho le funzioni effettive da differenziare, posso usare questa formula. Ma il problema è quello che succede quando ho più DOF per ciascuna articolazione.
xeno,

Se capisco correttamente le diapositive, gestiresti il ​​caso di molti DOF (rotazionali) arbitrari determinando i vettori per ciascuno di quei giunti, dove P i è la posizione del giunto. Quindi, se avete, diciamo 46 articolazioni, otterreste davvero un giacobino con 46 colonne e 6 file (o 3, se trascurate l'orientamento dell'effettore finale). Per farla breve: puoi applicare quella formula per qualsiasi numero di articolazioni e non devi "combinarla" con altre articolazioni. (eiPi)Pi
Daniel Eberts,

Ma cosa succede se un'articolazione ha molti DOF come , θ y , θ z e DOF traslazionali come t x , t y , t z ? Ora, ogni articolazione ha 6 DOF. Dalla mia comprensione di come funziona la matrice giacobina per IK, le prime 6 colonne saranno le derivate dell'effettore finale rispetto ai 6 diversi DOF, e queste prime 6 colonne descriveranno il primo giunto. Le successive 6 colonne successive descriveranno il secondo giunto rispetto ai 6 DOF e così via. Uso dell'equazione ( e i - P i )θxθyθztxtytz(eiPi), significa che le 6 colonne di ogni giunto vengono automaticamente impacchettate in una colonna?
xeno,

3
Ah, capisco. No, in tal caso, la formula non funzionava perché era progettata per giunti rotazionali con un asse di rotazione. Se si desidera trattare, ad esempio, articolazioni sferiche, è necessario disporre di una formula diversa che tratti quel tipo specifico di articolazione oppure è necessaria una forma chiusa della cinematica anteriore del robot. Se ce l'hai, puoi differenziarlo contro le articolazioni e ottenere il giacobino. θ
Daniel Eberts,

Grazie! :) Solo curioso, però, la diapositiva 58 in graphics.ucsd.edu/courses/cse169_w05/CSE169_13.ppt suggerisce che è possibile usare la formula per giunti rotanti con 3 DOF? Ciò significa che se un giunto non ha DOF traslazionali e ha solo 3 DOF rotazionali, è ancora possibile? Anche se non sono sicuro del motivo per cui ci vuole per moltiplicarsi con varie rotazioni per ottenere i diversi DOF. (1,0,0,0)
xeno,

2

La formula per un giunto 6 dof presuppone che tutti e 6 i giunti abbiano l'asse nel telaio del mondo e che tutti i giunti siano rotanti. Poiché le 6 articolazioni sono quindi identiche, anche le loro colonne nel giacobino sono identiche.(0,0,1)

Ricominciare da capo, supponiamo che un giunto abbia un asse attraversando un punto r . Sia e la posizione dell'effettore finale. Le coordinate di a , r ed e sono tutte indicate nel riquadro del mondo e vengono aggiornate mentre il robot viene spostato. L'asse a ha lunghezza 1 .arearea1

Se l'articolazione è revoluta, lo è la colonna del giacobino per l'articolazione

Jθ(a,r)=[a×(er)a]

Se l'articolazione è prismatica, la colonna è

Jp(a)=[a0]

Supponiamo di avere un giunto 6 dof che non è solo sferico ma può anche tradursi nello spazio. Supponiamo che gli assi dell'articolazione siano , una y e una z e che ciascuna articolazione rotante e prismatica condivida un asse, in modo che il giacobino per l'articolazione diventiaxayaz

J=[Jp(ax)Jp(ay)Jp(az)Jθ(ax,r)Jθ(ay,r)Jθ(az,r)]

Gli assi , un y , e un z dipendono dalla cinematica in avanti del robot. Per illustrare, lasciare che la trasformazione del k esimo giunto nel frame mondo essere trovatiaxayazk

Fk=i=1kLiTi

dove le trasformazioni sono costanti e le trasformazioni T i dipendono dalle variabili congiunte. Sia R c ( q ) e P c ( q ) le trasformazioni che ruotano e si traducono di q sull'asse delle coordinate denominato c (o x , y , o z ).LiTiRc(q)Pc(q)qcxyz

Δq=(Δpx,Δpy,Δpz,Δθx,Δθy,Δθz)iΔT=Px(Δpx)Py(Δpy)Pz(Δpz)Rx(Δθx)Ry(Δθy)Rz(Δθz)

TiTiΔT

axayaziFirFi


0

Per quanto ho capito la tua domanda che vuoi la matrice giacobina per l'articolazione 6 DOF.

Vorrei iniziare con le basi della robotica. Sei nella varia fase iniziale dell'apprendimento della robotica. È necessario comprendere che ogni articolazione rappresenta un singolo DOF o che sarebbe una giunzione rotativa o prismatica.

Per quanto riguarda l'articolazione sferica, può essere convertita in articolazione a 3 giri con tre assi reciprocamente perpendicolari. Quindi, ora hai semplificato l'articolazione sferica.

Passando alla matrice giacobina. Contiene 6 file. Le prime 3 righe rappresentano l'orientamento e le ultime 3 righe indicano la posizione con riferimento a un particolare sistema di coordinate. Ogni colonna nella matrice indica un singolo giunto. Quindi il numero di giunto / DOF ha lo stesso numero colonna che hai nella matrice giacobina.

Ecco la visione più chiara della tua domanda: un singolo giunto non soddisfa mai più di un DOF, perché complica il giunto e un controllo preciso non raggiungerà mai. Anche se consideriamo ipoteticamente un giunto con più di un DOF, è necessario convertire tale giunto in più giunti con 1 DOF ciascuno per semplificare la matematica e la soluzione.

Idealmente, 6 robot DOF con 6 giunti rotanti lavorano per la maggior parte sui problemi reali. Ma secondo la tua domanda hai considerato 6 robot articolari con ogni articolazione con 3 DOF che produce 18 robot DOF. Questo darà DOF ridondante (ovvero 18-6 = 12 DOF ridondante). Quindi, per raggiungere l'effettore finale del robot in qualsiasi posizione con qualsiasi orientamento, avrai infinite soluzioni diverse (soluzione significa rotazione di ciascun giunto). Quindi risolvi questo tipo di problema della cinematica inversa e avrai bisogno di un metodo iterativo di cinematica inversa.

Spero di aver risposto alla tua domanda in modo più chiaro. Per imparare la robotica di base puoi fare riferimento a John J. Craig - Introduzione alla meccanica e al controllo della robotica -Pearson Education, Inc.

Saluti, Manan Kalasariya

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.