unitree_rl_gym-main 代码解读1_URDF
material>用于统一管理连杆的颜色(RGBA 格式,A 为透明度),例如腿部和躯干可能用不同颜色:xml-- 躯干:深灰色(不透明) -->-- 腿部:浅灰色 -->Go2 的 URDF 通过<link>定义了 “躯干 + 4 条腿(每条 3 个连杆)” 的物理结构和外观,通过<joint>定义了 12 个旋转关节(3 个 / 腿)的连接关系和运动范围,最终形成一个可被仿真环境(如 Gaze
一,urdf
resources\robots\go2
Solidworks转URDF

要解读 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_thigh、front_right_thigh、rear_left_thigh、rear_right_thigh - 小腿:
front_left_calf、front_right_calf、rear_left_calf、rear_right_calf - 脚掌:
front_left_foot、front_right_foot、rear_left_foot、rear_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),或用基本几何形状(box、cylinder)定义,同时指定颜色(通过<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 点:
- 结构层级:基座→上部头部→下部头部,通过两个固定关节形成完整的头部支架,适合安装多种传感器;
- 物理特性:极轻(总重 2 克)、对称惯性,完全不影响四足机器人的重心和平衡,避免行走 / 奔跑时姿态失控;
- 碰撞设计:简化的几何形状(圆柱体 + 球体),兼顾碰撞检测准确性和仿真计算效率,保护虚拟传感器。
这个设计完全贴合四足机器人的需求 —— 头部作为 “感知模块”,不需要运动自由度,重点是 “稳定、轻质、不影响平衡”,同时能为传感器提供合理的安装位置和视野。
总结
Go2 的 URDF 通过<link>定义了 “躯干 + 4 条腿(每条 3 个连杆)” 的物理结构和外观,通过<joint>定义了 12 个旋转关节(3 个 / 腿)的连接关系和运动范围,最终形成一个可被仿真环境(如 Gazebo)或运动控制算法解析的机器人模型。其对称性(左右、前后腿结构一致)是 URDF 设计的显著特点,可减少冗余代码。
如果需要更细节的解读,需结合具体的 URDF 文件内容(如关节轴方向、惯性参数的具体数值等)进一步分析。
更多推荐

所有评论(0)