Commande cartésienne d`un robot non instrumenté par

Transcription

Commande cartésienne d`un robot non instrumenté par
LASMEA
UMR 6602 du CNRS
Université Blaise Pascal de Clermont-Ferrand
Rapport intermédiaire de Contrat
GIE- INTRA
Commande cartésienne d’un robot non instrumenté
par Asservissement visuel
*******
Participants au projet :
LASMEA
Philippe Martinet (Pr)
Elèves Ingénieurs IFMA
Jean-Baptiste LEVEQUE
[email protected], Tel : 04.73.40.76.53
Nicolas Andreff (MCF)
Julien Clément
[email protected], Tel : 04.73.28.80.66
Youcef Mezouar (MCF)
Laurent Caekebeke
[email protected], Tel : 04.73.40.72.50
Date : 8 Mars 2004
Version 1.0
Signature : P. Martinet
Rapport CEA Centaure
Sommaire
I - Introduction : cadre de l’étude de faisabilité
II - Modélisation et environnement d’évaluation
III - Estimation des variables articulaires
IV - Commande cartésienne
V - Positionnement par asservissement visuel
VI - Intégration
VII - Conclusion, perspectives
Annexes
LASMEA UMR 6602 du CNRS
2
I. Introduction : cadre de l’étude de faisabilité
A. Contexte
Le GIE INTRA (CEA, COGEMA, EDF) dispose de robots d’intervention en milieu hostile
nommés Centaure. Conçu il y a vingt ans, ce type de robot est dépourvu de capteurs
articulaires. Pour le piloter, l’utilisateur dispose seulement d’une commande analogique pour
chacune des sept articulations et du retour visuel fourni par deux caméras embarquées.
Sur une proposition du LASMEA, une étude est réalisée. L’objet de cette étude est de vérifier
la faisabilité d’une commande cartésienne du robot par asservissement visuel et de définir les
éléments permettant l’intégration de cette commande au robot.
Ce rapport intermédiaire présente le travail réalisé jusqu’au 30/07/2003, concernant l’étude de
faisabilité.
B. Présentation du robot Centaure
Au cours de l’étude, on doit garder à l’esprit quelques caractéristiques :
Evolution en environnement hostile
Ce robot intervient en milieu hostile. Il occupe un encombrement relativement réduit et
dispose d’éléments lui permettant d’être autonome (batteries, émetteur, récepteur, treuil,
caméras…), doit pouvoir saisir divers éléments.
Conception ancienne
Conçu il y a vingt ans, le Centaure a des caractéristiques particulières :
•
Commande analogique des articulations
Chaque articulation est commandée en courant de manière analogique par un joystick situé
sur le pupitre de commande. Un correcteur électronique tente de compenser le différentiel
présent au niveau des deux dernières articulations. Il en résulte un grand inconfort de
manipulation du robot, l’opérateur devant interpoler lui-même les mouvements articulaires
nécessaire à un mouvement cartésien. On a jusque là recours à des marquages de couleur sur
chaque articulation pour atteindre des positions prédéfinies.
•
Pas de capteurs proprioceptifs, mais deux caméras
Pour retour d’information, l’opérateur dispose seulement de l’image renvoyée par deux
caméras, l’une située sur la base mobile du robot, l’autre à proximité de la pince sur le bras
LASMEA UMR 6602 du CNRS
3
robot. Souvent, une partie plus ou moins importante du robot n’est pas visible.
Le grand inconfort d’utilisation, conjugué à la lenteur du robot, se traduit ainsi : il lui faut
deux heures pour franchir un sas. Sachant que l’autonomie moyenne des batteries est de six
heures, cela ne laisse plus que deux heures d’intervention effective (et durant lesquelles le
robot est tout aussi difficile à manipuler).
C. Cahier des charges de l’étude de faisabilité
Titre de l’étude :Commande cartésienne d'un bras manipulateur mobile
Il s'agit de la commande
- X,Y, Z en position
- R P Y en orientation
d'un bras manipulateur (CENTAURE) monté sur une plate-forme mobile. La caractéristique
de ce système est qu'il est dépourvu de capteurs proprioceptifs (codeurs moteurs).
Nous proposons de mener l'étude en trois phases :
¾ phase 1 : étude de faisabilité de la commande cartésienne
¾ phase 2 : étude de faisabilité de la commande pour la prise automatique d'outils
¾ phase 3 : validation réelle et intégration sur le robot réel
Ce projet s’appuie sur le savoir faire du LASMEA dans les thématiques de l’asservissement
visuel, l’identification et la commande des robots par vision, et la localisation par vision
monoculaire.
Phase 1 :
Etude de faisabilité théorique de la commande cartésienne du bras
manipulateur
Cette phase essentiellement théorique sera de rechercher un principe de commande d'un
robot manipulateur à 6 ddl par vision sans ajout de capteur de position articulaire. Le robot
sera commandé en vitesse articulaire au moyen d'une commande référencée vision (3D, 2D,
ou mixte). La mise en oeuvre de cette commande nécessitera l'observation de l'effecteur afin
de faire la commande en position/orientation, mais aussi l'observation des différents organes
du robot afin d'estimer en ligne la matrice Jacobienne du robot. Cette étude sera validée selon
le protocole suivant en utilisant MATLAB/SIMULINK :
¾ Etude d'un robot simple à 3 ddl style 3R plan (commande en position seulement)
¾ Etude de la commande en position sur un robot 6ddl simple (style cartésien avec
une rotule d'axes concourants)
¾ Etude de la commande en position sur le bras à 6ddl considéré (les modèles
LASMEA UMR 6602 du CNRS
4
géométriques et cinématiques seront fournis)
L'instrumentation du robot réel sera définie au moyen de cette étude de faisabilité.
Eventuellement, plusieurs solutions pourront être produites.
Phase 2 :
Etude de faisabilité théorique de la commande pour une prise automatique
d'outils
Cette étude suivra celle décrite en phase 1. Elle sera également essentiellement théorique et
aura pour objectif de rechercher un principe de commande référencée vision pour la prise
automatique d'outils. La principale action à mener sera de traduire en langage commande
référencée capteur (vision) ce que sera la tâche de prise automatique d'outils : une seule tâche,
enchaînement de plusieurs tâches, combien de degrés de liberté nécessaires, ... Elle consistera
également à définir les algorithmes de vision ainsi que l'instrumentation associés nécessaires à
la réalisation de la tâche. Cette étude sera validée selon le protocole suivant en utilisant
MATLAB/SIMULINK :
¾ Etude de la commande en position sur un robot 6ddl simple (style cartésien avec
une rotule d'axes concourants)
¾ Etude de la commande en position sur le bras à 6ddl considéré (les modèles
géométriques et cinématiques seront fournis)
L'instrumentation du robot réel sera défini au moyen de cette étude de faisabilité.
Eventuellement, plusieurs solutions pourront être produites.
Phase 3 :
Intégration et validation sur le robot réel (pourra être ajustée en fonction
des phases précédentes)
L'objectif de cette troisième action est la réalisation expérimentale des résultats théoriques
exhibés en phases 1 et 2. La phase 3 comportera 3 aspects :
¾ Développement et validation des modèles du robot CENTAURE pour la
commande (MATLAB/Simulink)
¾ Validation des phases 1 et 2 sur robot du LASMEA (à Clermont-Ferrand) ou
IFMA
¾ Validation des phases 1 et 2 sur le robot CENTAURE
Durant cette phase, la mise en oeuvre d'un système de vision et commande temps réel
(prérequis à l'intégration logicielle : commande en vitesse articulaire du robot disponible) sera
faite. Une partie du travail à mener dans cette phase pourra être accomplie en parallèle avec
les phases 1 et 2. Néanmoins, il faut prévoir qu'elle se termine après ces dernières.
Organisation du projet :
Moyens humains disponibles sur ce projet :
¾
¾
3 élèves ingénieurs IFMA
Mcf Nicolas Andreff (Commande référencée capteur, identification géométrique de robot par
LASMEA UMR 6602 du CNRS
5
vision)
¾ Pr Philippe Martinet (Commande référencée capteur, intégration)
¾ Mcf Youcef Mezouar (Commande référencée capteur)
Délivrables et calendrier de réalisation
T0 : début du projet
T0+ 2 mois : Présentation de solutions phase 1 et 2
T0+ 4 mois : Rapport intermédiaire de contrat
T0+ 9 mois : Rapport final de contrat
LASMEA UMR 6602 du CNRS
6
II. Modélisation et environnement d’évaluation
La commande des robots nécessite le calcul de certains modèles mathématiques tels que les modèles de
transformation entre l’espace opérationnel et l’espace articulaire.
La modélisation des robots de façon systématique et automatique exige une méthode adéquate pour la
description de leur morphologie. Plusieurs méthode et notations ont été proposées, la plus répandue est celle de
Denavit-Hartenberg. Cette méthode, bien adaptée pour des structures ouvertes simples, présente des ambiguïtés
lorsqu’elle est adaptée sur des robots ayant des structures fermées ou arborescentes. Khalil et Kleinfinger ont
proposé une notation qui permet la description homogène des architectures ouvertes simples et complexes de
systèmes mécaniques articulés. La modélisation du Centaure a été réalisée avec cette méthode.
A. Description de la structure géométrique des robots
Ce paragraphe introduit les notations utilisées pour décrire la structure géométrique des robots et qui sont par
conséquent à la base de la mise en équation de ces derniers.
i.
Notations et règles générales
La méthode est basée sur les règles et conventions suivantes :
- la variable de l’articulation j est notée qj,
- le corps j est noté Cj
- les corps sont supposés parfaitement rigides. Ils sont connectés par des articulations considérées comme
idéales (pas de jeu mécanique, pas d’élasticité), soit rotoïdes, soit prismatiques
- le repère Rj est lié au corps Cj
- l’axe zj du repère Rj est porté par l’axe de l’articulation j
- les paramètres qui permettent de définir Rj par rapport au repère antécédent sont indicés j
ii.
Description des robots à chaîne ouverte simple
Le système est composé de n+1 corps, notés C0,…,Cn, et de n articulations. Le corps C0 désigne la base du robot
et le corps Cn le corps qui porte l’organe terminal. L’articulation j connecte le corps Cj au corps Cj-1.
Figure 1: robot à chaîne ouverte
Le repère Rj, fixé au corps Cj, est défini de telle sorte que :
- l’axe zj est porté par l’axe de l’articulation j
- l’axe xj est porté par la perpendiculaire commune aux axes zj et zj+1. Si les axes zj et zj+1 sont parallèles
ou colinéaires, le choix de xj n’est pas unique : des considérations de symétrie ou de simplicité
permettent alors un choix rationnel.
Le passage de Rj-1 à Rj s’exprime en fonction des quatre paramètres suivants :
LASMEA UMR 6602 du CNRS
7
-
-
αj : angle entre les axes zj-1 et zj, correspondant à une rotation autour de xj-1
dj : distance entre zj-1 et zj le long de xj-1
θj : angle entre les axes xj-1 et xj, correspondant à une rotation autour de zj
rj : distance entre xj-1 et xj, le long de zj
xk
θk
zk
rk
zk-1
xk-1
αk
d
Figure 2: passage de Rj-1 à Rj
La variable articulaire qj associée à la jième articulation est soit θj, soit rj, selon que cette articulation est de type
rotoïde ou prismatique ce qui se traduit par la relation :
qj= (1-σj) θj + σj rj
avec :
σj=0 si l’articulation j est rotoïde
σj=1 si l’articulation j est prismatique
La matrice de transformation définissant le repère Rj dans le repère Rj-1 est donnée par :
j-1
Tj = Rot(x,αj) Trans(x,dj) Rot(z,θj) Trans(z,rj)
=
Cθj
-Sθj
0
dj
CαjSθj
CαjCθj
-Sαj -rjSαj
SαjSθj
SαjCθj
Cαj
rjCαj
avec la convention Cθj=cos(θj) et Sθj=sin(θj)
Remarques
- pour la définition du repère de référence R0, le choix le plus simple consiste à prendre R0 confondu
avec le repère R1 quand q1=0. Ce choix n’est pas obligatoire, mais il annule les paramètres α1, d1 et
donne q1=1
- cette méthode de description fixe la configuration zéro du robot telle que q=0. on peut cependant
choisir une autre configuration zéro quelconque en procédant au changement de variable suivant :
qc = q – q0
iii.
Le modèle géométrique direct du robot Centaure
LASMEA UMR 6602 du CNRS
8
On s’intéresse ici au bras robot Romain qui est monté sur la base.
Des plans et vues d’ensemble nous ont été fournies par le CEA, ce qui nous a permit de modéliser le bras de la
façon suivante :
z4,z6
q6
X4, X5, X6
z5
q5
z0,z1
q4
q2
z2
D3
RL4
x0,x1,x2
q3
Z3
q1
x3
RL3
Articulation
de la base mobile
Figure 3: modélisation du Centaure
La première liaison (la plus basse sur le schéma) ne faisant pas partie du bras robotisé mais de la base n’est pas
prise en compte dans la modélisation
D’après la modélisation vu précédemment, nous avons les paramètres suivants :
j
σj
αj
dj
θj
rj
1
0
0
0
θ1
0
2
0
π/2
0
θ2
0
3
0
0
D3
θ3
RL3
4
0
-π/2
0
θ4
RL4
5
0
π/2
0
θ5
0
6
0
-π /2
0
θ6
0
LASMEA UMR 6602 du CNRS
9
Figure 4: paramètres de la modélisation
Avec D3 = 300 mm, RL3 = 84.5 mm et RL4 = 350 mm
Ceci nous donne pour les passages entre les différents repères :
Cθ1
Sθ1
0
1
2
3
4
5
T1 =
-Sθ1
0
0
Cθ1 0
0
0
0
1
0
0
0
0
1
Cθ2
-Sθ2
0
0
0
0
-1
0
Sθ2
Cθ2
0
0
Cθ3
-Sθ3
0 D3
Sθ3
Cθ3
0
0
0
0
1
RL3
T2 =
T3 =
T4 =
T5 =
T6 =
Cθ4
-Sθ4
0
0
0
0
1
RL4
-Cθ4
0
0
-Sθ4
Cθ5
-Sθ5
0
0
0
0
-1
0
Sθ5
Cθ5
0
0
Cθ6
-Sθ6
0
0
0
0
1
0
-Cθ6
0
0
-Sθ6
LASMEA UMR 6602 du CNRS
10
avec la convention Cθ1=cos(θ1) et Sθ1=sin(θ1)
Et nous avons 0T6 = 0T1 1T2 2T3 3T4 4T5 5T6
Cela nous donne le modèle géométrique direct (MGD) du Centaure, la position et l’orientation du repère attaché
à l’organe terminal par rapport au repère de base.
L’expression littérale du MGD peut être obtenue à l’aide de Maple.
S’agissant de X= f(q) MGD du robot Centaure, il ne faut pas oublier la définition de X.
Si on prend par exemple
-
X=(XYZ RPY)T, c'est-à-dire la position cartésienne et les angles roulis tangages lacet,
-
Le repère Atelier RA=R0
-
Le repère Outil Routil=R6
Alors on obtient :
X= Px
Y= Py
Z= Pz
R= Atan2(sy,sx) à Pi près (R= Atan2(-sy,-sx)+ Pi)
P= Atan2(-sz, cos(R).sx+sin(R).sy)
Y= Atan2(sin(R).ax-cos(R).ay, -sin(R).nx+cos(R).ny)
où s=(sx,sy,sz)T, n=(nx,ny,nz)T et a=(ax,ay,az)T sont les cosinus directeurs de la matrice 0T6 et P=(Px,Py,Pz)T
représente la matrice de position de 0T6 = 0TOutil.
Dans le cas où sx=sy =0, il y a singularité de représentation.
LASMEA UMR 6602 du CNRS
11
iv.
Mise en place du MGD du robot Centaure sous Matlab
Le programme donnant le modèle géométrique direct du robot a été obtenu en deux étapes :
Une première étape consistait en l’obtention d’un modèle générique pour un robot à six degrés de liberté, ce
programme (mgdDHsym en annexe) utilise en entrée le fichier Centaure (voir annexes) décrivant le robot
(notamment les paramètres de Khalil-Kleinfinger) et les valeurs articulaires. Avec le calcul symbolique, il est
possible de rentrer symboliquement les variables articulaires et d’obtenir en sortie le modèle géométrique direct
sous forme symbolique et totalement paramétré.
Grâce à la première étape, nous obtenons un modèle du robot Centaure utilisant tous les paramètres de KhalilKleinfinger ; la seconde étape consiste à générer un nouveau programme à partir du premier et n’utilisant que les
variables « utiles » de la modélisation, c’est à dire les variables articulaires, afin de réduire les temps de calcul.
Ce modèle est débarrassé des nombreuses variables qui n’évoluent que si l’on change la géométrie du robot. Le
programme ainsi réalisé est présent en annexe : mgdDHnum.
Le programme Matlab réalisant le modèle géométrique direct utilise un autre programme appelé TDH qui
calcule les valeurs des matrices de transfert entre les différents éléments du robot.
Le programme visuDH permet de visualiser grossièrement la position du robot Centaure dans différentes
positions articulaires. Le repère attaché à la base est représenté en magenta avec l’axe z en bleu et le repère final
est représenté en vert toujours avec l’axe z en bleu.
Figure 5: représentation du robot Centaure pour deux configurations articulaires
LASMEA UMR 6602 du CNRS
12
B. Le modèle différentiel direct
Le modèle différentiel direct d’un robot manipulateur décrit les variations élémentaires des coordonnées
opérationnelles en fonction des variables élémentaires des coordonnées articulaires. Il est noté :
dX = J(q) dq
où J(q) désigne la matrice jacobienne de dimension (m × n) du mécanisme, égale à ∂X/∂q et fonction de la
configuration articulaire q.
L’intérêt d’une telle description, fréquemment utilisée en robotique, est multiple :
Elle est à la base du modèle différentiel inverse, permettant de calculer de façon itérative les variables
articulaires q connaissant les coordonnées opérationnelles X. A noter que la solution obtenue est locale et dépend
de la position initiale.
Si, au lieu de calculer les différentielle, on calcule les dérivées par rapport au temps des coordonnées
opérationnelles et des coordonnées articulaires, on obtient le modèle cinématique direct qui exprime les vitesses
opérationnelles en fonction des vitesses articulaires :
& = J (q) q&
Χ
En statique, on utilise le jacobien pour établir la relation liant les efforts exercés sur l’organe terminal aux forces
et couples des actionneurs
Elle facilite le calcul des singularités et de la dimension de l’espace opérationnel accessible du robot.
i.
Le jacobien de base
Le calcul de la matrice jacobienne peut se faire de plusieurs façons. Celle qui semble la plus naturelle consiste à
déduire ses éléments (i,j) de ceux du modèle géométrique direct X = f(q) à partir de la relation suivante :
J ij =
∂f i (q)
∂q j
i =1,…,m ; j = 1,…,n
Cette procédure fait dépendre J(q) des coordonnées opérationnelles X choisies pour décrire la situation
Nous nous intéresserons ici plutôt à une méthode de calcul direct, basée sur le calcul du jacobien entre les
vecteurs de translation et de rotation différentiels (dn,δn) du repère Rn et les différentielles des coordonnées
articulaires dq (l’expression du jacobien est identique si l’on considère le jacobien entre les vecteurs vitesses de
translation et de rotation Vn et ωn du repère Rn et les vitesses articulaires). Le jacobien correspondant à une
représentation quelconque des coordonnées opérationnelles X peut être déduit de ce jacobien, appelé jacobien de
base :
dn
δn
LASMEA UMR 6602 du CNRS
= Jn dq
13
On exprime en général dn et δn soit dans le repère Rn, soit dans le repère R0. la matrice jacobienne
correspondante est notée nJn ou 0Jn respectivement.
ii.
Calcul de la matrice jacobienne de base
Nous nous intéresserons seulement au cas d’une chaîne ouverte simple (c’est le cas du robot manipulateur
Romain).
Considérons la kième articulation d’une chaîne articulée et, selon les conventions choisies, soit ak le vecteur
unitaire porté par l’axe zk de l’articulation. Une variation infinitésimale dqk de la coordonnée articulaire qk
provoque sur le repère terminal Rn du manipulateur des variations infinitésimales de position dk,n et d’orientation
δk,n.
Deux cas se présentent :
L’articulation est prismatique
dk,n=ak dqk
δk,n= 0
figure 6: cas d'une articulation prismatique
l’articulation est rotoïde
dk,n=ak dqk × Lk,n = (ak × Ln,k) dqk
δk,n= ak dqk
LASMEA UMR 6602 du CNRS
14
Figure 7: cas d'une articulation rotoïde
Le terme Lk,n désignant le vecteur reliant les origines des repères Rk et Rn .
En appliquant le théorème de composition des vitesses, on montre que l’on peut additionner les contributions
élémentaires de chaque articulation pour déterminer les vecteurs de translation et de rotation différentielles du
repère terminal par la relation suivante :
dk,n=∑[σk ak + (1-σk) (ak × Ln,k) ]dqk
δk,n= ∑[(1-σk)ak] dqk
En mettant ce système sous forme matricielle et en l’identifiant à la relation :
dn
δn
= Jn dq
on obtient :
dn
σ1a1 + (1-σ1)(a1×L1,n) … σnan + (1-σn)(an×Ln,n)
=
δn
(1-σ1)a1
...
(1-σn)an
dq1
…
…
= Jn dq
dqn
Jn est appelé jacobien vectoriel du robot manipulateur.
Si l’on projette les éléments du jacobien vectoriel Jn dans un repère quelconque Ri, on obtient un jacobien
scalaire iJn du même type que celui défini par la relation :
dn
δn
= Jn dq
LASMEA UMR 6602 du CNRS
15
Cette opération consiste à exprimer les vecteurs de la matrice vectorielle dans le repère Ri considéré.
Après développement, on obtient l’expression générale de la kième colonne njk de nJn . Ses éléments sont fonction
des éléments de la matrice kTn, résultat intermédiaire obtenu lors du calcul du modèle géométrique direct.
k rotoïde
-
k prismatique
sx
Py +
nx
ax
sy
ny
Px
ay
sz
nz
az
nj,k
sz
0
nz
0
az
0
Les éléments s,n,a,P appartiennent à la matrice kTn
Pour trouver une projection dans un autre repère, le repère Ri par exemple, il suffit d’utiliser la relation :
i
An
i
Jn =
0
0
n
Jn
i
An
avec iAn matrice des cosinus directeurs de iTn
iii.
Mise en place du modèle cinématique direct sous Matlab
Le modèle cinématique réalisé sous Matlab a été réalisé en trois grandes étapes :
Réalisation d’un modèle cinématique direct générique obtenu à partir des formules générales développées dans
la section précédente. Ce fichier prend en compte tous les paramètres du robot afin de répercuter les
modifications le plus rapidement possible. Ce modèle demande un temps de calcul relativement important car il
appelle de nombreuses variables contenues dans le fichier de description du robot. L’option de calcul
symbolique de Matlab est nécessaire au fonctionnement de ce programme. En effet, l’intérêt principal de ce
dernier est la génération de la matrice jacobienne 6J6 du robot sous sa forme symbolique, c’est à dire l’obtention
littérale des différents composants de la matrice. Ce programme (JacobtotalsymDH) peut être consulté en annexe
(son expression complexe n’offre que peu d’intérêt).
Génération à partir du premier programme d’un nouveau fichier réalisant le calcul de la jacobienne du robot
Centaure en fonction de son paramétrage. Ce dernier renvoie une réponse numérique ; il réalise l’affectation des
LASMEA UMR 6602 du CNRS
16
valeurs aux variables.
Elaboration d’un programme spécifique pour le robot Centaure afin de réduire le temps de calculs nécessaires.
C’est une version allégée du précédent, seuls les paramètres non nuls interviennent dans le calcul (voir en
annexe, JacobtotalnumDH).
Rappel : selon la définition de X, on a :
⎛Ω
J X (q ) = ⎜⎜ XYZ
⎝ O3
O3 ⎞ ⎛ 0 R6
⎟⋅⎜
Ω RPY ⎟⎠ ⎜⎝ O3
O3 ⎞ 6
⎟⋅ J 6
R6 ⎟⎠
0
Les sous-blocs de la première matrice dépendent totalement de la convention prise pour X.
LASMEA UMR 6602 du CNRS
17
C. Le modèle différentiel inverse
i.
Utilité du modèle différentiel inverse
L’objectif du modèle différentiel inverse est de calculer, à partir d’une configuration q donnée, la différentielle
articulaire dq à commander pour satisfaire une différentielle des coordonnées opérationnelles dX imposée. Cette
définition est analogue à celle du modèle cinématique inverse : ce dernier permet de déterminer les vitesses
articulaires qui assurent au repère terminal une vitesse spécifiée.
Deux classes de méthodes peuvent être mises en œuvre pour obtenir le modèle différentiel inverse.
Celles qui procèdent par dérivation des modèles géométriques inverses. Il s’agit de méthodes analytiques qui ont
pour avantage de donner tous les modèles différentiels inverses associés aux différents modèles géométriques
inverses mais, de part leur principe, elles exigent que le robot manipulateur considéré soit résoluble.
Celles plus générales, qui consistent à inverser le modèle différentiel direct en résolvant un système d’équations
linéaires. La mise en œuvre de ce type de méthodes peut être faite de façon analytique ou numérique :
La solution analytique a pour avantage de diminuer considérablement le nombre d’opérations, mais on doit
traiter séparément tous les cas singuliers
Les méthodes numériques sont plus générales, la plus répandue étant basée sur la notion de pseudo inverse : les
algorithmes traitent de façon unifiée les cas réguliers, singuliers et redondants. Elles nécessitent un temps de
calcul relativement important, ce qui les rend plus adaptées pour la simulation que pour la commande en ligne.
Nous avons ici opté pour une méthode numérique d’inversion du modèle différentiel direct en utilisant la notion
de pseudo inverse. Le modèle cinématique direct, obtenu comme nous avons vu précédemment, renvoie une
matrice de dimension six par six. Celle ci est alors inversée numériquement en utilisant la notion de pseudo
inverse.
ii.
Mise en place du modèle cinématique inverse sous Matlab
La mise en place sous Matlab a consisté en l’écriture d’un programme avec comme entrée une matrice et
utilisant la fonction de pseudo inverse svd (singular value decomposition) de Matlab. Ces programmes sont
présents en annexe sous les nom PINV_SVD et MCD_CENTAURE.
D. Environnement d’évaluation
i.
Présentation des environnements MATLAB/Simulink
Afin de faire du prototypage rapide de loi de commande par retour visuel, ainsi que la validation algorithmique
des principes et méthodes mise en jeu, nous avons choisi l’environnement MATLAB/Simulink.
Dans cette étude de faisabilité, nous retiendrons donc la démarche suivante : validation et évaluation des
LASMEA UMR 6602 du CNRS
18
méthodes et principes en prototypage rapide, et validation expérimentale sur le robot du LASMEA
(MOTOMAN) à 6 degrés de liberté. L’intégration finale est prévue d’être faite au CEA et avec le CEA après
transfert du système de vision commande qui devront être interconnecté (voir la partie intégration).
Matlab est un environnement de programmation permettant l’accès rapide à des bibliothèques (appelée
TOOLBOX : boîte à outils). Simulink permet de définir un problème en flot d’informations et de données dans
un schéma interconnecté : ainsi, lorsque l’on veut faire de la commande en boucle fermée le schéma bloc de
commande est saisie sous simulink. De la même manière, il existe déjà disponible des toolbox spécialisés pour
simulink. Pour plus d’informations sur Matlab/Simulink et les Toolbox se référer à http://www.mathworks.com .
Figure 8: Un exemple de schéma bloc développé sous Simulink
ii.
Un exemple de prototypage rapide pour l’asservissement
visuel : la Visual Servoing Toolbox
Dans la communauté Asservissement Visuel scientifique internationale, la communauté scientifique française est
une des plus actives (Voir exposé de François Chaumette aux JNRR03 disponible sur le site web : http://
http://wwwlasmea.univ-bpclermont.fr/jnrr03/index.html). Ainsi, au niveau européen un groupe d’intérêt, avec
pour thème principal « Visual Servoing », a été créé dans le cadre du réseau d’excellence EURON. Ce groupe
d’intérêt a organisé en 2002 un workshop international dans le cadre de IROS 2002, et une école d’été. Son site
web est le suivant : http://www.robot.uji.es/EURON/visualservoing/ . Dans le cadre de ce groupe d’intérêt, le
développement d’une « Visual Servoing Toolbox » est en cours : la version 1.0 sortira en 2004. L’ensemble des
travaux menés dans cette étude de faisabilité bénéficie des premiers résultats obtenus avec cette toolbox. Un
exemple de schéma d’asservissement visuel 2D est donné par le synoptique simulink suivant :
LASMEA UMR 6602 du CNRS
19
Figure 9 : exemple de schéma d’asservissement visuel 2D
iii.
Environnement d’évaluation retenu
Afin d’évaluer au mieux nos principes et méthodes nous utiliserons l’environnement suivant :
-
une fonction matlab permettant l’évaluation des variables articulaires (voir fichier : estim_theta.m).
Le protoype de la fonction est le suivant : [q_est] = estim_theta(data,fctMGD,fctMCD). Le
paragraphe III donnera les détails sur la méthode employée.
-
Schémas simulink permettant d’implanter des lois de commande particulières
Des modèles de robots différents : Motoman (robot du LASMEA), Centaure (Robot du CEA).
Seules la géométrie et la cinématique des deux robots seront prises en compte.
LASMEA UMR 6602 du CNRS
20
.
III. Estimation des variables articulaires
Afin de résoudre le problème de la commande cartésienne en boucle ouverte ou bien du positionnement du robot
par asservissement visuel le schéma classique nécessite le calcul de l’estimation de J
−1
(q) . Deux approches
principales peuvent être envisagées :
-
Estimation des variables articulaires
•
Estimation en ligne par observation de l’effecteur. Cette approche nécessite une
(ou plusieurs) caméra déportée(s), une mire, les modèles du robot, et un algorithme
de calcul de pose. C’est la méthode que nous avons retenue.
•
Estimation en ligne par observation de l’environnement. Cette variante nécessite
une caméra embarquée, les modèles du robot, et un algorithme de reconstruction
3D (avec ou sans mires dans l’environnement). Sans mires dans l’environnement,
ce problème est un réel problème de recherche en perception. Le fait de rajouter des
mires dans l’environnement de travail a été écarté durant les réunions
d’avancement. De plus, cela nécessite une intervention sur les sites où les robots
doivent être opérationnel.
-
Estimation des éléments de la jacobienne inverse
•
Estimation à l’équilibre (hors ligne). Cette approche nécessite une caméra
embarquée, un algorithme d’estimation paramétrique hors ligne et un algorithme
d’extraction
d’informations
2D
et/ou
3D
(avec
ou
sans
mires
dans
l’environnement). Le calcul s’effectue seulement à l’équilibre (les mesures et
l’estimation sont faites une fois pour toute à l’équilibre). Il est clair que pour la
boucle fermée (boucle d’asservissement visuel) cela peut ne pas poser de problèmes
(proche de l’équilibre), mais pour la commande cartésienne, la propagation des
erreurs risque d’être trop importante pour assurer un bon suivi d’une trajectoire
cartésienne.
•
Estimation en ligne. Cette approche nécessite une caméra embarquée, un
algorithme d’estimation paramétrique en ligne (avec un modèle d’évolution lent) à
partir d’informations 2D et/ou 3D (avec ou sans mires dans l’environnement) (les
mesures et l’estimation sont faites à chaque itération). Cette méthode peut être
intéressante dans la mesure où le modèle d’évolution retenu est fiable (valide) et
alimenter en mesures également pertinente. Une approche multi-capteurs est peutêtre une piste à creuser.
i.
Algorithme d’estimation en ligne des variables articulaires
Comme nous l’avons vu précédemment, il faut pallier à l’absence de capteur articulaire du robot Romain.
Nous allons ainsi utiliser une méthode itérative d’évaluation des variables articulaires utilisant le modèle
cinématique inverse du robot. En effet, le modèle cinématique inverse nous donne :
q& = J −1 (q ) X&
LASMEA UMR 6602 du CNRS
.
21
.
En assimilant q& à ∆q et X& à ∆X, on obtient le modèle variationnel valable dans nos conditions de
fonctionnement (robot relativement lent) :
∆q = J-1(q) ∆X
Il a donc fallu développer un algorithme afin de réaliser l’estimation des q de façon itérative.
La condition d’arrêt ou non de l’algorithme est la proximité de la position courante avec la position désirée (ces
coordonnées sont exprimées en coordonnées cartésiennes dans le repère de base).
Tant que C= ||0Xmesuré-0X(qcourant)|| > ε ; la valeur critère ε est fixé en fonction de la précision voulue
qcourant c’est la variable sur laquelle se fait l’itération, le qcourant initial est connu.
Calcul de 6J6 courant : comme nous l’avons vu précédemment, le calcul de la jacobienne nécessite l’entrée des
variables articulaires pour le calcul, les coordonnées articulaires de la première position sont des paramètres
d’entrée ; au cours des autres itérations, on utilise l’évaluation des variables articulaires obtenue à l’itération
précédente.
Calcul de 0J6 courant : les coordonnées cartésiennes sont exprimées dans le repère de base, il est donc nécessaire
d’exprimer la matrice jacobienne dans le repère de base afin d’assurer l’homogénéité de la démarche. Il est donc
nécessaire de calculer les matrices de passage qui sont fonction de la position cartésienne courante.
Inversion de 0J6 courant : l’inversion est réalisée grâce à l’utilisation de la pseudo inverse (svd) fournie par le
logiciel Matlab. Ceci nous permet de pallier aux problèmes de singularités lors de l’inversion.
Calcul de delta q : en utilisant l’équation ∆q = J-1(q) ∆X, connaissant le ∆X, nous pouvons calculer le ∆q à partir
de l’inversion numérique de la jacobienne calculée au point de coordonnées articulaires courantes.
Evaluation de q : le nouveau q est l’ancien additionné du ∆q calculé.
LASMEA UMR 6602 du CNRS
.
22
.
qi = qinit
Pour une mesure de
J X (q i )
(
)
∆q = −λ ⋅ pinv _ SVD J X (qi ) ⋅ ∆ X
Evaluation de
C
q = qi
oui
C<
ε
non
qi = qi + ∆ q
Figure10 : Algorithme d’estimation des variables articulaires
ii.
Mise en place de l’évaluation des variables articulaires
Le programme Matlab réalisant cette tâche s’appelle estim_theta (présenté en annexe). Il prend en entrée les
modèles du robot, la position cartésienne courante. Il renvoie en sortie les nouvelles variables articulaires. Il met
en œuvre le programme MGI_numerique (voir annexe). La convergence de l’algorithme est rapide et la précision
de l’estimation est réglable au moyen de variables présentes dans les premières lignes du programme :
9
La valeur initiale des variables articulaires (issue de la précédente estimation, sauf au premier coup où il
faut rentrer des données correspondantes à une configuration connue).
9
Nombres d’itération : nous l’avons fixé à 50 itérations. Selon la précision finale souhaitée, ce paramètre
peut être augmenté (meilleure précision), ou diminuer (moins bonne précision).
9
Espilon : la limite de convergence que l’on se fixe pour sortir avant que la limite Selon la précision
finale souhaitée, ce paramètre peut être augmenté (moins bonne précision), ou diminuer (meilleure
précision).
iii.
Quelques résultats de simulation pour l’estimation des
variables articulaires
LASMEA UMR 6602 du CNRS
.
23
.
Des essais ont été menés pour différentes poses du robot CENTAURE tirées de manière aléatoire au niveau
articulaire. Les valeurs initiales des variables articulaires ont été fixées à 0.5, 1, 2 ou 5 degrés près (de
manières aléatoires) afin de rendre réaliste l’algorithme d’estimation.
Les conditions d’évaluation portent sur la précision obtenue entre les variables articulaires réelles et celles
estimées :
- Pour ε = 0.1
convergence et précision en q < 10-2
rd
- Pour ε = 0.01
convergence et précision en q < 10-3
rd
-4
rd
- Pour ε = 0.001
convergence et précision en q < 10
- Pour ε = 0.0001 non convergence et précision en q < 10-3
rd
(convergence en 100 avec q < 10-5 rd)
Dans tous les cas étudiés, la précision a toujours été < à 5.10-3 rd.
.
LASMEA
UMR 6602 du CNRS
.
24
IV. Commande cartésienne référencée capteur
Un des objectifs fixé lors du projet est de permettre la commande cartésienne d’un robot non instrumenté
en mode manuel. Deux modes de fonctionnement peuvent être envisagés :
- La commande a lieu dans le repère de l’effecteur
- La commande a lieu dans le repère d’une caméra déportée (fixe par rapport à la base du robot) fournissant
un retour visuel à l’opérateur
Principe de la commande cartésienne manuelle
La commande manuelle est essentiellement une commande en boucle ouverte dont la consigne (en vitesse
cartésienne) est fournie par l’opérateur. Cette consigne cartésienne doit être convertie en consigne de vitesse
articulaire pour actionner le robot (cf. Figure 11).
-C-
q
6V6
dq*
q
Commande Manuelle
dans repere effecteur (6V6)
Consigne de v itesse articulaire
dq*
0T6
Commande Cartesienne
Repere Effecteur
Robot
v ariables articulaires mesurees
Figure 11 : Principe de la commande manuelle
Pour ce faire, il faut utiliser le modèle cinématique inverse :
⎛V ⎞
q& = J −1 (q )⎜⎜ ⎟⎟
⎝Ω⎠
On remarque que la matrice Jacobienne (J) intervenant dans ce modèle dépend des valeurs articulaires
courantes. Par conséquent, il est nécessaire, pour un robot ne possédant pas de capteurs proprioceptifs, d’estimer
ces valeurs d’une manière ou d’une autre.
Dans notre cas, il s’agit de procéder à cette estimation par l’intermédiaire d’une caméra observant
l’effecteur du robot. Dans une optique de simplification expérimentale, nous placerons une mire sur cet
effecteur. Ceci introduit, en toute rigueur, le besoin de pouvoir estimer la position relative de la mire par rapport
à l’effecteur. Néanmoins, dans un souci pédagogique et sans perte de généralité, les méthodes développées cidessous considèrent les repères associés à ces deux objets comme confondus. Il faudra veiller lors de
l’implantation finale à prendre en compte cette position relative.
Non disponible
-C-
q
6V6
dq*
Commande Manuelle
dans repere effecteur (6V6)
q
Consigne de v itesse articulaire
dq*
0T6
Robot
Commande Cartesienne
Repere Effecteur
Estimation des
variables articulaires
v ariables articulaires estimees
q_est
image
Camera deportee
image
OT6
Figure 12 : Principe de la commande cartésienne manuelle
avec estimation des variables articulaires par vision
LASMEA UMR 6602 du CNRS
25
.
En assimilant q& à ∆q et X& à ∆X, on obtient le modèle variationnel valable dans nos conditions de
fonctionnement (robot relativement lent) :
∆q = J-1(q) ∆X
Il a donc fallu développer un algorithme afin de réaliser l’estimation des q de façon itérative.
La condition d’arrêt ou non de l’algorithme est la proximité de la position courante avec la position désirée (ces
coordonnées sont exprimées en coordonnées cartésiennes dans le repère de base).
Tant que C= ||0Xmesuré-0X(qcourant)|| > ε ; la valeur critère ε est fixé en fonction de la précision voulue
qcourant c’est la variable sur laquelle se fait l’itération, le qcourant initial est connu.
Calcul de 6J6 courant : comme nous l’avons vu précédemment, le calcul de la jacobienne nécessite l’entrée des
variables articulaires pour le calcul, les coordonnées articulaires de la première position sont des paramètres
d’entrée ; au cours des autres itérations, on utilise l’évaluation des variables articulaires obtenue à l’itération
précédente.
Calcul de 0J6 courant : les coordonnées cartésiennes sont exprimées dans le repère de base, il est donc nécessaire
d’exprimer la matrice jacobienne dans le repère de base afin d’assurer l’homogénéité de la démarche. Il est donc
nécessaire de calculer les matrices de passage qui sont fonction de la position cartésienne courante.
Inversion de 0J6 courant : l’inversion est réalisée grâce à l’utilisation de la pseudo inverse (svd) fournie par le
logiciel Matlab. Ceci nous permet de pallier aux problèmes de singularités lors de l’inversion.
Calcul de delta q : en utilisant l’équation ∆q = J-1(q) ∆X, connaissant le ∆X, nous pouvons calculer le ∆q à partir
de l’inversion numérique de la jacobienne calculée au point de coordonnées articulaires courantes.
Evaluation de q : le nouveau q est l’ancien additionné du ∆q calculé.
LASMEA UMR 6602 du CNRS
.
26
requiert la connaissance de la pose de l’effecteur par rapport à la caméra et que cette information n’est disponible
que grâce au calcul de pose inclus dans l’estimation des valeurs articulaires par vision.
-C-
jVj
iVi
Commande cartesienne manuelle
dans repere camera (cVc)
Commande cartesienne
dans repere ef f ecteur (6V6)
Non disponible
theta
6V6
dq*
jTi
theta
Changement Repere
Camera -> Effecteur
dq*
0T6
Consigne de
v itesse articulaire
Robot
Commande Cartesienne
Repere Effecteur
Memorisation
-C- Pose camera->base
theta_init
v ariables articulaires
estimees
theta_est
Camera Deportee
0Tc
Image
uv
uv
0T6
6P
cT6_est
pose camera->ef f ecteur estimee
max_iter (>0)
epsilon (>0)
P
Points Mire
img
Estimation des
variables articulaires
epsilon 1e-3
100 max_iter
Figure 14 : Commande cartésienne dans le repère de la caméra déportée
Validation de la commande cartésienne manuelle en simulation
Les deux modes de fonctionnement ont été validés en simulation. Néanmoins, afin de ne pas alourdir
inutilement ce rapport, nous nous concentrerons sur une analyse de la commande cartésienne manuelle dans le
repère de la caméra. En effet, ce mode de fonctionnement étant le plus complexe des deux, sa validation
entraînera celle du second mode.
Il est difficile de tester la méthode dans toutes les configurations du robot, aussi nous sommes-nous
restreints à une seule configuration (non singulière). De plus, il est inutile de tester toutes les commandes
articulaires possibles : nous pouvons nous contenter d’analyser le comportement du système pour des
mouvements particuliers : translation selon un des 3 axes du repère caméra, rotation autour de l’axe optique. En
effet, ces mouvements s’interprètent aisément dans l’image et la qualité de réalisation de ces mouvements
peuvent se « mesurer » visuellement.
1.
2.
3.
-
Les tests ont été conduits de la manière suivante :
Simulation dans le cas idéal où les valeurs des variables articulaires utilisées dans le modèle cinématique
inverse sont les valeurs réelles
Simulation dans le cas quasi-idéal où les valeurs des variables articulaires sont estimées par vision à partir
d’images non bruitées
Simulation dans le cas où les valeurs des variables articulaires sont estimées par vision à partir d’images
bruitées par un bruit uniforme centré (3 niveaux de bruits sont utilisés : ±1 pixel, ±2 pixels, ±5 pixels)
Dans les figures présentées dans la suite, apparaissent en :
rouge, la trajectoire dans le cas idéal ;
bleu, la trajectoire dans le cas quasi-idéal ;
mauve, la trajectoire lorsque le bruit est de ±1 pixel ;
turquoise, la trajectoire lorsque le bruit est de ±2 pixels ;
vert, la trajectoire lorsque le bruit est de ±5 pixels.
Remarque : Ces tests ne prennent volontairement en compte aucune perturbation physique du robot. Par
ailleurs, afin de bien faire ressortir l’effet du bruit dans l’image sur le mouvement réalisé par le robot, nous avons
artificiellement supprimé ce bruit dans le tracé des trajectoires dans l’image.
LASMEA UMR 6602 du CNRS
27
Translation selon l’axe horizontal de l’image
Le premier test présenté ici consiste en une translation du robot Centaure selon l’axe horizontal de la
caméra déportée (c’est-à-dire fixe par rapport à la base du bras manipulateur). La trajectoire dans l’image de
chaque point de la mire qui résulte de ce mouvement spatial doit être un segment horizontal.
Nous avons tracé les trajectoires dans l’image (Figure 15) ainsi que les trajectoires spatiales (Figure 16)
de ce déplacement dans les 5 cas cités ci-dessus.
Figure 15 : Trajectoire des points de la mire dans l’image
pour une translation demandée selon l'axe horizontal de la caméra
(à gauche : image entière ; à droite : zoom sur la partie significative)
Figure 16: Trajectoire spatiale pour une translation demandée le long de l’axe horizontal de la caméra
(en haut : vue 3D ; en bas, à gauche : vue de gauche ; en bas, à droite : vue de dessus)
Pour ce qui est du comportement visuel, on remarque également que malgré les bruits dans l’image, les
trajectoires gardent la même tendance horizontale. De plus, les bruits dans l’image ne sont guère amplifiés lors
de la commande : l’écart à la trajectoire idéale est de l’ordre du niveau de bruit.
LASMEA UMR 6602 du CNRS
28
En ce qui concerne les trajectoires spatiales, on voit apparaître une déviation entre la trajectoire idéale et
la trajectoire quasi-idéale, due probablement à des propagations d’erreurs numériques. Néanmoins, il faut
remarquer que cette déviation est inférieure au millimètre pour une trajectoire d’une trentaine de centimètres
(soit moins de 1%), ce qui ne remet pas en cause la validité de l’algorithme d’estimation des variables
articulaires. On remarque également que malgré des niveaux de bruit élevés dans l’image, les perturbations des
trajectoires spatiales restent très limitées (également de l’ordre du millimètre).
Translation selon l’axe vertical de l’image
Le deuxième test présenté ici consiste en une translation du robot Centaure selon l’axe vertical de la
caméra déportée. La trajectoire dans l’image de chaque point de la mire qui résulte de ce mouvement spatial doit
être un segment vertical. Nous avons également tracé les trajectoires dans l’image (Figure 17) ainsi que les
trajectoires spatiales (Figure 18) de ce déplacement. Nous constatons des effets similaires à ceux observés dans
le test précédent : bon comportement dans l’image et déviation inférieure à 1%.
Figure 17 : Trajectoire des points de la mire dans l'image
pour une translation demandée selon l'axe vertical de la caméra
(à gauche : image entière ; à droite : zoom sur la partie significative)
LASMEA UMR 6602 du CNRS
29
Figure 18 : Trajectoire spatiale pour une translation demandée le long de l’axe vertical de la caméra
(en haut : vue 3D ; en bas, à gauche : vue de gauche ; en bas, à droite : vue de dessus)
Translation selon l’axe optique
Le troisième test présenté ici consiste en une translation du robot Centaure selon l’axe optique de la
caméra déportée. La trajectoire dans l’image de chaque point de la mire qui résulte de ce mouvement spatial doit
être un segment porté par le faisceau des droites convergeant vers le centre optique (point de fuite). Nous avons
également tracé les trajectoires dans l’image (Figure 19) ainsi que les trajectoires spatiales (Figure 20) de ce
déplacement. Nous obtenons également un bon comportement dans l’image et la déviation spatiale est
extrêmement faible (de l’ordre de 0,1%).
Figure 19 : Trajectoire des points de la mire dans l'image
pour une translation demandée selon l'axe optique de la caméra
(à gauche : image entière ; à droite : zoom sur la partie significative)
LASMEA UMR 6602 du CNRS
30
Figure 20 : Trajectoire spatiale pour une translation demandée le long de l’axe optique de la caméra
(en haut : vue 3D ; en bas, à gauche : vue de gauche ; en bas, à droite : vue de dessus)
Rotation selon l’axe optique
Le dernier test présenté ici consiste en une translation du robot Centaure autour l’axe optique de la caméra
déportée. La trajectoire dans l’image de chaque point de la mire qui résulte de ce mouvement spatial doit être un
cercle centré sur le centre optique (point fixe). Nous avons également tracé les trajectoires dans l’image (Figure
21) ainsi que les trajectoires spatiales (Figure 22) de ce déplacement. Nous obtenons également un bon
comportement dans l’image et la déviation spatiale est négligeable.
Figure 21 : Trajectoire des points de la mire dans l'image
pour une rotation demandée autour l'axe optique de la caméra
(à gauche : image entière ; à droite : zoom sur la partie significative)
LASMEA UMR 6602 du CNRS
31
Figure 22: Trajectoire spatiale pour une rotation demandée autour de l’axe optique de la caméra
(en haut : vue 3D ; en bas, à gauche : vue de gauche ; en bas, à droite : vue de dessus)
Conclusion
Nous avons proposé ici une méthode pour réaliser la commande cartésienne d’un robot non-instrumenté.
Elle se base sur une estimation des variables articulaires par observation de l’effecteur par une caméra déportée.
Cette estimation se fait en calculant par vision la pose de l’effecteur du robot par rapport à la caméra déportée,
puis par la résolution numérique du modèle géométrique inverse du robot. La commande manuelle a été testée
avec succès, hors configuration singulière, en simulation aussi bien sur le robot Motoman que sur le robot
Centaure (pour autant que les modèles utilisés en simulation correspondent effectivement à sa géométrie). Elle
semble donc fonctionner aussi bien lorsque la commande manuelle se fait en donnant une consigne de vitesse
cartésienne (torseur cinématique) dans le repère de l’effecteur que lorsqu’elle se fait dans le repère de la caméra
déportée.
Les limites de la méthode proposée se rencontrent au voisinage des singularités du robot. En effet, dans ce
cas, le calcul générique du modèle géométrique inverse par inversion ne converge pas plus que la commande.
Pour pallier cet inconvénient, il faudrait se tourner vers une méthode plus formelle nécessitant une connaissance
plus conséquente du mécanisme du robot afin d’en déterminer algébriquement toutes les solutions et choisir
parmi celles-ci la plus plausible. Néanmoins, le gain d’un tel investissement est faible pour deux raisons.
D’abord, il nécessite une nouvelle étude pour chaque nouveau robot. Ensuite (et peut-être surtout) il ne
résoudrait au final que le problème de l’estimation des variables articulaires et tomberait malgré cela sur le
problème ardu (et indépendant de l’instrumentation du robot !) de la traversée de singularités en commande
cartésienne.. La solution la plus pragmatique à ce problème dans le cas d’un robot télé-opéré est de s’en remettre
à l’opérateur pour basculer en commande articulaire et sortir le robot de la singularité.
LASMEA UMR 6602 du CNRS
32
V. Positionnement automatique par asservissement visuel
A – Introduction à la commande référencée vision
Depuis les années 70, la commande de robot par vision a suscité l’intérêt de bon nombre de
chercheurs. L’évolution technologique et scientifique cette dernière décade permet
d’envisager de réaliser des boucles de commande pour le positionnement de robots par retour
visuel en temps réel vidéo (soit de l’ordre de 40 à 80ms en classique, jusqu’à 1ms si l’on
utilise des composants spécialisés type ASIC). Pour le lecteur souhaitant approfondir le sujet,
nous lui recommandons la lecture des articles de WEISS du début des années 80, les thèses de
F. Chaumette en 1990, et P. Corke en 1993, un tutorial réalisé par Corke, Hager, et
Hutchinson en 1996, les rapports d’Habilitation à Diriger des Recherches de Chaumette en 98
et Martinet en 99, et enfin le site WEB du groupe d’intérêt en asservissement visuel de
EURON (on trouvera notamment vidéo, cours, articles, et une TOOLBOX Matlab/Simulink
d’une école d’été dédiée à l’asservissement visuel ayant eue lieu en 2002).
Ce qu’il est essentiel de retenir pour le projet courant, c’est :
- qu’il est possible d’asservir un robot à partir d’une caméra
o embarquée sur l’effecteur d’un robot (schéma le plus classique)
o déportée (fixe par rapport aux mouvements du robot)
- qu’il est possible d’utiliser
o des informations directement extraites de l’image appelées informations 2D
(Dans ce cas, on parle d’asservissement visuel 2D (Image Based Visual Servoing))
o des informations 3D reconstruites à partir d’informations 2D et d’un modèle
(Dans ce cas, on parle d’asservissement visuel 3D (Position Based Visual
Servoing))
o des informations à la fois 2D et 3D
(Dans ce cas, on parle d’asservissement visuel 2D/3D (Hybrid Based Visual
Servoing))
Dans la plupart des cas, l’approche « fonction de tâche », introduite par Claude Samson et
Bernard Espiau à la fin des années 80, est retenue pour synthétiser la loi commande. En
quelque lignes et équations nous pouvons la décrire.
Considérons s =(s1, s2, …., sk)T, le vecteur des informations capteurs (2D, 3D, 2D/3D).
On forme une fonction d’erreur appelée e par la relation suivante :
(
e=C⋅ s−s
*
)
où
-
s
informations capteurs obtenues à chaque itération
LASMEA UMR 6602 du CNRS
33
-
s*
informations capteurs obtenues à l’équilibre (en position désirée)
C
est une matrice de combinaison qui permet de prendre en compte plus
d’informations capteurs que nécessaire à la bonne exécution de la tâche.
On souhaite comme comportement, une décroissance exponentielle de la fonction de tâche e,
soit :
e& = −λ ⋅ e
Par ailleurs, on sait que s = s r (t ), t
(
) où r(t) représente la pose spatiale du repère associé
au système capteur.
Par conséquent, on peut écrire :
s& =
δ s dr δ s
⋅ +
δ r dt δt
où le premier terme est le produit entre la variation des signaux capteurs par rapport
aux mouvements du système capteur par le torseur cinématique qui paramètre ce mouvement,
et le second terme est la contribution du mouvement propre de l’objet que l’on observe (à
partir duquel on mesure s). Dans la plupart des cas, la cible ou objet observé est fixe : ce
second terme s’annule. Il vient que :
s& =
δ s dr
⋅ = L ⋅T
δ r dt
avec T : torseur cinématique et L matrice d’interaction associées aux informations
capteurs s
En considérant les conditions de convergence d’un tel système, on peut montrer qu’il suffit de
prendre comme loi de commande
(
T = −λ ⋅ L+ ⋅ s − s
*
)
afin de faire converger le système depuis une information capteur s vers une information
capteur s*.
Cette loi de commande s’applique quelquesoit la forme de s (2D, 3D, 2D/3D). Par contre, la
dimension de s est forcément supérieure à 6 dés lors que l’on souhaite commander les 6
degrés de liberté. Dans l’expression de la commande, L+ représente la pseudo inverse de L
dans le cas ou la dimension de s est supérieure à 6.
Les différentes matrices d’interaction utilisables se retrouve dans la littérature précitée.
LASMEA UMR 6602 du CNRS
34
B – Utilisation de l’asservissement visuel pour le positionnement précis de l’effecteur
L’asservissement visuel peut-être utilisé pour le positionnement précis de l’effecteur à partir
d’une caméra embarquée sur ce même effecteur : en effet, positionner la caméra est
équivalent à positionner l’effecteur (une liaison rigide existant entre les deux). Le schéma
d’asservissement suivant illustre le cas général de l’asservissement visuel 2D:
T = −λ .LTS .( S (t ) − S *)
+
S*
q&
T
-
J-1
Control
+
P
C
ll
S (t )
Joint feedback
f (t )
Features
Visual feedback
Extraction
Sensor of 2D features
Le schéma d’asservissement suivant illustre le cas général de l’asservissement visuel 3D:
T = −λ.LTS .(S (t ) − S *)
+
S*
T
-
Control
+
q&
J-1
P
C
ll
S (t )
Joint feedback
Pose
f (t )
Estimation
Features
Visual feedback
Extraction
Sensor of 3D features
Dans ces deux schémas, le retour articulaire peut être présent ou pas (cf Weiss). Dans le cas
où il n’est pas présent, la commande en vitesse articulaire attaque directement les actionneurs.
Dans ce cas, le moindre bruit présent sur l’entrée de l’étage de puissance se transforme en
LASMEA UMR 6602 du CNRS
35
mouvement parasite sur l’axe articulaire. Le retour visuel est alors indispensable, si on ne veut
pas subir ces effets indésirables de dérive.
De nombreuses études ont déjà démontrée la validité de ces principes (cf Ecole d’été en
Asservissement visuel).
C – Positionnement précis de l’effecteur du Motoman ou Centaure
Dans l’environnement MATLAB/Simulink, ont été développés deux schémas de commande :
9 Le premier permet de commander le robot à partir d’informations extraites de la
caméra embarquée
9 Le second permet de commander le robot à partir d’informations extraites de la
caméra déportée
Les deux algorithmes de commande utilisent des points 3D comme mesures dans la boucle de
retour visuel. L’algorithme de Dementhon est utilisé pour reconstruire ces points 3D à chaque
itération.
C-1 Caméra embarquée
Dans simulink, c’est le fichier IBVS3DpEmbarquee.mdl qui représente le schéma
suivant.
LASMEA UMR 6602 du CNRS
36
C-2 Caméra déportée
Dans simulink, c’est le fichier IBVS3DpDeportee.mdl qui représente le schéma
suivant :
C-3 Résultats obtenus en simulation pour le positionnement de l’effecteur
Dans les deux cas qui suivent, l’estimation des q par la méthode présentée dans la partie III
est utilisée dans le but d’évaluer la Jacobienne inverse du robot.
Caméra embarquée sur Motoman: exemple de convergence à zéro du torseur
cinématique (gauche) et des erreurs sur les signaux capteurs (droite) :
LASMEA UMR 6602 du CNRS
37
Caméra déportée sur Motoman : exemple de convergence à zéro du torseur
cinématique (gauche) et des erreurs sur les signaux capteurs (droite) :
D – Conclusion
La faisabilité de l’asservissement visuel pour le positionnement automatique d’outil est
validée d’un point de vue simulation en intégrant les modèles du robot du LASMEA (le
MOTOMAN) et celui du CEA (le CENTAURE). L’algorithme d’estimation des q a été
intégré dans les schémas simulink.
LASMEA UMR 6602 du CNRS
38
VI. Intégration
La dernière étape du projet (phase 3) consiste en la validation sur le robot CENTAURE des
principes énoncés dans cette étude de faisabilité :
- estimation des q par une caméra déportée
- commande cartésienne XYZ du robot
- positionnement de l’effecteur du robot (quelquesoit la tache à réaliser, une fois
positionné). La tâche est un positionnement par rapport à une mire.
Le travail d’intégration est partagé entre le CEA et le LASMEA. Le LASMEA a préparé les
validations sur son robot en interne : le MOTOMAN. Le CEA instrumente le robot
CENTAURE afin d’accueillir le système de vision et commande du LASMEA, valide les
modèles développés pour le CENTAURE, rend commandable en vitesse le CENTAURE
A – Intégration sur le robot MOTOMAN
A-1 Architecture matérielle et logicielle
L’architecture matérielle mise en place pour les essais sur le robot Motoman est la suivante :
Armoire
De
commande
Vidéo
Vidéo
ana
Num.
PCBN
Commande
Bas niveau
Communication
Ethernet
Par socket
PCV
Vision
Haut niveau
Le PC de commande bas niveau assure la commande en temps réel du robot. Le PC vision fait
l’acquisition des images des caméras déportée et embarquée, réalise l’estimation des variables
articulaire (en vue de l’estimation de la jacobienne du robot), réalise la commande
cartésienne, et assure le positionnement de l’effecteur au moyen d’un retour visuel (cf partie
LASMEA UMR 6602 du CNRS
39
précédente).
Les deux PC sont connectés par une liaison Ethernet avec une communication par Socket. Les
échangent portent sur :
- l’envoi des commandes en vitesses articulaires au PC de bas niveau (PCV Î PCBN)
- l’envoi des mesures articulaires au PC de vision (PCBN Î PCV)
L’architecture logicielle est réalisée autour de la connexion MATLAB/Simulink avec C/C++.
Cet environnement a été mis en place pour cette manipulation et a nécessité beaucoup de
développement. Elle a l’avantage de pouvoir récupérer les schémas de commande réalisés
sous MATLAB/SIMULINK, mais le désavantage de ne pas permettre la gestion du temps, si
elle n’est pas associé à un système temps réel dur. Pour cette étude, compte tenu que les temps
de boucle sont très importants, cet inconvénient est mineur.
A-2 Etapes préalables indispensables
Ces étapes préalables consistent principalement en l’étalonnage de la manipulation complète :
Pour effectuer l’estimation des variables articulaires q, il est nécessaire de calculer à chaque
itération la position de l’effecteur dans le repère de base du robot. Ainsi, pour chaque
position, on peut utiliser la procédure de calcul du MGI numérique présentée dans le rapport.
Ce calcul de position de l’effecteur repose sur :
- la connaissance de la matrice de transformation homogène entre le repère caméra
déportée Rcd et le repère de base du robot R0,
LASMEA UMR 6602 du CNRS
40
- la connaissance de la matrice de transformation homogène entre le repère associé à la
mire Rmire et le repère associé à l’effecteur du robot R6
- la mesure des points de la mire dans l’image
- la reconstruction des points 3D de la mire à partir du modèle de la mire
Pour effectuer le positionnement de l’effecteur par retour visuel, il est nécessaire de connaître
la matrice de transformation homogène entre le repère associé à la caméra embarquée et celui
associé à l’effecteur du robot R6.
Une vingtaine d’images sont prises pour évaluer les différentes matrices de transformations
homogènes.
A-3 Estimation des q
Pour évaluer les performances de l’algorithme d’estimation des q, nous avons utilisés les 20
images prises pour l’étalonnage de la manipulation ainsi que les mesures des positions
articulaires disponibles sur ce robot. A Partir de ces 20 images, et à partir du résultat de
l’étalonnage précédent, nous avons calculé les positions de l’effecteur correspondantes à
chacune des positions articulaires. Nous initialisons l’algorithme avec des positions
articulaires quelconques (environ à ±0.5rd sur chacune des articulations). Le principal intérêt
est de travailler avec des données réelles, mais aussi avec les imperfections amenées par
l’étalonnage de la manipulation. A chaque position de l’effecteur, on calcule les valeurs des
variables articulaires. La figure suivante montre les résultats sur les erreurs (en degrés)
commises durant cette estimation (entre qestimée et qréel_mesurée).
LASMEA UMR 6602 du CNRS
41
Les grands écarts constatés proviennent des problèmes de convergence le l’algorithme
d’estimation des q au voisinage de singularités du robot. Néanmoins, ces grands écarts n’ont
que peu d’influence sur l’estimation de la jacobienne (le cœur de l’algorithme de la
commande cartésienne). Ainsi, afin de valider cette estimation, nous avons comparé terme à
terme les valeurs des éléments des jacobiennes estimées et celles supposées vraies : un écart
de l’ordre de 0.05 à été constaté au maximum (ce qui est rassurant compte tenu des erreurs
potentielles commises dans chaque étape).
Afin de valider théoriquement la boucle de positionnement par retour visuel (également pour
la commande cartésienne en boucle ouverte), il est important de valider si le produit
−1
J est
(q) ⋅ J (q) reste bien définit positif afin de ne pas faire diverger la boucle d’asservissement
visuel. Pour cela nous avons étudié les valeurs propres de la quantité JT.Jest. Les résultats sont
donnés dans la figure suivante (un des pires cas):
Le comportement global est donné par les 3 premières valeurs propres. Sur cette simulation en
particulier, la sixième valeur propre pour 1 position sur 20 intervient. Dans 5 positions sur 20,
la quatrième valeur propre devient négative mais avec une valeur faible (n’empêchant pas le
système de converger).
Cette validation est intéressante et nous montre que l’on peut obtenir une bonne estimation de
LASMEA UMR 6602 du CNRS
42
la jacobienne malgré des estimations articulaires apparemment mauvaises. Au voisinage
d’une singularité, on ne peut pas empêcher ce problème de survenir.
A-4 Commande cartésienne
La commande cartésienne consiste à donner des vitesses de déplacements exprimées dans un
repère donné. Pour le projet, 2 types de repères ont été définis :
- le repère de la caméra déportée
- le repère de l’effecteur
La figure suivante montre l’interface simulink et l’image qui apparaît sur l’écran de
l’opérateur :
Deux schémas Simulink ont été développés en place à cet effet. L’implantation de la
commande n’est pas optimisée en temps pour les raisons indiquées dans la partie A-1. Comme
cette étude est une étude de faisabilité, ce défaut est mineur. Un interface avec curseur est mis
en place pour choisir soit :
- une translation en X dans le repère considéré
- une translation en Y dans le repère considéré
- une translation en Z dans le repère considéré
- une rotation en X dans le repère considéré
- une rotation en Y dans le repère considéré
- une rotation en Z dans le repère considéré
Des vidéos des déplacements ont été faites pour le cas des déplacements exprimés dans le
repère de l’effecteur.
Repère caméra déportée - A partir des valeurs des variables articulaires vraies (mesurées par
les capteurs angulaires du robot) et du modèle géométrique direct du robot, nous avons
reconstitué la trajectoire du robot dans le repère de base. Les trois mouvements de translation
sont validés (TX-,TX+,TX-,TY-,TY-,TZ-) dans le repère de la caméra déportée.
LASMEA UMR 6602 du CNRS
43
A - Trajectoire dans le plan XY
B - Trajectoire dans le plan YZ
C - Trajectoire dans le plan XZ
LASMEA UMR 6602 du CNRS
44
On peut remarquer qu’il existe du couplage entre certains axes. Cela s’explique par
l’étalonnage qui est loin d’être parfait, et les modèles que l’on utilise qui également sont des
modèles théoriques.
Le second point qui est intéressant c’est que comme attendu en faisant par exemple TX+ suivi
de TX- on ne suit pas exactement la même trajectoire. Il est clair que théoriquement il est
impossible de faire en sorte d’avoir une répétabilité de ce type de commande, car le
fonctionnement est en boucle ouverte.
Repère effecteur – Comme précédemment la trajectoire du robot est reconstruite dans le
repère de base. Les trois mouvements de translation sont validés.
A - Trajectoire dans le plan XY
B - Trajectoire dans le plan YZ
LASMEA UMR 6602 du CNRS
45
C - Trajectoire dans le plan XZ
On peut remarquer qu’il existe du couplage entre certains axes. Cela s’explique par
l’étalonnage qui est loin d’être parfait, et les modèles que l’on utilise qui également sont des
modèles théoriques.
A-5 Positionnement de l’effecteur
La dernière phase d’intégration sur le robot Motoman porte sur la commande de
positionnement de l’effecteur. Ce qui nous intéresse bien sur, c’est d’assurer un
positionnement précis de l’effecteur du robot par rapport à un objet particulier. Pour valider
cette phase, nous avons pris le parti de décomposer ce travail en deux étapes :
- validation du positionnement par asservissement visuel utilisant la caméra déportée.
Cette validation est quasi immédiate a réalisée avec les schémas développés
précédemment.
- validation du positionnement par asservissement visuel utilisant une caméra
embarquée. Cette étape est par contre plus délicate, car il faut intégrer deux caméras
dans notre environnement. A cette heure, nous avons rencontré des difficultés liées à
l’outil simulink que nous n’avons pas encore surmontées.
AV avec caméra déportée.
A partir du schéma Simulink réalisée pour la commande cartésienne exprimée dans le repère
de la caméra déportée, il est quasi immédiat de remplacer l’envoi de la commande cartésienne
par celle issue d’un calcul de loi de commande type asservissement visuel de points 3D
directement extraits depuis la caméra déportée.
LASMEA UMR 6602 du CNRS
46
B – Intégration sur le robot CENTAURE
B-1 Architecture matériel et logiciel
Idem Motoman. A faire
B-2 Etapes préalables indispensables
Idem Motoman. A faire
B-3 Estimation des q
A porter et valider
B-4 Commande cartésienne
A porter et valider
B-5 Positionnement de l’effecteur
A porter et valider
LASMEA UMR 6602 du CNRS
47
pour l’intégration de la commande conditionnera les performances : si le temps de
rebouclage est court, alors les imprécisions pourront être corrigées en temps réel et de
ce simple fait la précision de l’asservissement en sera améliorée. Ne s’agissant que
d’une étude pour démontrer l’intérêt des approches, il semble que les idées mises en
avant sont validées.
9 Avancement dans le projet : L’ensemble de ces résultats valident complètement les
phases 1 et 2 du projet et contribuent très largement à l’avancement de la phase 3.
9 Problèmes rencontrés durant la phase d’intégration. Plusieurs problèmes ont
retardés l’obtention de résultats sur le bras Motoman :
o Nouveau robot (modèles non encore validés, architecture matérielle et
logicielle)
o Nouveaux outils avec couplage matlab/simulink avec C/C++ (jamais fait
auparavant) ;
o Robots avec beaucoup de cas de singularités (c’est le cas des 2 robots) ce qui
occasionne l’adressage de quasiment tous les problèmes rencontrés en
robotique,… Il n’a pas à ce jour de problèmes rencontrés remettant en cause la
méthode (sauf les cas classiques rencontrés en robotique où 2 solutions ou plus
se présente pour la résolution du problème inverse (XÎ q ?).
o Nécessité d’une installation fiable : les inconvénients majeurs semblent être la
nécessité d’un étalonnage pas trop mauvais, ce qui n’est pour l’instant pas
quantifiable facilement.
o Caméra FireWire intégrée mais lente (3 im/s), caméra analogique non intégrée
(problème sur les drivers ‘shareware’).
9 Solutions à envisager sur le bras CENTAURE (à rediscuter pour la mise en œuvre) :
o Avoir des modèles validés
o Prendre en compte des couplages d’axes dans le bas niveau
o Installer une caméra sur la base de manière définitive (cf Problème
d’étalonnage)
o Avoir une mire installée à demeure sur l’effecteur (cf pb d’étalonnage)
o Avoir la communication par socket opérationnelle
o Prévoir l’étalonnage de la manipulation
o Faire une démonstration finale
o Pour l’ensemble, il nous parait indispensable que le robot CENTAURE vienne
à Clermont-Ferrand avec une personne du CEA pour 1 à 2 semaines. Un seul
déplacement au CEA est prévu dans la prestation.
LASMEA UMR 6602 du CNRS
48
B – Intégration sur le robot CENTAURE
B-1 Architecture matériel et logiciel
Idem Motoman. A faire
B-2 Etapes préalables indispensables
Idem Motoman. A faire
B-3 Estimation des q
A porter et valider
B-4 Commande cartésienne
A porter et valider
B-5 Positionnement de l’effecteur
A porter et valider
LASMEA UMR 6602 du CNRS
49
VII. Conclusion, perspectives
A l’issue de l’étude, il s’avère que la faisabilité de
• l’estimation des variables articulaires par observation de
l’effecteur muni d’une mire
• la commande cartésienne utilisant l’estimation des variables
articulaires dans la matrice jacobienne
• l’asservissement visuel (utilisant l’estimation des variables
articulaires dans la matrice jacobienne) pour réaliser des tâches
de positionnement (i.e. : pour la prise d’outils, pour l’ouverture
d’un sas)
ont été validées par simulation (cf résultats dans ce rapport
intermédiaire), et en réel sur le bras Motoman au LASMEA. Des
essais en réel ont été montrés au CEA lors de la visite du 5 mars 2004.
Trois questions restées en suspens sont abordées en annexe de ce
rapport :
• utilisation d’une mire cylindrique
• utilisation de plusieurs caméras pour couvrir un espace de travail
plus grand
• validation du principe de positionnement par vision pour
l’ouverture de sas.
et fournissent des éléments de réflexions théoriques quant à leur
réalisation.
L’intégration finale se fera sur le CENTAURE au LASMEA :
• Validation des modèles du robot
• Validation de la communication entre robot et PC vision
• Installation des caméras déportée et embarquée
• Positionnement d’une mire plane sur l’effecteur
• Etalonnage (grossier) robot/Caméra et mire/robot
• Validation de la commande cartésienne
• Validation du positionnement par asservissement visuel avec mire
LASMEA UMR 6602 du CNRS
50
Annexes
Fichiers : TDH.m, mgdDHsym.m, et mgdDHnum.m
Fichiers : MGD_CENTAURE.m
Fichier : visuDH.m
Fichiers : JacobtotalsymDH.m et JacobtotalnumDH.m
Fichiers : PINV_SVD.m et MCD_CENTAURE.m
Eléments de réponse aux questions en suspend.
LASMEA UMR 6602 du CNRS
51
Fichiers : TDH.m, mgdDHsym.m, et mgdDHnum.m
Fichier : TDH.m
Calcul la matrice de transformation homogène associée au paramétrage DH.
function [A] = TDH(p)
A=[
cos(p(3)) , -sin(p(3))
, 0
, p(2)
;
cos(p(1))*sin(p(3)), cos(p(1))*cos(p(3)), -sin(p(1)) , -p(4)*sin(p(1));
sin(p(1))*sin(p(3)), sin(p(1))*cos(p(3)), cos(p(1)) , p(4)*cos(p(1));
0
,
0
, 0 , 1
];
Fichier : mgdDHsym.m
Calcul la matrice de transformation homogène associée au paramétrage DH pour un robot
6ddl
function [A] = mgdDHsym(phi10,phi21,phi32,phi43,phi54,phi65)
format short
%introduction de variables symboliques
%angles phi
phi10 = sym('phi10');
phi21 = sym('phi21');
phi32 = sym('phi32');
phi43 = sym('phi43');
phi54 = sym('phi54');
phi65 = sym('phi65');
%paramétres alpha
alpha1 = sym('alpha1');
alpha2 = sym('alpha2');
alpha3 = sym('alpha3');
alpha4 = sym('alpha4');
alpha5 = sym('alpha5');
alpha6 = sym('alpha6');
%paramètres d
d1 = sym('d1');
d2 = sym('d2');
d3 = sym('d3');
d4 = sym('d4');
d5 = sym('d5');
d6 = sym('d6');
%paramètres theta
theta01 = sym('theta1');
theta02 = sym('theta2');
theta03 = sym('theta3');
theta04 = sym('theta4');
theta05 = sym('theta5');
theta06 = sym('theta6');
LASMEA UMR 6602 du CNRS
52
%paramètres r
r1 = sym('r1');
r2 = sym('r2');
r3 = sym('r3');
r4 = sym('r4');
r5 = sym('r5');
r6 = sym('r6');
%def des q symboliques
q1 = phi10+theta01;
q2 = phi21+theta02;
q3 = phi32+theta03;
q4 = phi43+theta04;
q5 = phi54+theta05;
q6 = phi65+theta06;
%def des constantes
%introduction du modéle du robot
robot = centaure
Alpha1 = robot.Para_joint1(1);
Alpha2 = robot.Para_joint2(1);
Alpha3 = robot.Para_joint3(1);
Alpha4 = robot.Para_joint4(1);
Alpha5 = robot.Para_joint5(1);
Alpha6 = robot.Para_joint6(1);
D1 = robot.Para_joint1(2);
D2 = robot.Para_joint2(2);
D3 = robot.Para_joint3(2);
D4 = robot.Para_joint4(2);
D5 = robot.Para_joint5(2);
D6 = robot.Para_joint6(2);
Theta01 = robot.Para_joint1(3);
Theta02 = robot.Para_joint2(3);
Theta03 = robot.Para_joint3(3);
Theta04 = robot.Para_joint4(3);
Theta05 = robot.Para_joint5(3);
Theta06 = robot.Para_joint6(3);
R1 = robot.Para_joint1(4);
R2 = robot.Para_joint2(4);
R3 = robot.Para_joint3(4);
R4 = robot.Para_joint4(4);
R5 = robot.Para_joint5(4);
R6 = robot.Para_joint6(4);
LASMEA UMR 6602 du CNRS
53
% calcul des matrices de passage symboliques
T01 = TDH(alpha1,d1,q1,r1);
T12 = TDH(alpha2,d2,q2,r2);
T23 = TDH(alpha3,d3,q3,r3);
T34 = TDH(alpha4,d4,q4,r4);
T45 = TDH(alpha5,d5,q5,r5);
T56 = TDH(alpha6,d6,q6,r6);
T46 = T45*T56;
simplify(T46);
T36 = T34*T46;
T26 = T23*T36;
T16 = T12*T26;
T06sym = T01*T16;% obtention du modèle symbolique paramètré
%substitution des valeurs aux paramétres
T06=subs(T06sym,{Alpha1,Alpha2,Alpha3,Alpha4,Alpha5,Alpha6,Theta01,Theta02,Theta03
,Theta04,Theta05,Theta06,D1,D2,D3,D4,D5,D6,R1,R2,R3,R4,R5,R6},{alpha1,alpha2,alpha3
,alpha4,alpha5,alpha6,theta01,theta02,theta03,theta04,theta05,theta06,d1,d2,d3,d4,d5,d6,r1,r2
,r3,r4,r5,r6});
%obtention du modele ne dependant que des phi
sx = T06(1,1)
sy = T06(2,1)
sz = T06(3,1)
nx = T06(1,2)
ny = T06(2,2)
nz = T06(3,2)
ax = T06(1,3)
ay = T06(2,3)
az = T06(3,3)
Px = T06(1,4)
Py = T06(2,4)
Pz = T06(3,4)
Fichier : mgdDHnum.m
Calcul la matrice de transformation homogène associée au paramétrage DH pour un robot
6ddl
function [A] = mgdDHnum(q)
phi10=q(1);
phi21=q(2);
phi32=q(3)-phi21;%couplage des liaisons 2 et 3
phi43=q(4);
phi54=q(5);
LASMEA UMR 6602 du CNRS
54
phi65=q(6);
sx
=
cos(phi10)*(cos(phi21)*(cos(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))-sin(phi32)*sin(phi54)*cos(phi65))sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))+cos(phi32)*sin(phi54)*cos(phi65)))sin(phi10)*(sin(phi43)*cos(phi54)*cos(phi65)+cos(phi43)*sin(phi65));
sy
=
sin(phi10)*(cos(phi21)*(cos(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))-sin(phi32)*sin(phi54)*cos(phi65))sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))+cos(phi32)*sin(phi54)*cos(phi65)))+cos(phi10)*(sin(phi43)*cos(phi5
4)*cos(phi65)+cos(phi43)*sin(phi65));
sz = sin(phi21)*(cos(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)-sin(phi43)*sin(phi65))sin(phi32)*sin(phi54)*cos(phi65))+cos(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*cos(phi6
5)-sin(phi43)*sin(phi65))+cos(phi32)*sin(phi54)*cos(phi65));
nx
=
cos(phi10)*(cos(phi21)*(cos(phi32)*(-cos(phi43)*cos(phi54)*sin(phi65)sin(phi43)*cos(phi65))+sin(phi32)*sin(phi54)*sin(phi65))-sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*sin(phi65)-sin(phi43)*cos(phi65))cos(phi32)*sin(phi54)*sin(phi65)))-sin(phi10)*(sin(phi43)*cos(phi54)*sin(phi65)+cos(phi43)*cos(phi65));
ny
=
sin(phi10)*(cos(phi21)*(cos(phi32)*(-cos(phi43)*cos(phi54)*sin(phi65)sin(phi43)*cos(phi65))+sin(phi32)*sin(phi54)*sin(phi65))-sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*sin(phi65)-sin(phi43)*cos(phi65))cos(phi32)*sin(phi54)*sin(phi65)))+cos(phi10)*(sin(phi43)*cos(phi54)*sin(phi65)+cos(phi43)*cos(phi65));
nz
=
sin(phi21)*(cos(phi32)*(-cos(phi43)*cos(phi54)*sin(phi65)sin(phi43)*cos(phi65))+sin(phi32)*sin(phi54)*sin(phi65))+cos(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*sin(phi65)-sin(phi43)*cos(phi65))-cos(phi32)*sin(phi54)*sin(phi65));
ax = cos(phi10)*(cos(phi21)*(-cos(phi32)*cos(phi43)*sin(phi54)-sin(phi32)*cos(phi54))sin(phi21)*(sin(phi32)*cos(phi43)*sin(phi54)+cos(phi32)*cos(phi54)))+sin(phi10)*sin(phi43)*sin(phi54)
;
ay = sin(phi10)*(cos(phi21)*(-cos(phi32)*cos(phi43)*sin(phi54)-sin(phi32)*cos(phi54))sin(phi21)*(-sin(phi32)*cos(phi43)*sin(phi54)+cos(phi32)*cos(phi54)))cos(phi10)*sin(phi43)*sin(phi54);
az = sin(phi21)*(-cos(phi32)*cos(phi43)*sin(phi54)-sin(phi32)*cos(phi54))+cos(phi21)*(sin(phi32)*cos(phi43)*sin(phi54)+cos(phi32)*cos(phi54));
Px
=
cos(phi10)*(cos(phi21)*(-350*sin(phi32)+300)350*sin(phi21)*cos(phi32))+169/2*sin(phi10);
Py
=
sin(phi10)*(cos(phi21)*(-350*sin(phi32)+300)-350*sin(phi21)*cos(phi32))169/2*cos(phi10);
Pz = sin(phi21)*(-350*sin(phi32)+300)+350*cos(phi21)*cos(phi32);
A = [sx,nx,ax,Px;
sy,ny,ay,Py;
sz,nz,az,Pz;
0 ,0 ,0 ,1 ];
LASMEA UMR 6602 du CNRS
55
Fichier : visuDH.m
Fichier : visuDH.m
Visualisation filaire du robot 6 ddl
function [A] = visuDH(robot,varargin)
% en entree les angles pour la position, sinon, prise des valeurs stockees
% dans la struct du robot (valeurs courantes)
% trace de la representation du robot, repere attache a la base magenta,
% final vert
%def des constantes
alpha1 = robot.Para_joint1(1);
alpha2 = robot.Para_joint2(1);
alpha3 = robot.Para_joint3(1);
alpha4 = robot.Para_joint4(1);
alpha5 = robot.Para_joint5(1);
alpha6 = robot.Para_joint6(1);
d1 = robot.Para_joint1(2);
d2 = robot.Para_joint2(2);
d3 = robot.Para_joint3(2);
d4 = robot.Para_joint4(2);
d5 = robot.Para_joint5(2);
d6 = robot.Para_joint6(2);
theta01 = robot.Para_joint1(3);
theta02 = robot.Para_joint2(3);
theta03 = robot.Para_joint3(3);
theta04 = robot.Para_joint4(3);
theta05 = robot.Para_joint5(3);
theta06 = robot.Para_joint6(3);
r1 = robot.Para_joint1(4);
r2 = robot.Para_joint2(4);
r3 = robot.Para_joint3(4);
r4 = robot.Para_joint4(4);
r5 = robot.Para_joint5(4);
r6 = robot.Para_joint6(4);
if nargin < 2
Phi10 = robot.Valeurs_angles_cur(1);
Phi21 = robot.Valeurs_angles_cur(2);
Phi32 = robot.Valeurs_angles_cur(3);
Phi43 = robot.Valeurs_angles_cur(4);
Phi54 = robot.Valeurs_angles_cur(5);
Phi65 = robot.Valeurs_angles_cur(6);
else
LASMEA UMR 6602 du CNRS
56
Phi10=varargin{1};
Phi21=varargin{2};
Phi32=varargin{3};
Phi43=varargin{4};
Phi54=varargin{5};
Phi65=varargin{6};
end
q1 = Phi10+theta01;
q2 = Phi21+theta02;
q3 = Phi32+theta03-Phi21;
q4 = Phi43+theta04;
q5 = Phi54+theta05;
q6 = Phi65+theta06;
T01 = TDH(alpha1,d1,q1,r1);
T12 = TDH(alpha2,d2,q2,r2);
T23 = TDH(alpha3,d3,q3,r3);
T34 = TDH(alpha4,d4,q4,r4);
T45 = TDH(alpha5,d5,q5,r5);
T56 = TDH(alpha6,d6,q6,r6);
T02 = T01*T12;
T021 = T02*[1,0,0,robot.Para_joint3(2);
0,1,0,0;
0,0,1,0;
0,0,0,1];
T022 = T021*[1,0,0,0;
0,1,0,0;
0,0,1,robot.Para_joint3(4);
0,0,0,1];
T011 = T01*[1,0,0,robot.Para_joint2(2);
0,1,0,0;
0,0,1,robot.Para_joint2(4);
0,0,0,1];
T03 = T02*T23;
T031 = T03*[1,0,0,robot.Para_joint4(2);
0,1,0,0;
0,0,1,robot.Para_joint4(4);
0,0,0,1];
T04 = T03*T34;
T041=T04*[1,0,0,robot.Para_joint5(2);
0,1,0,0;
0,0,1,robot.Para_joint5(4);
0,0,0,1];
LASMEA UMR 6602 du CNRS
57
T05 = T04*T45;
T06 = T01*T12*T23*T34*T45*T56;
clear All
axis manual
axis([-400 400 -400 400 -400 400]);
line(30,30,30)
plot3(0,0,0,'b:o')
hold on
plot3([0;50],[0;0],[0;0],'m-')
plot3([0;0],[0;50],[0;0],'m-')
plot3([0;0],[0;0],[0;50],'b-')
plot3([T06(1,4);50*T06(1,1)+T06(1,4)],[T06(2,4);50*T06(2,1)+T06(2,4)],[T06(3,4);50*T06(
3,1)+T06(3,4)],'g-')
plot3([T06(1,4);50*T06(1,2)+T06(1,4)],[T06(2,4);50*T06(2,2)+T06(2,4)],[T06(3,4);50*T06(
3,2)+T06(3,4)],'g-')
plot3([T06(1,4);50*T06(1,3)+T06(1,4)],[T06(2,4);50*T06(2,3)+T06(2,4)],[T06(3,4);50*T06(
3,3)+T06(3,4)],'b-')
plot3([T01(1,4);T02(1,4)],[T01(2,4);T02(2,4)],[T01(3,4);T02(3,4)],'r-')
plot3([T02(1,4);T021(1,4)],[T02(2,4);T021(2,4)],[T02(3,4);T021(3,4)],'r-o')
plot3([T021(1,4);T022(1,4)],[T021(2,4);T022(2,4)],[T021(3,4);T022(3,4)],'r-o')
plot3([T022(1,4);T03(1,4)],[T022(2,4);T03(2,4)],[T022(3,4);T03(3,4)],'r-o')
plot3([T03(1,4);T04(1,4)],[T03(2,4);T04(2,4)],[T03(3,4);T04(3,4)],'r-o')
plot3([T04(1,4);T05(1,4)],[T04(2,4);T05(2,4)],[T04(3,4);T05(3,4)],'r-o')
LASMEA UMR 6602 du CNRS
58
Fichier : MGD_CENTAURE.m
Fichier : MGD_CENTAURE.m
MGD du robot CENTAURE
function [A] = MGD_Centaure(theta)
phi10=theta(1);
phi21=theta(2);
phi32=theta(3);
phi43=theta(4);
phi54=theta(5);
phi65=theta(6);
sx
=
cos(phi10)*(cos(phi21)*(cos(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))-sin(phi32)*sin(phi54)*cos(phi65))sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))+cos(phi32)*sin(phi54)*cos(phi65)))sin(phi10)*(sin(phi43)*cos(phi54)*cos(phi65)+cos(phi43)*sin(phi65));
sy
=
sin(phi10)*(cos(phi21)*(cos(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))-sin(phi32)*sin(phi54)*cos(phi65))sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)sin(phi43)*sin(phi65))+cos(phi32)*sin(phi54)*cos(phi65)))+cos(phi10)*(sin(phi43)*cos(phi5
4)*cos(phi65)+cos(phi43)*sin(phi65));
sz = sin(phi21)*(cos(phi32)*(cos(phi43)*cos(phi54)*cos(phi65)-sin(phi43)*sin(phi65))sin(phi32)*sin(phi54)*cos(phi65))+cos(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*cos(phi6
5)-sin(phi43)*sin(phi65))+cos(phi32)*sin(phi54)*cos(phi65));
nx
=
cos(phi10)*(cos(phi21)*(cos(phi32)*(-cos(phi43)*cos(phi54)*sin(phi65)sin(phi43)*cos(phi65))+sin(phi32)*sin(phi54)*sin(phi65))-sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*sin(phi65)-sin(phi43)*cos(phi65))cos(phi32)*sin(phi54)*sin(phi65)))-sin(phi10)*(sin(phi43)*cos(phi54)*sin(phi65)+cos(phi43)*cos(phi65));
ny
=
sin(phi10)*(cos(phi21)*(cos(phi32)*(-cos(phi43)*cos(phi54)*sin(phi65)sin(phi43)*cos(phi65))+sin(phi32)*sin(phi54)*sin(phi65))-sin(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*sin(phi65)-sin(phi43)*cos(phi65))cos(phi32)*sin(phi54)*sin(phi65)))+cos(phi10)*(sin(phi43)*cos(phi54)*sin(phi65)+cos(phi43)*cos(phi65));
nz
=
sin(phi21)*(cos(phi32)*(-cos(phi43)*cos(phi54)*sin(phi65)sin(phi43)*cos(phi65))+sin(phi32)*sin(phi54)*sin(phi65))+cos(phi21)*(sin(phi32)*(cos(phi43)*cos(phi54)*sin(phi65)-sin(phi43)*cos(phi65))-cos(phi32)*sin(phi54)*sin(phi65));
ax = cos(phi10)*(cos(phi21)*(-cos(phi32)*cos(phi43)*sin(phi54)-sin(phi32)*cos(phi54))sin(phi21)*(sin(phi32)*cos(phi43)*sin(phi54)+cos(phi32)*cos(phi54)))+sin(phi10)*sin(phi43)*sin(phi54)
;
ay = sin(phi10)*(cos(phi21)*(-cos(phi32)*cos(phi43)*sin(phi54)-sin(phi32)*cos(phi54))sin(phi21)*(-sin(phi32)*cos(phi43)*sin(phi54)+cos(phi32)*cos(phi54)))cos(phi10)*sin(phi43)*sin(phi54);
az = sin(phi21)*(-cos(phi32)*cos(phi43)*sin(phi54)-sin(phi32)*cos(phi54))+cos(phi21)*(sin(phi32)*cos(phi43)*sin(phi54)+cos(phi32)*cos(phi54));
LASMEA UMR 6602 du CNRS
59
Px
=
cos(phi10)*(cos(phi21)*(-0.35*sin(phi32)+0.3)0.35*sin(phi21)*cos(phi32))+0.0845*sin(phi10);
Py
=
sin(phi10)*(cos(phi21)*(-0.35*sin(phi32)+0.3)-0.35*sin(phi21)*cos(phi32))0.0845*cos(phi10);
Pz = sin(phi21)*(-0.35*sin(phi32)+0.3)+0.35*cos(phi21)*cos(phi32);
A = [sx,nx,ax,Px;
sy,ny,ay,Py;
sz,nz,az,Pz;
0 ,0 ,0 ,1 ];
LASMEA UMR 6602 du CNRS
60
Fichiers : JacobtotalsymDH.m et JacobtotalnumDH.m
Fichier : JacobtotalsymDH.m
Jacobienne du robot à 6 ddl
%obtention de la jacobienne 66 paramètrée
function [A] = JacobtotalsymDH(Phi10,Phi21,Phi32,Phi43,Phi54,Phi65)
format short
%introduction de variables symboliques
phi10 = sym('phi10');
phi21 = sym('phi21');
phi32 = sym('phi32');
phi43 = sym('phi43');
phi54 = sym('phi54');
phi65 = sym('phi65');
%def des constantes
alpha1 = sym('alpha1');
alpha2 = sym('alpha2');
alpha3 = sym('alpha3');
alpha4 = sym('alpha4');
alpha5 = sym('alpha5');
alpha6 = sym('alpha6');
d1 = sym('d1');
d2 = sym('d2');
d3 = sym('d3');
d4 = sym('d4');
d5 = sym('d5');
d6 = sym('d6');
theta01 = sym('theta1');
theta02 = sym('theta2');
theta03 = sym('theta3');
theta04 = sym('theta4');
theta05 = sym('theta5');
theta06 = sym('theta6');
r1 = sym('r1');
r2 = sym('r2');
r3 = sym('r3');
r4 = sym('r4');
r5 = sym('r5');
r6 = sym('r6');
q1 = phi10+theta01;
q2 = phi21+theta02;
q3 = phi32+theta03;
q4 = phi43+theta04;
LASMEA UMR 6602 du CNRS
61
q5 = phi54+theta05;
q6 = phi65+theta06;
T01 = TDH(alpha1,d1,q1,r1);
T12 = TDH(alpha2,d2,q2,r2);
T23 = TDH(alpha3,d3,q3,r3);
T34 = TDH(alpha4,d4,q4,r4);
T45 = TDH(alpha5,d5,q5,r5);
T56 = TDH(alpha6,d6,q6,r6);
T46 = T45*T56;
simplify(T46);
T36 = T34*T46;
T26 = T23*T36;
T16 = T12*T26;
T06 = T01*T16;
%calcul des colonnes de la jacobienne:
j16 = [-T16(1,1)*T16(2,4)+T16(2,1)*T16(1,4);
-T16(1,2)*T16(2,4)+T16(2,2)*T16(1,4);
-T16(1,3)*T16(2,4)+T16(2,3)*T16(1,4);
T16(3,1);
T16(3,2);
T16(3,3)
];
j26 = [-T26(1,1)*T26(2,4)+T26(2,1)*T26(1,4);
-T26(1,2)*T26(2,4)+T26(2,2)*T26(1,4);
-T26(1,3)*T26(2,4)+T26(2,3)*T26(1,4);
T26(3,1);
T26(3,2);
T26(3,3)
];
j36 = [-T36(1,1)*T36(2,4)+T36(2,1)*T36(1,4);
-T36(1,2)*T36(2,4)+T36(2,2)*T36(1,4);
-T36(1,3)*T36(2,4)+T36(2,3)*T36(1,4);
T36(3,1);
T36(3,2);
T36(3,3)
];
LASMEA UMR 6602 du CNRS
62
j46 = [-T46(1,1)*T46(2,4)+T46(2,1)*T46(1,4);
-T46(1,2)*T46(2,4)+T46(2,2)*T46(1,4);
-T46(1,3)*T46(2,4)+T46(2,3)*T46(1,4);
T46(3,1);
T46(3,2);
T46(3,3)
];
j56 = [-T56(1,1)*T56(2,4)+T56(2,1)*T56(1,4);
-T56(1,2)*T56(2,4)+T56(2,2)*T56(1,4);
-T56(1,3)*T56(2,4)+T56(2,3)*T56(1,4);
T56(3,1);
T56(3,2);
T56(3,3)
]
j66 = [ 0 ;
0;
0;
0;
0;
1
];
Fichier : JacobtotalnumDH.m
Jacobienne du robot à 6 ddl
function [A] = JacobtotalnumDH(varargin)
%def des constantes
robot = Centaure;
alpha1 = robot.Para_joint1(1);
alpha2 = robot.Para_joint2(1);
alpha3 = robot.Para_joint3(1);
alpha4 = robot.Para_joint4(1);
alpha5 = robot.Para_joint5(1);
alpha6 = robot.Para_joint6(1);
d1 = robot.Para_joint1(2);
d2 = robot.Para_joint2(2);
d3 = robot.Para_joint3(2);
d4 = robot.Para_joint4(2);
d5 = robot.Para_joint5(2);
d6 = robot.Para_joint6(2);
theta1 = robot.Para_joint1(3);
theta2 = robot.Para_joint2(3);
theta3 = robot.Para_joint3(3);
LASMEA UMR 6602 du CNRS
63
theta4 = robot.Para_joint4(3);
theta5 = robot.Para_joint5(3);
theta6 = robot.Para_joint6(3);
r1 = robot.Para_joint1(4);
r2 = robot.Para_joint2(4);
r3 = robot.Para_joint3(4);
r4 = robot.Para_joint4(4);
r5 = robot.Para_joint5(4);
r6 = robot.Para_joint6(4);
if nargin < 2
phi10 = robot.Valeurs_angles_cur(1);
phi21 = robot.Valeurs_angles_cur(2);
phi32 = robot.Valeurs_angles_cur(3);
phi43 = robot.Valeurs_angles_cur(4);
phi54 = robot.Valeurs_angles_cur(5);
phi65 = robot.Valeurs_angles_cur(6);
else
phi10=varargin{1};
phi21=varargin{2};
phi32=varargin{3}-phi21;
phi43=varargin{4};
phi54=varargin{5};
phi65=varargin{6};
end
%attention lignes de calculs tres longues, ne sont pas affichées, ne pas supprimer les lignes
qui paraissent vides
J611=(cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+th
eta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))+sin(phi21+th
eta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+the
ta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
LASMEA UMR 6602 du CNRS
64
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6)))))*(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi
43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)+cos(alpha2)*cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(ph
i43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(p
hi54+theta5)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+cos(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi
54+theta5)*r6*sin(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta
5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6-
LASMEA UMR 6602 du CNRS
65
sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))+r3*cos(alpha3))r2*sin(alpha2))+(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos
(phi54+theta5)*cos(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))+cos(alpha2)*
cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*c
os(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi6
5+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin
(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*(
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6)))))*(cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*
(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6-
LASMEA UMR 6602 du CNRS
66
cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)sin(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d
6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+d2);
J612=(-cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+sin(phi21+theta2)*(cos(al
pha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(-
LASMEA UMR 6602 du CNRS
67
sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))))*(cos(alpha2)*sin(phi21+t
heta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6
*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)+cos(alpha2)*cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(ph
i43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(p
hi54+theta5)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+cos(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi
54+theta5)*r6*sin(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta
5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))+r3*cos(alpha3))r2*sin(alpha2))+(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(-
LASMEA UMR 6602 du CNRS
68
sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+cos(alpha2)*cos(phi21+t
heta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*(sin(alpha4)*
sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))))*(cos(phi21+theta2)*(cos(
phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)
+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)sin(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d
6+sin(phi54+theta5)*r6*sin(alpha6)+d5)-
LASMEA UMR 6602 du CNRS
69
sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+d2);
J613=(cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4
)*cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+sin(phi21+theta2)*(c
os(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))))*(cos(alpha2)*sin(phi
21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5
)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)+cos(alpha2)*cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(ph
i43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))-
LASMEA UMR 6602 du CNRS
70
sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(p
hi54+theta5)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+cos(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi
54+theta5)*r6*sin(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta
5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))+r3*cos(alpha3))r2*sin(alpha2))+(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*sin(
phi54+theta5)*sin(alpha6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4
)*cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+cos(alpha2)*cos(phi
21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha
6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha
6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))+cos(alpha3)*(sin(alph
a4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))))*(cos(phi21+theta2)*
(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alp
ha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)-
LASMEA UMR 6602 du CNRS
71
sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)sin(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d
6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+d2);
J614=sin(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+thet
a5)*cos(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))+sin(alpha2)*
cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*c
os(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))))+cos(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+thet
LASMEA UMR 6602 du CNRS
72
a4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin
(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*(
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))));
J615=sin(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+sin(alpha2)*cos(phi21+th
eta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+cos(alpha2)*(sin(alpha3)
*sin(phi32+theta3)*(cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
LASMEA UMR 6602 du CNRS
73
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*(sin(alpha4)*
sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))));
J616=sin(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta
5)*sin(alpha6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4
)*cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+sin(alpha2)*cos(phi2
1+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)
-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+cos(alpha2)*(sin(alp
ha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))+cos(alpha3)*(sin(alph
a4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))));
J61=[J611;
J612;
J613;
J614;
J615;
J616
];
LASMEA UMR 6602 du CNRS
74
J62=[(-cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta
4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))*(cos(alpha3)
*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alp
ha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))r3*sin(alpha3))+(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(
phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))))*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*
d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6-
LASMEA UMR 6602 du CNRS
75
cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3);...
(-cos(phi32+theta3)*(cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(phi32+theta3)*(cos(alpha4)*sin(phi43+thet
a4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))*(cos(alpha3)*sin(phi32+t
heta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))*(cos(phi32+theta3)*(cos(
phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-
LASMEA UMR 6602 du CNRS
76
r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3);...
(-cos(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+thet
a5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))*(cos(alpha3)*sin(phi
32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5
)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))r3*sin(alpha3))+(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(a
lpha6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))*(cos(phi32+theta3)*(
cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3);...
sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))-
LASMEA UMR 6602 du CNRS
77
sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin
(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*(
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6)));...
sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*(sin(alpha4)*
sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)));...
sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))+cos(alpha3)*(sin(alph
a4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))...
];
J63=[(-cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(phi43+theta4)*(cos(alpha5)*sin(phi54
+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+thet
a5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*
LASMEA UMR 6602 du CNRS
78
sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))*(cos(phi43+th
eta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4);...
(-cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+the
ta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)
*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))*(cos(phi43+theta4)*(cos(p
hi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4);...
(-cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54
+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)
*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4)*
cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))*(cos(phi43+theta4)*(c
os(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4);...
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
LASMEA UMR 6602 du CNRS
79
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6));...
sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6));...
sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)
*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))...
];
J64=[(cos(phi54+theta5)*cos(phi65+theta6)+sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))*(co
s(alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+t
heta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5);...
(cos(phi54+theta5)*sin(phi65+theta6)+sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))*(c
os(alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))+(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6))*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*si
n(alpha6)+d5);...
-sin(phi54+theta5)*sin(alpha6)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5);...
sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6
)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6);...
sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6);...
-sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)...
];
J65=[cos(phi65+theta6)*r6*sin(alpha6)+cos(alpha6)*sin(phi65+theta6)*d6;
-sin(phi65+theta6)*r6*sin(alpha6)+cos(alpha6)*cos(phi65+theta6)*d6;
-sin(alpha6)*d6;
sin(alpha6)*sin(phi65+theta6);
sin(alpha6)*cos(phi65+theta6);
LASMEA UMR 6602 du CNRS
80
cos(alpha6)
];
J66=[ 0 ;
0;
0;
0;
0;
1
];
A= [J61,J62,J63,J64,J65,J66];
LASMEA UMR 6602 du CNRS
81
Fichiers : PINV_SVD.m et MCD_CENTAURE.m
Fichier PINV_SVD.m
Calcul la pseudo inverse par décomposition en valeurs singulières
function [res,inv_cond,dim_noyau,u,si,v]=pinv_svd(mat,tol)
[u,s,v]=svd(mat);
%si=inv(s);
if nargin<2
tol=1e-3;
end
si=s';
nvs=size(s,1);
%disp(['Valeurs singulieres :',num2str(diag(s)')])
inv_cond=s(nvs,nvs)/s(1,1);
si(1,1)=1./s(1,1);
i=2;
while (i<=nvs)
if(s(i,i)/s(i-1,i-1)<tol)
break;
end;
si(i,i)=1./s(i,i);
i=i+1;
end;
for (j=i:nvs)
si(j,j)=0;
end
dim_noyau=nvs-i+1;
%disp('Valeurs singulieres');
%disp(diag(s)');
%disp(diag(si)');
res=v*si*u';
Fichier MCD_CENTAURE.m
Calcul le modèle cinématique directe du CENTAURE
function [A] = MCD_Centaure(theta)
%def des constantes
alpha1 = 0;
alpha2 = pi/2;
alpha3 = 0;
alpha4 = -pi/2;
alpha5 = pi/2;
LASMEA UMR 6602 du CNRS
82
alpha6 = -pi/2;
d1 = 0;
d2 = 0;
d3 = 0.3;
d4 = 0;
d5 = 0;
d6 = 0;
theta1 = 0;
theta2 = 0;
theta3 = 0;
theta4 = 0;
theta5 = 0;
theta6 = 0;
r1 = 0;
r2 = 0;
r3 = 0.0845;
r4 = 0.35;
r5 = 0;
r6 = 0;
phi10=theta(1);
phi21=theta(2);
phi32=theta(3);
phi43=theta(4);
phi54=theta(5);
phi65=theta(6);
%attention lignes de calculs tres longues, ne sont pas affichées, ne pas supprimer les lignes
qui paraissent vides
J611=(cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+th
eta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))+sin(phi21+th
eta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+the
ta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
LASMEA UMR 6602 du CNRS
83
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6)))))*(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi
43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)+cos(alpha2)*cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(ph
i43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(p
hi54+theta5)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+cos(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi
54+theta5)*r6*sin(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta
5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6-
LASMEA UMR 6602 du CNRS
84
sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))+r3*cos(alpha3))r2*sin(alpha2))+(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos
(phi54+theta5)*cos(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))+cos(alpha2)*
cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*c
os(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi6
5+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin
(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*(
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6)))))*(cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*
(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6-
LASMEA UMR 6602 du CNRS
85
cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)sin(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d
6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+d2);
J612=(-cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+sin(phi21+theta2)*(cos(al
pha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(-
LASMEA UMR 6602 du CNRS
86
sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))))*(cos(alpha2)*sin(phi21+t
heta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6
*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)+cos(alpha2)*cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(ph
i43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(p
hi54+theta5)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+cos(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi
54+theta5)*r6*sin(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta
5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))+r3*cos(alpha3))r2*sin(alpha2))+(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(-
LASMEA UMR 6602 du CNRS
87
sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+cos(alpha2)*cos(phi21+t
heta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*(sin(alpha4)*
sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))))*(cos(phi21+theta2)*(cos(
phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)
+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)sin(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d
6+sin(phi54+theta5)*r6*sin(alpha6)+d5)-
LASMEA UMR 6602 du CNRS
88
sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+d2);
J613=(cos(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4
)*cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+sin(phi21+theta2)*(c
os(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))))*(cos(alpha2)*sin(phi
21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5
)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)+cos(alpha2)*cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(ph
i43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))-
LASMEA UMR 6602 du CNRS
89
sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(p
hi54+theta5)*r6*sin(alpha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+cos(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi
54+theta5)*r6*sin(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta
5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))+r3*cos(alpha3))r2*sin(alpha2))+(cos(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*sin(
phi54+theta5)*sin(alpha6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4
)*cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+cos(alpha2)*cos(phi
21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha
6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))sin(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha
6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))+cos(alpha3)*(sin(alph
a4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))))*(cos(phi21+theta2)*
(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alp
ha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)-
LASMEA UMR 6602 du CNRS
90
sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3)sin(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d
6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+d2);
J614=sin(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+thet
a5)*cos(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))+sin(alpha2)*
cos(phi21+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*c
os(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))))+cos(alpha2)*(sin(alpha3)*sin(phi32+theta3)*(cos(phi43+thet
LASMEA UMR 6602 du CNRS
91
a4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin
(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*(
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))));
J615=sin(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+sin(alpha2)*cos(phi21+th
eta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))+cos(alpha2)*(sin(alpha3)
*sin(phi32+theta3)*(cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
LASMEA UMR 6602 du CNRS
92
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*(sin(alpha4)*
sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))));
J616=sin(alpha2)*sin(phi21+theta2)*(cos(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta
5)*sin(alpha6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4
)*cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+sin(alpha2)*cos(phi2
1+theta2)*(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)
-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))+cos(alpha2)*(sin(alp
ha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))+cos(alpha3)*(sin(alph
a4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))));
J61=[J611;
J612;
J613;
J614;
J615;
J616
];
LASMEA UMR 6602 du CNRS
93
J62=[(-cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta
4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6))))*(cos(alpha3)
*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alp
ha6)+d5)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))r3*sin(alpha3))+(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(
phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6))))*(cos(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*
d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6-
LASMEA UMR 6602 du CNRS
94
cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3);...
(-cos(phi32+theta3)*(cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(phi32+theta3)*(cos(alpha4)*sin(phi43+thet
a4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))*(cos(alpha3)*sin(phi32+t
heta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))-r3*sin(alpha3))+(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6))))*(cos(phi32+theta3)*(cos(
phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-
LASMEA UMR 6602 du CNRS
95
r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3);...
(-cos(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*sin(phi54+thet
a5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))*(cos(alpha3)*sin(phi
32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5
)-sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(ph
i54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(
alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))+
r4*cos(alpha4))r3*sin(alpha3))+(cos(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(a
lpha6)-sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+cos(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))sin(alpha3)*(sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(p
hi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))))*(cos(phi32+theta3)*(
cos(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4)sin(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)
*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+d3);...
sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))-
LASMEA UMR 6602 du CNRS
96
sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54
+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin
(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))+cos(alpha3)*(
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6)));...
sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*(cos(phi54+theta5)*sin(phi65+theta6)-sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*si
n(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))+cos(alpha3)*(sin(alpha4)*
sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)));...
sin(alpha3)*sin(phi32+theta3)*(cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)sin(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))+sin(alpha3)*cos(phi32+theta3)*(cos(alpha4)*sin(phi43+theta4)*si
n(phi54+theta5)*sin(alpha6)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))-sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))+cos(alpha3)*(sin(alph
a4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))...
];
J63=[(-cos(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(phi43+theta4)*(cos(alpha5)*sin(phi54
+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6)))*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+thet
a5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*
LASMEA UMR 6602 du CNRS
97
sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alph
a5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(p
hi65+theta6)-sin(alpha5)*sin(alpha6)*sin(phi65+theta6))sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5
)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6)))*(cos(phi43+th
eta4)*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4);...
(-cos(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6)))*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+the
ta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)
*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+(cos(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6)))*(cos(phi43+theta4)*(cos(p
hi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4);...
(-cos(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(phi43+theta4)*(cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6)))*(cos(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*d6+sin(phi54
+theta5)*r6*sin(alpha6)+d5)+cos(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)
*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))-sin(alpha4)*(sin(alpha5)*sin(phi54+theta5)*d6sin(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)+cos(alpha5)*r6*cos(alpha6)+r5*cos(alpha5))r4*sin(alpha4))+(cos(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+cos(alpha4)*
cos(phi43+theta4)*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))sin(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)))*(cos(phi43+theta4)*(c
os(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5)sin(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+d4);...
sin(alpha4)*sin(phi43+theta4)*(cos(phi54+theta5)*cos(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha
5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi
LASMEA UMR 6602 du CNRS
98
65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*cos(
phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)*sin(phi65+theta6)+cos(alpha5)*si
n(alpha6)*sin(phi65+theta6));...
sin(alpha4)*sin(phi43+theta4)*(-cos(phi54+theta5)*sin(phi65+theta6)sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))+sin(alpha4)*cos(phi43+theta4)*(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)-sin(alpha5)*sin(alpha6)*cos(phi65+theta6))+cos(alpha4)*(sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6));...
sin(alpha4)*sin(phi43+theta4)*sin(phi54+theta5)*sin(alpha6)+sin(alpha4)*cos(phi43+theta4)
*(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)-sin(alpha5)*cos(alpha6))+cos(alpha4)*(sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6))...
];
J64=[(cos(phi54+theta5)*cos(phi65+theta6)+sin(phi54+theta5)*cos(alpha6)*sin(phi65+theta6))*(co
s(alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+(cos(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+cos(alpha5)*cos(phi54+t
heta5)*cos(alpha6)*sin(phi65+theta6)sin(alpha5)*sin(alpha6)*sin(phi65+theta6))*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin
(alpha6)+d5);...
(cos(phi54+theta5)*sin(phi65+theta6)+sin(phi54+theta5)*cos(alpha6)*cos(phi65+theta6))*(c
os(alpha5)*sin(phi54+theta5)*d6-cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)sin(alpha5)*r6*cos(alpha6)-r5*sin(alpha5))+(cos(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+cos(alpha5)*cos(phi54+theta5)*cos(alpha6
)*cos(phi65+theta6)sin(alpha5)*sin(alpha6)*cos(phi65+theta6))*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*si
n(alpha6)+d5);...
-sin(phi54+theta5)*sin(alpha6)*(cos(alpha5)*sin(phi54+theta5)*d6cos(alpha5)*cos(phi54+theta5)*r6*sin(alpha6)-sin(alpha5)*r6*cos(alpha6)r5*sin(alpha5))+(-cos(alpha5)*cos(phi54+theta5)*sin(alpha6)sin(alpha5)*cos(alpha6))*(cos(phi54+theta5)*d6+sin(phi54+theta5)*r6*sin(alpha6)+d5);...
sin(alpha5)*sin(phi54+theta5)*cos(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6
)*sin(phi65+theta6)+cos(alpha5)*sin(alpha6)*sin(phi65+theta6);...
sin(alpha5)*sin(phi54+theta5)*sin(phi65+theta6)+sin(alpha5)*cos(phi54+theta5)*cos(alpha6)
*cos(phi65+theta6)+cos(alpha5)*sin(alpha6)*cos(phi65+theta6);...
-sin(alpha5)*cos(phi54+theta5)*sin(alpha6)+cos(alpha5)*cos(alpha6)...
];
J65=[cos(phi65+theta6)*r6*sin(alpha6)+cos(alpha6)*sin(phi65+theta6)*d6;
-sin(phi65+theta6)*r6*sin(alpha6)+cos(alpha6)*cos(phi65+theta6)*d6;
-sin(alpha6)*d6;
sin(alpha6)*sin(phi65+theta6);
sin(alpha6)*cos(phi65+theta6);
LASMEA UMR 6602 du CNRS
99
cos(alpha6)
];
J66=[ 0 ;
0;
0;
0;
0;
1
];
A= [J61,J62,J63,J64,J65,J66];
LASMEA UMR 6602 du CNRS
100
Fichiers : estim_theta.m et MGI_numerique.m
Fichier estim_theta.m
Le but est de calculer une estimation des variables articulaires à partir d’une mesure de pose
3D.
%utilisation de la jacobienne inverse pour l'estimation des variables articulaires
function [q_est] = estim_theta(data,fctMGD,fctMCD)
epsilon=data(1);
max_iter=data(2);
pose_effecteur=reshape(data(3:18),4,4);
estimation_initiale=data(19:end);
q_est=MGI_numerique(pose_effecteur,estimation_initiale,fctMGD,fctMCD,epsilon,max_iter,
0);
Fichier MGI_numerique.m
Le but est d’utiliser la jacobienne inverse pour le calcul des q.
%utilisation de la jacobienne inverse pour le calcul des q
% Minimise (selon Gauss-Newton) la fonction de cout
% 1/2 || pose_effecteur - MGD(q) ||^2 + mu/2 || q - q_init ||^2
function q_est =
MGI_numerique(pose_effecteur,q_init,fctMGD,fctMCD,epsilon,max_iter,mu)
i=0;
if nargin<7
mu=0;
end
X_mesure=xyzrpy(pose_effecteur);
q_i=mod(q_init,2*pi);
T0n_i=feval(fctMGD,q_init);
X_i=xyzrpy(T0n_i);
dimq=length(q_init);
Idimq=eye(dimq);
deltaX=X_i-X_mesure;
critere=(abs(deltaX(1))+abs(deltaX(2))+abs(deltaX(3)))*50+abs(deltaX(4))+abs(deltaX(5))+a
bs(deltaX(6));
while (critere>epsilon)
i=i+1;
LASMEA UMR 6602 du CNRS
101
phi=X_i(4);theta=X_i(5);
% calcul de la jacobienne courante
J=feval(fctMCD,q_i);
%calcul des matrices de transfert
cphi=cos(phi);
sphi=sin(phi);
ctheta=cos(theta);
tantheta=tan(theta);
omegaRPY=[cphi*tantheta,sphi*tantheta,1;
-sphi,cphi,0;
cphi/ctheta,sphi/ctheta,0];
omegaXYZ=[1,0,0;
0,1,0;
0,0,1];
R06=T0n_i(1:3,1:3);
vectT06=[ 0 ,-T0n_i(3,4), T0n_i(2,4);
T0n_i(3,4), 0 ,-T0n_i(1,4);
-T0n_i(2,4), T0n_i(1,4), 0 ];
nul=[0,0,0;
0,0,0;
0,0,0];
%pass=[R06,R06*vectT06;
% nul,R06];
Pass06=[R06,nul;
nul,R06];
%calcul de J06 (les X sont exprimes dans le repere 0)
J06 = Pass06*J;
truc= [omegaXYZ,nul;
nul,omegaRPY];
newJ06=truc*J06;
newJ06t=newJ06';
% Le systeme lineaire a resoudre
% SysMat=((1-mu)*newJ06t*newJ06+mu*Idimq);
% Noyau=(In-SysMat);
% SysVect=(newJ06t*deltaX-mu*(Idimq-newJ06t*newJ06)*(q_i-q_init));
% deltaq=0.125*SysMat\SysVect;
[newJ06pinv,inv_cond,dim_noyau,u,si,v]=pinv_svd(newJ06);
lambda=0.125;
deltaq=-lambda*pinv_svd(newJ06)*deltaX-lambda*mu*(Idimq-newJ06t*newJ06)*(q_iq_init);
LASMEA UMR 6602 du CNRS
102
%
%
[Jinv,inv_cond,dim]=pinv_svd(newJ06);
deltaq=0.125*Jinv*deltaX;
%
%
%
if (dim>0)
disp('MGI_numerique: MCD singulier')
end
%q_i=mod(q_i+deltaq,2*pi);
q_i=q_i+deltaq;
T0n_i=feval(fctMGD,q_i);
X_i=xyzrpy(T0n_i);
deltaX=X_i-X_mesure;
critere=(abs(deltaX(1))+abs(deltaX(2))+abs(deltaX(3)))*50+abs(deltaX(4))+abs(deltaX(5))+a
bs(deltaX(6));
if i>max_iter
disp(['Non convergence ! Erreur residuelle : ', num2str(critere)])
break;
end;
end
q_est=mod(q_i,2*pi); %[q_i(1),q_i(2),q_i(3),pi+q_i(4),2*pi-q_i(5),pi+q_i(6)]';
LASMEA UMR 6602 du CNRS
103
Eléments de réponses aux questions restées en suspend
Des solutions de principe sont proposées dans cette annexe. Par contre leur mise en œuvre
(codage, validation in situ, réalisation d’outillage), engagerait des coûts supplémentaires et
n’est pas nécessaire quant à la validation de l’étude de faisabilité :
Commande cartésienne d’un robot non instrumenté
par Asservissement visuel
1. Question 1 : Mire cylindrique sur l’effecteur pour obtenir une visibilité accrue (but
étendre le champ opérationnel du robot)
Supposons que l’on dispose d’une mire cylindrique comme présentée dans la figure
suivante :
Minit
i+1
i-1
i
Exemple de mire cylindrique
Supposons les trois hypothèses suivantes
• Hyp. 1 : un motif permet de calculer une pose
• Hyp. 2 : il y a toujours un motif courant i visible
• Hyp. 3 : Le modèle de la mire cylindrique est connu
alors il peut être envisagé l’algorithme suivant :
•
•
•
•
•
•
On calcul la pose 3D à partir motif i (utilisation du modèle du motif)
On en déduit la pose 3D de la mire cylindrique (utilisation du modèle de la mire)
On en déduit les coordonnées des points 3D des autres motifs (i+1,i-1)
On en déduit les coordonnées des points 2D image des autres motifs (i+1,i-1)
On initialise en permanence 2 algorithmes de suivi des autres motifs (i+1,i-1)
On commute au niveau suivi d’un motif à l’autre sans problème à priori (à
résoudre l’initialisation de l’algorithme – un marqueur supplémentaire sur la mire)
L’algorithme d’estimation des q utilise la pose 3D de la mire cylindrique (qui est
invariante quelquesoit le motif)
LASMEA UMR 6602 du CNRS
104
2. Question 2 : Positionnement de plusieurs caméras pour l’estimation des q (but
étendre le champ opérationnel du robot)
Le problème à résoudre est : assurer la visibilité de la mire effecteur dans un espace de
travail demi-sphérique autour du robot, augmenter la précision des détections pour
améliorer la précision de l’estimation de la pose de l’effecteur dans les tâches effectuées
latéralement au sol (saisir un objet) ou au mur (ouvrir un sas).
Supposons les trois hypothèses suivantes
• Hyp. 1 : il y a pas d’occultations
• Hyp. 2 : on n’a pas de contraintes de coût
• Hyp. 3 : les caméras utilisées sont calibrées (internes et externes)
alors on peut utiliser 2 caméras Pan Tilt Zoom orientées de chaque coté afin de mettre les
algorithmes d’estimation des q dans les meilleures conditions.
Le Pan et le Tilt sont commandés pour effectuer un centrage de la mire dans l’image. Le
Zoom est commandé selon deux critères : éviter les sorties de champ en fonction des
vitesses du robot, optimiser les détections des amers afin d’adapter au mieux la précision
des détections (compromis à faire)
L’algorithme d’estimation de la pose 3D de la mire cylindrique utilise le modèle des
caméras PTZ.
3. Question 3 : Validation d’un positionnement par asservissement visuel avec volant
(but valider un cas réel d’utilisation : c est un problème de perception
Le principe du positionnement est déjà validé. Reste le problème du suivi et de
l’extraction des primitives nécessaires à la commande.
Supposons les trois hypothèses suivantes
• Hyp. 1 : le volant est toujours visible
• Hyp. 2 : Le modèle du volant est connu (un cylindre et trois branches
cylindriques à 120°)
alors il peut être envisagé l’algorithme suivant :
• Détection :
o On détecte les 3 branches
o On détecte l’ellipse
• Calcul de pose :
o On calcul la pose 3D à partir des mesures images et du modèle de l’objet
• Suivi de l’objet :
o Un algorithme de suivi permet de simplifier la recherche des
informations visuelles (à résoudre l’initialisation de l’algorithme si
l’environnement est perturbé – un marqueur si l’on souhaite lever
l’ambiguïté de la symétrie de l’objet tous les 120°)
L’algorithme de positionnement par asservissement visuel pourra utiliser la pose 3D du
volant, ou bien des points caractéristiques dans l’image.
LASMEA UMR 6602 du CNRS
105