🧠 核心概念¶
理解 OrcaGym 中的关键概念,帮助你更好地使用环境。
关键对象关系¶
在使用 OrcaGym 时,你通过环境对象与仿真世界交互:
env (Gymnasium Environment)
├── model (OrcaGymModel) — 模型信息(结构,不变)
├── data (OrcaGymDataView) — 仿真状态(动态,每步变化)
└── sim_config — 仿真参数配置
概念速查表¶
| 概念 | 说明 |
|---|---|
| Model | 静态模型信息(几何、关节、执行器、传感器) |
| Data | 动态仿真状态(位置、速度、加速度、时间) |
| SimConfig | 仿真参数(时间步长、求解器设置、重力) |
| qpos | 广义坐标(位置),长度 nq |
| qvel | 广义速度,长度 nv |
| ctrl | 控制输入,长度 nu |
| 等式约束 | 用于物体操作的连接约束 |
| Mocap Body | 可通过设置位姿来"操控"的特殊 body |
仿真 = 模型 + 数据¶
OrcaGym 将仿真世界分为两部分:
| 概念 | 类型 | 比喻 | 例子 |
|---|---|---|---|
env.model |
OrcaGymModel |
机器人的说明书(不会变) | 有几个关节、每个关节叫什么名字 |
env.data |
OrcaGymDataView |
机器人的当前状态(每步都变) | 关节现在转了多少度、速度是多少 |
# model — 静态,描述结构
print(env.model.nq) # 位置变量数
print(env.model.nv) # 速度变量数
print(env.model.nu) # 控制维度数
# data — 动态,反映当前状态
print(env.data.qpos) # 当前位置 → 每一步仿真后都会变
print(env.data.qvel) # 当前速度
print(env.data.time) # 仿真时间
仿真时间¶
time_step = 0.001 秒 ← 物理引擎每步的时间
frame_skip = 20 ← 每次 step() 物理引擎走几步
dt = 0.001 × 20 = 0.02秒 ← 你的控制指令每隔多久更新一次(50Hz)
控制频率:control_hz = 1.0 / dt
维度约定¶
| 变量 | 长度 | 含义 |
|---|---|---|
model.nq |
广义坐标数 | qpos 长度 |
model.nv |
自由度数 | qvel 长度 |
model.nu |
执行器数 | 控制输入长度 |
关节类型与 qpos/qvel 维度¶
不同关节类型在 qpos 和 qvel 中占用不同数量的元素:
| 关节类型 | qpos 大小 | qvel 大小 | 示例 |
|---|---|---|---|
| FREE | 7 (3 pos + 4 quat) | 6 (3 lin + 3 ang) | 自由飞行体 |
| BALL | 4 (quaternion) | 3 (angular velocity) | 球关节 |
| HINGE | 1 (angle) | 1 (angular velocity) | 旋转关节 |
| SLIDE | 1 (displacement) | 1 (linear velocity) | 滑动关节 |
阅读顺序建议¶
- Model / Data / Config — 理解三种核心数据对象
- Gymnasium 接口 — 理解标准 RL 接口
- 数据流 — 理解数据如何在仿真中流动
- 架构总览 — 理解整体分层设计、API 边界、调用流
- 系统架构 — 理解组件设计、API 契约、封装隔离与迁移指南