Configuring a simulation - AWS RoboMaker

Configuring a simulation

The following sections describe how to configure simulation jobs. For more information, see the concept that describes Application configuration.

Configuring a simulation job for Amazon VPC access

When you create resources in the Amazon Virtual Private Cloud (Amazon VPC), they cannot be read through the public internet. Example resources could be Amazon Redshift data warehouses or Amazon ElastiCache clusters. They could also be your services on an Amazon Elastic Compute Cloud instance. By default, resources in an Amazon VPC are not accessible to an AWS RoboMaker simulation job.

Note

AWS RoboMaker runs your simulation job on an isolated network with no external connectivity. To allow your job to access resources in your Amazon VPC, you must provide VPC-specific data that includes Amazon VPC subnet IDs and security group IDs. AWS RoboMaker uses this data to set up elastic network interfaces (ENIs). ENIs help your job to connect securely to other resources in your private Amazon VPC.

AWS RoboMaker does not connect to resources within dedicated tenancy VPCs. For more information, see Dedicated VPCs.

You can add Amazon VPC data to your AWS RoboMaker simulation job by using the VpcConfig parameter at the time you create a job (see CreateSimulationJob). The following is an AWS CLI example where a public IP is assigned.

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
Note

When a simulation job is configured to run in a VPC, it incurs an ENI penalty. Address resolution may be delayed when you try to connect to network resources.

Internet access for simulation jobs

AWS RoboMaker uses the VPC data you provide to set up ENIs. ENIs allow your job to access VPC resources. Each ENI is assigned a private IP address from the range in the subnets you specify. The ENI is not assigned any public IP addresses by default.

If your job requires internet access (perhaps to find AWS services that do not have VPC endpoints), and you are using private Subnets, you can set up a NAT inside your VPC. You can use the Amazon VPC NAT gateway and request AWS RoboMaker to assign a public IP. For more information, see NAT Gateways in the Amazon VPC User Guide.

Note

You cannot use an internet gateway that is directly attached to your VPC, as an internet connection requires the ENI to have public IP addresses. By default, your ENI has a private IP address.

To configure internet access when using public Subnets, set assignPublicIp=true to assign a public IP to your ENI.

If your simiulation job only requires access to public AWS APIs and you want more privacy, see AWS RoboMaker and interface VPC endpoints (AWS PrivateLink). With this information, you can create your interface VPC endpoint and add the VPC using the CreateSimulationJob API.

Configuring SimulationJob compute

To use GPU in your SimulationJobs, you can configure the ComputeType of the SimulationJob to use GPU Compute. You realize the following benefits when using Graphics Processing Unit (GPU)-based simulation jobs in AWS RoboMaker.

  • GPU-based simulation jobs allow execution of applications that require GPU-enabled sensor plugins and high fidelity rendering and performance using OpenGL, CUDA, OpenCL, and Vulkan.

  • GPU-based simulation jobs ensure that the AWS RoboMaker GUI tools have high-quality HD resolution so you can see objects in greater detail. The GUI tools experience is ideal because the GPU ensures a higher rate of frames per second.

  • GPU-based simulation accelerates the simulation job completion time. With GPU, you can run complex simulation scenes without taking a performance hit on the real-time factor and the frames per second.

  • GPU-based simulation jobs improve the training of reinforcement learning models.

Compute

The Compute parameter in the CreateSimulationJob request can be used to configure which kind of Compute is needed for the SimulationJob.

ComputeType

ComputeType specifies the type of Compute required for the job. Valid values are CPU and GPU_AND_CPU. The default value is CPU. If GPU_AND_CPU is specified, the job created can use GPU along with CPU.

GpuUnitLimit

Using the GpuUnitLimit parameter, you can specify the number of GPU units that need to be allocated to your job. For GPU_AND_CPU ComputeType, it must be 1. For CPU ComputeType, it must be 0.

For information about building containers to utilize GPU, see Creating images to run GPU applications.

Configuring custom simulation tools

With AWS RoboMaker, you can configure custom tools for the applications in a simulation job. Use custom tools to interact with the simulation, as diagnostic utilities, or for other purposes. You can also configure default tools like rqt or rviz provided by AWS RoboMaker. If your simulation job is part of an automated pipeline, you can disable default tools and use fewer resources.

You can configure up to 10 custom tools. Custom tools are started after the main ROS process is started.

A custom tool configuration includes the following elements:

  • Tool name — The name of the tool.

  • Command — The command to invoke the tool in a bash shell. You must include the tool executable name. You can use environment variables including custom variables in your arguments. For example, to use the current simulation job ID, you can reference AWS_ROBOMAKER_SIMULATION_JOB_ID.

  • Exit behavior — Determines what action is taken if the custom tool exits. If you specify fail, the simulation job fails. If you specify restart, the tool is restarted. The default is restart.

  • UI streaming — Specifies whether a streaming session is configured for the tool. If True, AWS RoboMaker configures a connection so you can interact with the tool as it is running in the simulation. It must have a graphical user interface. The default is false.

  • Log behavior — Specifies whether tool stdout and stderr is streamed to CloudWatch Logs. The default is false.

Root access and system capabilities

AWS RoboMaker provides limited root (sudo) access to applications running in a simulation job. The following list contains significant (but not all) syscalls that are blocked.

  • acct

  • add_key

  • bpf

  • clock_adjtime

  • clock_settime

  • clone

  • 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