Domanda

che sto cercando di fare cinematica inversa per una catena di serie di un numero arbitrario di collegamenti.

Nel seguente carta , ho trovato un esempio per come calcolare la matrice jacobiana.

Entry (i, j) = v[j] * (s[i] - p[j])

dove:

  

v[j] è il versore dell'asse   di rotazione per j congiunto

     

s[i] è la posizione (int mondo   coordinate?) di I congiunta      

p[j] è la posizione (nel mondo   coordinate?) di j congiunta

Il giornale dice che questo funziona se j è un giunto di rotazione con un solo grado di libertà. Ma le mie articolazioni di rotazione non hanno vincoli sulla loro rotazione. Che formula faccio allora voglio? (O sono forse equivoco il termine "grado di libertà"?)

È stato utile?

Soluzione

Questa domanda è vecchio, ma io rispondere in ogni caso, in quanto è una cosa che ho pensato, ma mai veramente ottenuto intorno ad implementare.

giunti rotazionali senza vincoli sono chiamati snodi sferici o giunti sferici; hanno 3 gradi di libertà. È possibile utilizzare la formula nel tutorial per giunti sferici Inoltre, se si parametrizzare ogni giunto sferico in termini di 3 rotazionali (revoluti) articolazioni di un grado di libertà ciascuna.

Ad esempio: Let N essere il numero di giunti sferici. Supponiamo che ogni comune ha un T_local[i] trasformazione locale e una trasformazione mondiale

T_world[i] = T_local[0] * ... * T_local[i]

Let R_world[i][k], k = 0, 1, 2, essere il k- th colonna della matrice di rotazione di T_world[i]. Definire gli assi 3 * N comuni quali

v[3 * j + 0] = R_world[i][0]
v[3 * j + 1] = R_world[i][1]
v[3 * j + 2] = R_world[i][2]

Calcola il J Jacobiana per alcuni end-effector s[i], utilizzando la formula del tutorial. Tutte le coordinate sono nel telaio mondo.

Usando per esempio il metodo di pseudo-inversa dà una dq spostamento che muove l'effettore finale in una data direzione dx.

La lunghezza del dq è 3 * N. Definire

R_dq[j] = 
    R_x[dq[3 * j + 0]] *
    R_y[dq[3 * j + 1]] *
    R_z[dq[3 * j + 2]]

per j = 0, 1, ..., N-1, dove R_x, R_y, R_z sono le matrici di trasformazione per rotazione attorno x-, y- e z assi.

Aggiorna le trasformazioni locali:

T_local[j] := T_local[j] * R_dq[j]

e ripetere dalla parte superiore per spostare l'end-effector in altre direzioni dx.

Altri suggerimenti

Vorrei proporre un approccio più semplice alla Jacobiani nel contesto arbitrarie molti gradi di libertà: Fondamentalmente, il Jacobiano ti dice, fino a che punto ciascuno si muove comuni, se si sposta il fotogramma finale effettore in qualche direzione scelto arbitrariamente. Sia f (?) sia la cinematica in avanti, dove ? = [?1, ..., ?n] sono le articolazioni. Poi si può ottenere il Jacobian differenziando la cinematica in avanti rispetto alle variabili comuni:

J ij = df i / dO j

è jacobiano del manipolatore. Inversione che darebbe la cinematica inversa rispetto alla velocità. Si può ancora essere utile, però, se volete sapere quanto ogni comune deve muoversi se si desidera spostare il vostro attuatore di estremità da qualche piccola quantità Ax in qualsiasi direzione (perché a livello di posizione, questo sarebbe effettivamente essere una linearizzazione): ?? = J -1 Ax
Spero che questo aiuti.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top