[Bug]: SO101 无法接取弹性对象

作者: johnsutor创建于 2025年10月14日更新于 2026年8月22日
标签bugP0

QQ 错误描述

我正在研究一个涉及SO101机器人远程操作的项目。 我在使用[原始寄存处]的Mujoco文件(https://GitHub.com/The RobotStudio/SO-ARM100/tree/main/Simulation/SO101)。 我可以拿起一个刚硬的立方体 只是很好。 然而,我无法捡起一个弹性立方体 随着抓手通过物体。 我尝试过几种不同的方法,但都没有用,包括:

  • 让立方体更密集
  • 使用更大的目标破损面部数字
  • 使用除MPM之外的所有其他解析器
  • 使用有Elasto塑料材料的MPM

任何指导或帮助都会非常感激! 请查看下面的影片,

  • 重现步骤

[Python] 将数字导入为 np 导入起源为 gs 从lerobot.teleoperators.so101 领导导入 SO101 领导器 Config, SO101 领导器

gs.init(后端=gs.gpu) (英语).

场景=gs. 场景( E) sim options=gs. options. 互联网档案馆的存檔,存档日期2013-12-21. 符号选项( S) dt=1e-2, (中文(简体) ). 子步骤=33, , (中文(简体) ). mpm options=gs.opt.MPM options () (中文(简体) ). 下行=(-1.5、-1.5、-0.5), 上行=(1.5、1.5、1.5), , (中文(简体) ). 刚性 选项=gs. 选项 。 固定选项( R) 框中( b) , (中文(简体) ). 选项=gs. 选项。 虚拟选项( V) 可视化 mpm 边界=True, , (中文(简体) ). 查看器 选项=gs.选项. 查看器选项( E) 相机 pos=(1, 1, 1), 相机 lookat=(0.0、0.0、0.0), 相机 fov=30, (中文(简体) ). 最大 FPS = 30, (中文(简体) ). , (中文(简体) ). 显示 viewer= True, (中文(简体) ).

相机 = scene.ad 相机 () res= (1280, 960),pos= (1, 1), lookat= (0.0, 0.0), fov=30, GUI=假 (中文(简体) ).

Teleop config = SO101 领导程序config () 端口="/dev/ttyACM0", (中文(简体) ). id="sutie leader","("苏蒂","苏蒂","苏蒂","苏蒂","苏蒂"). 使用 度=真实度, (中文(简体) ). Teleop device = SO101 引导器( teleop config)

平面=场景.add 实体( gs. morphs. (英语). 飞机( ), (中文(简体) ).

so101=场景.add 实体( gs.morphs.MJCF (英语: file="资产/so101 new calib.xml", 互联网档案馆的存檔,存档日期2013-12-02. pos=(0.0, 0.0, 0.0), (0. euler=(0,0,0), (中文(简体) ). , (中文(简体) ). (中文(简体) ).

海绵=场景. add entity () 材料=克. 材料. MPM. 弹性 (,), 变形为克. 专栏( 大小=(0.04、0.04、0.04), pos=(0.15、0.15、0.1), euler=(0,0,0), (中文(简体) ). , (中文(简体) ). 表面=克.地表。 默认( E) 颜色=(1.0、0.4、0.4), 相对于 mode="视觉", , (中文(简体) ). (中文(简体) ).

接头=[ "双肩" "双肩" "elbow flex", (英语). "手脚" "手摇" "gripper," , , , , , , , , , , , , , [ . ]

dof indices = [so101.get joint(name).dof idx 为关节中的名称]

场景。 构建 () teleop device.连接()

def 转换为 action to generation(action) : 返回 np. array () [ np.deg2rad(动作 ["肩 pan.pos"]), np.deg2rad(动作 ["肩膀 lift.pos"]), np.deg2rad(动作 ["elbow flex.pos"]), np.deg2rad(动作 ["wrist flex.pos"]), np.deg2rad(动作 ["wrist roll.pos"]), np.deg2rad(动作 ["gripper.pos"]), [ . ] (中文(简体) ).

相机启动 记录( )

尝试 : 此时为 True : 动作=Teleop device.get action () dof 位置=转换 action to gene(action) so101. control dofs position(dof positions, . . . . . . .

内容来源: Genesis-Embodied-AI/genesis-world