ROS2[Humble] -- URDF Tutorial- 02-multipleshapes
概述
该URDF(Unified Robot Description Format)文件定义了一个名为multipleshapes的简单机器人模型,包含两个连杆(base_link和right_leg)和一个固定关节(base_to_right_leg)。
<?xml version="1.0"?>
<robot name="multipleshapes"><link name="base_link"><visual><geometry><cylinder length="0.6" radius="0.2"/></geometry></visual></link><link name="right_leg"><visual><geometry><box size="0.6 0.1 0.2"/></geometry></visual></link><joint name="base_to_right_leg" type="fixed"><parent link="base_link"/><child link="right_leg"/></joint></robot>
joint
是 URDF(Unified Robot Description Format) 里最核心的元素之一之一,它描述了两个链接(link)之间的空间关系和连接方式(相对位置 + 可动关系)。
<joint name="base_to_right_leg" type="fixed"><parent link="base_link"/><child link="right_leg"/>
</joint>
意思是:
-
这个关节名叫 base_to_right_leg
-
它的类型是 fixed(固定连接)
-
它把 base_link(父)和 right_leg(子)连接在一起
-
它定义了 “右腿” 相对于 “底座” 的位置和运动约束
type类型说明
类型 | 意义 | 是否可动 | 示例用途 |
---|---|---|---|
fixed | 固定连接 | ❌ 不可动 | 零件焊死在一起 |
revolute | 转动关节(有限角度) | ✅ 可动 | 电机转轴、机械臂关节 |
continuous | 连续旋转(无限角度) | ✅ 可动 | 车轮、雷达旋转头 |
prismatic | 直线滑动 | ✅ 可动 | 伸缩臂、滑轨 |
planar | 平面内移动 | ✅ 可动 | 2D 滑台 |
floating | 六自由度(平移+旋转) | ✅ 可动 | 特殊场景,如虚拟物体 |
直观理解
可以把它想成「骨骼连接」:
-
link 是骨头
-
joint 是关节
一个机械臂或机器人模型其实就是:
link1 --joint1--> link2 --joint2--> link3 ...
可旋转
<robot name="multipleshapes"><!-- 基座 --><link name="base_link"><visual><geometry><cylinder length="0.6" radius="0.2"/></geometry><origin xyz="0 0 0" rpy="0 0 0"/></visual></link><!-- 右腿 --><link name="right_leg"><visual><geometry><box size="0.6 0.1 0.2"/></geometry><origin xyz="0 0 0" rpy="0 0 0"/></visual></link><!-- 旋转关节 --><joint name="base_to_right_leg" type="revolute"><parent link="base_link"/><child link="right_leg"/><!-- 指定连接点相对位置(相对 base_link) --><origin xyz="0 0.3 -0.2" rpy="0 0 0"/><!-- 指定旋转轴方向,这里绕 Z 轴旋转 --><axis xyz="0 0 1"/><!-- 限制旋转角度 --><limit lower="-1.57" upper="1.57" effort="1" velocity="1"/></joint></robot>
拖动base_to_right_leg的滑块,可以看到旋转运动