Qu'est-ce que la commande Feedforward ?


La commande feedforward (ou "pré-action") est une technique de contrôle qui anticipe les perturbations et les besoins du système en utilisant un modèle de celui-ci.

Contrairement au contrôle feedback qui réagit aux erreurs après qu'elles se sont produites, le feedforward agit de manière proactive pour minimiser ces erreurs avant même qu'elles n'apparaissent.

Le savais-tu ?

Dans les robots bipèdes, le feedforward est essentiel pour maintenir l'équilibre car il permet d'anticiper les mouvements nécessaires avant que le déséquilibre ne soit détecté par les capteurs.

Principe Général du Feedforward

Le contrôle feedforward utilise une connaissance a priori du système et des perturbations pour calculer la commande nécessaire. Pour un robot bipède, cela signifie :

$$u_{ff} = M^{-1}(\theta)(\ddot{\theta}_d + C(\theta, \dot{\theta}) + G(\theta))$$

Schéma de commande feedforward

Schéma de commande hybride feedforward/feedback

Où M est la matrice d'inertie, C les forces centrifuges et de Coriolis, G les forces gravitationnelles, et θd la trajectoire désirée.

Application au robot bipède

Pour un robot bipède, le feedforward permet :

  • D'anticiper les couples nécessaires pour les mouvements planifiés
  • De compenser la dynamique intrinsèque du robot (inertie, gravité)
  • De réduire la charge de calcul du feedback en fournissant une première approximation de la commande

Implémentation Feedforward pour moteurs
// Modèle simplifié de feedforward pour un moteur
float computeFeedforward(float desiredAngle, float desiredVelocity, float desiredAcceleration) {
    // Paramètres du moteur et du segment
    float inertia = 0.01f;  // Moment d'inertie estimé
    float friction = 0.05f; // Coefficient de friction
    
    // Calcul du couple feedforward
    float torque = inertia * desiredAcceleration 
                 + friction * desiredVelocity
                 + computeGravityCompensation(desiredAngle);
    
    return torque;
}

float computeGravityCompensation(float angle) {
    // Compensation de l'effet de la gravité
    float mass = 0.2f;      // Masse estimée
    float length = 0.1f;    // Longueur du segment
    float g = 9.81f;        // Gravité
    
    return mass * g * length * sin(angle);
}

Intégration dans l'architecture du robot

Contrôle des moteurs

Le feedforward peut être combiné avec un contrôleur PID pour améliorer la performance :

Exemple pratique :

Pour la marche, calculer d'abord le couple théorique nécessaire (feedforward) puis utiliser le PID pour corriger les erreurs résiduelles.

Objectif : Réduire l'erreur de suivi de trajectoire et améliorer la stabilité

Références

  • Siciliano, B., Sciavicco, L., Villani, L., & Oriolo, G. (2010). Robotics: Modelling, Planning and Control. Springer.
  • Spong, M. W., Hutchinson, S., & Vidyasagar, M. (2006). Robot Modeling and Control. Wiley.
  • Pratt, J., & Tedrake, R. (2006). Velocity-Based Stability Margins for Fast Bipedal Walking. Fast Motions in Robotics.
  • Wieber, P.-B. (2006). Trajectory Free Linear Model Predictive Control for Stable Walking in the Presence of Strong Perturbations. Humanoids.