1. 刚体运动基础概念
刚体运动(Rigid Body Motion)是机器人学和机构学中最基础也最重要的概念之一。简单来说,刚体运动描述的是一个物体在空间中位置和姿态的变化,同时保持其内部各点相对位置不变。理解这个概念对于后续学习机器人运动学、动力学以及控制都至关重要。
在实际应用中,我们通常需要用一个坐标系(称为参考坐标系或固定坐标系S)来描述另一个坐标系(称为物体坐标系或动坐标系B)的位置和姿态。这种描述方式在机器人学中非常常见,比如描述机械臂末端执行器相对于基座的位置和姿态。
注意:刚体运动的两个核心要素是位置(平移)和姿态(旋转),它们分别描述了物体在空间中的位置变化和方向变化。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 坐标系与旋转矩阵
2.1 坐标系的基本性质
在描述刚体运动时,我们使用的坐标系必须满足以下基本性质:
- 单位向量性质:每个坐标轴的单位向量长度必须为1
- 正交性:三个坐标轴必须两两正交
- 右手定则:三个坐标轴必须构成右手坐标系
这些约束条件意味着,虽然一个三维坐标系看起来有9个参数(三个三维向量),但实际上由于6个约束条件(3个长度约束和3个正交约束),只有3个自由度。
2.2 旋转矩阵的数学表达
旋转矩阵是描述坐标系之间旋转关系的数学工具。假设我们有两个坐标系S和B,那么B坐标系相对于S坐标系的旋转可以表示为一个3×3的矩阵:
R = [x_b y_b z_b]
其中x_b、y_b、z_b分别是B坐标系的三个坐标轴在S坐标系中的表示。这个矩阵的每一列都是B坐标系的一个基向量在S坐标系中的坐标。
旋转矩阵有几个重要性质:
- 正交性:R^T R = I(I是单位矩阵)
- 行列式为1:det(R) = 1
- 逆矩阵等于转置矩阵:R^-1 = R^T
3. 旋转的两种解释方式
3.1 固定坐标系解释
在固定坐标系解释中,我们假设参考坐标系S保持不变,而动坐标系B相对于S发生了旋转。这种解释方式直观易懂,适合大多数应用场景。
例如,当描述机械臂末端执行器的姿态时,我们通常采用固定坐标系解释,即认为基座坐标系固定,末端坐标系相对于基座坐标系旋转。
3.2 动坐标系解释
在动坐标系解释中,我们假设物体坐标系B保持不变,而参考坐标系S相对于B发生了旋转。这种解释方式在某些特定情况下更为方便,比如描述飞行器的姿态变化时。
虽然两种解释方式看起来不同,但实际上它们描述的是相同的物理现象,只是观察的视角不同而已。对应的数学表达式也是相同的。
4. 旋转矩阵的构建方法
4.1 基本旋转矩阵
最基本的旋转是绕单个坐标轴的旋转,对应的旋转矩阵如下:
-
绕x轴旋转θ角度:
Rx(θ) = [1 0 0; 0 cosθ -sinθ; 0 sinθ cosθ] -
绕y轴旋转θ角度:
Ry(θ) = [cosθ 0 sinθ; 0 1 0; -sinθ 0 cosθ] -
绕z轴旋转θ角度:
Rz(θ) = [cosθ -sinθ 0; sinθ cosθ 0; 0 0 1]
4.2 复合旋转
实际应用中,我们经常需要描述绕多个轴的连续旋转。这时可以通过矩阵乘法将基本旋转矩阵组合起来。需要注意的是,旋转的顺序非常重要,因为矩阵乘法不满足交换律。
例如,先绕x轴旋转α,再绕y轴旋转β,最后绕z轴旋转γ,对应的复合旋转矩阵为:
R = Rz(γ) Ry(β) Rx(α)
5. 欧拉角与旋转矩阵
5.1 欧拉角的定义
欧拉角是一种常用的旋转描述方式,它通过三个连续的绕轴旋转来描述任意姿态。根据旋转轴的选择顺序不同,欧拉角有多种表示方法,最常见的是ZYX欧拉角(也称为横滚-俯仰-偏航角)。
5.2 欧拉角与旋转矩阵的转换
给定一组欧拉角,我们可以通过组合基本旋转矩阵得到对应的旋转矩阵。以ZYX欧拉角(ψ, θ, φ)为例:
R = Rz(ψ) Ry(θ) Rx(φ)
展开后为:
R = [
cosψcosθ, cosψsinθsinφ-sinψcosφ, cosψsinθcosφ+sinψsinφ;
sinψcosθ, sinψsinθsinφ+cosψcosφ, sinψsinθcosφ-cosψsinφ;
-sinθ, cosθsinφ, cosθcosφ
]
反过来,从旋转矩阵提取欧拉角也需要特别注意奇异点问题。
6. 四元数表示法
6.1 四元数基础
四元数是另一种描述旋转的数学工具,它由一个实部和三个虚部组成:
q = w + xi + yj + zk
其中w是实部,(x,y,z)是虚部,i,j,k是虚数单位,满足特定的乘法规则。
6.2 四元数与旋转矩阵的转换
单位四元数(满足w²+x²+y²+z²=1)可以表示旋转。对应的旋转矩阵为:
R = [
1-2y²-2z², 2xy-2wz, 2xz+2wy;
2xy+2wz, 1-2x²-2z², 2yz-2wx;
2xz-2wy, 2yz+2wx, 1-2x²-2y²
]
四元数表示法避免了欧拉角的万向节锁问题,在计算机图形学和机器人控制中广泛应用。
7. 刚体运动的齐次表示
7.1 齐次变换矩阵
为了同时表示旋转和平移,我们使用4×4的齐次变换矩阵:
T = [R p; 0 1]
其中R是3×3旋转矩阵,p是3×1平移向量,0是1×3零向量。
7.2 齐次变换的性质
齐次变换矩阵具有以下重要性质:
- 复合变换:两个变换矩阵相乘表示连续的变换
- 逆变换:T^-1 = [R^T -R^T p; 0 1]
- 可以表示坐标系之间的相对关系
8. 实际应用中的注意事项
8.1 数值稳定性问题
在实际计算中,旋转矩阵可能会因为数值误差而失去正交性。常见的解决方法包括:
- 定期正交化:使用Gram-Schmidt过程或其他正交化方法
- 使用四元数:四元数表示法数值稳定性更好
- 采用增量式更新:对于连续的小旋转,使用指数映射表示
8.2 表示法的选择
不同的旋转表示法各有优缺点:
- 旋转矩阵:直观但参数多
- 欧拉角:直观但有万向节锁问题
- 四元数:紧凑且数值稳定但不直观
- 轴角表示:直观但参数化不唯一
在实际应用中,通常根据具体需求选择合适的表示法,并在不同表示法之间进行转换。
9. 机器人学中的应用实例
9.1 机械臂正运动学
在机械臂正运动学中,我们需要计算末端执行器相对于基座的位置和姿态。这通常通过连续的齐次变换来实现:
T = T1 T2 ... Tn
其中每个Ti表示一个关节的变换矩阵。
9.2 传感器标定
在多传感器系统中,我们需要确定不同传感器坐标系之间的变换关系。这可以通过测量已知点在两个坐标系中的坐标,然后求解对应的旋转和平移。
10. 常见问题与解决方案
10.1 万向节锁问题
当使用欧拉角表示时,在某些特定角度会出现自由度丢失的现象。解决方案包括:
- 避免使用接近奇异点的欧拉角序列
- 改用四元数表示
- 使用两套互补的欧拉角序列
10.2 旋转插值问题
在动画或轨迹规划中,我们需要在两个旋转之间进行平滑插值。简单的线性插值会导致问题,正确的做法包括:
- 对于旋转矩阵:使用矩阵对数插值
- 对于四元数:使用球面线性插值(slerp)
- 对于欧拉角:谨慎地进行分量插值
10.3 坐标系混淆问题
在实际编程中,很容易混淆不同坐标系之间的变换方向。建议:
- 明确记录每个变换矩阵的含义
- 使用一致的命名规范
- 编写详细的注释说明坐标系关系
