有多少人工,就有多少智能

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 ]

这里没有 zrollpitch,因为它们被地面约束住了。

也就是说,机器人不是没有这些方向,而是这些方向的运动被限制了。


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. 一句话总结

机器人坐标系中的自由度与约束,本质上是在回答一个问题:

一个机器人在当前坐标描述下,哪些运动可以独立发生,哪些运动被结构、环境或关节限制住了。

理解这一点之后,运动学建模、控制输入设计、路径规划和误差分析都会清晰很多。

posted @ 2026-09-19 16:23  lvdongjie-avatarx  阅读(17)  评论(0)    收藏  举报