Robotics-机器人建模中的自由度与约束
机器人坐标系的自由度与约束
在机器人学中,坐标系不仅用来描述位置和姿态,还隐含着一个更重要的问题:一个物体到底能怎么动,又被限制了哪些运动?
这就引出了两个核心概念:
- 自由度:系统可以独立运动的方向或方式。
- 约束:限制系统运动的条件。
理解自由度与约束,是理解机器人运动学、机构建模、末端控制、关节设计和路径规划的基础。
1. 什么是自由度?
自由度,英文是 Degree of Freedom,简称 DOF。
它表示一个物体在空间中可以独立运动的数量。
在三维空间中,一个完全自由的刚体最多有 6 个自由度:
3 个平移自由度 + 3 个旋转自由度 = 6 个自由度
分别是:
沿 X 轴平移
沿 Y 轴平移
沿 Z 轴平移
绕 X 轴旋转
绕 Y 轴旋转
绕 Z 轴旋转
也可以写成:
[x, y, z, roll, pitch, yaw]
其中:
x, y, z描述位置。roll表示绕 X 轴旋转。pitch表示绕 Y 轴旋转。yaw表示绕 Z 轴旋转。
所以,一个物体在空间中的完整位姿,需要 6 个独立参数描述。
2. 坐标系为什么和自由度有关?
坐标系的作用,是描述物体的位姿。
如果一个物体有 6 个自由度,那么它相对于某个参考坐标系的位姿可以表示为:
T = [ R p
0 1 ]
其中:
R:旋转矩阵,描述姿态
p:平移向量,描述位置
平移向量 p 有 3 个分量:
p = [x, y, z]^T
旋转矩阵 R 虽然是一个 3 × 3 矩阵,有 9 个元素,但它并不代表 9 个自由度。
因为旋转矩阵必须满足约束:
R^T R = I
det(R) = 1
这些约束使得旋转矩阵实际只有 3 个独立自由度。
所以三维刚体位姿仍然是:
3 个平移自由度 + 3 个旋转自由度
3. 平面运动中的自由度
很多移动机器人只在平面上运动,例如差速小车、AGV、扫地机器人。
虽然真实世界是三维的,但如果机器人始终在水平地面上运动,就可以把问题简化为平面运动。
平面刚体只有 3 个自由度:
x:沿平面 X 方向的位置
y:沿平面 Y 方向的位置
θ:绕竖直 Z 轴的旋转角
位姿可以写成:
q = [x, y, θ]^T
对应的齐次变换矩阵为:
T =
[ cosθ -sinθ x
sinθ cosθ y
0 0 1 ]
这里没有 z、roll、pitch,因为它们被地面约束住了。
也就是说,机器人不是没有这些方向,而是这些方向的运动被限制了。
4. 什么是约束?
约束就是限制自由度的条件。
如果一个刚体在三维空间中原本有 6 个自由度,而某些运动不允许发生,那么这些被限制的运动就形成约束。
例如,一个平面移动机器人:
不能离开地面
不能绕 X 轴翻滚
不能绕 Y 轴俯仰
因此它的自由度从 6 个减少为 3 个。
可以理解为:
自由度 = 原本可运动的维度 - 被约束的维度
在平面移动机器人中:
6 个空间自由度 - 3 个约束 = 3 个平面自由度
5. 关节如何提供自由度?
机器人由连杆和关节组成。
连杆本身是刚体,关节决定相邻连杆之间能怎么动。
常见关节包括:
5.1 转动关节
转动关节只允许绕一个轴旋转。
它提供 1 个自由度:
θ
例如机械臂的旋转关节。
5.2 移动关节
移动关节只允许沿一个轴平移。
它也提供 1 个自由度:
d
例如直线滑台、伸缩机构。
5.3 球关节
球关节允许绕三个方向旋转。
它提供 3 个自由度:
roll, pitch, yaw
常见于仿生机器人、机械结构连接和一些并联机构中。
5.4 固定关节
固定关节不允许相对运动。
它提供 0 个自由度。
在 URDF 建模中,固定关节常用于描述传感器、支架、工具等刚性安装关系。
6. 坐标系中的约束如何体现?
约束通常会体现在坐标变量之间的关系上。
例如一个点被限制在平面 z = 0 上,那么它的空间坐标:
p = [x, y, z]^T
就必须满足:
z = 0
这就是一个位置约束。
如果一个刚体不能发生横滚和俯仰,那么姿态中:
roll = 0
pitch = 0
这就是姿态约束。
因此,完整空间位姿:
[x, y, z, roll, pitch, yaw]
在平面运动中被约束成:
[x, y, 0, 0, 0, yaw]
真正独立变化的只有:
[x, y, yaw]
7. 约束分为完整约束和非完整约束
机器人运动学中,约束还可以分为两类:
完整约束
非完整约束
7.1 完整约束
完整约束可以直接写成位置或姿态之间的方程。
例如:
z = 0
roll = 0
pitch = 0
这些约束直接限制机器人的位姿,因此属于完整约束。
平面运动约束就是典型的完整约束。
7.2 非完整约束
非完整约束不能直接写成位置关系,而是限制速度方向。
典型例子是差速小车。
差速小车可以前进、后退、转弯,但不能直接横向平移。
如果车体坐标系中:
X 轴指向前方
Y 轴指向左方
那么差速小车的横向速度必须满足:
v_y = 0
这不是说小车永远不能到达侧方的位置,而是说它不能在某一瞬间直接向侧方滑动。
它必须通过转向和前进组合,间接到达侧方位置。
这就是非完整约束。
8. 差速移动机器人的自由度与约束
差速机器人在平面中的位姿为:
q = [x, y, θ]^T
从位姿上看,它有 3 个自由度。
但是它的速度输入通常只有两个:
v:前进速度
ω:角速度
运动学模型为:
x_dot = v cosθ
y_dot = v sinθ
θ_dot = ω
由于它不能横向侧滑,因此存在约束:
-v_x sinθ + v_y cosθ = 0
这个式子表示:机器人在世界坐标系中的速度,投影到车体横向方向上必须为 0。
所以,差速机器人虽然位姿空间是 3 维的,但瞬时可控速度只有 2 个独立输入。
这也是为什么它不能像全向机器人那样直接横移。
9. 机械臂中的自由度与约束
机械臂的自由度通常由关节数量决定。
例如:
6 个转动关节 -> 6 自由度机械臂
7 个转动关节 -> 7 自由度机械臂
一个 6 自由度机械臂通常可以控制末端执行器在空间中的完整位姿:
3 个位置自由度 + 3 个姿态自由度
因此,工业机械臂常见 6 轴结构。
如果机械臂少于 6 个自由度,例如 4 自由度机械臂,它可能只能控制末端的位置和部分姿态。
如果机械臂多于 6 个自由度,例如 7 自由度机械臂,它就具有冗余自由度。
冗余自由度的好处是:
- 可以避障。
- 可以避开关节极限。
- 可以优化姿态。
- 可以降低能耗。
- 可以在末端位姿不变时调整手臂形状。
10. 自由度不等于坐标变量数量
这是一个很容易混淆的点。
例如旋转矩阵有 9 个元素:
R =
[ r11 r12 r13
r21 r22 r23
r31 r32 r33 ]
但它不是 9 个自由度。
因为旋转矩阵的列向量必须互相垂直,且长度为 1:
R^T R = I
同时它必须是右手坐标系:
det(R) = 1
这些条件限制了矩阵元素之间的关系,所以它实际只有 3 个独立自由度。
同样,四元数有 4 个元素:
q = [w, x, y, z]
但单位四元数需要满足:
w^2 + x^2 + y^2 + z^2 = 1
所以它实际也只有 3 个旋转自由度。
这说明:
参数数量 != 自由度数量
自由度看的是独立变量的数量,而不是表面上用了几个数字。
11. 自由度与约束在建模中的意义
在机器人建模中,分析自由度和约束可以帮助我们回答几个关键问题:
- 机器人能否到达目标位姿?
- 末端姿态是否完全可控?
- 机构是否存在冗余自由度?
- 是否存在无法直接运动的方向?
- 控制输入数量是否足够?
- 运动规划是否需要考虑非完整约束?
- 建模时哪些变量是独立的,哪些变量由约束决定?
例如,如果一个移动机器人不能横移,那么路径规划算法就不能简单地把它当作自由移动的点。
如果一个机械臂只有 4 个自由度,就不能要求它任意控制末端的完整 6D 位姿。
如果一个 7 自由度机械臂有冗余,就可以利用额外自由度完成避障或优化。
12. 一个直观总结
可以把机器人运动理解成这样:
坐标系:描述位置和方向的语言
自由度:这个系统可以独立改变多少个量
约束:哪些运动被限制住了
三者关系非常紧密。
坐标系给了我们描述运动的方法,自由度告诉我们系统能怎么动,约束告诉我们系统不能怎么动。
在机器人建模中,不仅要知道坐标怎么写,还要知道这些坐标变量是否真的独立。
13. 一句话总结
机器人坐标系中的自由度与约束,本质上是在回答一个问题:
一个机器人在当前坐标描述下,哪些运动可以独立发生,哪些运动被结构、环境或关节限制住了。
理解这一点之后,运动学建模、控制输入设计、路径规划和误差分析都会清晰很多。

浙公网安备 33010602011771号