yaml配置文件完整定义了机器人的物理属性与规划规则。cuRobo 机器人配置主要包括以下几个方面:

  • 资产路径 → 从哪加载模型(URDF/mesh)
  • 运动学链 → base_link / ee_link
  • 碰撞检测 → 碰撞 link / 球体近似 / 自碰撞忽略 / mesh 声明
  • 关节锁定 → 哪些关节固定不动
  • 虚拟扩展 → 附加夹具/抓取物的碰撞体
  • C-space 参数 → 关节顺序 / 安全姿态 / 运动代价权重 / 平滑约束

curobo官方配置说明:Configuring a New Robot - cuRobo

robot_cfg:
  kinematics:
    # ============== 1. 资产路径 =====================
    use_usd_kinematics: False    # 是否使用 USD 文件进行运动学计算
    usd_path: "franka.usda"    # USD 场景文件路径
    usd_robot_root: "/World/robot3.usda"   # USD 中机器人根节点
    isaac_usd_path: ""            # Isaac Sim自带资产库里的USD路径
    usd_flip_joints: {}           # 用 USD 解析关节时常用:用来指定某些关节轴向/方向需要翻转
    usd_flip_joint_limits: []     # 翻转关节的 限制范围
    urdf_path: "franka.urdf"   # URDF 文件路径
    asset_root_path: "${ASSETS_DIR}/miscs/curobo/robot3/meshes"  # 机器人 mesh 资源目录
    external_asset_path: null    # 外部资产路径
    
    # ============== 2. 运动学链定义 =====================
    base_link: "robot_base"      # 运动学计算的“根 link”
    ee_link: "ee_left"           # 定义运动学求解的终点,即末端执行器
#    link_names: ["ee_left"]     # 额外跟踪的 link
	
	# ============== 3. 虚拟扩展(夹具/工具/抓取物) =====================
    # 作用 :在运动学树上 虚拟增加 一个 link(比如夹爪抓取的物体)。这样 cuRobo 在做轨迹规划时,会把被抓物体也纳入碰撞检测(用 4 个球体近似),避免规划出"物体穿模"的轨迹。
    extra_links:         
      {
        "attached_object":{
          "parent_link_name": "ee_left" ,
          "link_name": "attached_object",
          "joint_name": "attach_joint" ,
          "fixed_transform": [0,0,0,1,0,0,0],   # 零位移 + 单位四元数”,即完全重合不偏移
          "joint_type":"FIXED"
        }
      }
    extra_collision_spheres: {"attached_object": 4}    # 生成4 个碰撞球用于碰撞检测
	
	# ============== 4. 碰撞检测 =====================
    collision_link_names:         # 参与碰撞检测的 link 列表
      [
        "waist_link_1",
        "waist_link_2",
        "waist_link_3",
        "body",
        "neck_link",
        "head",
        "base_link_left",

        "link1_left",
        "link2_left",
        "link3_left",
        "link4_left",
        "link5_left",
        "link6_left",
        "link7_left",
        ]
    collision_spheres: "${ASSETS_DIR}/miscs/curobo/robot3/spheres/collision_clean.yml"
    collision_sphere_buffer: 0.005  # 碰撞裕量(buffer):碰撞球膨胀 5mm, 值越大越保守,也越容易“无解”
    self_collision_ignore:   # 自碰撞忽略,相邻 link需要忽略
      {
        "head": [ "body","waist_link_3","waist_link_2","base_link_left","link1_left","link2_left","link3_left" ],
        "body": [ "waist_link_3","waist_link_2","base_link_left","link1_left","link2_left","link3_left" ],
        "neck_link": ["body", "head", "base_link_left"],
        "waist_link_3": [ "waist_link_2" ],
        "waist_link_2": [ "waist_link_1" ],

        "link1_left": [ "link2_left","link3_left","link4_left","base_link_left","body","head","waist_link_3","waist_link_2" ],
        "link2_left": [ "link3_left","link4_left","link5_left","base_link_left","body","head","waist_link_3","waist_link_2" ],
        "link3_left": [ "link4_left","body","head","waist_link_3","waist_link_2" ],
        "link4_left": [ "link5_left","head","waist_link_2" ],
        "link5_left": [ "link6_left" ],
        "link6_left": [ "link7_left","attached_object" ],
        "link7_left": [ "ee_left",  "attached_object", ],
        "ee_left": ["attached_object"]
      }

    self_collision_buffer: {}        # 自碰撞的额外 buffer/阈值配置

    use_global_cumul: True
    mesh_link_names:            # 哪些 link 关联到 mesh 资产(用于可视化/几何相关处理/某些工具链)
      [
          "waist_link_1", "waist_link_2", "waist_link_3",
          "body", "neck_link", "head", 	
          "link1_left","link2_left","link3_left","link4_left","link5_left","link6_left","link7_left","ee_left",

      ]
	# ============== 5. 关节锁定 =====================
    # 某些关节固定角度,相当于从可动 DOF 中“移除”这些关节,例如移动基座/躯干先固定一个姿态,只规划手臂
    lock_joints:
      {
        "neck_yaw": 0,
        "neck_pitch": -0.785,
        "waist_pitch_1": -0.7,  # 对应-30度(-0.52)  60度(1.05)
        "waist_pitch_2": 1.22,    # 对应60度(1.05)  70度(1.22)
        "waist_pitch_3": -0.7,  # 对应-40度(-0.7)
        "waist_yaw": 0,        # 腰部固定不动
      }
    # ============ 6、构型空间(C-space)参数 ============
    cspace:
      joint_names:     # cuRobo “受控关节”的顺序列表
        [
           "neck_yaw", "neck_pitch",
           "waist_pitch_1", "waist_pitch_2", "waist_pitch_3",
           "waist_yaw",

           "joint1_left", "joint2_left", "joint3_left", "joint4_left", "joint5_left", "joint6_left", "joint7_left",
        ] # List[str]
      retract_config:    # 规划初始化姿态;失败时的 安全 姿态
        [
          0, -0.785,
          -0.7, 1.22, -0.7,
          0,
          0.523, -1.22, -2.7, -1.483, 2.355, 1, 0.49
        ] # List[float]
      null_space_weight: #  越倾向于把该关节“拉回参考姿态”
        [
          6.0, 6.0,
          6.0, 6.0, 6.0,
          6.0,
          1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0
        ] # List[str]
      cspace_distance_weight: # 值越大,更“难动”,被强烈惩罚
        [
          1.0, 1.0,
          1.0, 1.0, 1.0,
          1.0,
          10, 10, 10, 7, 5, 5, 10.0
        ] # List[str]
      max_jerk: 500.0           # 对“jerk(加加速度)”的约束/上限相关参数(使轨迹更平滑)
      max_acceleration: 15.0    # 对“加速度”的约束/上限相关参数。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐