742
edits
mNo edit summary |
mNo edit summary |
||
| Line 2: | Line 2: | ||
{{Official Core Development Effort}} | {{Official Core Development Effort}} | ||
--> | --> | ||
<small>''Version traduite le 20 décembre 2022''</small> | |||
{{infobox subsystem | {{infobox subsystem | ||
|name = HLA Support | |name = HLA Support | ||
| Line 15: | Line 15: | ||
* {{Git File History|project=simgear|path=/simgear/hla}} | * {{Git File History|project=simgear|path=/simgear/hla}} | ||
}} | }} | ||
{{Multicore}} | {{Multicore}} | ||
| Line 25: | Line 24: | ||
Il y a trois principaux avantages à cela par rapport à une simulation monolithique (par exemple FlightGear V3.6) : | Il y a trois principaux avantages à cela par rapport à une simulation monolithique (par exemple FlightGear V3.6) : | ||
# Il met en oeuvre un environnement robuste pour rendre le simulateur multi-thread, en tirant parti des ordinateurs multi-cœurs, ou en exécutant différentes parties de la simulation sur différents ordinateurs (y compris sur différentes plates-formes et systèmes d'exploitation). | #Il met en oeuvre un environnement robuste pour rendre le simulateur multi-thread, en tirant parti des ordinateurs multi-cœurs, ou en exécutant différentes parties de la simulation sur différents ordinateurs (y compris sur différentes plates-formes et systèmes d'exploitation). | ||
# Cela permet aussi de répartir des parties du simulateur telles que l'[[AI|IA]] (en [[Decoupling the AI traffic system|découplant le système de trafic IA]]), le [[Fr/Modèles de dynamique de vol|FDM]], les [[Nasal scripting language|scripts Nasal]]<nowiki/>, le rendu des uns des autres, et des sous-systèmes moins critiques tels que la [[Advanced weather|météo]], afin que nous ayons un résultat cohérents (et peut-être même amélioré) des fréquences d'images (c'est-à-dire un impact réduit de [[How the Nasal GC works|Nasal GC]] sur la fréquence d'images). | # Cela permet aussi de répartir des parties du simulateur telles que l'[[AI|IA]] (en [[Decoupling the AI traffic system|découplant le système de trafic IA]]), le [[Fr/Modèles de dynamique de vol|FDM]], les [[Nasal scripting language|scripts Nasal]]<nowiki/>, le rendu des uns des autres, et des sous-systèmes moins critiques tels que la [[Advanced weather|météo]], afin que nous ayons un résultat cohérents (et peut-être même amélioré) des fréquences d'images (c'est-à-dire un impact réduit de [[How the Nasal GC works|Nasal GC]] sur la fréquence d'images). | ||
# Il fournit un très bon environnement pour permettre à quiconque de créer des composants qui interagissent avec FlightGear en utilisant des langages de programmation autres que C/C++ (pensez Ada, Java, Python, etc.). Ceux-ci peuvent s'exécuter dans leurs propres threads et résident dans des binaires séparés, qui seront certainement plus faciles à maintenir (pensez aux tests de régression, c'est-à-dire exécuter un sous-système autonome dans une session gdb/valgrind dédiée), sans se soucier de comment modifier/corriger et recompiler FlightGear. | #Il fournit un très bon environnement pour permettre à quiconque de créer des composants qui interagissent avec FlightGear en utilisant des langages de programmation autres que C/C++ (pensez Ada, Java, Python, etc.). Ceux-ci peuvent s'exécuter dans leurs propres threads et résident dans des binaires séparés, qui seront certainement plus faciles à maintenir (pensez aux tests de régression, c'est-à-dire exécuter un sous-système autonome dans une session gdb/valgrind dédiée), sans se soucier de comment modifier/corriger et recompiler FlightGear. | ||
Un bon aperçu du fonctionnement de l'architecture HLA est disponible ici (en anglais) : [https://pitchtechnologies.com/wp-content/uploads/2020/06/TheHLAtutorial.pdf http://www.pitchtechnologies.com/wp-content/uploads/2014/04/TheHLAtutorial.pdf] | Un bon aperçu du fonctionnement de l'architecture HLA est disponible ici (en anglais) : [https://pitchtechnologies.com/wp-content/uploads/2020/06/TheHLAtutorial.pdf http://www.pitchtechnologies.com/wp-content/uploads/2014/04/TheHLAtutorial.pdf] | ||
==Conception== | ==Conception == | ||
La conception globale entrevue est la suivante : | La conception globale entrevue est la suivante : | ||
* Intention d'utiliser OpenRTI comme RTI sous-jacent. Il s'agit d'un RTI standard IEEE 1516 open source, écrit par Mathias Fröhlich et disponible sur https://sourceforge.net/projects/openrti/. | *Intention d'utiliser OpenRTI comme RTI sous-jacent. Il s'agit d'un RTI standard IEEE 1516 open source, écrit par Mathias Fröhlich et disponible sur https://sourceforge.net/projects/openrti/. | ||
* Mathias a également développé une boîte à outils open source pour agir comme une bibliothèque d'interface, avec pour nom de code [[SimKit]]. Cela se trouve au-dessus du RTI et simplifie grandement l'interfaçage avec le RTI. L'intégration Python est également excellente, ce qui facilite l'écriture de scripts pour les modules fédérés. Simkit est disponible sur : https://sourceforge.net/projects/sim-kit/ | *Mathias a également développé une boîte à outils open source pour agir comme une bibliothèque d'interface, avec pour nom de code [[SimKit]]. Cela se trouve au-dessus du RTI et simplifie grandement l'interfaçage avec le RTI. L'intégration Python est également excellente, ce qui facilite l'écriture de scripts pour les modules fédérés. Simkit est disponible sur : https://sourceforge.net/projects/sim-kit/ | ||
En utilisant SimKit, le point d'intégration se trouve dans le code FlightGear au lieu de [[SimGear]]), en particulier le code se trouvant dans $FG_SRC/Network/HLA. | En utilisant SimKit, le point d'intégration se trouve dans le code FlightGear au lieu de [[SimGear]]), en particulier le code se trouvant dans $FG_SRC/Network/HLA. | ||
| Line 104: | Line 103: | ||
Le noyau Flightgear prend actuellement en charge HLA comme suit. | Le noyau Flightgear prend actuellement en charge HLA comme suit. | ||
* Intégration SimKit, lecture du SimKit FOM et connexion à un RTI OpenRTI. | *Intégration SimKit, lecture du SimKit FOM et connexion à un RTI OpenRTI. | ||
* Instanciation d'objets MP AI afin que les utilisateurs puissent visualiser les objets publiés sur le RTI par d'autres modules fédérés. Ceci est actuellement quelque peu insatisfaisant car il surcharge le code MP, où en réalité ces objets sont plus basiques. | *Instanciation d'objets MP AI afin que les utilisateurs puissent visualiser les objets publiés sur le RTI par d'autres modules fédérés. Ceci est actuellement quelque peu insatisfaisant car il surcharge le code MP, où en réalité ces objets sont plus basiques. | ||
* Choisissez des objets d'environnement pour cette instance et utilisez-les pour définir la chaîne METAR locale pour la génération de la météo | *Choisissez des objets d'environnement pour cette instance et utilisez-les pour définir la chaîne METAR locale pour la génération de la météo | ||
{{See also|FGTraffic}}Nous avons actuellement les autres modules fédérés suivants : | {{See also|FGTraffic}}Nous avons actuellement les autres modules fédérés suivants : | ||
* '''fgogel''' - Un modèle d'IA écrit en python est publié sur le RTI. Fait partie de SimKit, mais néanmoins pratique ! | *'''fgogel''' - Un modèle d'IA écrit en python est publié sur le RTI. Fait partie de SimKit, mais néanmoins pratique ! | ||
* '''fgtraffic''' - pour exécuter un scénario d'IA en externe au FG Core | *'''fgtraffic''' - pour exécuter un scénario d'IA en externe au FG Core | ||
* '''fgmetar''' - écrit en python qui identifie la station METAR la plus proche pour les autres modules fédérés publiés et distribue le METAR pour qu'ils puissent le récupérer. Cela pourrait être étendu pour fournir un [[FGPythonSys|moteur météorologique général]]. | *'''fgmetar''' - écrit en python qui identifie la station METAR la plus proche pour les autres modules fédérés publiés et distribue le METAR pour qu'ils puissent le récupérer. Cela pourrait être étendu pour fournir un [[FGPythonSys|moteur météorologique général]]. | ||
Stuart a maintenant le IA Manager fonctionnant comme un binaire externe et publiant des mises à jour sur le RTI qui sont affichées comme MP Aircraft. Stuart a créé un petit script python qui recherche des objets dont les emplacements sont publiés sur le RTI et publie le METAR le plus proche d'eux, puis a modifié le FG pour récupérer la chaîne METAR appropriée pour cette instance et l'utiliser comme entrée en temps réel pour la génération de la météo . | Stuart a maintenant le IA Manager fonctionnant comme un binaire externe et publiant des mises à jour sur le RTI qui sont affichées comme MP Aircraft. Stuart a créé un petit script python qui recherche des objets dont les emplacements sont publiés sur le RTI et publie le METAR le plus proche d'eux, puis a modifié le FG pour récupérer la chaîne METAR appropriée pour cette instance et l'utiliser comme entrée en temps réel pour la génération de la météo . | ||
| Line 129: | Line 128: | ||
<references /> | <references /> | ||
== A ce propos == | ==A ce propos== | ||
Pour plus d'informations, veuillez consulter : | Pour plus d'informations, veuillez consulter : | ||
*[[Technical_Reports#A_New_Architecture_for_FlightGear_Flight_Simulator]] | *[[Technical_Reports#A_New_Architecture_for_FlightGear_Flight_Simulator]] | ||
| Line 138: | Line 137: | ||
*[[Distributed Interactive Simulation]] (Examen spécifique au DIS du système/protocole multijoueur FlightGear et de ses limites, qui peuvent être résolues via HLA) | *[[Distributed Interactive Simulation]] (Examen spécifique au DIS du système/protocole multijoueur FlightGear et de ses limites, qui peuvent être résolues via HLA) | ||
== Liens externes == | ==Liens externes== | ||
* {{wikipedia|High-level architecture (simulation)}} sur Wikipedia | *{{wikipedia|High-level architecture (simulation)}} sur Wikipedia | ||
[[Category:HLA]] | [[Category:HLA]] | ||
[[en:High-Level Architecture]] | [[en:High-Level Architecture]] | ||
edits