SuperAPI AI 工具集

manipulation-ik

智能体与模型

查看项目

更新于 10-16 10:25

技能介绍

用途

Manipulation IK 用于在 Isaac Sim 6 中控制机械臂完成到达、抓取、搬运与放置等操作任务。它覆盖差分逆运动学(IK)、schema 原生的位姿器工作流、抓取坐标系、固定关节抓取,以及 IK 与关节空间混合运动。

主要能力

  • 差分 IK:基于雅可比矩阵的末端执行器控制,支持阻尼最小二乘(默认)、伪逆、转置、奇异值分解等求解方式。
  • Schema 原生 IK 与命名位姿:通过 isaacsim.robot.poser.RobotPoser 进行离线位姿编写、持久化与回放,命名位姿以 IsaacNamedPose prim 存储在机器人上。
  • 抓取坐标系发现:检查夹爪 USD,在闭合手指中心添加带 IsaacSiteAPI 的子 Xform,作为 IK 目标。
  • 抓取方式:FixedJoint(仅辅助刚性抓取)、SurfaceGripper(真空/磁吸,UR10 示例使用)、基于接触的抓取。
  • 抓取验证:三阶段反馈闭环(抓取/接触、提升/保持、放置/释放),以物体位姿而非工具位姿判定成功。
  • 障碍感知运动控制器:通过 motion-generation 使用 cuMotion 与 RMPflow。

使用方式

  • 脚本:scripts/differential_ik_sketch.py(自定义雅可比差分 IK 概念草图)、scripts/robot_poser_example.py(schema 原生 IK + 命名位姿工作流)。
  • 在暴露技能执行助手的 agent 运行时中,使用 run_script("scripts/differential_ik_sketch.py", args=["--help"]) 调用。
  • 在已构建的 Isaac Sim 树中,从 _build/*/release 使用 ./python.sh(Linux)或 python.bat(Windows)运行同一文件。
  • 使用 SimulationApp 直接运行独立脚本时,使用 $ISAAC_SIM_DIR/python.sh,而非 isaaclab.sh -p。
  • 独立 FK / DOF 目标应用辅助函数:from isaacsim.robot.poser import apply_joint_state, apply_joint_state_anchored。
  • SurfaceGripper 接口:from isaacsim.robot.surface_gripper import _surface_gripper as surface_gripper,通过 acquire_surface_gripper_interface() 获取接口,调用 close_gripper / open_gripper / get_gripper_status。

适用场景

  • 控制关节臂完成到达、抓取、搬运、放置。
  • 设置基于 IK 的末端执行器控制(相对于关节空间)。
  • 将可复用机器人位姿存储为命名位姿并后续应用。
  • 设置抓取(FixedJoint、SurfaceGripper、基于接触)。
  • 通过反馈闭环验证操作成功。
  • 生成抓取数据集:见 isaacsim.replicator.grasping(GraspingManager、GraspPhase)。

限制

  • 目标为 Isaac Sim 6 / Kit 110,除非某节另有说明。
  • 不替代 NVIDIA 官方文档处理不支持的边缘情况。
  • 纯差分 IK 在少于 6 自由度的欠驱动臂上,在大负载横向搬运、接近运动学奇异、扫过关节限位时会失败;混合 IK + 关节空间是务实默认方案。
  • 自由刚体上仅靠摩擦的平行抓取较勉强,可能在提升时保持但在搬运加速时滑落。
  • 严格仅接触任务必须仅通过接触力成功,不得使用 FixedJoint、D6 关节、附着、位姿跟随、物体位姿写入、运动学保持、禁用动力学或释放后稳定作为成功路径。
  • 硬编码偏移 + 高刚度会导致 PhysX 突跳和爆炸;必须在接触时刻计算夹爪到物体的相对变换。
  • 雅可比列布局为 [虚拟基座自由度 | 真实自由度](固定基座机器人),必须切片跳过虚拟基座。
  • 激进 IK 增益在负载下会导致 PhysX 发散。

调参参考

  • damping:保守 0.1,中等 0.05,激进 0.01。
  • 每步 max_delta:保守 0.02 rad,中等 0.05 rad,激进 0.10 rad。
  • 驱动刚度:保守 200,中等 400,激进 800。

故障排查

  • 黑屏或空帧:缺少灯光或非 RTX 渲染模式;添加穹顶/主光,确认 RTX / PathTracing 设置。
  • 舞台加载或首次渲染挂起:MDL 编译或舞台过大;遵循 isaac-sim-troubleshooting 中的隔离步骤。

规则要点

  • 先阅读本地示例;本技能描述模式而非语法。
  • 在任何 IK 之前,始终创建或识别抓取坐标系(IsaacSiteAPI)。
  • IK 增益从保守开始,确认稳定后再增加。
  • URDF 导入器自动应用 PhysxArticulationAPI;若手动编写关节,需在基座链接上应用。
  • 使用 store_named_pose 存储可复用位姿,不要每次会话从头重新求解 IK。
  • 库诊断使用 isaacsim.common.logging.Logger,Kit 适配器使用 carb.log_*;print() 仅用于有意结果输出。
  • 每个阶段都要视觉验证;平滑运动不等于成功操作。

文档参考

  • 拾取放置教程:https://docs.isaacsim.omniverse.nvidia.com/latest/robot_setup_tutorials/tutorial_pickplace_example.html
  • 设置机械臂(导入/组装):https://docs.isaacsim.omniverse.nvidia.com/latest/robot_setup_tutorials/tutorial_import_assemble_manipulator.html
  • 物理基础(关节、schema):https://docs.isaacsim.omniverse.nvidia.com/latest/physics/simulation_fundamentals.html
  • Python 脚本索引:https://docs.isaacsim.omniverse.nvidia.com/latest/python_scripting/index.html