On-robot Perception
Vision YOLO + Traitement LiDAR embarqué
Défi
Donner des "yeux" au robot : lui permettre de percevoir son environnement en temps réel pour naviguer en sécurité parmi les piétons, véhicules et obstacles.
Opportunité
Un robot autonome qui roule en environnement réel doit comprendre ce qui l'entoure. Pas question de foncer dans un piéton ou de rater un véhicule qui arrive. Il fallait construire les pipelines de perception qui alimentent la navigation.
Disciplines
Responsabilités
Pipeline vision YOLO
Traitement LiDAR
Optimisation embarquée
Intégration ROS
Stack
Contexte
En 2021, au début de Hive Robotics, j'ai construit les briques de perception embarquées sur les robots. L'objectif : détecter en temps réel les personnes, véhicules et obstacles pour permettre une navigation sûre.
Deux sources de données à exploiter : les caméras RGB pour la détection d'objets (personnes, véhicules, signalisation) et le LiDAR pour la compréhension 3D de l'environnement. Le défi était d'intégrer des modèles state-of-the-art tout en respectant les contraintes de l'embarqué : latence minimale, ressources limitées.
Architecture
Pipeline vision
J'ai intégré des modèles YOLO pré-entraînés pour la détection d'objets : personnes, véhicules, signalisation. Pas de training custom, l'objectif était d'exploiter des modèles éprouvés et de les optimiser pour l'inférence embarquée. Conversion ONNX puis TensorRT pour tirer parti du GPU.
Pipeline LiDAR
Le LiDAR génère des nuages de points 3D de l'environnement. J'ai utilisé PCL (Point Cloud Library) pour le traitement : filtrage, segmentation, clustering. Détection d'obstacles et de personnes directement sur les données 3D, complémentaire à la vision caméra.
Exploration prédiction de trajectoires
J'ai exploré la prédiction de trajectoires de piétons en adaptant des approches issues de papers de recherche. L'idée : anticiper où vont les personnes pour une navigation plus fluide. Resté au stade exploratoire, le focus étant sur la détection robuste.
Pipeline de perception
Détection multi-classes
Le pipeline vision détecte plusieurs classes d'objets : piétons (priorité sécurité), véhicules (voitures, vélos, trottinettes), et signalisation (panneaux, feux). Chaque détection est associée à une bounding box et un score de confiance, transmis au module de navigation.
Fusion caméra + LiDAR
Les deux sources de données se complètent : la caméra excelle pour classifier les objets (personne vs véhicule), le LiDAR donne la distance et la forme 3D précise. La fusion permet une détection plus robuste, notamment dans les cas limites (contre-jour, objets partiellement masqués).
Format de sortie ROS
Les détections sont publiées sur des topics ROS standardisés : bounding boxes 2D pour la vision, point clouds segmentés pour le LiDAR. Le module de navigation consomme ces données pour construire sa représentation de l'environnement et planifier ses trajectoires.
Stack technique
1Optimisation TensorRT
Les modèles YOLO sont convertis en ONNX puis optimisés avec TensorRT pour l'inférence GPU. Cette optimisation divise le temps d'inférence par 3-4x par rapport au modèle PyTorch original. Indispensable pour atteindre le temps réel sur hardware embarqué.
2Traitement point cloud avec PCL
PCL (Point Cloud Library) en C++ pour le traitement LiDAR : voxel grid filtering pour réduire la densité, ground plane removal pour isoler les obstacles, euclidean clustering pour segmenter les objets distincts. Pipeline optimisé pour tourner à 10Hz minimum.
3Hardware embarqué
Développement et tests sur Jetson Nano et Xavier (NVIDIA). Le code a été optimisé pour ces plateformes contraintes. En production, déploiement sur un PC embarqué plus puissant fixé dans le robot, mais l'architecture reste compatible Jetson pour de futurs robots plus compacts.
4Intégration ROS
Chaque pipeline est packagé en node ROS : un node pour la détection caméra, un pour le traitement LiDAR. Communication via topics ROS standards. Paramètres configurables (seuils de confiance, classes actives) via rosparam. Logs et diagnostics intégrés.
Impact
Perception temps réel
Les pipelines tournent en temps réel sur le robot : ~30 FPS pour la détection YOLO, 10Hz pour le traitement LiDAR. Latence suffisamment basse pour que la navigation réagisse instantanément aux obstacles détectés.
Détection fiable
Taux de détection >95% sur les classes critiques (piétons, véhicules). Les faux négatifs sont minimisés : mieux vaut freiner pour un faux positif que rater un vrai obstacle. Le système a prouvé sa robustesse lors des déploiements terrain.
Base pour la navigation autonome
Ces briques de perception sont devenues le socle de la navigation autonome des robots Hive. Elles alimentent le path planning et permettent au robot de circuler en sécurité parmi les piétons et véhicules, de jour comme de nuit.
Résultats
Intéressé par ce projet ?
Contactez-moi pour en discuter ou voir une démo.