Genesis 物理引擎
Genesis 是面向机器人与具身智能的通用物理引擎,支持 CPU/GPU 与大规模并行仿真。
为什么要用仿真引擎?
分析动力学环境适合快速验证算法;Genesis 用 URDF 描述真实几何与关节, 更接近机器人仿真工作流,也方便以后换成更复杂机构。
本 Demo 的场景
- URDF:
assets/cart_pole.urdf(轨道 + 滑动小车 + 旋转摆杆) - 关节:
cart_to_base(棱柱)用control_dofs_force施力 - 关节:
pole_joint(旋转)自由摆动 - 并行:
scene.build(n_envs=N)一次仿真 N 个副本
角度约定(易踩坑)
URDF 里 θ_sim = 0 通常是竖直向下;控制教材里 θ = 0 是竖直向上。
环境中做了转换:
θ_ctrl = wrap(θ_sim − π),reset 时按控制约定写入。
初始化片段
import genesis as gs
gs.init(backend=gs.cpu) # 无 GPU 时用 CPU
scene = gs.Scene(...)
robot = scene.add_entity(gs.morphs.URDF(file="assets/cart_pole.urdf"))
scene.build(n_envs=32)
# 每步:
robot.control_dofs_force(force, cart_dof_idx)
scene.step()
双后端对照
| analytical | genesis | |
|---|---|---|
| 速度 | 极快,适合调试算法 | 更慢(尤其 CPU) |
| 真实性 | 理想化方程 | 刚体约束 / 碰撞 / URDF |
| 接口 | 同构 reset/step | 同构 reset/step |