概述

本节介绍 FastSim 的核心概念体系,涵盖统一仿真抽象层 UniSim、场景与实体管理、控制器与命令队列、以及可插拔扩展机制。理解这四个模块及其职责边界,是合理使用 FastSim 进行仿真开发的基础。

FastSim 的核心设计围绕配置驱动展开——通过 YAML/JSON 配置文件描述仿真环境与流程,并由各 Manager 模块在运行时完成实例化与调度。stereotype 机制是其中的核心枢纽,它将配置类型(Config)与运行时实体(Model)绑定,使得注册和扩展新的实体类型无需修改框架核心代码。

各模块之间职责清晰:

  • UniSim:仿真器启动与步进,提供统一的 step / reset / is_running 接口。
  • SceneManager:从配置构建实体(base / object / robot / sensor / light),并在每个 step 前后执行实体写回与状态更新。
  • ControllerManager:在仿真主循环中执行命令队列,支持同步/异步调度。
  • ExtensionManager:按配置启用扩展,将录制、服务化、benchmark 等能力挂接到仿真生命周期。
  • TaskManager:将 YAML 中定义的 action 序列与 goal 条件转换为可执行任务,驱动 episode 生命周期。

本节各页内容

UniSim 统一接口

UniSim 是 FastSim 的后端无关抽象层,定义了仿真器的初始化、步进与状态查询接口。上层的场景、控制与任务逻辑均通过 UniSim 与底层仿真器解耦。本页介绍 UniSim 的职责边界、生命周期接口定义、后端选择机制(UniSimFactory),以及 IsaacLab 后端的典型初始化行为与配置字段含义。

Scene 场景

Scene 描述仿真世界的组成与实体实例化方式,由 SceneManager 负责执行。本页介绍 SceneManager 如何将 scene 配置中的 base、object、robot、sensor、light 转换为运行时实体,以及仿真循环中固定的三段式更新节奏(Pre-Physics Update → UniSim.step → Post-Physics Update)。此外还涵盖各实体类型的 stereotype 定义(刚体、关节体、相机、通用机器人、光源等),以及资产路径的解析规则(绝对路径、相对路径、root_key:// 协议)。

Controller 控制器

Controller 层定义了在仿真循环中如何对实体施加控制。本页介绍命令队列(Command)的调度机制——包括 SimpleCommand 与 MultiCommand 的区别、优先级排序、同步/异步执行模式,以及 Result.unwrap() 的异常安全返回约定。同时介绍 FastSim 内置的四类控制器 API:SpawnableController(反射式实体调用)、RobotController(轨迹与基础 IK)、MotionPlanController(规划器接口映射)与 ActionController(任务动作执行),并说明主线程与控制线程的安全访问边界。

Extension 扩展

Extension 是 FastSim 的可插拔模块层,将录制、回放、Benchmark、HTTP 服务等非核心能力挂接到仿真生命周期。本页介绍各扩展的职责与挂接点:data_collect 负责观测采集,record 负责异步写入与终止后处理(导出 HDF5、视频等产物),replay 从 HDF5 文件加载轨迹并在仿真中回放,server 将控制器方法暴露为 REST API,benchmark 按 episode 循环运行策略并评估目标条件。还介绍了扩展的启用顺序与依赖关系(record 依赖 data_collect),以及从录制到回放的完整数据链路。