核心概览
FastSim 是一个统一的、模块化的机器人仿真开发框架,旨在简化机器人研究与工程中的常见工作流:场景构建、控制与交互、任务编排、数据采集与回放、服务化集成等。
框架的核心思路是配置驱动 + 后端无关——通过 YAML/JSON 配置文件描述整个仿真场景与流程,由 UniSim 抽象层屏蔽不同仿真引擎(IsaacLab、Mujoco、PyBullet 等)之间的差异,使上层逻辑无需感知底层后端。
框架架构
下图展示了 FastSim 的整体分层架构及各模块间的关系:
框架从上到下共五层:
| 层级 | 职责 |
|---|---|
| 用户接口层 | CLI / TUI / Web 界面 / Python SDK,提供多种使用入口 |
| 配置管理层 | ConfigManager 加载并校验 YAML/JSON,生成类型安全的配置对象树 |
| 核心管理层 | SceneManager、ControllerManager、ExtensionManager、TaskManager 各司其职 |
| UniSim 抽象层 | 统一仿真循环(Pre-Physics → Step → Post-Physics),隔离后端差异 |
| 后端引擎层 | IsaacLab、Mujoco、PyBullet、Gazebo 等,支持用户自定义接入 |
核心设计原则
模块化:以 stereotype 与配置类为边界,便于扩展新的实体类型(base / object / robot / sensor / light)、动作/目标、规划器与扩展模块。
一致性:SceneManager、ControllerManager、ExtensionManager 职责清晰,仿真循环中写入与读取的时序固定,行为可预测。
可复现:general / simulation / scene / task / extension 五类配置块固化实验参数,支持校验、导出与模板生成。
开放性:stereotype 注册表机制支持项目级扩展与跨项目复用,无需修改框架核心代码。
主要能力
- 配置驱动:通过
ConfigManager加载、校验、导出 YAML/JSON 配置,并可生成字段模板。 - 统一后端抽象(UniSim):以统一接口封装后端差异,隔离仿真器初始化、步进与运行状态管理。
- 场景与实体:基于 stereotype 实例化 base / object / robot / sensor / light,并在仿真循环中以固定节奏写回与更新。
- 控制与编排:以命令队列(Simple / Multi Command)在主循环中执行控制请求,支持同步/异步与优先级调度。
- 扩展机制:通过扩展配置启用 server、data_collect、record、replay、benchmark 等模块,构建完整的数据采集与回放链路。
推荐阅读路径
建议按下列顺序阅读,以保证概念、配置与可运行示例之间保持一致:
- 快速启动:验证
FastSim生命周期与最小step()循环可运行。 - 配置系统:掌握五类配置块的字段结构、校验规则与依赖关系。
- 核心概念:理解 stereotype、UniSim、SceneManager、ControllerManager、ExtensionManager 的职责边界与交互关系。
- 示例应用:对照示例完成资产替换与参数调优,并固化为可复现配置。
页面与源码对照
下表将文档页面对应到实现模块,便于定位概念边界与排查问题。
| 文档 | 主要内容 | 对应源码 |
|---|---|---|
| Python SDK | 最小示例、生命周期、配置加载 | fastsim/app.py、fastsim/configs/config_manager.py、fastsim/unisim/unisim.py |
| 全局配置 | general.scan_project、资源路径解析规则 | fastsim/configs/general_cfg.py、fastsim/utils/asset.py |
| 仿真配置 | simulation 通用字段与后端关键字段 | fastsim/configs/simulation_cfg.py、fastsim/simulators/isaaclab/isaaclab_config.py |
| 场景配置 | scene 结构、实体字典与 stereotype 映射 | fastsim/configs/scene_cfg.py、fastsim/unisim/scene_manager.py |
| 任务配置 | task 语义、actions / goals 与校验 | fastsim/task/task_cfg.py、fastsim/task/task.py |
| 扩展功能配置 | 扩展开关、依赖顺序、record / replay / server / benchmark | fastsim/extensions/extension_manager.py、fastsim/extensions/** |
| UniSim 统一接口 | 抽象接口与后端适配器 | fastsim/unisim/unisim.py、fastsim/simulators/** |
| Scene 场景 | 生命周期、spawnable 体系、更新节奏 | fastsim/unisim/scene_manager.py、fastsim/unisim/spawnable.py |
| Controller 控制器 | Command 队列、同步/异步 Result、控制器 API | fastsim/controllers/** |
| Extension 扩展 | 扩展 enable 时序、record → 产物 → replay 数据链路 | fastsim/extensions/** |
| 示例应用 | 可运行示例的对照说明与改造建议 | demo/** |
| 快速启动 | CLI / TUI / Web 启动方式与参数 | fastsim/cli/**、fastsim/extensions/servitize/server.py |