一,urdf

resources\robots\go2

Solidworks转URDF

sw_urdf_exporter - ROS Wiki

要解读 Go2(Unitree 的四足机器人)的 URDF(Unified Robot Description Format,统一机器人描述格式)内容,我们需要先明确 URDF 的核心作用:它是一种 XML 格式文件,用于描述机器人的结构组成(连杆、关节)、物理属性(质量、惯性)、外观(视觉模型)和碰撞边界(碰撞模型)等,是机器人仿真(如 Gazebo)和运动规划的基础。
 

Go2 URDF 的核心组成部分

Go2 作为四足机器人,其 URDF 结构围绕 “躯干 + 四条腿” 的对称结构展开,核心元素包括<robot>根节点、<link>(连杆)、<joint>(关节),以及辅助元素<material>(材料)、<inertial>(惯性)等。以下是各部分的典型解读:

1. 根节点 <robot>

URDF 文件的根节点,通常包含机器人名称,例如:

xml

<robot name="go2">
  <!-- 所有连杆、关节、材料等均在此节点下 -->
</robot>

name="go2"直接标识了机器人模型的名称,用于后续仿真或代码中引用。

2. 连杆 <link>:机器人的 “骨骼”

连杆描述机器人的刚性结构(如躯干、大腿、小腿、脚掌等),每个连杆有唯一 ID,Go2 的连杆通常包括:

  • 基座连杆base_link(机器人躯干的基准坐标系,所有其他连杆的位置以此为参考)。
  • 腿部连杆:因四足对称,每条腿(前左、前右、后左、后右)对应 3 个连杆,例如:
    • 大腿:front_left_thighfront_right_thighrear_left_thighrear_right_thigh
    • 小腿:front_left_calffront_right_calfrear_left_calfrear_right_calf
    • 脚掌:front_left_footfront_right_footrear_left_footrear_right_foot

每个<link>包含以下关键子元素:

  • <inertial>:描述连杆的物理惯性(影响动力学仿真),包括:

    • mass:质量(单位:kg);
    • inertia:转动惯量矩阵(3x3 对角矩阵,描述绕 x、y、z 轴的惯性)。

    xml

    <link name="front_left_thigh">
      <inertial>
        <mass value="0.5"/>  <!-- 大腿质量 -->
        <inertia ixx="0.01" ixy="0" ixz="0" iyy="0.01" iyz="0" izz="0.01"/>  <!-- 转动惯量 -->
      </inertial>
      <!-- 其他子元素 -->
    </link>
    
  • <visual>:描述连杆的外观(用于可视化显示),通常通过mesh引用 3D 模型文件(如.stl.dae),或用基本几何形状(boxcylinder)定义,同时指定颜色(通过<material>关联)。

    xml

    <visual>
      <origin xyz="0 0 0" rpy="0 0 0"/>  <!-- 相对连杆坐标系的位置姿态 -->
      <geometry>
        <mesh filename="package://go2_description/meshes/front_left_thigh.stl"/>  <!-- 3D模型路径 -->
      </geometry>
      <material name="leg_material"/>  <!-- 关联材料(定义颜色) -->
    </visual>
    
  • <collision>:描述连杆的碰撞边界(用于碰撞检测,通常比视觉模型简化以提高计算效率),结构与<visual>类似,但几何模型可能更简单(如用cylinder代替复杂曲面)。

    xml

    <collision>
      <origin xyz="0 0 0" rpy="0 0 0"/>
      <geometry>
        <cylinder radius="0.05" length="0.2"/>  <!-- 简化的碰撞模型 -->
      </geometry>
    </collision>
    
3. 关节 <joint>:连杆的 “连接与运动轴”

关节定义两个连杆的连接关系,决定运动方式(旋转 / 移动)和范围,Go2 的关节均为旋转关节<type>revolute</type>),对应腿部的 “髋关节、膝关节、踝关节”:

  • 髋关节:连接base_link与大腿(如front_left_hip_joint);
  • 膝关节:连接大腿与小腿(如front_left_knee_joint);
  • 踝关节:连接小腿与脚掌(如front_left_ankle_joint)。

每个<joint>包含以下关键子元素:

  • <parent><child>:指定关节连接的两个连杆(父连杆→子连杆,如base_link是髋关节的父连杆,front_left_thigh是子连杆)。
  • <type>:关节类型,Go2 的关节均为revolute(旋转关节,有角度限制)。
  • <axis>:旋转轴方向(如髋关节可能绕 y 轴旋转,膝关节绕 x 轴旋转,由机器人运动学设计决定)。
  • <limit>:关节运动范围(lower最小角度,upper最大角度,单位:弧度 rad)。
  • <origin>:关节在父连杆坐标系中的位置(xyz)和姿态(rpy,滚转 / 俯仰 / 偏航)。

示例(前左髋关节):

xml

<joint name="front_left_hip_joint" type="revolute">
  <parent link="base_link"/>
  <child link="front_left_thigh"/>
  <origin xyz="-0.2 0.15 0" rpy="0 0 0"/>  <!-- 髋关节在躯干上的安装位置 -->
  <axis xyz="0 1 0"/>  <!-- 绕y轴旋转(控制腿部前后摆动) -->
  <limit lower="-0.5" upper="0.5"/>  <!-- 允许的旋转角度范围 -->
</joint>
4. 材料 <material>:定义外观颜色

<material>用于统一管理连杆的颜色(RGBA 格式,A 为透明度),例如腿部和躯干可能用不同颜色:

xml

<material name="body_material">
  <color rgba="0.1 0.1 0.1 1"/>  <!-- 躯干:深灰色(不透明) -->
</material>
<material name="leg_material">
  <color rgba="0.8 0.8 0.8 1"/>  <!-- 腿部:浅灰色 -->
</material>

举个例子

Head_upper,Head_upper_joint,Head_lower,Head_lower_joint

这段 URDF 定义的四足机器人头部组件,核心设计逻辑可以概括为 3 点:

  1. 结构层级:基座→上部头部→下部头部,通过两个固定关节形成完整的头部支架,适合安装多种传感器;
  2. 物理特性:极轻(总重 2 克)、对称惯性,完全不影响四足机器人的重心和平衡,避免行走 / 奔跑时姿态失控;
  3. 碰撞设计:简化的几何形状(圆柱体 + 球体),兼顾碰撞检测准确性和仿真计算效率,保护虚拟传感器。

这个设计完全贴合四足机器人的需求 —— 头部作为 “感知模块”,不需要运动自由度,重点是 “稳定、轻质、不影响平衡”,同时能为传感器提供合理的安装位置和视野。

总结

Go2 的 URDF 通过<link>定义了 “躯干 + 4 条腿(每条 3 个连杆)” 的物理结构和外观,通过<joint>定义了 12 个旋转关节(3 个 / 腿)的连接关系和运动范围,最终形成一个可被仿真环境(如 Gazebo)或运动控制算法解析的机器人模型。其对称性(左右、前后腿结构一致)是 URDF 设计的显著特点,可减少冗余代码。

如果需要更细节的解读,需结合具体的 URDF 文件内容(如关节轴方向、惯性参数的具体数值等)进一步分析。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐