YAML:
extensionclassExtensionConfig扩展功能配置
通过 extension_cfg_dict 声明需要启用的扩展实例,键名即运行时访问该扩展的唯一标识。按声明顺序依次启用,data_collect 必须在 record/benchmark 之前。
顶层字段1
| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
extension_cfg_dict | dict[str, ExtensionBaseConfig] | 可选 | {} | 扩展配置字典,键名为实例名(同时是运行时检索的唯一标识),值为各扩展的配置对象 ⚠按键声明顺序依次启用;data_collect 须在 record 和 benchmark 之前声明 |
ExtensionBaseConfig:通用基础字段(所有扩展)
class
ExtensionBaseConfigfastsim/extensions/extension_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
stereotype | string | 必填 | — | 扩展类型标识(data_collect / record / replay / server / benchmark) |
enable | bool | 可选 | true | 是否在仿真启动时自动调用 enable(sim),设为 false 可延迟手动启用 |
DataCollectorConfig:观测采集 (stereotype: data_collect)
按配置注册多个 observer,每个 observer 负责从场景中采集特定类型的数据。观测结果供 record / benchmark 扩展使用。
class
DataCollectorConfigstereotypedata_collectfastsim/extensions/data_collect/data_collector_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
observer_cfgs | list[ObserverConfig] | 可选 | [] | 要注册的 observer 列表,每项通过 stereotype 指定采集类型 |
class
RobotObserverConfigstereotyperobot_observerfastsim/extensions/data_collect/observer_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
stereotype | string | 必填 | — | "robot_observer" |
name | string | 必填 | — | 机器人实例名(对应 scene.robot_cfg_dict 中的 key) |
observe_joint_positions | bool | 可选 | false | 采集各关节位置 |
observe_ee_pose | bool | 可选 | false | 采集末端执行器位姿 |
observe_gripper_state | bool | 可选 | false | 采集夹爪状态(开合程度) |
class
SensorObserverConfigstereotypesensor_observerfastsim/extensions/data_collect/observer_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
stereotype | string | 必填 | — | "sensor_observer" |
name | string | 必填 | — | 传感器实例名(对应 scene.sensor_cfg_dict 中的 key) |
observe_rgb | bool | 可选 | false | 采集 RGB 图像 |
observe_depth | bool | 可选 | false | 采集深度图 |
observe_intrinsic_matrix | bool | 可选 | false | 采集相机内参矩阵 |
observe_extrinsic_matrix | bool | 可选 | false | 采集相机外参矩阵 |
class
ObjectObserverConfigstereotypeobject_observerfastsim/extensions/data_collect/observer_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
stereotype | string | 必填 | — | "object_observer" |
name | string | 必填 | — | 物体实例名(对应 scene.object_cfg_dict 中的 key) |
observe_position | bool | 可选 | false | 采集物体位置 |
observe_rotation | bool | 可选 | false | 采集物体旋转 |
observe_scale | bool | 可选 | false | 采集物体缩放比例 |
class
TaskObserverConfigstereotypetask_observerfastsim/extensions/data_collect/observer_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
stereotype | string | 必填 | — | "task_observer" |
name | string | 必填 | — | 任务实例名 |
RecorderConfig:录制与导出 (stereotype: record)
依赖 data_collect 扩展,将每帧 Observation 异步写入文件系统,仿真终止时执行后处理(生成 HDF5、视频等)。
class
RecorderConfigstereotyperecordfastsim/extensions/record/recorder_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
backend_root_path | string | 必填 | — | 录制文件写入根目录(支持 root_key:// 路径) |
record_backend | string | 可选 | lfs | 存储后端类型 |
record_fps | int | 可选 | 30 | 录制帧率(帧节流依据) |
postprocess_list | list[str] | 可选 | [] | 终止后执行的后处理类型 ⚠hdf5 / video / png_depth / preview_video |
use_recorder_step | bool | 可选 | false | 使用 recorder 自己的步进计数,而非全局仿真步 |
data_collector_name | string | 可选 | data_collect | DataCollector 扩展实例名(须与 extension_cfg_dict 中的键名一致) |
record_observer_names | list[str] | 可选 | [] | 限定录制的 observer 名称,空则录制全部 |
record_task_summary | bool | 可选 | false | 终止时导出 task_summary.json |
ReplayConfig:轨迹回放 (stereotype: replay)
从 record.h5 读取录制轨迹,在仿真中驱动实体按轨迹运动,用于可视化验证或生成对比视频。可附加额外相机(ReplayCameraConfig)进行多视角录制。
class
ReplayConfigstereotypereplayfastsim/extensions/replay/replay_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
hdf5_path | string | 必填 | — | record.h5 文件路径(支持 root_key:// 路径) |
scene_cfg_path | string | 可选 | — | 回放时使用的场景配置文件路径 |
spawnable_names | list[str] | 可选 | [] | 限定加载的实体名称,空则加载全部 |
replay_camera_cfgs | list[ReplayCameraConfig] | 可选 | [] | 回放附加相机列表,见 ReplayCameraConfig |
class
ReplayCameraConfigfastsim/extensions/replay/replay_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
width | int | 必填 | — | 图像宽度(像素) |
height | int | 必填 | — | 图像高度(像素) |
position | list[3] | 必填 | — | 相机位置 [x, y, z](米) |
rotation | list[4] | 必填 | — | 相机旋转,四元数 [w, x, y, z] |
data_types | list[str] | 可选 | ["rgb"] | 采集数据类型(与 CameraConfig 相同) |
ServerConfig:REST API 服务化 (stereotype: server)
启动 Flask HTTP 服务,将所有标注 @apiclass 的控制器方法自动注册为 POST /{class}/{method} 路由。
class
ServerConfigstereotypeserverfastsim/extensions/servitize/server_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
host | string | 可选 | 0.0.0.0 | 监听地址 |
port | int | 可选 | 8080 | 监听端口 ⚠1024–65535 |
debug | bool | 可选 | false | Flask debug 模式(生产环境请关闭) |
BenchmarkConfig:Episode 评估 (stereotype: benchmark)
在独立控制线程中以 episode 为单位循环运行用户自定义策略,每个 episode 结束后评估 goal 条件,输出成功率等统计指标。策略类需继承 Policy 并实现规定接口。
class
BenchmarkConfigstereotypebenchmarkfastsim/extensions/benchmark/benchmark_cfg.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
episode_num | int | 必填 | — | 总 episode 数 |
action_frequency | float | 可选 | 10.0 | 策略控制频率(Hz) |
timeout_per_episode | float | null | 可选 | null | 单 episode 超时时间(秒),null 则不超时 |
goals | list[GoalConfig] | 可选 | [] | 每个 episode 结束后评估的目标条件集合 |
policy | PolicyConfig | 必填 | — | 策略配置,stereotype 指定用户自定义策略类型 |
data_collector_name | string | 可选 | data_collect | DataCollector 扩展实例名 |
required_observer_names | list[str] | 可选 | [] | benchmark 运行所需的 observer 名称列表 |
terminate_sim_when_finished | bool | 可选 | false | 全部 episodes 完成后是否终止仿真 |
class
PolicyConfigfastsim/extensions/benchmark/policy.py| 字段 | 类型 | 必填 | 默认值 | 说明 / 约束 |
|---|---|---|---|---|
stereotype | string | 必填 | — | 策略类型,与 @stereotype.register_config 注册的 key 对应 |
... | any | 可选 | — | 用户在自定义 PolicyConfig 子类中定义的任意字段,由 @configclass 解析 |
配置示例
extension 配置块YAML
extension:
extension_cfg_dict:
my_data_collect: # ← 键名即运行时实例名
stereotype: data_collect
enable: true
observer_cfgs:
- stereotype: robot_observer
name: arm
observe_joint_positions: true
observe_ee_pose: true
- stereotype: sensor_observer
name: wrist_cam
observe_rgb: true
observe_depth: true
record:
stereotype: record
enable: true
backend_root_path: datasets://runs/run001
record_fps: 30
postprocess_list: [hdf5, video]
data_collector_name: my_data_collect
server:
stereotype: server
enable: false
host: 0.0.0.0
port: 8080
debug: false