Letteratura per la cinematica inversa: limiti comuni e oltre


8

Recentemente ho giocato con Inverse Kinematics e sono stato piuttosto colpito dai risultati. Ovviamente voglio andare oltre, ma non ho idea di dove cominciare. In particolare, vorrei introdurre limiti articolari (ad es. Per un giunto prismatico fino a che punto può muoversi, incernierare gli angoli tra i quali deve trovarsi, ecc. Ecc.).

Attualmente capisco come produrre la matrice giacobina per i vari tipi di giunti. Sono particolarmente alla ricerca di pubblicazioni (preferibilmente gratuite e preferibilmente di facile comprensione) su vari modi per attuare limiti comuni. Inoltre vorrei scoprire idee diverse su come usare la cinematica inversa.

Risposte:


4

Questa probabilmente non è la risposta migliore che posso dare ora, ma considera Cyclic Coordinate Descent (CCD) che funziona per matrici giacobine non invertibili. Un breve video qui .

La migliore fonte che copre CCD è la tesi di laurea specialistica di Chris Wellman. Per una recensione minima / breve, puoi leggere questa fonte che menziona la maggior parte dei metodi disponibili.

Un documento più matematico (per il ricercatore in te: D) è questo http://math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pd f.

Per il ricercatore hardcore: http://matwbn.icm.edu.pl/ksiazki/amc/amc19/amc1941.pdf

Questo sembra un metodo ibrido, anche se sono solo diapositive con nozioni per lo più familiari: http://cmp.felk.cvut.cz/~hlavac/TeachPresEn/55IntelligentRobotics/KjchoInverseKinematics.pdf Ancora una lettura da leggere: http: // www .cns.atr.jp / Erato / DB / PDF / tevatia-icra2000.pdf

Dato che hai detto che avresti preferito avere fonti gratuite, non menzionerò i pochi libri che si possono acquistare da Amazon per affrontare questo problema. Personalmente, sono soddisfatto del CCD. Per la massima precisione, preferisco l'Inverse Jacobian (dove so che il sistema produce una matrice invertibile grazie al 6 DOF di un impianto robotico).

Come si può usare IK? Principalmente quando si desidera animare un personaggio fornendo solo una posizione e un orientamento di un effettore finale di un determinato arto. (YouTube per esempi). Se vuoi iniziare una carriera nella robotica, IK è un must se hai a che fare con robot articolati. Nel mondo dei giochi, è indispensabile quando si utilizza la rilevazione del movimento di gesti umani tramite una videocamera (ad es. Http://www.youtube.com/watch?v=HSradQVj26E - il mio esempio semplicistico di un'interfaccia wiimote e un robot virtuale ccd braccio).


2

Articolo originale: panoramica della cinematica inversa

Consiglio vivamente il link sopra per una panoramica di alto livello della cinematica inversa. Va oltre il gergo IK, l'uso / le applicazioni IK e le descrizioni di alto livello della cinematica diretta e della cinematica inversa.

Quali sono gli usi di IK?

IK può essere usato per un braccio umanoide per raggiungere un oggetto / bersaglio, come abbiamo visto. IK può anche essere usato per il passo del piede, in modo tale da dire al piede dove fare un passo e IK capisce come configurare le articolazioni delle gambe. IK non viene solitamente utilizzato come animazione stessa (raggiungendo un oggetto), ma piuttosto come strumento di animazione. Pertanto, se si sta implementando un ciclo di camminata, è possibile posizionare alcuni dei fotogrammi chiave utilizzando lo strumento IK.

Un altro punto chiave su IK è che il tuo obiettivo / target non è limitato alla sola posizione: il tuo obiettivo può essere definito come una rotazione. Ad esempio, se i tuoi piedi devono ruotare in base a un terreno irregolare, il tuo obiettivo di rotazione IK può essere definito in base al normale del pavimento. In questo modo i tuoi piedi sono inclinati lungo il pavimento, come quando cammini su una pendenza. Nota che puoi anche usare IK per guardare la tua testa (o anche gli occhi) in una certa direzione. Se vuoi che la tua testa segua un oggetto, puoi usare IK per fare in modo che la testa segua l'oggetto intorno.

Come implementare i limiti comuni?

Di solito implemento limiti comuni con una semplice dichiarazione if. Ad esempio, questo funzionerebbe per i giunti rotanti.

if (limb.rotation >  45.0f) limb.rotation =  45.0f;
if (limb.rotation < -45.0f) limb.rotation = -45.0f;

È molto meno matematico del giacobino ed estremamente facile da implementare una volta che il giacobino lavora.

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.