Qu'est-ce que le profil trapèze vitesse ?
Le profil trapèze vitesse est une méthode de contrôle de mouvement qui permet d'optimiser l'accélération et la décélération des moteurs pour un mouvement fluide et précis.
Ce profil divise le mouvement en trois phases : une phase d'accélération, une phase à vitesse constante, et une phase de décélération. Cette approche est particulièrement utile pour les robots bipèdes où les mouvements doivent être précis et contrôlés pour maintenir l'équilibre.
Le savais-tu ?
Le profil trapèze est largement utilisé en robotique car il réduit les à-coups mécaniques et les oscillations, tout en minimisant la consommation d'énergie.
Principe du trapèze vitesse
Le profil trapèze se caractérise par trois paramètres principaux :
- Vitesse maximale (Vmax)
- Accélération (A)
- Décélération (D)
$$ t_{acc} = \frac{V_{max}}{A} \quad t_{dec} = \frac{V_{max}}{D} $$
Pour un robot bipède, ces paramètres doivent être soigneusement choisis en fonction de la dynamique du robot, de sa masse et des contraintes mécaniques des articulations.
Application au robot bipède
Pour un robot bipède, le profil trapèze vitesse peut être utilisé pour contrôler :
- Les mouvements des articulations (hanches, genoux, chevilles)
- La transition du poids d'une jambe à l'autre
- Les mouvements de marche ou de rotation
L'implémentation nécessite de synchroniser parfaitement les moteurs des deux jambes pour maintenir l'équilibre pendant toutes les phases du mouvement.
class TrapezoidalProfile {
public:
TrapezoidalProfile(float maxVel, float accel, float decel)
: Vmax(maxVel), A(accel), D(decel) {}
void compute(float distance) {
// Calcul des temps d'accélération et décélération
t_acc = Vmax / A;
t_dec = Vmax / D;
// Distance nécessaire pour atteindre Vmax
d_acc = 0.5 * A * t_acc * t_acc;
d_dec = 0.5 * D * t_dec * t_dec;
if (d_acc + d_dec > distance) {
// Profil triangulaire (pas de phase à vitesse constante)
Vmax = sqrt((2 * distance * A * D) / (A + D));
t_acc = Vmax / A;
t_dec = Vmax / D;
t_const = 0;
} else {
// Profil trapèze classique
t_const = (distance - d_acc - d_dec) / Vmax;
}
}
float getVelocity(float t) {
if (t < t_acc) return A * t;
else if (t < t_acc + t_const) return Vmax;
else if (t < t_acc + t_const + t_dec) return Vmax - D * (t - t_acc - t_const);
else return 0;
}
private:
float Vmax, A, D;
float t_acc = 0, t_dec = 0, t_const = 0;
float d_acc = 0, d_dec = 0;
};
Intégration dans le contrôle des moteurs du bipède
Contrôle des articulations
Chaque articulation peut être contrôlée avec son propre profil trapèze, synchronisé avec les autres moteurs.
Exemple pratique :
Pour un pas avant, la hanche et le genou de la jambe avant suivent un profil trapèze pendant que la jambe arrière maintient l'équilibre.
Transition de poids
Le transfert du poids d'une jambe à l'autre doit suivre un profil précis pour éviter les chocs.
Références
- Craig, J. J. (2005). Introduction to Robotics: Mechanics and Control. Pearson Education.
- Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2009). Robotics: Modelling, Planning and Control. Springer.
- Spong, M. W., Hutchinson, S., & Vidyasagar, M. (2006). Robot Modeling and Control. Wiley.