๐Ÿ“Š Recorders#

Genesis also provides data recording utilities for automatically processing data without slowing down the simulation. This can be used to stream formatted data to a file, or visualize the data live.

# 1. Start recording before building scene
sensor.start_recording(
    rec_options=gs.recorders.NPZFile(
        filename="sensor_data.npz"
    ),
)

โ€ฆ And thatโ€™s it! Recordings will automatically stop and clean up when the scene is no longer active, and can also be stopped with scene.stop_recording().

You can record sensor data with sensor.start_recording(recorder_options) or any other kind of data using scene.start_recording(data_func, recorder_options) with a custom data function. For example:

def imu_data_func():
    data = imu.read()
    true_data = imu.read_ground_truth()
    return {
        "lin_acc": data.lin_acc,
        "true_lin_acc": true_data.lin_acc,
        "ang_vel": data.ang_vel,
        "true_ang_vel": true_data.ang_vel,
    }

scene.start_recording(
    imu_data_func,
    gs.recorders.MPLLinePlot(
        title="IMU Data",
        labels={
            "lin_acc": ("x", "y", "z"),
            "true_lin_acc": ("x", "y", "z"),
            "ang_vel": ("x", "y", "z"),
            "true_ang_vel": ("x", "y", "z"),
        },
    ),
)

See RecorderOptions in the API reference for currently available recorders. More example uses of recorders can also be seen in examples/sensors/.

Whatโ€™s Next#

  • Sensors - contact, tactile, proximity, IMU, and temperature sensors

  • Camera Sensors - RGB, depth, segmentation, and normal rendering