Avis de fin de support : le 10 septembre 2025, AWS
le support de AWS RoboMaker. Après le 10 septembre 2025, vous ne pourrez plus accéder à la AWS RoboMaker console ni aux AWS RoboMaker ressources. Pour plus d'informations sur la transition AWS Batch afin de faciliter l'exécution de simulations conteneurisées, consultez ce billet de blog.
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.
Conteneur ROS FAQs
Cette page répertorie les questions et réponses courantes relatives à la migration d'applications de robots et de simulation basées sur ROS vers des conteneurs Docker adaptés à l'exécution. AWS RoboMaker
Notre flux de travail soumet des tâches de simulation à l'aide de robots et d'applications de simulation colcon
groupés. Dois-je effectuer une migration ?
Oui, vous devez effectuer la migration. Les étapes de migration se trouvent à l'adresseMigration 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 la AWS console ou le AWS CLI. Pour obtenir des instructions, choisissez l'onglet approprié suivant.
-
Connectez-vous à la console AWS RoboMaker
. -
Dans le panneau de navigation de gauche, choisissez Development (Développement), puis Simulation applications (Applications de simulation).
-
Sélectionnez le nom d'une application de simulation pour voir ses détails.
Si vous voyez General et Simulation Runtime, la migration n'est pas nécessaire. Si vous voyez des valeurs spécifiques à ROS ou à Gazebo, vous devez effectuer la migration.
Comment le robot et les conteneurs d'applications de simulation communiquent-ils entre eux ?
Ce n'est pas différent de la façon dont les applications basées sur ROS communiquent généralement entre elles à l'aide du middleware ROS. Cependant, vous devez 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 robot. launchConfig
"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 les ROBOMAKER_*
chaînes et les numéros de port fournis pour définir ROS_IP
ROS_MASTER_URI
, etGAZEBO_MASTER_URI
.
Pour de plus amples informations, veuillez consulter Exécution d'une simulation.
Où est passée ma métrique RTF (Real-Time Factor) ? Comment puis-je le restaurer ?
AWS RoboMaker ne publie plus cette métrique automatiquement. Si vous souhaitez publier cette métrique sur CloudWatch, vous devez importer le package AWS RoboMaker CloudWatch PublisherREADME.md
Comment puis-je annuler et étiqueter mes tâches de simulation ?
Vous pouvez utiliser la configuration VPC pour étiqueter ou annuler automatiquement vos tâches de AWS RoboMaker simulation à l'aide du générique. AWS APIs Pour utiliser l'approche suivante, le conteneur doit être exécuté dans un VPC avec une route publique via un NAT ou un IGW vers le. AWS APIs L'approche la plus simple consiste à utiliser un sous-réseau public dans votre VPC par défaut pour vous connecter à AWS. APIs 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 de plus amples informations, veuillez consulter AWS RoboMaker et points de terminaison VPC d'interface ()AWS PrivateLink.
Note
Si vous utilisez l'IGW, assurez-vous de le configurer assignPublicIp=True
comme 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, la tâche AWS RoboMaker de simulation doit avoir un rôle IAM autorisé à étiqueter et à annuler des tâches de simulation.
Dans votre tâche de simulation, vous pouvez utiliser la bibliothèque Python AWS CLI ou la bibliothèque boto3
Python pour appeler public AWS RoboMaker APIs. La boto3
bibliothèque AWS CLI and doit être préinstallée dans votre conteneur avant de pouvoir les utiliser dans une tâche de AWS RoboMaker 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 des WorldForge mondes de simulation dans la tâche de simulation ?
Si vous devez importer des WorldForge actifs de simulation dans votre tâche de simulation, utilisez l'DataSource
API. 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 dans le conteneur de tâches de simulation.
Pour de plus amples 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 comptez pour déboguer les artefacts associés dans votre Dockerfile. Par exemple, vous pouvez ajouter la ligne suivante à votre Dockerfile.
RUN mkdir -p $YOUR_LOG_DIR
Pour de plus amples informations, veuillez consulter Ajouter une configuration de téléchargement personnalisée.
Mon application de simulation a échoué avec « run_id sur le serveur de paramètres ne correspond pas au run_id déclaré ». Que dois-je faire ?
Si vous lancez votre tâche de simulation ROS avec à la fois une application robot et une application de simulation, vous devez ajouter des commandes roslaunch --wait
aux commandes roslaunch.