Configurar uma simulação - AWS RoboMaker

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á.

Configurar uma simulação

As seções a seguir descrevem como configurar trabalhos de simulação. Para obter mais informações, consulte o conceito que descreve Configuração do aplicativo.

Configuração de um trabalho de simulação para da Amazon VPC

Quando você cria recursos na Amazon Virtual Private Cloud (Amazon VPC), eles não podem ser lidos por meio da Internet pública. Exemplos de recursos podem ser armazéns de dados do Amazon Redshift ou clusters do Amazon ElastiCache. Eles também podem ser seus serviços em uma instância Amazon Elastic Compute Cloud. Por padrão, os recursos em uma Amazon VPC não são acessíveis para um trabalho de simulação do AWS RoboMaker.

nota

AWS RoboMaker executa seu trabalho de simulação em uma rede isolada sem conectividade externa. Para permitir que seu trabalho acesse recursos na sua Amazon VPC, você deve fornecer dados específicos da VPC que incluem IDs de sub-rede da Amazon VPC e IDs de grupo de segurança. O AWS RoboMaker usa esses dados para configurar interfaces de rede elásticas (ENIs). As ENIs ajudam seu trabalho a se conectar com segurança a outros recursos na Amazon VPC privada.

O AWS RoboMaker não se conecta a recursos dentro de VPCs de locação dedicada. Para obter mais informações, consulte VPCs dedicadas.

Você pode adicionar os dados da Amazon VPC ao seu trabalho de simulação do AWS RoboMaker usando o parâmetro VpcConfig quando criar um trabalho (consulte CreateSimulationJob). A seguir há exemplo de AWS CLI em que um IP público é atribuído.

aws robomaker create-simulation-job \ --output-location s3Bucket=my-bucket,s3Prefix=my-output-folder \ --max-job-duration-in-seconds 3600 \ --iam-role my-role-arn \ --failure-behavior Continue \ --robot-applications application='my-robot-application-arn,launchConfig={command=["roslaunch", "hello_world_robot", "rotate.launch"]}' \ --simulation-applications application='my-simulation-application-arn,launchConfig={command=["roslaunch", "hello_world_simulation", "empty_world.launch"]}' \ --vpc-config assignPublicIp=true,subnets=comma-separated-vpc-subnet-ids,securityGroups=comma-separated-security-group-ids
nota

Quando um trabalho de simulação é configurado para ser executado em uma VPC, ele incorre em uma penalidade de ENI. A resolução de endereço pode ser adiada quando você tenta se conectar a recursos de rede.

Acesso à Internet para trabalhos de simulação

O AWS RoboMaker usa os dados da VPC fornecidos para configurar ENIs. As ENIs permitem que seu trabalho acesse recursos da VPC. Um endereço IP privado será designado a cada ENI do intervalo nas sub-redes que você especificar. Por padrão, a ENI não recebe nenhum endereço IP público.

Se o seu trabalho requer acesso à Internet (talvez para encontrar serviços da AWS que não tenham endpoints da VPC), e se você estiver usando sub-redes privadas, pode configurar uma NAT dentro da sua VPC. É possível usar o gateway NAT da Amazon VPC e solicitar ao AWS RoboMaker para atribuir um IP público. Para obter mais informações, consulte Gateways NAT no Guia do usuário da Amazon VPC.

nota

Você não pode usar um gateway da Internet anexado diretamente à sua VPC, pois isso requer que a ENI tenha endereços IP públicos. Por padrão, sua ENI tem um endereço IP privado.

Para configurar o acesso à Internet ao usar sub-redes públicas, defina assignPublicIp=true para atribuir um IP público para sua ENI.

Se seu trabalho de simulação exigir apenas acesso a APIs AWS públicas e você quiser mais privacidade, consulte AWS RoboMaker e endpoints da VPC de interface (AWS PrivateLink). Com essas informações, você pode criar seu endpoint da VPC de interface e adicionar a VPC usando a API CreateSimulationJob.

Configurando a computação SimulationJob

Para usar a GPU no seu SimulationJobs, você pode configurar o ComputeType do SimulationJob para usar o GPU Compute. Você obtém os seguintes benefícios ao usar trabalhos de simulação baseados em Unidade de Processamento Gráfico (GPU) no AWS RoboMaker.

  • Os trabalhos de simulação baseados em GPU permitem a execução de aplicativos que exigem plug-ins de sensores habilitados para GPU e renderização e desempenho de alta fidelidade usando OpenGL, CUDA, OpenCL e Vulkan.

  • Os trabalhos de simulação baseados em GPU garantem que as ferramentas da GUI do AWS RoboMaker tenham resolução HD de alta qualidade para que você possa ver os objetos com mais detalhes. A experiência com ferramentas de GUI é ideal porque a GPU garante uma taxa maior de quadros por segundo.

  • A simulação baseada em GPU acelera o tempo de conclusão do trabalho de simulação. Com a GPU, você pode executar cenas de simulação complexas sem afetar o desempenho no fator em tempo real e nos quadros por segundo.

  • Os trabalhos de simulação baseados em GPU melhoram o treinamento de modelos de aprendizado por reforço.

Computação

O parâmetro Compute na CreateSimulationJob solicitação pode ser usado para configurar qual tipo de computação é necessário para o SimulationJob.

ComputeType

ComputeType especifica o tipo de computação necessário para o trabalho. Os valores válidos são CPU e GPU_AND_CPU. O valor padrão é CPU. Se GPU_AND_CPU for especificado, o trabalho criado poderá usar a GPU junto com a CPU.

GpuUnitLimit

Usando o parâmetro GpuUnitLimit, você pode especificar o número de unidades de GPU que precisam ser alocadas para seu trabalho. Para ComputeType GPU_AND_CPU, ele deve ser 1. Para ComputeType CPU, ele deve ser 0.

Para obter informações sobre como criar contêineres para utilizar a GPU, consulte Criação de imagens para executar aplicativos de GPU.

Configurando ferramentas de simulação personalizadas

Com o AWS RoboMaker, você pode configurar ferramentas personalizadas para os aplicativos em um trabalho de simulação. Use ferramentas personalizadas para interagir com a simulação, como utilitários de diagnóstico ou para outros fins. Você também pode configurar ferramentas padrão como rqt ou rviz fornecidas pelo AWS RoboMaker. Se seu trabalho de simulação fizer parte de um pipeline automatizado, você poderá desativar as ferramentas padrão e usar menos recursos.

Você pode configurar até 10 ferramentas personalizadas. As ferramentas personalizadas são iniciadas após o início do processo principal de ROS.

Uma configuração de ferramenta personalizada inclui os seguintes elementos:

  • Tool name – O nome da ferramenta.

  • Command – O comando para invocar a ferramenta em um shell bash. Você deve incluir o nome do executável da ferramenta. É possível usar variáveis de ambiente, incluindo variáveis personalizadas em seus argumentos. Por exemplo, para usar o ID do trabalho de simulação atual, você pode referenciar AWS_ROBOMAKER_SIMULATION_JOB_ID.

  • Exit behavior – Determina qual ação será tomada se a ferramenta personalizada for encerrada. Se você especificar fail, o trabalho de simulação falhará. Se você especificar restart, a ferramenta será reiniciada. O padrão é restart.

  • UI streaming – Especifica se uma sessão de streaming está configurada para a ferramenta. Se verdadeiro, o AWS RoboMaker configura uma conexão para que você possa interagir com a ferramenta enquanto ela está sendo executada na simulação. Ele deve ter uma interface gráfica de usuário. O padrão é false.

  • Comportamento do log — especifica se a ferramenta stdout e stderr é transmitida para o CloudWatch Logs. O padrão é false.

Acesso raiz e recursos do sistema

O AWS RoboMaker fornece acesso raiz limitado (sudo) aos aplicativos executados em um trabalho de simulação. A lista a seguir contém chamadas de sistema significativas (mas não todas) que são bloqueadas.

  • acct

  • add_key

  • bpf

  • clock_adjtime

  • clock_settime

  • clonar

  • create_module

  • delete_module

  • finit_module

  • get_kernel_syms

  • get_mempolicy

  • init_module

  • ioperm

  • iopl

  • kcmp

  • kexec_file_load

  • kexec_load

  • keyctl

  • lookup_dcookie

  • mbind

  • mount

  • move_pages

  • name_to_handle_at

  • nfsservctl

  • open_by_handle_at

  • perf_event_open

  • personality

  • pivot_root

  • process_vm_readv

  • process_vm_writev

  • ptrace

  • query_module

  • quotactl

  • reboot

  • request_key

  • set_mempolicy

  • setns

  • settimeofday

  • stime

  • swapon

  • swapoff

  • sysfs

  • _sysctl

  • umount

  • umount2

  • unshare

  • uselib

  • userfaultfd

  • ustat

  • vm86

  • vm86old