Lu-Uy Hoang

Étudiant en génie informatique

Je travaille sur le logiciel embarqué, les boucles d'asservissement et l'intégration qui fait qu'un robot fonctionne au dixième essai aussi bien qu'au premier. Après trois stages en développement logiciel, je développe surtout en C, C++ et Python. Je termine mon baccalauréat à Polytechnique Montréal en mai 2027. Je cherche un projet de maîtrise ou un poste en robotique ou en systèmes embarqués, à partir de l'été 2027.

Projets

Détection de chute par capteur à temps de vol

Équipe de 4, Polytechnique Montréal, en cours

Détecter les chutes en milieu industriel sans caméra. Un capteur à temps de vol mesure la profondeur dans la zone surveillée, et le nœud détermine lui-même si une personne est tombée et reste au sol. Seule l'alerte quitte l'appareil.

Toute la chaîne de traitement s'exécute sur un ESP32-S3. La soustraction du fond sépare les personnes de la pièce vide, la détection de blobs les repère, le suivi les relie d'une image à l'autre, et une machine à états confirme la chute avant de déclencher une alerte par MQTT. Les étapes de détection sont écrites en C99 pur, sans cadriciel, ce qui permet de les exécuter aussi sur un poste de travail à partir de données enregistrées.

C, ESP-IDF, FreeRTOS, ESP32-S3, ams TMF8829, MQTT, Python.

Exploration autonome multi-robots

Équipe de 7, Polytechnique Montréal, automne 2025

Deux robots AgileX Limo explorent une pièce inconnue et en construisent une carte commune. La station au sol n'envoie que des commandes de haut niveau, comme le départ de la mission et le retour à la base. Toute la navigation s'exécute à bord. Chaque robot planifie son propre trajet, évite les obstacles et revient à moins de 30 cm de sa position initiale.

J'ai travaillé sur la partie embarquée et sur la simulation. Le contrôle à bord est un ensemble de serveurs d'action ROS2 en C++. Ils couvrent le départ et l'arrêt de la mission, le retour à la base, le suivi de points de passage, la zone de sécurité et la gestion de la batterie. La cartographie repose sur Cartographer, qui fusionne les données du lidar, l'odométrie des roues et la centrale inertielle. C'est ce qui limite la dérive et permet une localisation fiable. L'exploration utilise explore_lite et la navigation repose sur Nav2. Les deux cartes sont fusionnées sur les robots avec multirobot_map_merge. L'interface web a été développée par d'autres membres de l'équipe.

C++, Python, ROS2, Nav2, Cartographer, explore_lite, multirobot_map_merge, Gazebo, Docker. Lidar, caméras RGB et de profondeur, centrale inertielle.

Départ de mission et exploration autonome sur les robots réels.
Évitement d'obstacles à partir du lidar embarqué, sans intervention de l'opérateur.
Planification automatique de l'exploration en simulation, avec les étapes de l'algorithme affichées dans l'interface.

libumi

Projet personnel, 2025

Une bibliothèque C bas niveau pour l'ATmega328P, construite avec avr-gcc et avr-libc. Pilotes pour un afficheur LCD HD44780 en mode 4 bits, l'USART, l'EEPROM interne et la lecture d'un clavier matriciel. Quatre exemples fonctionnels et une compilation pilotée par Make.

C, avr-gcc, avr-libc, Make. ATmega328P.

Code source sur GitHub

Expérience

Stagiaire en développement logiciel

eNUVIO, d'avril à août 2026

eNUVIO filme des cellules musculaires en contraction au microscope. Des particules traçantes déposées sur l'échantillon rendent le mouvement visible. J'étais le seul développeur de la chaîne de traitement qui les suit d'une image à l'autre et convertit leur mouvement en mesures. J'ai aussi développé l'application de bureau Qt que les chercheurs utilisent pour lancer les traitements et consulter les graphiques. Le rendu est réparti sur plusieurs processus, dont le nombre s'ajuste au processeur et à la mémoire disponibles, ce qui permet à l'interface de rester réactive. J'ai également mis en place l'intégration continue avec analyse statique, vérification des types et une suite de tests.

Python, Qt, OpenCV, NumPy.

Stagiaire en développement full stack

Petal, deux stages consécutifs, de janvier à août 2025

Petal développe des logiciels de gestion d'horaires et de dossiers pour le secteur de la santé. J'ai travaillé sur HUB Next-Gen, un système de microservices traitant les demandes de soins et les requêtes sur les données des patients. Mon travail couvrait l'interface Angular et plusieurs des services NestJS derrière elle, qui communiquent par Kafka. Les données médicales suivent la norme FHIR et sont servies par un serveur Aidbox.

Angular, React, TypeScript, NgRx, NestJS, Ruby on Rails, Kafka, FHIR.

Stagiaire en développement d'API et de processus

Ciena, de mai à août 2024

L'interface de l'outil interne était développée avec Bonita, une plateforme de gestion de processus d'affaires dotée de sa propre couche d'interface. J'ai réalisé une preuve de concept en React pour montrer ce qu'une interface moderne pouvait faire à la place, notamment l'authentification par jeton.

React, TypeScript, Tailwind CSS.