Skip to main content
Jonathan Andrei
Concordia University

Concordia University

Assistant de recherche, session hiver 2022

Janvier 2022 à mai 2022Montréal, CanadaRecherche universitaire, traitement de capteurs en temps réel

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.

C++OpenGLIMU sensorsQuaternionsCross-platform

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.