Amazon VGT2 Las Vegas: Exploring Scalable Map Generation in 3D Worlds

Amazon VGT2 Las Vegas: Exploring Scalable Map Generation in 3D WorldsMore Info

In this blog post, we delve into the capabilities of AWS RoboMaker WorldForge and how it can revolutionize the testing and training of robotic algorithms in expansive 3D environments. The ability to create 3D simulations is crucial for ensuring that robots, whether they are cleaning homes or functioning as Autonomous Mobile Robots (AMRs) in warehouses, can operate effectively. By using 3D simulations, developers can identify and rectify algorithmic errors before they reach the real-world application stage, thereby minimizing downtime and enhancing user satisfaction. However, establishing the infrastructure necessary for creating diverse 3D simulation worlds is often complex, costly, and resource-intensive, which can dissuade robotics firms from adopting simulation-based testing at scale.

AWS RoboMaker WorldForge simplifies this process significantly. With just a single API call, users can generate a wide array of virtual 3D worlds, effectively removing the barriers of complexity and cost that typically accompany the creation of these essential simulations. The direct integration with AWS RoboMaker simulation jobs further streamlines the process, allowing for efficient testing.

Creating 3D Simulation Worlds

In the first section of this blog, we guide you through the process of using AWS RoboMaker WorldForge to create 3D simulation worlds, referred to as “WorldForge worlds.” This involves the creation of a simulation world template that utilizes various parameters to dictate the characteristics of the generated worlds. Following that, we demonstrate how to initiate the world generation job via the API.

Next, you will set up a sample application provided as open-source, which is designed to run on AWS RoboMaker. In this application, a virtual robot navigates through a WorldForge world and constructs a map. This sample makes use of the expore_lite exploration Robot Operating System (ROS) package, along with the move_base and gmapping packages to create the map of the WorldForge environment.

Finally, we will run the sample application across multiple 3D worlds simultaneously by creating an AWS RoboMaker batch simulation job. This allows AWS RoboMaker to seamlessly import WorldForge worlds into your simulation application based on the provided configurations. Additionally, by customizing the upload configuration for your AWS RoboMaker simulation job, the generated map files are stored in an Amazon Simple Storage Service (Amazon S3) bucket. Your Quality Assurance (QA) engineers and robotics developers can then analyze which environments and tests present challenges for the robot, informing future testing strategies. For further insights, check out this helpful blog post as well.

Prerequisites

To get started, ensure you have an Ubuntu 18.04 machine equipped with the ROS Melodic environment, including colcon, colcon bundle, rosws, and the AWS Command Line Interface (AWS CLI). You’ll also need the necessary credentials for uploading files to Amazon S3 and making AWS RoboMaker API calls.

Creating WorldForge Worlds

To generate a set of WorldForge worlds, you must create a simulation world template that incorporates various parameters and components dictating how the new worlds will be formed. These components include floor plans, preferences for interior materials, furniture, and more. More details on Simulation World Templates can be found here.

Save the following JSON structure as template.json, which outlines the parameters and components that will characterize the generated world:

{
  "Version": "1",
  "Buildings": [
    {
      "Floors": [
        {
          "Floorplan": {
            "Ceiling": {
              "Height": 3
            },
            "DesiredConnections": [
              {
                "ConnectionType": "Doorway",
                "Location": [
                  "Bathroom",
                  "Livingroom"
                ]
              },
              {
                "ConnectionType": "Opening",
                "Location": [
                  "Livingroom",
                  "Kitchen"
                ]
              },
              {
                "ConnectionType": "Doorway",
                "Location": [
                  "Bedroom",
                  "Livingroom"
                ]
              }
            ],
            "Footprint": {
              "DesiredAspectRatio": {
                "x": 1,
                "y": 1
              }
            },
            "Rooms": [
              {
                "DesiredShape": {
                  "Area": 25,
                  "AspectRatio": {
                    "x": 1,
                    "y": 1.2
                  }
                },
                "Name": "Bedroom",
                "Type": "Bedroom"
              },
              {
                "DesiredShape": {
                  "Area": 30,
                  "AspectRatio": {
                    "x": 1,
                    "y": 1.5
                  }
                },
                "Name": "Livingroom",
                "Type": "Living"
              },
              {
                "DesiredShape": {
                  "Area": 10,
                  "AspectRatio": {
                    "x": 1,
                    "y": 1.5
                  }
                },
                "Name": "Bathroom",
                "Type": "Bathroom"
              },
              {
                "DesiredShape": {
                  "Area": 15,
                  "AspectRatio": {
                    "x": 1.5,
                    "y": 1
                  }
                },
                "Name": "Kitchen",
                "Type": "Kitchen"
              }
            ]
          },
          "Interior": {
            "Flooring": {
              "MaterialSets": [
                {
                  "Name": "Floorboard roomtypes",
                  "SampleSet": {
                    "MaterialTypes": [
                      "Floorboards"
                    ]
                  },
                  "TargetSet": {
                    "RoomTypes": [
                      "Kitchen"
                    ]
                  }
                },
                {
                  "Name": "Carpet roomtypes",
                  "SampleSet": {
                    "MaterialTypes": [
                      "Carpet"
                    ]
                  },
                  "TargetSet": {
                    "RoomTypes": [
                      "Living",
                      "Bedroom"
                    ]
                  }
                },
                {
                  "Name": "Bathroom",
                  "SampleSet": {
                    "MaterialTypes": [
                      "Parquetry"
                    ]
                  },
                  "TargetSet": {
                    "RoomNames": [
                      "Bathroom"
                    ]
                  }
                }
              ]
            },
            "Furniture": {
              "FurnitureArrangements": [
                {
                  "DesiredSpa
```

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *