【Matlab 六自由度机器人】旋转参数化方法详解:欧拉角、姿态角与四元数
往期回顾
【主线】
- 六自由度机器人模型搭建
- 运动学正解计算
- 基于蒙特卡洛法(Monte Carlo Method)构建机器人工作空间
【补充说明】
- 灵活工作空间与可达工作空间的辨析
- 改进型D-H参数(modified Dena vit-Hartenberg)的详细建立流程
前言
旋转运动看似简单,但精确描述刚体在三维空间中的姿态时,必须选择合适的参数化方案。工程中最常用的三种方法为:欧拉角、姿态角(亦称滚动-俯仰-偏航角)以及四元数(即转轴/角度表示法)。尽管每种方法均采用三个独立变量,但其几何逻辑与适用场景差异显著。本文将从旋转矩阵的推导出发,结合Matlab代码实现与可视化效果,帮助读者系统理解六自由度机器人旋转参数化的核心思想。
一、欧拉角(Euler-angle)表示法
1. 定义
欧拉角是机器人运动学中最常见的旋转参数化方法。假设存在固定参考坐标系 o₀x₀y₀z₀ 与旋转后的坐标系 o₁x₁y₁z₁,通过三个角度 φ、θ、ψ 描述相对姿态——这对应三次连续旋转,且每次旋转均绕当前坐标系(即旋转后的所在坐标轴)进行。具体流程为:首先绕当前 z 轴旋转 φ,其次绕当前 y 轴旋转 θ,最后绕当前 z 轴旋转 ψ。
三次旋转对应的基础旋转矩阵如下:
Rz,φ = [cosφ -sinφ 0; sinφ cosφ 0; 0 0 1]
Ry,θ = [cosθ 0 sinθ; 0 1 0; -sinθ 0 cosθ]
Rz,ψ = [cosψ -sinψ 0; sinψ cosψ 0; 0 0 1]
由于采用绕当前轴连续旋转的规则,总旋转矩阵 R 由各矩阵按右乘顺序连乘得到:
RZYZ = Rz,φ · Ry,θ · Rz,ψ
展开后将获得完整的ZYZ欧拉角变换矩阵(此处不再赘述具体形式)。核心思路在于利用三次绕当前轴的旋转,将刚体的最终姿态参数化表达。
2. 代码解析(含实例)
在Matlab中,利用符号计算验证矩阵连乘过程非常直观:
syms phi theta psi
R1 = rotz(phi)*roty(theta)*rotz(psi);
为了直观展示效果,选取一组具体角度并绘制坐标系对比:参考系显示为红色,旋转后的坐标系显示为蓝色。
syms phi theta psi
R0 = rotz(0);
R1 = rotz(pi/6)*roty(pi/6)*rotz(pi/6);
trplot(R0, 'color', 'r', 'frame', '0')
hold on
trplot(R1, 'color', 'b', 'frame', '1')
Alt
二、姿态角(RPY)表示法
1. 定义
姿态角——滚动(roll)、俯仰(pitch)、偏航(yaw)——是另一种经典参数化方式。与欧拉角不同,旋转始终围绕固定参考坐标系 o₀x₀y₀z₀ 的坐标轴进行。具体顺序为:首先绕 x₀ 轴旋转 ψ(偏航),其次绕 y₀ 轴旋转 θ(俯仰),最后绕 z₀ 轴旋转 φ(滚动)。由于旋转轴固定,最终的旋转矩阵需将各矩阵按左乘顺序连乘。
三个基本矩阵如下:
Rz,φ = [cosφ -sinφ 0; sinφ cosφ 0; 0 0 1]
Ry,θ = [cosθ 0 sinθ; 0 1 0; -sinθ 0 cosθ]
Rx,ψ = [1 0 0; 0 cosψ -sinψ; 0 sinψ cosψ]
连乘结果为:
R = Rz,φ · Ry,θ · Rx,ψ
展开后的矩阵具有标准形式,此处从略。关键点在于,固定轴旋转顺序在机器人学及飞行器控制中应用极为广泛。
2. 代码解析(含实例)
syms phi theta psi
R2 = rotz(phi)*roty(theta)*rotx(psi);
该代码直接对应姿态角的定义。如需可视化,可参照欧拉角的实例,为三个参数赋值并调用 trplot 函数。
三、四元数(axis/angle)表示法(未完待续)
1. 定义
实际应用中,旋转往往不沿主坐标轴发生,而是围绕空间中任意单位向量 k = [kx, ky, kz]T 转动角度 θ。转轴/角度表示法提供了一种更紧凑、且能避免万向锁问题的参数化方式。旋转矩阵 Rk,θ 可通过Rodrigues公式推导得出。本节先埋下伏笔——四元数的详细分析将在后续内容中展开。
2. 代码解析(含实例)
Matlab提供了 quaternion 函数,用于直接构造绕任意轴旋转的四元数。具体用法示例如下:
% 参考Quaternion文档
% 待续…
总结
三种旋转参数化方法各有优势:欧拉角直观易用,但存在奇点问题;姿态角(RPY)在工程控制中应用广泛;四元数则凭借插值平滑、无奇点的特性,在动画与飞行器姿态估计领域占据主导地位。理解其背后的几何意义比机械记忆公式更为重要。下一篇文章将重点补全四元数的内容,并建立其与旋转矩阵、角速度之间的关联。
