Aviso de fim do suporte: em 10 de setembro de 2025, AWS
interromperá o suporte para AWS RoboMaker. Depois de 10 de setembro de 2025, você não poderá mais acessar o AWS RoboMaker console ou AWS RoboMaker os recursos. Para obter mais informações sobre como fazer a transição para ajudar AWS Batch a executar simulações em contêineres, visite esta postagem no blog.
As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Perguntas frequentes sobre contêiner ROS
Esta página lista perguntas e respostas comuns relacionadas à migração de aplicativos de simulação e robôs baseados em ROS para contêineres Docker adequados para execução no AWS RoboMaker.
Nosso fluxo de trabalho envia trabalhos de simulação usando aplicativos colcon
integrados de robôs e simulação. Preciso migrar?
Sim, você deve migrar. As etapas para migrar estão localizadas em Migração de aplicativos ROS para contêineres.
Não tenho certeza se meus aplicativos de robôs e simulação precisam ser migrados. Como posso saber?
Você pode verificar por meio do console AWS ou do AWS CLI. Para obter instruções, escolha a seguinte guia aplicável.
Como os contêineres de robôs e aplicativos de simulação se comunicam entre si?
Não é diferente de como os aplicativos baseados em ROS normalmente se comunicam entre si usando o middleware ROS. No entanto, você deve definir algumas variáveis de ambiente específicas do ROS nos objetos de configuração de inicialização da sua solicitação de trabalho de simulação.
A seguir está um exemplo das configurações que você deve usar para o aplicativo do robô. 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 } ]
Veja a seguir um exemplo das configurações que você deve usar para o aplicativo de simulação 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 } ]
Os contêineres se comunicam entre si conforme o esperado se você usar as cadeias de caracteres ROBOMAKER_*
e os números de porta fornecidos para definir ROS_IP
, ROS_MASTER_URI
e GAZEBO_MASTER_URI
.
Para obter mais informações, consulte Executando uma simulação.
Para onde foi minha métrica de fator em tempo real (RTF)? Como posso restaurá-la?
O AWS RoboMaker não publica mais essa métrica automaticamente. Se quiser publicar essa métrica no CloudWatch, você deve importar o pacote do AWS RoboMaker CloudWatch PublisherREADME.md
Como faço para cancelar e marcar meus trabalhos de simulação?
Você pode usar a configuração da VPC para automarcar ou cancelar automaticamente seus trabalhos de simulação do AWS RoboMaker usando as APIs AWS genéricas. Para usar a abordagem a seguir, o contêiner deve estar sendo executado em uma VPC com uma rota pública por meio de uma NAT ou IGW para as APIs AWS. A abordagem mais simples é usar uma sub-rede pública em sua VPC padrão para se conectar às APIs da AWS. Se você quiser executar simulações em uma sub-rede privada, você também pode configurar uma NAT ou configurar uma interface endpoint da VPC. Para obter mais informações, consulte AWS RoboMaker e endpoints da VPC de interface (AWS PrivateLink).
nota
Se você estiver usando o IGW, certifique-se de configurar assignPublicIp=True
conforme descrito na documentação abaixo. Se você estiver usando um IP público, certifique-se de que seus grupos de segurança estejam suficientemente bloqueados.
Você deve adicionar o bloco a seguir aos parâmetros da solicitação.
vpcConfig={ 'subnets': [ 'string', ], 'securityGroups': [ 'string', ], 'assignPublicIp': True|False },
Além disso, o trabalho de simulação do AWS RoboMaker deve ter um perfil do IAM com permissões para marcar e cancelar trabalhos de simulação.
Em seu trabalho de simulação, você pode usar a biblioteca AWS CLI ou Python boto3
para chamar APIs AWS RoboMaker públicas. Você deve ter a biblioteca boto3
e AWS CLI pré-instalada em seu contêiner antes de poder usá-la em um trabalho de simulação do AWS RoboMaker. O código de exemplo do Python a seguir mostra como cancelar um trabalho de simulação.
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 )
Como eu importo mundos do Simulation WorldForge para o trabalho de simulação?
Se você precisar importar ativos do Simulation WorldForge para seu trabalho de simulação, use a API DataSource
. Isso permite que você importe ativos mundiais do diretório de saída do Amazon S3 do trabalho de exportação mundial para um destino de sua escolha dentro do contêiner de trabalho de simulação.
Para obter mais informações, consulte Usando mundos exportados em simulação.
Os arquivos de log do meu aplicativo não estão sendo criados. O que está acontecendo?
Certifique-se de ter criado todos os diretórios de saída nos quais você confia para depurar artefatos relacionados em seu Dockerfile. Por exemplo, você pode adicionar a seguinte linha ao Dockerfile.
RUN mkdir -p $YOUR_LOG_DIR
Para obter mais informações, consulte Como adicionar uma configuração de upload personalizada.
Meu aplicativo de simulação apresentou a falha 'run_id on parameter server does not match declared run_id'. O que devo fazer?
Se você estiver iniciando seu trabalho de simulação de ROS com o aplicativo de robô e o aplicativo de simulação, adicione --wait
aos comandos roslaunch.