在Isaac Sim中,机器人模型通常使用USD格式文件。而我手上的CR10AF机械臂模型目前只有URDF格式,因此在导入前,需要将URDF转换为USD。在转换之前,需要先弄清楚URDF文件是什么,究竟包含了哪些信息。

一、准备工作

在后续示例中,我使用的机器人模型是越疆CR10AF六自由度机械臂,是越疆CRA系列的一款工业级协作机器人。CR10AF与CR10外形和参数完全一致,只是CR10AF多了力控模块。因此厂家提供的ROS2支持包中仅包含CR10的文件,但CR10AF也可直接使用这些文件。

产品官网:越疆CRAF力控系列协作机器人-人机协作机器人-DOBOT越疆科技

ROS2支持包:https://github.com/Dobot-Arm/DOBOT_6Axis_ROS2_V4

基础参数:

  • 自由度:6轴
  • 最大工作半径:1300mm
  • 最大负载:10kg
  • 重复定位精度:±0.03mm
  • 重量:约40.5kg
  • 通信接口:支持ROS2,通过厂家提供的ROS2包可获取URDF、MoveIt配置等资源

厂家提供了CR10AF的完整URDF文件及配套资源包,其中包含:

  • 机械臂的网格模型(STL/DAE)
  • 关节和连杆的参数定义
  • 运动学与动力学配置
  • MoveIt规划组及控制配置

这些文件将在本项目中用于在Isaac Sim中导入并转换为USD格式,以便在Isaac Lab环境中配置强化学习任务并进行训练。

二、URDF是什么

URDF(Unified Robot Description Format)是一种XML格式的机器人描述文件,主要描述:

  • 机器人结构:有哪些零件(link)以及它们的连接方式(joint);
  • 运动学信息:关节类型、旋转轴方向、位置与姿态;
  • 动力学信息:质量、惯性矩阵、摩擦系数等;
  • 外观:几何形状、颜色与材质;
  • 碰撞模型:仿真中用于碰撞检测的几何体。

注意:URDF文件本身不包含控制算法、传感器驱动或运动规划等功能。这些功能需要由其他程序结合URDF来实现。

可以将URDF理解为机器人的“3D蓝图”,各类仿真器(Isaac Sim、Gazebo、MoveIt、ROS控制器等)都可以基于URDF生成机器人模型。

三、URDF的核心结构

几乎所有URDF都包含三种主要标签:<robot>、</link>、</joint>

1.<robot>

顶层标签,包住所有link和joint,有一个name属性用于指定机器人名称,在ROS/仿真环境中作为命名空间。

2.<link>(连杆)

表示机器人一个刚体部分(机械臂的一节、底座、末端工具)。其定义内容包括:

惯性属性<inertial>:质量、惯性矩阵及质心位置。

外观<visual>:渲染时使用的外观模型;

碰撞形状<collision>:物理引擎进行碰撞检测时使用的几何体;

每个link都有自己的坐标系。

示例:

<link name="Link1">
  <inertial>
    <origin xyz="-1.6635E-06 -0.010819 0.0028389" rpy="0 0 0" />
    <mass value="4.1649" />
    <inertia
      ixx="0.020714"
      ixy="-1.9343E-07"
      ixz="1.6036E-07"
      iyy="0.018824"
      iyz="-9.6731E-05"
      izz="0.014575" />
    </inertial>
  <visual>
    <origin xyz="0 0 0" rpy="0 0 0" />
    <geometry>
      <mesh filename="package://dobot_rviz/meshes/cr10/Link1.STL" />
    </geometry>
    <material name="">
      <color rgba="1 1 1 1" />
    </material>
  </visual>
  <collision>
    <origin xyz="0 0 0" rpy="0 0 0" />
    <geometry>
      <mesh filename="package://dobot_rviz/meshes/cr10/Link1.STL" />
    </geometry>
  </collision>
</link>

该示例描述了CR10AF的连杆Link1。

(1)<inertial>表示连杆的惯性参数。origin表示质心位置相对于Link1原点的偏移(单位m),这里质心略微向y方向(-10.8mm)和z方向(+2.84mm)偏移;mass表示连杆的质量为4.1649kg;inertia是惯性张量,表示该部件对不同轴旋转的惯性阻力。

(2)<visual>表示连杆的外观模型。使用Link1.STL网格作为外观模型,颜色为白色。注意路径package://dobot_rviz/meshes/cr10/Link1.STL,在Isaac Sim中,如果不能解析package://,需要换成本地真实路径。

(3)<collision>表示连杆的碰撞模型。物理引擎用Link1.STL作为碰撞检测几何体。

3.<joint>(关节)

用于表示两个link之间的连接方式,并决定它们的相对运动方式(转动、滑动、固定),关节也是坐标系的转换点。

常见属性:

  • type:关节类型(有限位旋转关节revolute、无限位旋转关节continuous、滑动关节prismatic、固定连接fixed);
  • parent/child:父子link名;
  • origin:关节位置与姿态(相对父link);
  • axis:运动轴方向;
  • limit:运动范围、最大速度、最大力矩。

示例:

<joint name="joint1" type="revolute">
  <origin xyz="0 0 0.1765" rpy="0 0 0" />
  <parent link="base_link" />
  <child link="Link1" />
  <axis xyz="0 0 1" />
  <limit lower="-6.27" upper="6.27" effort="0" velocity="0" />
</joint>

该示例描述了CR10AF的关节joint1。

(1)<joint> / <origin> / <parent> / <child>:

type="revolute"表示该关节类型为有限位旋转关节;

origin xyz="0 0 0.1765"表示关节轴心位于父连杆(base_link)坐标系Z向上0.1765m;

<parent link>与<child link>指定该关节把base_link→Link1连接起来。关节自身不包含外观/碰撞/惯性,这些都定义在相应的link里。

(2)<axis xyz="0 0 1">表示关节绕关节坐标系的正Z轴旋转(右手法则确定正方向)。

(3)<limit lower="-6.27" upper="6.27" effort="0" velocity="0">:

表示该关节的角度范围为下限−6.27rad,上限+6.27rad,约为±359.4°(接近一整圈);

四、如何阅读URDF

以cr10_robot.urdf为例:

1.找robot名

<robot name="cr10_robot">

名字是cr10_robot,ROS/Isaac会用它做命名空间

2.列出所有link

base_link、link1~link6、dummy_link。

3.列出所有joint

joint1~joint6(旋转关节)、dummy_joint(固定关节)

4.绘制关节树(拓扑结构)

从base_link开始一路往下画:

base_link
 └──joint1→link1
      └──joint2→link2
           └──joint3→link3
                └──joint4→link4
                     └──joint5→link5
                          └──joint6→link6
                               └──dummy_joint→dummy_link

很显然,CR10AF的结构是串联6轴+一个末端工具位。

5.检查物理属性与mesh路径

  • 质量与惯性矩阵是否合理
  • package://dobot_rviz/meshes/...路径是否能正确找到STL文件

五、URDF自查要点

要检查一个URDF文件是否与真实机械臂结构一致,需要检查:

  • 结构正确:关节数与实际一致,父子关系无环
  • 物理属性合理:质量非零,惯性矩阵对称且正定
  • mesh路径有效:本地能找到STL/DAE文件
  • 限位合理:lower/upper与机械臂实际运动范围匹配

总之,URDF是机器人在仿真中的结构与物理蓝图;导入前务必核对网格路径(或配置package://)、尺度与惯性一致、关节限位与轴向正确。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐