Object-Level Randomizations

The Data Generation module allows developers to introduce randomizations at the object level. That is, the assets being spawned in a scene can have a variety of their properties randomized. This allows for more variety in the collected data and leads to a more rounded dataset at the end. These randomizations can also be used to induce edge-case scenarios to the dataset; again for obtaining a better dataset.

The following properties can be randomized through the module:

An example for configuring these randomizations at an asset level can be found in datacollector_config.jsonc

Texture

Allows for the texture of the asset to be randomized. This feature can be configured using the following param:

"texture": [ // List of different textures to choose from.
    "default",
    "shiny_texture",
    "matte_texture"
]

Scale

Allows for the scale of the asset to be randomized. Scale is a unit-less multiple that is applied to the x, y and, z dimensions of the asset. This feature can be configured using the following param:

"scale": {
    "amount": 2, // Number of variations to produce.
    "upper_bound": 100, // Upper bound of the scale factor.
    "lower_bound": 50 // Lower bound of the scale factor.
}

Rotation

Allows for the rotational-orientation of the asset to be randomized. This type of randomization can be applied to either of the rotational axes - roll, pitch or yaw. This feature can be configured using the following param:

"rotation": {
    "amount": 2, // Number of variations to produce.
    "upper_bound": 90.0, // Upper bound of rotation, in degrees.
    "lower_bound": -90.0, // Lower bound of rotation, in degrees.
    "axis": "roll" // Axis for rotation.
}

Translation

Allows for the position of the asset to be randomized. This type of randomization can be applied to either of the cartesian axes - x, y or z. This feature can be configured using the following param:

"rotation": {
    "amount": 2, // Number of variations to produce.
    "upper_bound": 90.0, // Upper bound of rotation, in degrees.
    "lower_bound": -90.0, // Lower bound of rotation, in degrees.
    "axis": "roll" // Axis for rotation.
}

Flip

Allows for randomized flipping of the asset along an axis. This type of randomization can be applied to either of the rotational axes - roll, pitch or yaw. This feature can be configured using the following param:

"flip": {
    "axis": "roll", // Axis for flipping.
    "initial_rpy": [
        20,
        0,
        0
    ] // Starting roll, pitch, yaw of the object.
}