Qu'est-ce que le Jacobien ?
Le Jacobien est une matrice de dérivées partielles qui décrit comment les variations des variables d'entrée affectent les variables de sortie d'une fonction vectorielle.
En robotique, et particulièrement pour un robot bipède, le Jacobien est crucial pour comprendre la relation entre les vitesses articulaires (variables d'entrée) et les vitesses du centre de masse ou des effecteurs (variables de sortie).
Le savais-tu ?
Le concept de matrice Jacobienne doit son nom au mathématicien Carl Gustav Jacob Jacobi (1804-1851). Elle est fondamentale en robotique pour la planification et le contrôle des mouvements.
Principe Général du Jacobien
Pour une fonction vectorielle f: ℝⁿ → ℝᵐ, le Jacobien J est une matrice m×n où chaque élément Jᵢⱼ est la dérivée partielle de la i-ème composante de f par rapport à la j-ème variable :
$$J = \begin{bmatrix} \frac{\partial f_1}{\partial x_1} & \cdots & \frac{\partial f_1}{\partial x_n} \\ \vdots & \ddots & \vdots \\ \frac{\partial f_m}{\partial x_1} & \cdots & \frac{\partial f_m}{\partial x_n} \end{bmatrix}$$
Pour un robot bipède, le Jacobien permet de relier les vitesses angulaires des articulations (hanches, genoux, chevilles) à la vitesse et à l'orientation du corps du robot dans l'espace.
Comment appliquer le Jacobien à un robot bipède ?
Dans un robot bipède, le Jacobien est essentiel pour :
- Calculer les vitesses et accélérations du centre de masse
- Maintenir l'équilibre dynamique
- Planifier les trajectoires des pieds
- Implémenter des contrôleurs en force ou en position
- Éviter les singularités (configurations où le robot perd sa mobilité)
// Exemple simplifié de calcul du Jacobien pour une jambe de robot bipède
Eigen::MatrixXd computeLegJacobian(const VectorXd& joint_angles) {
// Paramètres géométriques du robot
const double l1 = 0.2; // Longueur cuisse
const double l2 = 0.2; // Longueur tibia
// Extraction des angles articulaires
double q1 = joint_angles[0]; // Hanche
double q2 = joint_angles[1]; // Genou
// Initialisation de la matrice Jacobienne 2x2
Eigen::MatrixXd J(2,2);
// Calcul des éléments du Jacobien
J(0,0) = -l1*sin(q1) - l2*sin(q1+q2);
J(0,1) = -l2*sin(q1+q2);
J(1,0) = l1*cos(q1) + l2*cos(q1+q2);
J(1,1) = l2*cos(q1+q2);
return J;
}
Dans quelle partie du code peut intervenir le Jacobien ?
Contrôle d'équilibre
Le Jacobien permet de calculer comment ajuster les angles des articulations pour maintenir le centre de masse dans une position stable.
Exemple pratique :
Lorsque le robot commence à pencher vers l'avant, le Jacobien permet de déterminer quelles articulations doivent être ajustées et dans quelle proportion pour rétablir l'équilibre.
Références
- Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2009). Robotics: Modelling, Planning and Control. Springer Science & Business Media.
- Featherstone, R. (2014). Rigid Body Dynamics Algorithms. Springer.
- Murray, R. M., Li, Z., & Sastry, S. S. (1994). A Mathematical Introduction to Robotic Manipulation. CRC Press.
- Sardain, P., & Bessonnet, G. (2004). Forces Acting on a Biped Robot. Center of Pressure—Zero Moment Point. IEEE Transactions on Systems, Man, and Cybernetics.