OrcaGym API Manual: orca_gym/core

📖 这是什么文档?
这是 orca_gym/core 模块的完整 API 参考手册,采用”索引 + 详情”的版式设计,便于快速查找和深入学习。

📚 文档说明

文档特点

如何使用本手册

  1. 快速查找:使用下方的模块索引表格,找到你需要的模块
  2. 浏览类列表:进入模块后,先看”Classes(索引)”表格,了解有哪些类
  3. 查看方法:每个类都有”方法索引”表格,快速了解可用方法
  4. 深入阅读:展开”方法详情”部分,查看完整的签名、参数说明和使用示例

相关文档


📦 Modules(索引)

快速浏览所有模块,点击模块名跳转到详细内容:

Module 说明
orca_gym/core/orca_gym_local.py 本地 MuJoCo Backend:本地 MuJoCo 仿真引擎的核心实现(最常用)
orca_gym/core/orca_gym_model.py 模型信息:静态模型信息封装,提供 body/joint/actuator 等查询接口
orca_gym/core/orca_gym_data.py 仿真数据:动态仿真状态封装,包含 qpos/qvel/qacc 等状态
orca_gym/core/orca_gym_opt_config.py 优化配置:MuJoCo 仿真器优化参数配置(timestep/solver 等)

orca_gym/core/orca_gym_data.py

OrcaGymData - 动态状态容器

Module docstring

动态状态容器(本地副本)。

用途:

字段与 shape(与 model.nq/nv 对齐):

Classes(索引)

Class 摘要
OrcaGymData 动态状态容器(本地副本)

Classes(详情)

class OrcaGymData

动态状态容器(本地副本)

字段

方法索引

Method 签名 摘要
update_qpos_qvel_qacc def update_qpos_qvel_qacc(self, qpos, qvel, qacc) 同步关节状态(qpos/qvel/qacc)
update_qfrc_bias def update_qfrc_bias(self, qfrc_bias) 同步偏置力 qfrc_bias

方法详情

OrcaGymData.update_qpos_qvel_qacc

同步关节状态(qpos/qvel/qacc)。

参数:

说明:

OrcaGymData.update_qfrc_bias

同步偏置力 qfrc_bias

参数:

说明:


orca_gym/core/orca_gym_local.py

OrcaGymLocal - 本地 MuJoCo Backend

Module docstring

核心层:Model/Data/Local backend 与 MuJoCo 控制查询接口。

Classes(索引)

Class 摘要
AnchorType 锚点类型枚举(NONE/WELD/BALL)
CaptureMode 视频捕获模式枚举(SYNC/ASYNC)
OrcaGymLocal OrcaGym 本地仿真接口

Classes(详情)

class AnchorType

锚点类型枚举

术语说明:

使用示例:

# 使用焊接锚定抓取物体
self.anchor_actor("object_name", AnchorType.WELD)

# 使用球关节锚定
self.anchor_actor("object_name", AnchorType.BALL)

# 释放物体
self.release_body_anchored()  # 内部使用 AnchorType.NONE

class CaptureMode

视频捕获模式枚举

术语说明:

使用示例:

# 开始保存视频,使用异步模式(默认,性能更好)
env.begin_save_video("output.mp4", CaptureMode.ASYNC)

# 使用同步模式(帧对齐,但性能较低)
env.begin_save_video("output.mp4", CaptureMode.SYNC)

class OrcaGymLocal

OrcaGym 本地仿真接口

负责与本地 MuJoCo 仿真器的交互,包括模型加载、仿真控制、状态查询等。 这是 OrcaGymLocalEnv 的核心通信对象,通过 gRPC 与 OrcaSim 服务器通信。

核心功能:

  1. 模型管理: 加载 XML 模型、初始化 MuJoCo 模型和数据
  2. 仿真控制: 步进、重置、前向计算等
  3. 状态查询: 查询 body、joint、site、sensor 等状态
  4. 物体操作: 通过 mocap body 和等式约束操作物体
  5. 文件管理: 下载和缓存模型文件、mesh 等资源

方法索引(主要方法):

Method 签名 摘要
load_model_xml async def load_model_xml(self) 从服务器加载模型 XML 文件
init_simulation async def init_simulation(self, model_xml_path) 初始化 MuJoCo 仿真
render async def render(self) 渲染当前仿真状态到服务器
set_ctrl def set_ctrl(self, ctrl) 设置控制输入
mj_step def mj_step(self, nstep) 执行 MuJoCo 仿真步进
mj_forward def mj_forward(self) 执行 MuJoCo 前向计算
update_data def update_data(self) 从 MuJoCo 数据更新到封装的 data 对象
query_body_xpos_xmat_xquat def query_body_xpos_xmat_xquat(self, body_name_list) 查询 body 的位姿
set_mocap_pos_and_quat async def set_mocap_pos_and_quat(self, mocap_data, send_remote=False) 设置 mocap body 的位置和四元数

注意OrcaGymLocal 类包含大量方法(50+),完整的方法列表请查看 api_detail/core.md

方法详情(主要方法):

OrcaGymLocal.load_model_xml

从服务器加载模型 XML 文件。

从 OrcaSim 服务器获取模型 XML 文件,下载依赖的资源文件(mesh、hfield等),并返回本地文件路径。

Returns:

使用示例:

# 在环境初始化时调用
model_xml_path = await self.gym.load_model_xml()
# 返回: "/path/to/model.xml"
OrcaGymLocal.init_simulation

初始化 MuJoCo 仿真。

从 XML 文件加载 MuJoCo 模型,创建数据对象,初始化所有模型信息容器(body、joint、actuator、site、sensor 等),并创建封装的 model 和 data 对象。

Args:

使用示例:

# 在环境初始化时调用
model_xml_path = await self.gym.load_model_xml()
await self.gym.init_simulation(model_xml_path)

# 之后可以访问模型和数据
self.model = self.gym.model
self.data = self.gym.data
OrcaGymLocal.mj_step

执行 MuJoCo 仿真步进。

执行 nstep 次物理仿真步进,每次步进的时间为 timestep。在调用前需要先设置控制输入 (set_ctrl)。

Args:

使用示例:

# 在 do_simulation 中调用
self.gym.set_ctrl(ctrl)
self.gym.mj_step(nstep=5)  # 步进 5 次

orca_gym/core/orca_gym_model.py

OrcaGymModel - 静态模型信息容器

Module docstring

静态模型信息容器(MuJoCo 模型的封装)。

用途:

关键字段(维度参数):

Classes(索引)

Class 摘要
OrcaGymModel 静态模型信息容器(MuJoCo 模型的封装)

Classes(详情)

class OrcaGymModel

静态模型信息容器(MuJoCo 模型的封装)

方法索引(主要方法):

Method 签名 摘要
init_model_info def init_model_info(self, model_info) 初始化模型基本信息(维度参数)
get_body_names def get_body_names(self) 获取所有 body 名称列表
body_name2id def body_name2id(self, body_name) Body 名称转ID
body_id2name def body_id2name(self, body_id) Body ID转名称
joint_name2id def joint_name2id(self, joint_name) 关节名称转ID
actuator_name2id def actuator_name2id(self, actuator_name) 执行器名称转ID
get_actuator_ctrlrange def get_actuator_ctrlrange(self, actuator_names) 获取执行器控制范围
get_joint_qposrange def get_joint_qposrange(self, joint_names) 获取关节位置范围

注意OrcaGymModel 类包含大量方法(40+),完整的方法列表请查看 api_detail/core.md

方法详情(主要方法):

OrcaGymModel.get_body_names

获取所有 body 名称列表。

返回:

使用示例:

# 获取所有 body 名称
body_names = list(self.model.get_body_names())
OrcaGymModel.body_name2id

Body 名称转ID。

将 body 名称转换为对应的 ID,用于需要 ID 的底层操作。

Args:

Returns:

使用示例:

# 在更新等式约束时使用
body_id = self.model.body_name2id(actor_name)
eq["obj2_id"] = body_id

orca_gym/core/orca_gym_opt_config.py

OrcaGymOptConfig - MuJoCo 仿真器优化配置

Module docstring

OrcaGymOptConfig - MuJoCo 仿真器优化配置

本模块提供 MuJoCo 仿真器优化参数的封装类,用于配置物理仿真器的各种参数。 这些参数影响仿真的精度、稳定性和性能。

使用场景:

典型用法:

# 配置通过 OrcaGymLocal 的初始化自动获取
env = OrcaGymLocalEnv(...)
# 访问配置
timestep = env.gym.opt.timestep
gravity = env.gym.opt.gravity
solver = env.gym.opt.solver

Classes(索引)

Class 摘要
OrcaGymOptConfig MuJoCo 仿真器优化配置容器

Classes(详情)

class OrcaGymOptConfig

MuJoCo 仿真器优化配置容器

主要属性

属性 类型 说明
timestep float 物理仿真时间步长 (秒),通常为 0.001-0.01
gravity np.ndarray 重力加速度 [x, y, z],通常为 [0, 0, -9.81] m/s²
solver str 求解器类型: ‘Newton’, ‘PGS’, ‘CG’
iterations int 主求解器迭代次数,通常为 10-100
tolerance float 主求解器容差,控制求解精度
integrator str 积分器类型: ‘Euler’ 或 ‘RK4’

说明

使用示例

# 访问配置
timestep = env.gym.opt.timestep
gravity = env.gym.opt.gravity
solver = env.gym.opt.solver

# 修改配置(需要同步到模型)
env.gym.opt.timestep = 0.002
env.gym.set_opt_config()  # 同步到本地模型

更多详细信息,请查看 api_detail/core.md