You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

URDF加载报错:无法读取<drake:hunt_crossley_dissipation>的value属性

Drake URDF加载报错:无法读取<drake:hunt_crossley_dissipation>的value属性

我正在编写一个用作“垫球板”的单摆URDF文件,摆锤与弹性球碰撞时可让球弹开(类似排球运动员垫球)。参考弹性球示例编写了URDF文件,但使用parser.AddModelFromFile("filename.urdf")加载时出现如下报错:

RuntimeError: filename.urdf:39: error: Unable to read the 'value' attribute for the drake:hunt_crossley_dissipation tag

我的URDF文件内容:

<?xml version="1.0"?>

<robot name="pendulum-paddle">
  <material name="black">
    <color rgba="0 0 0 1" />
  </material>

  <link name="base">
    <inertial>
      <origin xyz="0 0 0" />
      <mass value="0.01" />
      <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
    </inertial>
  </link>
  <joint name="base_weld" type="fixed">
    <parent link="world" />
    <child link="base" />
  </joint>

  <link name="arm">
    <inertial> 
      <origin xyz="0 0 -1" rpy="0 0 0" />
      <mass value="1" />
      <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0"/> 
    </inertial>
    <visual>
      <origin xyz="0 0 -.5" rpy="0 0 0" />
      <geometry>
         <box size="0.2 0.2 1"/>   
      </geometry>
      <material name="black" />
    </visual> 
    <collision name="collision">
      <origin xyz="0 0 -.5" rpy="0 0 0" />
      <geometry>
         <box size="0.2 0.2 1"/>   
      </geometry>
      <drake:proximity_properties>
            <drake:hunt_crossley_dissipation>
              0.1
            </drake:hunt_crossley_dissipation>
          <drake:point_contact_stiffness>
            1000000
          </drake:point_contact_stiffness>
        </drake:proximity_properties>
    </collision> 
  </link>
  <joint name="shoulder" type="continuous">
    <parent link="base"/>
    <child link="arm" />
    <axis xyz="0 1 0" />
  </joint>
  <transmission type="SimpleTransmission" name="shoulder_trans">
    <actuator name="shoulder" />
    <joint name="shoulder" />
    <mechanicalReduction>1</mechanicalReduction>
  </transmission>

</robot>

问题原因与修复方案

报错的核心原因是Drake的URDF扩展标签要求数值通过value属性传递,而非标签内的文本内容。你当前把阻尼和刚度数值写在了标签的嵌套文本里,不符合Drake的解析规则。

需要修改<drake:proximity_properties>内的两个标签:

原错误写法

<drake:hunt_crossley_dissipation>
  0.1
</drake:hunt_crossley_dissipation>
<drake:point_contact_stiffness>
  1000000
</drake:point_contact_stiffness>

修改后的正确写法

<drake:hunt_crossley_dissipation value="0.1" />
<drake:point_contact_stiffness value="1000000" />

修改后的完整URDF:

<?xml version="1.0"?>

<robot name="pendulum-paddle">
  <material name="black">
    <color rgba="0 0 0 1" />
  </material>

  <link name="base">
    <inertial>
      <origin xyz="0 0 0" />
      <mass value="0.01" />
      <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0" />
    </inertial>
  </link>
  <joint name="base_weld" type="fixed">
    <parent link="world" />
    <child link="base" />
  </joint>

  <link name="arm">
    <inertial> 
      <origin xyz="0 0 -1" rpy="0 0 0" />
      <mass value="1" />
      <inertia ixx="0" ixy="0" ixz="0" iyy="0" iyz="0" izz="0"/> 
    </inertial>
    <visual>
      <origin xyz="0 0 -.5" rpy="0 0 0" />
      <geometry>
         <box size="0.2 0.2 1"/>   
      </geometry>
      <material name="black" />
    </visual> 
    <collision name="collision">
      <origin xyz="0 0 -.5" rpy="0 0 0" />
      <geometry>
         <box size="0.2 0.2 1"/>   
      </geometry>
      <drake:proximity_properties>
        <drake:hunt_crossley_dissipation value="0.1" />
        <drake:point_contact_stiffness value="1000000" />
      </drake:proximity_properties>
    </collision> 
  </link>
  <joint name="shoulder" type="continuous">
    <parent link="base"/>
    <child link="arm" />
    <axis xyz="0 1 0" />
  </joint>
  <transmission type="SimpleTransmission" name="shoulder_trans">
    <actuator name="shoulder" />
    <joint name="shoulder" />
    <mechanicalReduction>1</mechanicalReduction>
  </transmission>

</robot>

修改后重新加载URDF即可解决该报错。

内容的提问来源于stack exchange,提问作者Tom C.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 02:15:35