Tutoriel détaillé : découvrez les détails lors de la création de l'exemple d'application - AWS SimSpace Weaver

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Tutoriel détaillé : découvrez les détails lors de la création de l'exemple d'application

Le didacticiel de démarrage rapide expliquait comment créer, démarrer, arrêter et supprimer un exemple de simulation à l'aide de quick-start.py etstop-and-delete.py. Ce didacticiel décrit en détail le fonctionnement de ces scripts et les paramètres supplémentaires qu'ils peuvent prendre pour optimiser la flexibilité des simulations Weaver personnalisées.

Prérequis

Avant de commencer, assurez-vous d'avoir effectué les étapes deConfiguration pour SimSpace Weaver.

Étape 1 : activer la journalisation (facultatif)

Pour activer la journalisation
  1. Naviguez vers :

    sdk-folder/Samples/PathfindingSample/tools
  2. Ouvrez le fichier de schéma dans un éditeur de texte :

    pathfinding-single-worker-schema.yaml
  3. Trouvez la simulation_properties: section au début du fichier :

    simulation_properties: default_entity_index_key_type: "Vector3<f32>"
  4. Insérer les 2 lignes suivantes après la ligne simulation_properties: :

    log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs"
  5. Vérifiez que votre simulation_properties: section est identique à la suivante :

    simulation_properties: log_destination_service: "logs" log_destination_resource_name: "MySimulationLogs" default_entity_index_key_type: "Vector3<f32>"
  6. Enregistrez le fichier et quittez votre éditeur de texte.

Étape 2 : Lancez votre simulation

Comme le montre le didacticiel de démarrage rapide, les étapes les plus élémentaires pour lancer un exemple de simulation sont les suivantes :

  1. Naviguez vers :

    sdk-folder/Samples/PathfindingSample/tools/cloud
  2. Exécutez l'une des commandes suivantes :

    • Docker : python quick-start.py

    • WSL : python quick-start.py --al2

Ce script automatise les commandes de terminal courantes, qui peuvent toutes être exécutées manuellement à l'aide du AWS CLI. Ces étapes sont les suivantes :

  1. Téléchargez le schéma Weaver sur S3.

    • SimSpace Weaver utilise un schéma pour configurer votre simulation. Le schéma est un fichier texte brut au format YAML. Pour plus d’informations, consultez Configuration de votre simulation.

  2. Créez et téléchargez un conteneur personnalisé (facultatif).

    • Si votre schéma définit un conteneur personnalisé, le script de démarrage rapide créera l'image docker et la téléchargera sur Amazon ECR. Pour plus d’informations, consultez Conteneurs personnalisés. Consultez le PythonBubblesSample schéma pour un exemple de cette fonctionnalité.

  3. Générez le projet.

    • quick-start.pyappelle la build_project fonction définie dansbuild.py. Cette étape varie en fonction du projet. Pour le PathfindingSample, CMake est utilisé. Les commandes CMake et Docker pour lesquelles se trouvent dans. build.py

  4. Téléchargez les artefacts de construction sur S3.

    • Vous pouvez vérifier vos compartiments S3 pour vous assurer que tous les téléchargements ont bien été effectués. Pour plus d'informations sur l'utilisation d'Amazon S3, consultez la section Création, configuration et utilisation des compartiments Amazon S3 dans le guide de l'utilisateur d'Amazon Simple Storage Service.

    • Les exemples de zips d'application et de compartiment S3 utilisent le format de nom suivant :

      • weaver-sample-bucket-account-number-region

      • Application spatiale : ProjectNameSpatial.zip

      • Afficher l'application (personnalisée) : ProjectNameView.zip

  5. Lancez la simulation.

    • Ceci est une enveloppe de l'aws simspaceweaver start-simulation AWS CLI appel. Pour plus d'informations, consultez le manuel de référence des AWS CLI commandes pour SimSpace Weaver.

    • Le script tournera en boucle jusqu'à ce que le statut de la simulation soit STARTED égal ouFAILED. Le démarrage d'une simulation peut prendre quelques minutes.

  6. Obtenez les détails de la simulation.

    • L'DescribeSimulationAPI fournit des informations sur votre simulation, notamment son état. Une simulation peut présenter l'un des états suivants :

      États du cycle de vie de la simulation
      1. STARTING— État initial après l'appel StartSimulation

      2. STARTED— toutes les applications spatiales sont lancées et fonctionnent

      3. STOPPING— État initial après l'appel StopSimulation

      4. STOPPED— Toutes les ressources de calcul sont arrêtées

      5. DELETING— État initial après l'appel DeleteSimulation

      6. DELETED— Toutes les ressources affectées à la simulation sont supprimées

      7. FAILED— La simulation a présenté une erreur/un échec critique et s'est arrêtée

      8. SNAPSHOT_IN_PROGRESS— Un instantané est en cours

      Pour obtenir les détails de votre simulation
      1. Appelez l'API ListSimulations.

        aws simspaceweaver list-simulations

        Le script doit afficher les détails de chacune de vos simulations, comme suit :

        {
            "Status": "STARTED",
            "CreationTime": 1664921418.09,
            "Name": "MyProjectSimulation_22-10-04_22_10_15",
            "Arn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15",
            "TargetStatus": "STARTED"
        }
        
      2. Appelez DescribeSimulation pour obtenir les détails de votre simulation. simulation-nameRemplacez-le par celui Name de votre simulation à partir du résultat de l'étape précédente.

        aws simspaceweaver describe-simulation --simulation simulation-name

        Le script doit afficher plus de détails sur la simulation que vous avez spécifiée, comme suit :

        {
            "Status": "STARTED",
            "CreationTime": 1664921418.09,
            "Name": "MyProjectSimulation_22-10-04_22_10_15",
            "Arn": "arn:aws:simspaceweaver:us-west-2:111122223333:simulation/MyProjectSimulation_22-10-04_22_10_15",
            "TargetStatus": "STARTED"
        }
        
  7. Lancez des applications personnalisées.

    • SimSpace Weaver ne gère pas le cycle de vie des applications personnalisées. Vous devez démarrer vos applications personnalisées. Il est recommandé de démarrer vos applications personnalisées avant de démarrer votre horloge de simulation, mais vous pouvez démarrer des applications personnalisées une fois l'horloge démarrée.

      Vous pouvez appeler l'StartAppAPI pour démarrer vos applications personnalisées.

      aws simspaceweaver start-app --simulation simulation-name --name app-name --domain domain-name

      L'appel StartApp d'API créera et démarrera une nouvelle instance de l'application personnalisée en utilisant le nom que vous avez fourni. Si vous indiquez le nom d'une application qui existe déjà, vous recevrez un message d'erreur. Si vous souhaitez redémarrer une application (instance) en particulier, vous devez d'abord arrêter cette application et la supprimer.

      Note

      L'état de votre simulation doit être atteint STARTED avant que vous puissiez démarrer des applications personnalisées.

      L'exemple d'application fournit l'application ViewApp personnalisée pour visualiser votre simulation. Cette application vous fournit une adresse IP statique et un numéro de port pour connecter les clients de simulation (vous le ferez dans une étape ultérieure de ce didacticiel). Vous pouvez considérer un domain comme une classe d'applications qui ont le même code exécutable et les mêmes options de lancement. app nameIdentifie l'instance de l'application. Pour plus d'informations sur SimSpace Weaver les concepts, voirConcepts clés pourSimSpace Weaver.

      Vous pouvez utiliser l'DescribeAppAPI pour vérifier le statut d'une application personnalisée une fois que vous l'avez démarrée.

      aws simspaceweaver describe-app --simulation simulation-name --app app-name --domain domain-name
      Pour démarrer l'application View dans ce didacticiel
      1. Appelez StartApp pourViewApp.

        aws simspaceweaver start-app --simulation simulation-name --name ViewApp --domain MyViewDomain
      2. Appelez DescribeApp pour vérifier le statut de votre application personnalisée.

        aws simspaceweaver describe-app --simulation simulation-name --app ViewApp --domain MyViewDomain

      Une fois que le statut de votre application personnalisée (instance) est STARTED atteint, la sortie de DescribeApp inclura l'adresse IP et le numéro de port de cette application personnalisée (instance). Dans l'exemple de sortie suivant, l'adresse IP est la valeur de Address et le numéro de port est la valeur de Actual dans le EndpointInfo bloc.

      
      {
          "Status": "STARTED",
          "Domain": "MyViewDomain",
          "TargetStatus": "STARTED",
          "Simulation": "MyProjectSimulation_22-10-04_22_10_15",
          "LaunchOverrides": {
              "LaunchCommands": []
          },
          "EndpointInfo": {
              "IngressPortMappings": [
                  {
                      "Declared": 7000,
                      "Actual": 4321
                  }
              ],
              "Address": "198.51.100.135"
          },
          "Name": "ViewApp"
      }
      
      
      Note

      La valeur de Declared est le numéro de port auquel le code de votre application doit être lié. La valeur de Actual est le numéro de port qui SimSpace Weaver permet aux clients de se connecter à votre application. SimSpace Weaver mappe le Declared port par Actual rapport au port.

      Note

      Vous pouvez utiliser la procédure décrite sur Obtenez l'adresse IP et le numéro de port d'une application personnalisée pour obtenir l'adresse IP et le numéro de port de toute application personnalisée démarrée.

  8. Démarrez l'horloge.

    • Lorsque vous créez votre simulation pour la première fois, elle possède une horloge, mais celle-ci ne tourne pas. Lorsque votre horloge ne fonctionne pas, l'état de votre simulation ne sera pas mis à jour. Une fois que vous aurez démarré l'horloge, elle commencera à envoyer des ticks à vos applications. À chaque coche, vos applications spatiales parcourent les entités qu'elles possèdent et valident les résultats dans SimSpace Weaver

      Note

      Le démarrage de l'horloge peut prendre 30 à 60 secondes.

      Appelez l'API StartClock.

      aws simspaceweaver start-clock --simulation simulation-name
      Note

      L'StartClockAPI utilise votresimulation-name, que vous pouvez trouver à l'aide de l'ListSimulationsAPI :

      aws simspaceweaver list-simulations
paramètres de démarrage rapide
  • -h, --help

    • Répertoriez ces paramètres.

  • --propre

    • Supprimez le contenu du répertoire de construction avant de le compiler.

  • --tous les 2

    • Construit directement sur la machine native au lieu de Docker. Utilisez-le uniquement si vous l'exécutez dans un environnement Amazon Linux 2, tel que WSL.

  • --téléchargement uniquement

    • Importez uniquement le schéma et les fichiers compressés de l'application sur Amazon S3, ne lancez pas la simulation.

  • --aucune construction

    • Ignorez la reconstruction du projet.

  • --aucun contenant

    • Ignorez la reconstruction du conteneur de simulation répertorié dans le schéma.

  • --client de console

    • Créez et connectez automatiquement le client de console répertorié dans le fichier config.py.

  • --schema SCHÉMA

    • Quel schéma utilisera cette invocation. La valeur par défaut est « SCHEMA » dans le fichier config.py.

  • --name NOM

    • Quel nom portera la simulation ? La valeur par défaut est « Project_Name'-date-time » dans le fichier config.py.

Étape 3 : Vérifiez les journaux (facultatif)

SimSpace Weaver écrit les messages de gestion des simulations et les résultats de console de vos applications sur Amazon CloudWatch Logs. Pour plus d'informations sur l'utilisation des journaux, consultez la section Utilisation des groupes de journaux et des flux de CloudWatch journaux dans le guide de l'utilisateur Amazon Logs.

Chaque simulation que vous créez possède son propre groupe de CloudWatch journaux dans Logs. Le nom du groupe de journaux est spécifié dans le schéma de simulation. Dans l'extrait de schéma suivant, la valeur de log_destination_service est. logs Cela signifie que la valeur de log_destination_resource_name est le nom d'un groupe de journaux. Dans ce cas, le groupe de journaux estMySimulationLogs.


simulation_properties:
  log_destination_service: "logs"
  log_destination_resource_name: "MySimulationLogs"
  default_entity_index_key_type: "Vector3<f32>"

Vous pouvez également utiliser l'DescribeSimulationAPI pour trouver le nom du groupe de journaux pour la simulation une fois que vous l'avez démarrée.

aws simspaceweaver describe-simulation --simulation simulation-name

L'exemple suivant montre la partie de la sortie DescribeSimulation qui décrit la configuration de journalisation. Le nom du groupe de journaux est affiché à la fin duLogGroupArn.

   
    "LoggingConfiguration": {
        "Destinations": [
            {
                "CloudWatchLogsLogGroup": {
                    "LogGroupArn": "arn:aws:logs:us-west-2:111122223333:log-group:MySimulationLogs"
                }
            }
        ]
    },
    

Chaque groupe de journaux de simulation contient plusieurs flux de journaux :

  • Flux du journal de gestion : messages de gestion de simulation produits par le SimSpace Weaver service.

    /sim/management
  • Flux du journal des erreurs : messages d'erreur produits par le SimSpace Weaver service. Ce flux de journal n'existe qu'en cas d'erreur. SimSpace Weaver stocke les erreurs écrites par vos applications dans leurs propres flux de journaux d'applications (voir les flux de journaux suivants).

    /sim/errors
  • Flux de journaux d'applications spatiales (1 pour chaque application spatiale sur chaque travailleur) : sortie de console produite par les applications spatiales. Chaque application spatiale écrit dans son propre flux de log. Tous les caractères spatial-app-idse trouvent après la barre oblique finale à la fin du. worker-id

    /domain/spatial-domain-name/app/worker-worker-id/spatial-app-id
  • Flux de journaux d'applications personnalisés (1 pour chaque instance d'application personnalisée) : sortie de console produite par des applications personnalisées. Chaque instance d'application personnalisée écrit dans son propre flux de journal.

    /domain/custom-domain-name/app/custom-app-name/random-id
  • Flux de journal des applications de service (1 pour chaque instance d'application de service) : sortie de console produite par les applications de service. Chaque application de service écrit dans son propre flux de journal. Tous les caractères service-app-idse trouvent après la barre oblique finale à la fin du. service-app-name

    /domain/service-domain-name/app/service-app-name/service-app-id
Note

L'exemple d'application ne contient pas d'applications de service.

Étape 4 : Afficher votre simulation

Le SDK de SimSpace Weaver l'application propose différentes options pour afficher l'exemple d'application. Vous pouvez utiliser l'exemple de client de console si vous ne disposez d'aucun support local pour le développement d'Unreal Engine. Les instructions pour le client Unreal Engine supposent que vous utilisez Windows.

Le client de console affiche une liste des événements d'entité au fur et à mesure qu'ils se produisent. Le client obtient les informations relatives à l'événement de l'entité auprès duViewApp. Si le client de console affiche la liste des événements, cela confirme la connectivité réseau avec l'activité ViewApp et dans votre simulation.

La PathfindingSample simulation crée des entités fixes et mobiles sur un plan bidimensionnel. Les entités mobiles se déplacent autour des entités stationnaires. Le client Unreal Engine fournit une visualisation des événements de l'entité.

Client de console

Le client de console peut être automatiquement créé et connecté lors du lancement d'un exemple quick-start.py si vous incluez l'--consoleclientoption. Pour créer et connecter le client de console quick-start.py une fois qu'il a déjà été appelé, procédez comme suit :

Naviguez vers :

sdk-folder/Clients/TCP/CppConsoleClient

Exécutez le script pour créer et connecter le client :

python start_client.py --host ip-address --port port-number

Le script effectuera les opérations suivantes :

  1. Créez le client de console avec CMake.

  2. Lancez l'exécutable intégré avec l'adresse IP et le numéro de port indiqués.

    .\WeaverNngConsoleClient.exe --url tcp://ip-address:port-number

Client Unreal Engine

veuillez consulter Lancement du client de visualisation Unreal Engine.

Étape 5 : Arrêtez et supprimez votre simulation

Naviguez vers :

sdk-folder/Samples/PathfindingSample/tools/cloud

Trouvez le nom de vos simulations :

aws simspaceweaver list-simulations

Arrêtez et supprimez la simulation :

python stop-and-delete.py --simulation simulation-name

Le script stop-and-delete.py effectuera les opérations suivantes :

  1. Appelez la AWS CLI commande pour arrêter une simulation.

  2. Appelez la AWS CLI commande pour supprimer une simulation.

stop-and-delete paramètres
  • -h, --help

    • Répertoriez ces paramètres.

  • --simulation SIMULATION

    • Le nom de la simulation pour stop-and-delete

  • --arrête

    • Arrêtez simplement la simulation. Ne le supprime pas.

  • --supprimer

    • Supprimez uniquement une simulation. Ne fonctionnera que si la simulation est l'une STOPPED ou l'autreFAILED.

Résolution des problèmes

Consultez Résolution des problèmes le didacticiel de démarrage rapide.