La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Cinématique Inverse Nicolas Holzschuch Cours dOption Majeure 2

Présentations similaires


Présentation au sujet: "Cinématique Inverse Nicolas Holzschuch Cours dOption Majeure 2"— Transcription de la présentation:

1 Cinématique Inverse Nicolas Holzschuch Cours dOption Majeure 2

2 Plan du cours Cinématique inverse : –Pourquoi faire ? –Animation dun modèle Manipulation directe du modèle : –Sélection –Tirer une partie du modèle

3 Cinématique inverse Objet articulé –Liens, articulations –Objectif à atteindre

4 Cinématique inverse Donnée : position à atteindre (M) Sortie : valeurs des paramètres des articulations =vecteur des paramètres du modèle – …, t 1, t 2, …) Trouver =g(M) Deux rotations: calcul direct Trois rotations : calcul direct N articulations : ?

5 Deux rotations Solution directe : +démo

6 Trois rotations Encore une solution directe –trigonométrie Paramètre supplémentaire –Choix de la solution Limites des articulations

7 Cas général : n articulations On veut que f( =M =vecteur des paramètres du modèle – …, t 1, t 2, …) f( position de lextrémité du modèle (coord. 2D) M position de la cible (coordonnées 2D) Connaissant M, trouver X

8 Pourquoi cest difficile ? Problème non-linéaire Plusieurs solutions Pas toujours bien conditionné Limites des articulations

9 Non-unicité Deux solutions : Intervalle de solutions : Pas de solutions :

10 Pas toujours bien conditionné Petite différence sur M, grande différence sur : Changer ne rapproche pas de M :

11 Au fait, que vaut f ? Matrice de transformation Concaténation des matrices f ( )= R 1 ( 1 )T 1 R 2 ( 2 ) T 2 R 3 ( 3 ) T 3 …M 0 –M 0 position extrémité du bras avant rotations Non-linéaire à cause des rotations Calcul de f : cinématique directe

12 Racines dune fonction non-linéaire On veut trouver tel que : f( -M = 0 Linéarisation du problème : On part dune valeur de et de f( On ne connaît pas tel que f( On peut trouver qui sen rapproche et on itère

13 Linéarisation Séries de Taylor : Cas des fonctions à plusieurs variables : J Jacobien de f, forme linéaire H Hessien de f, forme quadratique

14 Jacobien Matrices des dérivées dune fonction à plusieurs variables :

15 Jacobien Variation de f( ) au premier ordre Approximation linéaire de f Matrice 3*n (ou 2*n en 2D) Calcul de J: –f ( )= R 1 ( 1 )T 1 R 2 ( 2 ) T 2 R 3 ( 3 ) T 3 …M 0

16 Linéarisation du problème f( -M = E, erreur actuelle Trouver, tel que J( ) = E : résolution système linéaire Approximation linéaire : petits déplacements –Petits déplacements dans la direction de Série de petits déplacements Recalculer J et E à chaque étape

17 Résolution itérative Petits pas par petits pas À chaque étape : –Choix entre plusieurs solutions –Prendre solution proche position actuelle Taille des pas : –Chercher taille optimale ? –Rotations : pour x < 2 degrés: sin(x) x cos(x) 1 –Garder pas < 2 degrés

18 Algorithme inverseKinematics() { start with previous ; E = target - computeEndPoint(); for(k=0; k eps; k++){ J = computeJacobian(); solve J = E; if (max( )>2) = 2 /max( ); ; E = target - computeEndPoint(); } }

19 La bonne question solve J = E; J nest pas inversible –En fait, J nest même pas carrée –J matrice 2*n :

20 Pseudo-Inverse J T J est carrée (n*n). Donc : J = E J T J = J T E =(J T J) -1 J T E =J + E J + =(J T J) -1 J T pseudo-inverse de J Pareil que linverse si J est carrée et inversible Propriétés : JJ + J = J, J + JJ + = J + J est m*n J + est n*m Comment calculer J + ? Surtout si J T J nest pas inversible

21 Singular Values Decomposition Toute matrice m*n peut sexprimer par SVD: –A=USV T U, V : matrices rectangulaires, colonnes orthogonales S matrice diagonale, singular values

22 Singular Values Decomposition S unique à lordre et au signe des valeurs près –Ordre canonique : s i positifs, ordre croissant –Rang de A : nombre de valeurs non-nulles –Déterminant : produit des valeurs U, V : colonnes orthogonales

23 Pseudo-Inverse avec SVD Calculer SVD: A = USV T Pseudo-inverse : A + =VS -1 U T Singulière : s i = 0 Mal conditionnée s i << s 0 –Prendre 0 au lieu de 1/s i pour ces valeurs –Test : s i < s 0

24 Résoudre AX=B avec SVD A + tronquée A + B donne la solution des moindres carrés : –Pas de solutions : X qui minimise ||AX-B|| 2 –Plusieurs solutions : ||X|| 2 minimal tel que AX=B –Stable numériquement, même pour matrices mal- conditionnées SVD : marteau-pilon –O(n 3 ) (lent) –Marche toujours, et assez rapide pour nous. –Difficile à implémenter, cf. Numerical Recipes in C Autres méthodes pour IK: CCD, J T,…

25 Et la cinématique inverse ? On veut résoudre X=f( )+J( ) – f( ) position de lextrémité du bras – i e colonne de J vient de larticulation i –f ( )= R 1 ( 1 )T 1 R 2 ( 2 ) T 2 R 3 ( 3 ) T 3 …M 0

26 Calcul du Jacobien Jacobien dune rotation : Jacobien dune translation –Vecteur dans la direction de translation Remarques : –Calcul en coordonnées du monde, pas du modèle –Degrés/radians !!! (dérivée *= /180 ?) –Un degré de liberté par articulation

27 Algorithme inverseKinematics() { Vector = getLinkParameters() ; Vector E = target - computeEndPoint() ; for(k=0; k eps; k++){ Matrix J = computeJacobian(); Matrix J + = pseudoInverse(J); Vector = J + E ; if (max( )>2) * = 2/max( ); ; putLinkParameters(); E = target - computeEndPoint(); } }

28 Inverse Kinematics, niveau II Limites aux articulations Choix de la configuration

29 Limites aux articulations Chaque articulation a un intervalle limité –Par ex. le coude : varie sur [0, ] –Élément important du réalisme Pour forcer les limites : –Tester si dépassement –Annuler paramètre i –Recalculer sans i –Vérifier les autres paramètres

30 Limites aux articulations Algorithme modifié : –Après avoir calculé, test pour ch. articulation: –Si ça sort de lintervalle : Annuler colonne i de J Revient à annuler paramètre i –Recalculer J + Moindres carrés : i 0 Pour plus de robustesse, forcer i =0 –Trouver, itérer

31 Choix de la configuration Si on a une solution homogène : –J = 0 Si solution de J = E, alors aussi : –J( ) = J +J = E + 0 = E Si on veut modifier, de C: –On projette C sur le noyau de J:

32 Choix de la configuration Valeurs souhaitée : pref Changement voulu C : –C i =w i ( i - pref ) i –Poids w i donne importance relative Algorithme modifié : –Construire C –Utiliser =J + E+(J + J-I)C –La projection de C sur le noyau ne nuit pas à la convergence –La solution penche vers pref

33 Algorithmes numériques Beaucoup dalgorithmes for la recherche de racines de systèmes non-linéaires –Celui-ci marche, il y en a dautres Recherche de racines lié à loptimisation –F( )=X minimise ||F( )-X|| 2 Nombreux problèmes doptimisation en animation Nombreux algorithmes doivent résoudre AX=B

34 Plan du cours Cinématique inverse : –Pourquoi faire ? –Animation dun modèle Manipulation directe du modèle : –Sélection –Tirer une partie du modèle

35 Manipulation du modèle Lutilisateur clique à la souris –Trouver quel objet il a sélectionné 2D : –Conversion coord. écran vers coord. monde 3D : –Droite reliant lœil au pixel –Trouver 1 er objet intersecté

36 Sélection Intersection droite/modèle –Primitive par primitive

37 Sélection : modèle hiérarchique Descente dans la hiérarchie, –test à chaque niveau Transformation de la droite en coords. locale Accélération possible avec boite englobante Trouver le point dintersection le plus proche

38 Sélection : outils OpenGL glGetDoublev(GL_PROJECTION_MATRIX, pmatrix); –Renvoie la matrice de projection glGetDoublev(GL_MODELVIEW_MATRIX, mmatrix); –Renvoie la matrice du modèle glGetIntegerv(GL_VIEWPORT, viewport); –Renvoie le viewport (x min, y min, width, height) Point cliqué (x,y) –En pixels –Convertir en coordonnées du monde : gluUnProject(x win, y win, z win, mmatrix, pmatrix, viewport, *x obj, *y obj, *z obj );

39 Sélection : outils OpenGL Problème : trouver z win –Inconnu –Point cliqué sur lécran z win = 0 Droite œil/M obj (donné par gluUnProject ) Intersection avec les objets de la scène

40 Sélection : outils OpenGL (avancé) Mode sélection : Lutilisateur clique sur lécran On restreint à une zone dintérêt précise –e.g. 5*5 pixels autour du point cliqué On retrace la scène –En mode sélection –Chaque primitive est nommée OpenGL renvoie les noms des primitives

41 OpenGL : mode sélection Restreindre à une zone dintérêt précise : gluPickMatrix(x, y, delX, delY, viewport); Appeler avant gluPerspective(…); Mode sélection : –Créer un buffer pour stocker les noms des objets: glSelectBuffer(size, buffer); –Passer en mode sélection : glRenderMode(GL_SELECT);

42 OpenGL : mode sélection En mode sélection : –Nommer les primitives : glInitNames(); glLoadName(int); –Tracer les primitives –Également : glPushName(int); glPopName(); –Repasser en mode normal : numHits = glRenderMode(GL_RENDER); buffer contient les noms des primitives tracées

43 OpenGL : mode sélection glGetIntegerv(GL_VIEWPORT, viewport); gluPickMatrix(x, y, 5, 5, viewport); gluPerspective(…); glSelectBuffer(100, buffer); glRenderMode(GL_SELECT); glInitNames(); drawNamedObjects(); numHits = glRenderMode(GL_RENDER); if (numHits > 1) { glGetDoublev(GL_PROJECTION_MATRIX, pmatrix); glGetDoublev(GL_MODELVIEW_MATRIX, mmatrix); gluUnProject(x,y, 0, mmatrix, pmatrix, viewport, objx, objy, objz); /* calculer points dintersection pour ch. objet */ /* garder objet avec intersection la plus proche */ }

44 Mode sélection Facile à implémenter Pas forcément le plus rapide Peut servir à dautres choses : –Objets visibles dun point –Pré-sélection dobjets dans lespace –Prévision de collisions

45 Faire glisser Vecteur donnée en coordonnées pixel –Traduire en coordonnées monde En 3D, déplacement parallèle au plan écran Mettre à jour position objet sélectionné

46 Plan du cours Cinématique inverse : –Pourquoi faire ? –Animation dun modèle Manipulation directe du modèle : –Sélection –Tirer une partie du modèle

47 Inverse Kinematics, niveau III Autres méthodes : –Transposée du Jacobien –Cyclic Coordinate Descent

48 Transposée du Jacobien Au lieu du pseudo-inverse, utiliser le Jacobien : –Au lieu de : += J + ( )dx –On prend : += J T ( )dx Pratique : –Pas dinversion –Pas de singularités Mais pourquoi ça marche ?

49 Travaux virtuels Déplacement infinitésimaux –W= force*distance –W=moment*angle

50 Transposée du Jacobien Distance à lobjectif = force qui tire lextrémité Remplacer système non-linéaire par système dynamique –Lois de la dynamique Équivalent à steepest descent algorithm

51 Transposée du Jacobien Avantages : –Pas dinversion (numériquement moins cher) –Pas de singularités Inconvénients : –Convergence plus lente –J + donnait solution avec norme minimale –Ici pas le cas : Éléments éloignés ont influence plus grande Problèmes déchelle

52 Cyclic Coordinate Descent Problème multi-dimensionnel compliqué Résoudre une série de problèmes 1D Pour chaque articulation : –Trouver valeur du paramètre qui se rapproche le plus de la solution –Solution analytique Itérer

53 Cyclic Coordinate Descent Avantages : –Facile à implémenter –Efficace (souvent) –Numériquement pas cher Inconvénients : –Mouvements peu naturels –Ne trouve pas forcément la solution optimale Limiter les pas à chaque étape Mais convergence plus lente


Télécharger ppt "Cinématique Inverse Nicolas Holzschuch Cours dOption Majeure 2"

Présentations similaires


Annonces Google