Programming Robots to Perform Autonomous Drone Flight Missions
Table of Contents
L'augmentation des missions drones autonomes
Les missions de vol autonomes de drones transforment rapidement des industries comme l'agriculture de précision, l'inspection des infrastructures, la surveillance de l'environnement, la logistique et la sécurité publique.En programmant des robots pour voler sans apport humain continu, les opérateurs peuvent exécuter des tâches complexes – de l'arpentage de vastes terres agricoles à la livraison de fournitures médicales – avec plus d'efficacité et de risques réduits.
Cet article présente un aperçu technique complet de la façon de programmer les robots pour le vol autonome de drones. Il couvre les composants essentiels du système, les techniques de programmation, les étapes pratiques de mise en œuvre et les défis qui doivent encore être relevés pour une adoption généralisée.
Comprendre les systèmes drones autonomes
Un drone autonome n'est pas seulement un robot volant; c'est un système étroitement intégré où le matériel et le logiciel collaborent pour remplacer le pilotage humain. À un niveau élevé, le système doit sentir l'environnement, traiter ces données pour comprendre son état et son monde, planifier les actions et les exécuter par des commandes de vol. Cette boucle répète des centaines de fois par seconde.
Composantes clés de l'autonomie des drones
Capteurs et perception
- Caméras : Les caméras optiques fournissent de riches informations visuelles pour la détection d'obstacles, la reconnaissance d'objets et l'odométrie visuelle.
- - Oui. Les capteurs de détection et de ranging de la lumière émettent des impulsions laser pour créer des nuages précis de point 3D de l'environnement. LiDAR est particulièrement efficace pour éviter les obstacles dans les zones à faible lumière ou dénudées par GPS.
- Capteurs à ultrasons: Les sonars ultrasoniques à courte portée mesurent la distance par rapport aux surfaces voisines, couramment utilisés pour la prévention des collisions à proximité et à basse altitude.
- Unité de mesure inertielle (UMI): Combine accéléromètres, gyroscopes, et parfois magnétomètres pour mesurer l'accélération, la vitesse angulaire et l'orientation. Les données IMU sont fusionnées avec des entrées GPS et visuelles pour une estimation stable de l'assiette.
- GPS / GNSS: Les systèmes mondiaux de navigation par satellite assurent un positionnement absolu avec une précision de niveau de compteur (ou de centimètre avec correction RTK).
Contrôleur d'ordinateur et de vol de bord
L'ordinateur de bord, souvent une machine à bord unique comme un Raspberry Pi ou NVIDIA Jetson, gère la pile d'autonomie de haut niveau, y compris la perception, la planification du trajet et la gestion de la mission. Il communique avec un contrôleur de vol dédié (p. ex. Pixhawk, PX4 ou ArduPilot) qui gère le mélange de moteurs de bas niveau, la stabilisation de l'assiette et la logique de sécurité.
Activateurs et système d'alimentation
Les moteurs à courant continu sans brushless avec régulateurs de vitesse électroniques (ESC) conduisent les hélices. Un système de gestion de batterie surveille la tension et le courant pour estimer le temps de vol restant.
Liens de communication
Pour les missions à longue portée, on peut utiliser des liaisons cellulaires 4G/5G ou des connexions par satellite. Les flux vidéo nécessitent des liaisons à large bande, généralement analogiques ou numériques de 5,8 GHz (p. ex. DJI OcuSync).
Techniques de programmation pour les vols autonomes
Le développement de capacités autonomes exige une compréhension approfondie des algorithmes de planification du mouvement, de perception, de contrôle et d'estimation de l'état. Les sous-sections suivantes décrivent en détail les techniques les plus courantes utilisées dans les applications de recherche et commerciales.
Algorithmes de planification de la voie
La planification du chemin génère une trajectoire sans collision depuis le point de départ jusqu'à un objectif, étant donné une carte de l'environnement. Les algorithmes populaires incluent:
- A* (A-Star): Un algorithme de recherche basé sur un graphique qui trouve le chemin le plus court en évaluant les fonctions de coût et d'heuristique. A* est largement utilisé dans les cartes de grille 2D pour la navigation de point de cheminement.
- Arbre aléatoire à exploration rapide (RRT) et RRT*: Ces algorithmes permettent d'échantillonner des configurations aléatoires dans l'espace continu et de construire un arbre du début vers le but. RRT* ajoute une optimisation asymptotique en reconnectant les branches.
- Dijkstra , Algorithme: Une recherche non informée qui trouve le chemin le plus court dans les graphiques pondérés. Il est souvent utilisé comme base de référence ou pour la planification sur des feuilles de route agrégées.
- Modèle de contrôle prédictif (MPC) pour la génération de trajectoires : MPC utilise un modèle dynamique du drone pour prédire les états futurs et optimiser les entrées de contrôle sur un horizon de recul, permettant des trajectoires fluides avec des contraintes sur la vitesse, l'accélération et la proximité des obstacles.
Évitement des obstacles et replanification dynamique
Les environnements du monde réel sont imprévisibles, de sorte que les drones doivent détecter et éviter les obstacles à la volée.
- Méthodes réactives: Les algorithmes de champ potentiels ou les histogrammes de champ vectoriel permettent de détourner le drone des obstacles basés sur des lectures immédiates de capteurs.
- Méthodes fondées sur la profondeur : Grâce à des caméras stéréo ou LiDAR, le drone construit une grille d'occupation locale ou un nuage de points. Un planificateur local rapide (par exemple Voxblox ou dynamique A*) replanifie ensuite un chemin sûr à haute fréquence.
- Approches axées sur l'apprentissage : Des modèles comme DQN ou PPO peuvent apprendre à éviter les obstacles agiles dans la simulation et être ensuite transférés vers de vrais drones (sim-to-real).
L'apprentissage automatique pour la perception et la prise de décision
L'apprentissage automatique renforce l'autonomie de plusieurs façons :
- Détection et classification des objets : Les réseaux neuronaux convolutionnels (CNN) comme YOLOv7 ou EfficientDet identifient les obstacles, les zones d'atterrissage ou les cibles dans les flux vidéo en temps réel. Cela permet des comportements spécifiques à la mission comme l'inspection d'une structure spécifique.
- Odométrie visuelle-inertielle (VIO): Les systèmes de VIO basés sur l'apprentissage (p. ex., DSO, VINS-Mono) fusionnent les caméras et les données IMU pour estimer la pose dans des environnements défectueux GPS sans repères prédéfinis.
- Contrôle de vol de bout en bout : Certains systèmes de recherche forment des réseaux neuronaux pour produire des commandes de moteurs directement à partir d'images de caméras, bien que ces systèmes soient moins courants en production en raison de préoccupations de sécurité.
Systèmes de contrôle et réglage PID
Le contrôle précis est le fondement d'un vol stable. Le contrôleur Proportional-Integral-Derivative (PID) classique est utilisé à plusieurs niveaux:
- Contrôleur d'attitude : Maintenir les angles de roulis, de tangage et de lacet souhaités. Les gains doivent être ajustés sur une base par plate-forme.
- Contrôleur de vitesse: Réglage de la vitesse horizontale et verticale, souvent en utilisant une structure PID en cascade (boucle de vitesse extérieure, boucle d'assiette intérieure).
- Contrôleur de position : Déplace le drone vers un point de cheminement en générant des commandes de vitesse basées sur une erreur de position.
Des systèmes de contrôle avancés, comme LQR (Linear Quadratic Regulator) ou MPC non linéaire, offrent de meilleures performances dans les manœuvres agressives ou les conditions venteuses, mais nécessitent des modèles de système précis.
Cadres logiciels et simulation
Le développement de logiciels de drones autonomes est grandement accéléré en utilisant des cadres et des simulateurs bien établis:
- Système d'exploitation robotisé (ROS): ROS fournit une architecture modulaire avec des nœuds pour les pilotes de capteurs, l'estimation de l'état, la planification et le contrôle. Écosystèmes ROS comprend d'innombrables paquets pour drones (par exemple, mavros, hector quadror).
- Pilote automatique PX4 : Un logiciel de contrôleur de vol open source qui fonctionne sur du matériel comme Pixhawk. PX4 offre un firmware mature avec contrôle d'attitude/position, actions de sécurité et une interface de simulation rapide via Gazebo.
- Simulator Gazebo: Un simulateur de physique qui intègre ROS et PX4 pour tester des algorithmes dans des environnements réalistes avec vent, bruit de capteur et collisions avant de réels vols.
- Python Bibliothèques : DroneKit (déprécié) et MAVSDK (moderne) fournissent des API Python pour communiquer avec les contrôleurs de vol via MAVLink. Elles sont idéales pour le prototypage rapide des scripts de mission.
Étapes pratiques pour programmer une mission drone autonome
Cette section décrit un flux de travail typique pour la programmation d'une mission autonome de base, un vol de point de cheminement avec un simple évitement d'obstacles. Nous supposons que vous avez un drone compatible fonctionnant PX4 ou ArduPilot et un ordinateur compagnon (par exemple, ROS Raspberry Pi 4).
Étape 1: Mettre en place l'environnement de développement
- Installez Ubuntu 22.04 (ou une distribution Linux compatible ROS) sur l'ordinateur compagnon.
- Installez ROS 2 Humble ou ROS Noetic (selon la compatibilité).
- Cloner la source PX4-Autopilot et la construire pour votre carte.
- Installez MAVROS pour relier ROS avec le contrôleur de vol via MAVLink.
- Configurez le matériel de drone : calibrez les capteurs, paramétrez le GPS et vérifiez la télémétrie.
Étape 2 : Mettre en œuvre l'estimation de base de l'État
Pour les missions basées sur le GPS, le contrôleur de vol fusionne le GPS, l'IMU et le magnétomètre pour produire des estimations de position et d'assiette locales. Pour les environnements internes ou non GPS, vous devez configurer un pipeline VIO (par exemple, en utilisant le T265 Intel RealSense ou un appareil stéréo personnalisé avec VINS-Fusion).
Étape 3: Écrire un noeud de navigation de point de cheminement
Un simple nœud de mission s'inscrit à l'odométrie et publie des commandes de point de consigne. En utilisant la bibliothèque ou , convertissez les coordonnées GPS en coordonnées locales. Implémentez une file d'attente de point de cheminement et une machine d'état : décollez, survolez, volez à chaque point de cheminement, atterrissez. Utilisez l'interface du contrôleur de position (p. ex. MAVROS ) pour envoyer les positions cibles.
Ajoutez une logique pour vérifier la distance à chaque point de cheminement et passez au suivant.
Étape 4: Intégrer l'évitement des obstacles
Montez un LIDAR 2D (comme un RPLidar A2) ou une caméra de profondeur orientée vers l'avant. Dans un nœud ROS séparé, traitez les données du cloud point et créez une grille d'occupation locale. Modifiez le nœud de chemin pour utiliser un planificateur local (p. ex., la pile de navigation ROS ou un planificateur simple personnalisé) qui replanifie si un obstacle bloque le chemin direct.
Étape 5 : Test en simulation d'abord
Lancez Gazebo avec une simulation PX4 SITL. Exécutez vos nœuds ROS et surveillez votre comportement. Ajustez les gains, les tolérances de point de cheminement et les seuils d'évitement des obstacles. Une fois la simulation exécutée de façon fiable, procédez à des vols réels soigneusement supervisés dans une zone contrôlée.
Défis et orientations futures
Malgré des progrès impressionnants, plusieurs obstacles subsistent avant que les drones totalement autonomes ne deviennent communs.
Sécurité et redondance
Les pannes du système, comme la perte du GPS, la panne du moteur ou la dégradation du capteur, doivent être traitées avec grâce. Les contrôleurs de vol redondants, les configurations multi-IMU et la sauvegarde de la batterie peuvent atténuer les risques. FAA ou l'AESA) sont en train de se développer pour exiger des garanties d'autonomie robustes.
Conformité réglementaire
De nombreux pays ont besoin de la visibilité directe (VLOS) pour les opérations de drones, ce qui limite l'autonomie. Au-delà des dérogations de la visibilité directe (BVLOS) sont en train de devenir disponibles, mais les opérateurs de charge avec des équipements de sécurité supplémentaires (par exemple, les systèmes sensés et évités, les parachutes).
Gestion de l'énergie
La capacité de la batterie limite le temps de vol, en particulier lorsque les charges utiles des capteurs sont lourdes et qu'un ordinateur est associé. Les piles à combustible à hydrogène et l'assistance solaire sont des solutions de rechange émergentes.
Coordination des swarms et des multidrogues
Le déploiement de plusieurs drones autonomes comme essaim amplifie les capacités, par exemple en couvrant de vastes zones de recherche et sauvetage ou en fournissant des paquets dans des réseaux urbains. La programmation des comportements des essaim (consensus, contrôle de la formation, prévention des collisions entre agents) ajoute de la complexité.
Explicabilité et confiance
Pour les applications critiques comme la livraison médicale ou l'inspection des infrastructures, les exploitants doivent comprendre pourquoi un drone a pris une certaine décision (p. ex., un atterrissage d'urgence).
Conclusion
En comprenant les composants clés du système – capteurs, contrôleurs de vol, communications et algorithmes – les développeurs peuvent construire des drones qui naviguent dans des environnements complexes avec une autonomie croissante. ArduPilot et le ROS ont abaissé la barrière à l'entrée, ce qui a permis une expérimentation et un déploiement rapides.
La voie vers des flottes de drones totalement autonomes exige une innovation continue en matière de sécurité, de régulation et de gestion de l'énergie. Pourtant, l'élan est clair : des enquêtes agricoles aux interventions d'urgence, les drones autonomes redéfinissent déjà ce qui est possible dans le ciel.