FAQ sur les conteneurs ROS - AWS RoboMaker

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.

FAQ sur les conteneurs ROS

Cette page répertorie les questions et réponses courantes relatives à la migration d'applications de simulation et de robots basées sur ROS vers des conteneurs Docker adaptés à une exécution dansAWS RoboMaker.

Notre flux de travail soumet des tâches de simulation en utilisantcolcon-applications robotiques et de simulation groupées. Dois-je effectuer une migration ?

Oui, vous devez effectuer la migration. Les étapes de migration se trouvent surMigration des applications ROS vers des conteneurs.

Je ne sais pas si mon robot et mes applications de simulation doivent être migrés. Comment puis-je le savoir ?

Vous pouvez vérifier via leAWSconsole ouAWS CLI. Pour obtenir des instructions, choisissez l'onglet approprié suivant.

Using the console
  1. Connectez-vous à la console AWS RoboMaker.

  2. Dans le panneau de navigation de gauche, choisissez Development (Développement), puis Simulation applications (Applications de simulation).

  3. Sélectionnez leNomd'une application de simulation pour en voir les détails.

    Si tu voisGénéraletDurée de la simulation, la migration n'est pas nécessaire. Si vous voyez des valeurs spécifiques à ROS ou à Gazebo, vous devez effectuer la migration.

Using the AWS CLI

Ce qui suit est un exempleAWS CLIcommande qui exécute l'équivalent des étapes basées sur la console.

aws robomaker describe-simulation-application --application YOUR-SIM-APP-ARN

Cette commande renvoie une sortie qui indiquesimulationSoftwareSuite, lerobotSoftwareSuite(s'il y a lieu), etenvironmentURI. Si tu voisDurée de la simulationcomme lesimulationSoftwareSuiteetGénéralcomme lerobotSoftwareSuite, et votreenvironmentL'URI est défini, vos applications de simulation ne nécessitent pas de migration.

Comment le robot et les conteneurs de l'application de simulation communiquent-ils entre eux ?

Cela ne diffère pas de la façon dont les applications basées sur ROS communiquent généralement entre elles à l'aide de l'intergiciel ROS. Vous devez toutefois définir certaines variables d'environnement spécifiques à ROS dans les objets de configuration de lancement de votre demande de tâche de simulation.

Voici un exemple d'extrait des paramètres que vous devez utiliser pour l'application robotlaunchConfig.

"robotApplications": [ { "application": "YOUR-ROBOT-APP-ARN", "applicationVersion": "$LATEST", "launchConfig": { "environmentVariables": { "ROS_IP": "ROBOMAKER_ROBOT_APP_IP", "ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311", "GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345" }, ... # Removed extra data for clarity } ]

Voici un exemple d'extrait des paramètres que vous devez utiliser pour l'application de simulation.launchConfig.

"simulationApplications": [ { "application": "YOUR-SIM-APP-ARN", "applicationVersion": "$LATEST", "launchConfig": { "environmentVariables": { "ROS_IP": "ROBOMAKER_SIM_APP_IP", "ROS_MASTER_URI": "http://ROBOMAKER_ROBOT_APP_IP:11311", "GAZEBO_MASTER_URI": "http://ROBOMAKER_SIM_APP_IP:11345" }, ... # Removed extra data for clarity } ]

Les conteneurs communiquent entre eux comme prévu si vous utilisez leROBOMAKER_*chaînes et numéros de port à définirROS_IP,ROS_MASTER_URI, etGAZEBO_MASTER_URI.

Pour plus d'informations, veuillez consulter Crée une simulation..

Où est passée ma métrique RTF (Real-Time Factor) ? Comment puis-je le restaurer ?

AWS RoboMakerne publie plus cette métrique automatiquement. Si vous souhaitez publier cette métrique surCloudWatch, vous devez importer leAWS RoboMaker CloudWatchÉditeurintégrez le package dans votre application de simulation et modifiez le fichier de lancement de la simulation en suivant les instructions fournies dans leREADME.mdfichier.

Comment annuler et étiqueter mes tâches de simulation ?

Vous pouvez utiliser la configuration du VPC pour étiqueter ou annuler automatiquement votreAWS RoboMakertâches de simulation utilisant le génériqueAWSAPIs. Pour utiliser l'approche suivante, le conteneur doit s'exécuter dans un VPC avec une route publique via unNATouIGWauAWSAPIs. L'approche la plus simple consiste à utiliser un sous-réseau public dans votreVPC par défautpour vous connecter aux API AWS. Si vous souhaitez exécuter des simulations dans un sous-réseau privé, vous pouvez également configurer un NAT ou configurer un point de terminaison VPC d'interface. Pour plus d'informations, veuillez consulter AWS RoboMaker et points de terminaison VPC d'interface (AWS PrivateLink).

Note

Si vous utilisez l'IGW, assurez-vous de réglerassignPublicIp=Truecomme décrit dans la documentation ci-dessous. Si vous utilisez une adresse IP publique, assurez-vous que vos groupes de sécurité sont suffisamment verrouillés.

Vous devez ajouter le bloc suivant aux paramètres de la demande.

vpcConfig={ 'subnets': [ 'string', ], 'securityGroups': [ 'string', ], 'assignPublicIp': True|False },

En outre, leAWS RoboMakerla tâche de simulation doit avoir un rôle IAM avec les autorisations nécessaires pour baliser et annuler les tâches de simulation.

Dans votre tâche de simulation, vous pouvez utiliser leAWS CLIou leboto3Bibliothèque Python à appeler au publicAWS RoboMakerAPIs. Vous devez avoir leAWS CLIetboto3bibliothèque préinstallée dans votre conteneur avant de pouvoir les utiliser dans unAWS RoboMakertravail de simulation. L'exemple de code Python suivant montre comment annuler une tâche de simulation.

class RoboMakerUtils: def __init__(self): self.job_arn = os.getenv('AWS_ROBOMAKER_SIMULATION_JOB_ARN') self.client = boto3.client('robomaker', region_name=os.getenv('AWS_ROBOMAKER_REGION', 'us-east-1')) def tag_robomaker_sim_job(self, key, value): self.client.tag_resource( resourceArn=self.job_arn, tags={ key: str(value) } ) def cancel_robomaker_sim_job(self): self.tag_robomaker_sim_job("END_TIME", time.time()) response = self.client.cancel_simulation_job( job=self.job_arn )

Comment importer une simulationWorldForgedes mondes dans le métier de simulation ?

Si vous devez importer une simulationWorldForgedes actifs dans votre tâche de simulation, utilisez leDataSourceAPI. Cela vous permet d'importer des ressources mondiales depuis le répertoire de sortie Amazon S3 de la tâche d'exportation mondiale vers la destination de votre choix au sein de votre conteneur de tâches de simulation.

Pour plus d'informations, veuillez consulter Utilisation de mondes exportés dans la simulation.

Les fichiers journaux de mon application ne sont pas créés. Qu'est-ce qui se passe ?

Assurez-vous d'avoir créé tous les répertoires de sortie sur lesquels vous vous basez pour déboguer les artefacts liés à votre Dockerfile. Par exemple, vous pouvez ajouter la ligne suivante à votre Dockerfile.

RUN mkdir -p $YOUR_LOG_DIR

Pour plus d'informations, veuillez consulter Ajout d'une configuration de téléchargement personnalisée.

Mon application de simulation a échoué avec le message « run_id sur le serveur de paramètres ne correspond pas à l'identifiant d'exécution déclaré ». Que dois-je faire ?

Si vous lancez votre tâche de simulation ROS à la fois avec une application robotique et une application de simulation, vous devez ajouter--waitaux commandes roslaunch.