
Concordia University
Assistant de recherche, session hiver 2022
Visualisation IMU en temps réel en C++ et OpenGL, précision système de 99 %, multiplateforme
Écriture d'une application C++ multiplateforme qui lisait le tangage, le roulis, le lacet, le quaternion, l'accélération et la vitesse angulaire d'un capteur IMU, puis visualisait l'orientation en direct via des rotations basées sur les quaternions dans OpenGL.
Le problème
Un groupe de recherche voulait visualiser en temps réel des données d'IMU (unité de mesure inertielle) sur plusieurs plateformes. Le pipeline existant était lent, et la visualisation retardait par rapport à la cadence du capteur.
La rotation par angles d'Euler introduit le blocage de cardan à certaines orientations, ce qui casse visiblement le modèle quand les axes s'alignent. Les quaternions évitent ça complètement, mais les mathématiques sont moins intuitives.
L'approche
Construction d'une application C++ multiplateforme pour traiter et visualiser le flux du capteur en temps réel. Implémentation d'une visualisation 3D avec OpenGL utilisant des rotations basées sur les quaternions, qui évitent le piège du blocage de cardan des angles d'Euler.
Profilage du chemin critique et optimisation des algorithmes de collecte et d'analyse pour que la visualisation tienne la cadence quand le taux d'échantillonnage montait.
Le résultat
La précision du système est passée à 99 % en resserrant les algorithmes de collecte et d'analyse.
Le temps de traitement a diminué. La réactivité globale du système s'est améliorée.
L'application tournait de manière identique sur les plateformes dont le groupe de recherche avait besoin.
Ce que j'en retiens
Les systèmes en cadence d'image ont un plafond dur. On ne triche pas avec les mathématiques. L'optimisation n'est pas d'écrire du code plus rapide, c'est de faire moins de travail par image. Ce modèle mental se transfère directement à tout système sensible à la latence que j'ai touché depuis : inférence en temps réel, API en streaming, boucles d'agent en direct, interfaces qui se mettent à jour en direct.