🎥 使用 Recorders 保存和可视化数据#

Genesis 还提供了数据记录工具,用于自动处理数据而不会降低模拟速度。这可用于将格式化数据流式传输到文件,或实时可视化数据。

# 1. 在构建场景之前开始记录
sensor.start_recording(
    rec_options=gs.recorders.NPZFile(
        filename="sensor_data.npz"
    ),
)

… 就这样!当场景不再处于活动状态时,录制将自动停止并清理,也可以使用 scene.stop_recording() 停止。

您可以使用 sensor.start_recording(recorder_options) 记录传感器数据,或使用带有自定义数据函数的 scene.start_recording(data_func, recorder_options) 记录任何其他类型的数据。例如:

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"),
        },
    ),
)

有关当前可用的 recorders,请参阅 API 参考中的 RecorderOptions。更多 recorders 的使用示例可以在 examples/sensors/ 中查看。