Comment nous l’avons vu dans le premier article, l’objectif technique de ce projet est de développer un SLAM, plus exactement la partie « front-end » en travaillant à partir de données issues de la caméra stéréoscopique et du Lidar, prises depuis une perspective proche de celle en phase de test, c’est-à-dire depuis le point de vue du drone… Faudrait-il alors terminer le projet pour pouvoir le commencer ? La réponse est évidemment non.
Le coût d’acquisition d’un drone peut très rapidement dépasser les 10 000€ lorsqu’on lui associe de nombreux capteurs coûteux comme des caméras stéréoscopiques, un gyroscope, un GPS et même un LiDAR 3D intégré comme velodyne peut en proposer. Voler dans un environnement aussi complexe que peut l’être une forêt engendre des risques de collisions très élevés.
Exemple de forêt que l’on va chercher à simuler
Nous présenterons deux approches pour collecter des données et nous comparerons les avantages et inconvénients.
Partie 1 : la simulation numérique
En machine learning, l’une des contraintes les plus importantes pour l’industrialisation massive est le manque de données. Aujourd’hui, les outils de simulation numérique sont de plus en plus réalistes et deviennent une solution à prendre en compte. En dehors du machine learning, d’autres domaines applicatifs utilisent depuis plusieurs années ces procédés pour concevoir, développer et tester de nouvelles solutions innovantes.
Airsim : un outil de simulation de drone open source
Il existe plusieurs outils de simulations de drone comme Airsim ou Carla qui reposent sur des moteurs 3D déjà développés comme Unreal Engine ou Unity.
Airsim est une solution complète, développée depuis 2017 par Microsoft et qui bénéficie d’une communauté forte et engagée. La solution a atteint un niveau de maturité suffisant pour que Microsoft propose cette offre en 2022 sur leur cloud Azure.
Airsim permet de modéliser les données physiques d’un drone dans Unreal Engine (ou Unity) ainsi qu’une multitude de capteurs comme des caméras stéréoscopiques RGB ou infrarouge, des LiDARs, des gyroscopes, des gps, etc.
La modélisation d’une forêt sous Unreal Engine
Sans entrer dans les détails, Unreal Engine (UE) met à disposition via son catalogue de nombreux scans d’éléments naturels tels que des arbres, des roches, diverses plantes, etc. que l’on peut importer en quelques clics pour modéliser une forêt dans Unreal Engine. UE met notamment à disposition de nombreux assests rendus disponibles par la bibliothèque Megascans :
Une fois ces assets disponibles, la génération d’une forêt réaliste peut être très rapide sous UE en utilisant l’outil « foliage » qui permet d’instancier un asset en modifiant aléatoirement sa taille, son angle d’inclinaison par rapport au sol ainsi que la rotation sur son axe vertical.
Nous pouvons alors obtenir des résultats similaires à celui-ci :
Vue du drone : en vert, nous pouvons voir l’angle d’inclinaison du Lidar
Vue aérienne de la simulation
La navigation avec Airsim
Airsim met à disposition plusieurs API, développées sous Python ou ROS par exemple, qui permettent de contrôler la navigation du drone mais également de collecter en temps réel les données émises par les différents capteurs équipés lors de la simulation.
Nous pouvons alors créer des scénarios dans lequel le drone va pouvoir se déplacer selon un parcours établi en amont (ou dynamiquement à partir de règles par exemple) afin de collecter des données multiples.
Capture d’écran réalisée au décollage du drone, au début de l’exécution d’un scénario.
Les 3 images encadrées en vert, jaune et bleu permettent de visualiser en temps réel
les données captures par des caméras équipées sur le drone.
De cette manière, en intégrant un Lidar et des caméras stéréoscopiques durant l’exécution des scénarios nous pouvons obtenir ces données simulées :
Exemple de concaténations de nuages de points collectés durant l’exécution des scénarios,
ouvert dans le logiciel opensource CloudCompare. En vert, la trajectoire réelle et en rouge la trajectoire estimée.
La simulation numérique nous permet de rapidement prototyper des solutions et de les comparer à moindre coût (matériel). Elle nous permet d’écarter des configurations matérielles et au contraire d’en sélectionner d’autres. Toutefois, malgré les améliorations importantes du réalisme des outils de simulation modernes, il existe toujours un « gap entre le simulé et la réalité ». En deep learning ce sujet reste un thème de recherche très actif.
Il nous faut donc maintenant travailler à partir de données réelles, sans toutefois se risquer de capturer les données par un drone. Comment pouvons-nous y parvenir ?
Partie 2 : l’acquisition manuelle
La simulation numérique nous a permis de calculer et de valider une configuration d’assemblage de capteurs. Nous pouvons alors fixer cette configuration sur un support. Afin de garantir la stabilité des capteurs, nous avons opter pour l’utilisation d’une steadicam. La steadicam est un système stabilisateur de prise de vues portatif, utiliser notamment dans le cinéma.
Configuration souhaitée
Comme évoqué plus haut, l’idée ici est de fixer une configuration d’assemblage sur un support. Pour permettre d’itérer et parvenir à une solution le plus rapidement possible nous avons imprimé le support en 3D :
3 équipements sont installés : une caméra stéréoscopique ZED2i, un Lidar VLP16
ainsi qu’un micro-ordinateur et une Jetson Nano pour collecter et stocker les données.
Une fois le support imprimé, il ne nous restait plus qu’à développer les scripts de démarrage sur la jetson Nano pour démarrer la collecte de données synchronisées de ces 2 capteurs en utilisant la technologie ROS.
Prise de vue réelle du système d’acquisition
Nous nous sommes donc déplacés entre les rangées de pins avec le système d’acquisition afin de collecter des données.
Exemple d’image collectée par la caméra stéréoscopique. L’image en haut a été collecté par la caméra gauche du dispositif, l’image basse est la carte de profondeur estimée par l’API ZED, filtrée à 10 mètres maximum.
Exemple de nuages de points collectés en une rotation du Lidar.
Le centre de l’image indique la position du Lidar, monté sur le support 3D.
Conclusion : Simuler pour collecter
Dans cet article, nous avons pu décrire une approche que nous avons testée en permettant d’utiliser principalement la simulation pour valider le système d’acquisition final. La simulation nous a permis de pouvoir itérer rapidement en testant différents angles de vues des capteurs. Nous avons pu alors rapidement nous tourner vers un système d’acquisition réel afin de collecter des données réelles, très similaires aux données que nous collecterons dans la phase de test finale du projet.
Vous pourrez suivre dans les prochains articles comment nous avons pu travailler à partir des données réelles, et comment nous avons pu construire un modèle de vision spécifique pour ce cas d’usage, afin de construire un système SLAM.
Note concernant la méthodologie de collecte des données
Pour réaliser ces travaux, nous avons pu nous appuyer sur deux équipes de Scalian maîtrisant ces thématiques. Le Centre d’Excellence en Simulation basé à Rennes et l’équipe Unmanned Systems, spécialisée dans la technologie drone, située à Toulouse.
Sources iconographiques : Scalian, photo de couverture @freenomad-unsplash
Articles connexes