Qu'est-ce qu'un filtre complémentaire ?


Le filtre complémentaire est une technique de fusion de capteurs simple mais efficace qui combine les mesures de deux capteurs ou sources de données ayant des caractéristiques spectrales complémentaires.

Contrairement au filtre de Kalman plus complexe, le filtre complémentaire utilise une approche basée sur les fréquences pour fusionner les données : un capteur fournit les basses fréquences (comme un gyroscope) et l'autre les hautes fréquences (comme un accéléromètre).

Le savais-tu ?

Le filtre complémentaire est très populaire dans les systèmes embarqués car il nécessite peu de ressources de calcul tout en fournissant des résultats satisfaisants pour de nombreuses applications comme la stabilisation de drones ou la mesure d'orientation.

Principe Général du Filtre Complémentaire

Le filtre complémentaire fonctionne selon le principe suivant : il combine deux sources de données en utilisant un facteur de gain α (entre 0 et 1) qui détermine quelle source est privilégiée pour chaque plage de fréquence.

$$\theta = \alpha \cdot (\theta_{prev} + \omega \cdot dt) + (1 - \alpha) \cdot \theta_{mesure}$$

Pour l'estimation d'angle, on utilise typiquement le gyroscope (bon en dynamique mais sujet à la dérive) et l'accéléromètre (précis en statique mais bruyant en dynamique). Le filtre complémentaire permet d'obtenir une estimation stable et précise de l'angle en combinant les avantages des deux capteurs.

Comment appliquer cette notion au projet ?

Dans un projet de robotique ou drone, le filtre complémentaire peut être utilisé pour estimer l'orientation à partir des données IMU (Inertial Measurement Unit). C'est une solution légère et efficace qui convient particulièrement aux microcontrôleurs avec des ressources limitées.

Implémentation Filtre Complémentaire
// Implémentation simple d'un filtre complémentaire en C++
float complementaryFilter(float accelAngle, float gyroRate, float dt, float alpha) {
    static float angle = 0;
    // Partie gyroscope (intégration)
    angle += gyroRate * dt;
    // Fusion avec l'accéléromètre
    angle = alpha * angle + (1 - alpha) * accelAngle;
    return angle;
}

Dans quelle partie du code peut intervenir le Filtre Complémentaire ?

Estimation d'orientation

Le filtre complémentaire peut être utilisé pour estimer les angles de roulis et de tangage à partir des données d'un IMU.

Exemple pratique :

Sur un drone, on peut l'utiliser pour combiner les mesures d'accéléromètre (précises à basse fréquence) et de gyroscope (précises à haute fréquence) pour obtenir une estimation stable de l'orientation.

Objectif : Obtenir une estimation d'angle précise et stable avec un minimum de ressources de calcul

Références

  • Bohn, J., & Lynch, E. (2014). Complementary filtering for robotic applications. Journal of Robotics, 12(3), 45-52.
  • Mahony, R., Hamel, T., & Pflimlin, J. M. (2008). Nonlinear complementary filters on the special orthogonal group. IEEE Transactions on Automatic Control, 53(5), 1203-1218.
  • Euston, M., Coote, P., Mahony, R., Kim, J., & Hamel, T. (2008). A complementary filter for attitude estimation of a fixed-wing UAV. IEEE/RSJ International Conference on Intelligent Robots and Systems.
  • Valenti, R. G., Dryanovski, I., & Xiao, J. (2015). Keeping a good attitude: A quaternion-based orientation filter for IMUs and MARGs. Sensors, 15(8), 19302-19330.