Avancées des algos pour les véhicules volants
Utiliser des simulations pour développer des algos efficaces pour les drones et les systèmes de vol autonomes.
― 10 min lire
Table des matières
- L'Importance de la Simulation
- Construire des Algorithmes avec des Environnements Simulés
- Présentation de GrADyS-SIM NextGen
- Composants du Cadre
- La Bibliothèque de Protocoles
- Le Simulateur Python
- Visualisation Web
- Intégration avec OMNeT++
- Simulateur Ardupilot SITL en Option
- Résultats et Discussions
- Tester le Protocole
- Avantages des Simulations Réalistes
- Conclusion
- Source originale
- Liens de référence
Cet article parle de la création d'algorithmes pour l'Internet des Choses Volantes, qui implique l'utilisation de véhicules volants comme les Drones. Ces véhicules volants peuvent communiquer et se déplacer de manière autonome. On discute de comment utiliser des environnements simulés, qui imitent le monde réel, aide à développer ces algorithmes de manière efficace. En ayant différents niveaux de réalisme dans les Simulations, on peut créer des algorithmes solides et fiables sans perdre trop de temps et d'argent sur des tests dans le monde réel.
L'Importance de la Simulation
Quand on construit des systèmes avec des véhicules volants qui peuvent se déplacer et communiquer, il faut penser à la connectivité et à la mobilité. Ces facteurs influencent énormément la performance des algorithmes. Les algorithmes pour ces systèmes ont besoin de caractéristiques spécifiques pour être fiables. Cependant, c'est souvent difficile de voir à quel point ces caractéristiques sont importantes jusqu'à ce que l'algorithme soit testé dans des situations réelles. Si on se fie uniquement aux tests sur le terrain, ça peut prendre du temps et coûter cher. C'est pour ça que les environnements simulés sont super utiles. Ils nous permettent de tester et d'affiner nos idées sans les coûts et les risques des essais dans le monde réel.
Imiter le monde réel dans une simulation est crucial. Une simulation qui inclut des défis du monde réel signifie que l'algorithme peut être préparé à ce qu'il va rencontrer au moment de son déploiement. Plus la simulation reflète la réalité, plus l'algorithme peut devenir robuste. Une simulation bien conçue expose les algorithmes à des conditions qui motivent l'ajout de caractéristiques nécessaires pour les rendre plus efficaces.
Construire des Algorithmes avec des Environnements Simulés
Une façon pratique de développer ces algorithmes est de passer par un processus qui implique de tester et d'améliorer l'algorithme à plusieurs reprises. Cette idée de développement par étapes est connue en développement logiciel. Commencer avec une simulation plus simple qui laisse de côté certains détails du monde réel rend plus facile de se concentrer sur les caractéristiques principales. Au fur et à mesure que le travail avance, on peut ajouter les détails du monde réel jusqu'à ce que l'algorithme atteigne le niveau de fiabilité désiré.
Cependant, en ajoutant du réalisme, on augmente aussi la complexité de la simulation, ce qui peut ralentir le développement. Des simulations plus complexes nécessitent plus de puissance de calcul, rendant tout le processus plus lent. De plus, des logiciels de simulation avancés peuvent être difficiles à configurer et à utiliser, ce qui peut décourager les développeurs de s'y engager.
Présentation de GrADyS-SIM NextGen
Ce travail présente un cadre de simulation appelé GrADyS-SIM NextGen. Il permet la création d'algorithmes pour des systèmes en réseau de véhicules volants dans un environnement qui simule la communication et le mouvement. Le simulateur est unique car il encourage une approche empirique au développement.
Ce cadre permet aux développeurs de créer des Protocoles en utilisant Python, ce qui facilite la construction de la logique pour les nœuds individuels. Ces protocoles peuvent être testés dans un mode de simulation Python simple ou intégrés à un simulateur réseau plus complexe pour une interaction réaliste. Les utilisateurs peuvent aussi contrôler des véhicules du monde réel avec peu de changements nécessaires au protocole.
GrADyS-SIM NextGen est né des expériences passées avec son prédécesseur, GrADyS-SIM, qui était limité en termes d'utilisabilité. Les retours des utilisateurs ont montré que traduire des mises en œuvre simulées dans le monde réel était difficile. Le nouveau cadre maintient les objectifs originaux du projet tout en étant plus convivial.
Composants du Cadre
GrADyS-SIM NextGen se compose de plusieurs composants principaux, tous disponibles en open-source. Le cadre est distribué à travers plusieurs dépôts, qui incluent à la fois des composants Python et des parties intégrées avec un simulateur de réseau bien connu.
Il y a trois façons clés de faire fonctionner des simulations dans le cadre :
- Implémenter des algorithmes en utilisant la bibliothèque de protocoles et les exécuter dans un simulateur Python simple.
- S'intégrer à un simulateur complexe pour des résultats plus réalistes.
- Construire des simulations entièrement dans le simulateur complexe en utilisant C++.
Cette modularité permet aux développeurs de choisir la meilleure approche en fonction de leurs besoins actuels.
La Bibliothèque de Protocoles
Pour permettre aux algorithmes de fonctionner sans problème, le cadre avait besoin d'une interface commune qui décrit comment l'environnement interagit avec les protocoles. Cette bibliothèque de protocoles permet aux développeurs de créer leurs algorithmes tout en s'assurant qu'ils peuvent fonctionner dans différents environnements.
Les protocoles dans la bibliothèque sont structurés pour gérer des événements, comme la réception de messages et la mise à jour de leur statut de mobilité. Ils peuvent réagir en fonction des situations auxquelles ils font face. La bibliothèque comprend des commandes pour la mobilité et la communication qui cachent la complexité de l'environnement sous-jacent.
Les créateurs de ce cadre croient que cette bibliothèque peut représenter une large gamme de cas d'utilisation dans la création d'algorithmes distribués. Les utilisateurs peuvent créer leurs protocoles uniques tout en suivant le modèle spécifié, garantissant flexibilité et cohérence.
Le Simulateur Python
Le simulateur Python sert de plateforme plus simple pour le prototypage. C'est un simulateur basé sur des événements qui fonctionne beaucoup comme le simulateur de réseau complexe mais est plus facile à utiliser et à configurer. L'objectif fondamental est d'aider les utilisateurs à tester rapidement leurs protocoles sans les lourdes exigences d'outils plus sophistiqués.
Bien qu'il n'ait pas l'ensemble des fonctionnalités du simulateur plus avancé, il modélise tout de même plusieurs conditions qu'un vrai nœud rencontrerait pendant son fonctionnement. Il simule la communication et la mobilité, qui sont critiques pour l'objectif du cadre.
Ce composant facilite l'apprentissage pour les nouveaux venus sur la construction d'algorithmes distribués et sert de point de départ précieux pour le développement de protocoles.
Visualisation Web
Le cadre inclut un composant de visualisation web qui fonctionne avec le simulateur Python. Cet outil offre un affichage visuel des simulations en cours, permettant aux utilisateurs de voir comment les nœuds interagissent dans un espace 3D. Les utilisateurs peuvent facilement suivre le statut des nœuds et voir des variables importantes pendant les simulations.
La conception utilise un Web Socket pour connecter l'interface de visualisation avec le simulateur Python, permettant des mises à jour en temps réel. Cette configuration assure un accès facile pour les utilisateurs, ne nécessitant rien de plus qu'un navigateur web pour interagir avec la visualisation.
Intégration avec OMNeT++
Le simulateur OMNeT++ est essentiel aux capacités du cadre. Il a quelques ajustements pour fonctionner aux côtés du nouvel encapsulateur qui connecte les protocoles Python plus simples à l'environnement de simulation complexe.
L'intégration assure que les commandes et les informations circulent sans problème entre les deux systèmes. Les utilisateurs peuvent exécuter efficacement leurs protocoles basés sur Python dans le contexte d'OMNeT++, profitant des fonctionnalités avancées et du réalisme offerts par cet environnement.
Simulateur Ardupilot SITL en Option
Pour ceux qui veulent une expérience encore plus réaliste, le cadre supporte l'intégration avec le simulateur Ardupilot SITL (Software In The Loop). Ce simulateur permet aux utilisateurs de modéliser de vrais véhicules fonctionnant sous Ardupilot avec une modélisation de mouvement haute fidélité.
En intégrant le SITL avec OMNeT++, les utilisateurs peuvent vivre une représentation plus réaliste de la façon dont leurs véhicules volants se comporteraient dans des situations réelles. Cette option est précieuse pour ceux qui veulent imiter de près les conditions opérationnelles réelles.
Résultats et Discussions
Cette section démontre les avantages d'une approche pratique et itérative pour le développement d'algorithmes pour les véhicules volants. Grâce à l'utilisation de GrADyS-SIM NextGen, on peut créer des environnements simulés et traduire facilement le code entre eux.
Les scénarios explorés impliquent des problèmes où des données doivent être collectées à partir de capteurs distants par des UAV (véhicules aériens sans pilote). Ces UAV peuvent collecter des informations à partir de capteurs dans des zones sans réseaux de communication traditionnels. Ils volent de manière autonome au-dessus des capteurs, récupèrent les données et retournent à une station au sol pour le traitement.
Le défi principal réside dans la coordination du mouvement des UAV d'une manière qui maximise leur efficacité. Un protocole spécifique régit cette interaction, permettant aux UAV de communiquer entre eux et avec la station au sol.
Tester le Protocole
Pour démontrer les capacités du cadre, un problème simplifié a été choisi qui se concentre sur le développement de l'algorithme plutôt que sur la solution. Le scénario comprend plusieurs configurations d'UAV et de capteurs, avec le nombre d'UAV étant toujours inférieur au nombre de capteurs.
Le développement initial du protocole a eu lieu dans le simulateur Python plus simple. Plusieurs itérations ont été utilisées pour affiner le protocole et régler des problèmes initiaux, tels que le fait que les UAV restent bloqués dans des boucles de communication.
Après ces premiers ajustements, le protocole a été testé dans l'environnement plus sophistiqué d'OMNeT++. Cette transition a révélé des problèmes qui n'étaient pas présents dans le simulateur plus simple, soulignant les avantages d'utiliser une simulation plus réaliste pour exposer les faiblesses dans la logique.
Avantages des Simulations Réalistes
Les simulations ont montré une différence notable de performance en comparant les résultats entre les simulations simples et complexes. Le simulateur plus avancé a pris en compte diverses conditions de réseau, telles que la perte de signal et l'interférence, permettant une compréhension plus profonde de la façon dont les protocoles se comportaient.
Exécuter plusieurs simulations a fourni des aperçus précieux sur la manière dont les algorithmes pouvaient être améliorés. Le processus itératif de test dans différents environnements a aidé à découvrir des défauts dans les protocoles et a facilité de meilleures conceptions.
Conclusion
L'approche pour développer des algorithmes pour l'Internet des Choses Volantes à travers GrADyS-SIM NextGen montre que l'utilisation de simulations peut grandement bénéficier au processus de développement. En abstraire la complexité et introduire le réalisme progressivement, les développeurs peuvent créer des algorithmes plus robustes.
L'architecture du cadre favorise un environnement de développement modulaire et flexible, permettant aux utilisateurs de passer facilement entre des modes de simulation simples et complexes. Du prototypage initial aux simulations réalistes, ce cadre offre une façon efficace de développer et de valider des algorithmes distribués pour des véhicules autonomes opérant dans des environnements dynamiques.
Au fur et à mesure que le projet avance, la prochaine étape impliquera de soutenir des scénarios du monde réel. Les bases ont déjà été posées, et les prochaines étapes consistent à sélectionner le matériel approprié et à mettre en œuvre les premières intégrations pour des tests en conditions réelles.
Titre: Developing Algorithms for the Internet of Flying Things Through Environments With Varying Degrees of Realism -- Extended Version
Résumé: This work discusses the benefits of having multiple simulated environments with different degrees of realism for the development of algorithms in scenarios populated by autonomous nodes capable of communication and mobility. This approach aids the development experience and generates robust algorithms. It also proposes GrADyS-SIM NextGen as a solution that enables development on a single programming language and toolset over multiple environments with varying levels of realism. Finally, we illustrate the usefulness of this approach with a toy problem that makes use of the simulation framework, taking advantage of the proposed environments to iteratively develop a robust solution.
Auteurs: Thiago de Souza Lamenza, Josef Kamysek, Bruno Jose Olivieri de Souza, Markus Endler
Dernière mise à jour: 2024-03-21 00:00:00
Langue: English
Source URL: https://arxiv.org/abs/2403.12753
Source PDF: https://arxiv.org/pdf/2403.12753
Licence: https://creativecommons.org/licenses/by/4.0/
Changements: Ce résumé a été créé avec l'aide de l'IA et peut contenir des inexactitudes. Pour obtenir des informations précises, veuillez vous référer aux documents sources originaux dont les liens figurent ici.
Merci à arxiv pour l'utilisation de son interopérabilité en libre accès.
Liens de référence
- https://youtu.be/vixp_CicbJk
- https://github.com/Thlamz/MAVSIMNET
- https://omnetpp.org/
- https://inet.omnetpp.org/
- https://github.com/Project-GrADyS/gradys-sim-nextgen
- https://github.com/Project-GrADyS/gradys-sim-nextgen-visualization
- https://github.com/Project-GrADyS/gradys-simulations
- https://ardupilot.org/
- https://project-gradys.github.io/gradys-sim-nextgen-visualization/
- https://threejs.org/
- https://github.com/pybind/pybind11