当前位置: 首页 > news >正文

深入解析:三维旋转矩阵的左乘与右乘

三维旋转矩阵的左乘与右乘

在三维旋转、机器人学、计算机图形学和视觉SLAM等领域,3x3旋转矩阵是描述刚体方向的核心数学工具。然而,一个常见且关键的困惑点在于:旋转矩阵的左乘和右乘有什么区别?理解这一区别对于正确进行坐标变换、姿态估计和运动学计算至关重要。本文将深入解析其概念、计算公式、几何含义及实际应用。

1. 基础:旋转矩阵与向量变换

一个3x3的旋转矩阵R\mathbf{R}R属于特殊正交群 SO(3),满足RTR=I\mathbf{R}^T\mathbf{R} = \mathbf{I}RTR=Idet⁡(R)=1\det(\mathbf{R}) = 1det(R)=1

向量的左乘变换(标准形式)

当我们谈论“用旋转矩阵旋转一个向量”时,通常指的是左乘。设有一个三维列向量v=[vx,vy,vz]T∈R3\mathbf{v} = [v_x, v_y, v_z]^T \in \mathbb{R}^3v=[vx,vy,vz]TR3和一个旋转矩阵R\mathbf{R}R,旋转后的向量v′\mathbf{v}'v计算公式为:

v′=Rv \mathbf{v}' = \mathbf{R} \mathbf{v}v=Rv

这是一个标准的主动变换,其几何意义是:在一个固定的世界坐标系下,将向量 v\mathbf{v}v旋转到了新的位置v′\mathbf{v}'v。向量在空间中的实际位置发生了改变,但描述它的坐标系是固定不变的。

计算示例
假设有一个绕Z轴旋转θ\thetaθ 角的矩阵 Rz(θ)\mathbf{R}_z(\theta)Rz(θ)

Rz(θ)=(cos⁡θ−sin⁡θ0sin⁡θcos⁡θ0001) \mathbf{R}_z(\theta) = \begin{pmatrix} \cos\theta & -\sin\theta & 0 \\ \sin\theta & \cos\theta & 0 \\ 0 & 0 & 1 \end{pmatrix}Rz(θ)=cosθsinθ0sinθcosθ0001

旋转向量 v=[1,0,0]T\mathbf{v} = [1, 0, 0]^Tv=[1,0,0]T 的结果为:

v′=Rz(90∘)v=(0−10100001)(100)=(010) \mathbf{v}' = \mathbf{R}_z(90^\circ) \mathbf{v} = \begin{pmatrix} 0 & -1 & 0 \\ 1 & 0 & 0 \\ 0 & 0 & 1 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} = \begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}v=Rz(90)v=010100001100=010


2. 核心困惑点:旋转矩阵的串联与“右乘”

单纯的“向量右乘矩阵”(vR\mathbf{v} \mathbf{R}vR)在数学上是不成立的,因为维度不匹配(3x1矩阵无法右乘3x3矩阵)。“右乘”的真正含义体现在多个旋转矩阵的串联顺序上,这对应了两种截然不同的几何解释。

2.1 左乘串联:固定坐标系下的连续旋转

当我们需要进行一系列连续的旋转时,如果所有这些旋转都是相对于同一个固定的世界坐标系的轴来执行的,那么我们使用左乘串联

计算规则各个旋转矩阵的就是:最终的旋转矩阵从右到左的乘法。

Rfinal=Rn⋯R2R1 \mathbf{R}_{final} = \mathbf{R}_n \cdots \mathbf{R}_2 \mathbf{R}_1Rfinal=RnR2R1

几何意义:先执行 R1\mathbf{R}_1R1,再执行 R2\mathbf{R}_2R2,…,最后执行Rn\mathbf{R}_nRn每一次旋转的参考轴都是最初的那个固定坐标系的轴

应用示例(无人机姿态描述):
一架无人机先绕世界坐标系的Z轴偏航(Yaw)α\alphaα,再绕世界坐标系的Y轴俯仰(Pitch)β\betaβ。其总旋转矩阵为:

Rworld=Ry(β)Rz(α) \mathbf{R}_{world} = \mathbf{R}_y(\beta) \mathbf{R}_z(\alpha)Rworld=Ry(β)Rz(α)

2.2 右乘串联:局部坐标系下的连续旋转

相对于就是当连续旋转物体自身当前的、运动着的坐标系的轴来执行时,我们利用右乘串联

计算规则:最终的旋转矩阵是各个旋转矩阵的从左到右的乘法。

Rfinal=R1R2⋯Rn \mathbf{R}_{final} = \mathbf{R}_1 \mathbf{R}_2 \cdots \mathbf{R}_nRfinal=R1R2Rn

几何意义:先执行 R1\mathbf{R}_1R1,再执行 R2\mathbf{R}_2R2,…,最后执行Rn\mathbf{R}_nRn每一次旋转的参考轴,都是在上一次旋转之后得到的新的物体局部坐标系的轴

应用示例(机械臂关节运动):
一个机械臂先绕自身的基座关节Z轴旋转α\alphaα,然后绕其新的第二个关节的Y轴旋转β\betaβ。其总旋转矩阵为:

Rlocal=Rz(α)Ry(β) \mathbf{R}_{local} = \mathbf{R}_z(\alpha) \mathbf{R}_y(\beta)Rlocal=Rz(α)Ry(β)

2.3 对比实验:为何顺序如此重要?

让我们用一个具体的例子来展示其巨大差异。

  • Rz(90∘)\mathbf{R}_z(90^\circ)Rz(90): 绕Z轴旋转90度。
  • Ry(90∘)\mathbf{R}_y(90^\circ)Ry(90): 绕Y轴旋转90度。
  • 初始向量 v=[1,0,0]T\mathbf{v} = [1, 0, 0]^Tv=[1,0,0]T

固定系(左乘)
Rfixed=Ry(90∘)Rz(90∘) \mathbf{R}_{fixed} = \mathbf{R}_y(90^\circ) \mathbf{R}_z(90^\circ)Rfixed=Ry(90)Rz(90)
vfixed′=Rfixedv=(001100010)(100)=(010) \mathbf{v}'_{fixed} = \mathbf{R}_{fixed} \mathbf{v} = \begin{pmatrix} 0 & 0 & 1 \\ 1 & 0 & 0 \\ 0 & 1 & 0 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} = \begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}vfixed=Rfixedv=010001100100=010

局部系(右乘)
Rlocal=Rz(90∘)Ry(90∘) \mathbf{R}_{local} = \mathbf{R}_z(90^\circ) \mathbf{R}_y(90^\circ)Rlocal=Rz(90)Ry(90)
vlocal′=Rlocalv=(0−10001−100)(100)=(00−1) \mathbf{v}'_{local} = \mathbf{R}_{local} \mathbf{v} = \begin{pmatrix} 0 & -1 & 0 \\ 0 & 0 & 1 \\ -1 & 0 & 0 \end{pmatrix} \begin{pmatrix} 1 \\ 0 \\ 0 \end{pmatrix} = \begin{pmatrix} 0 \\ 0 \\ -1 \end{pmatrix}vlocal=Rlocalv=001100010100=001

结果 (010)\begin{pmatrix} 0 \\ 1 \\ 0 \end{pmatrix}010(00−1)\begin{pmatrix} 0 \\ 0 \\ -1 \end{pmatrix}001完全不同!这清晰地证明了固定系旋转和局部系旋转是两种本质不同的物理过程。


3. 另一种视角:坐标系变换与“右乘”向量

在坐标系变换的语境下,大家确实会遇到一种形式上的“向量右乘”。

被动变换与行向量

假设旋转矩阵BAR{}^A_B\mathbf{R}BAR描述了坐标系 {B} 相对于 {A} 的姿态。我们想知道同一个向量v\mathbf{v}v在 {B} 系中的坐标Bv{}^B\mathbf{v}Bv与其在 {A} 系中的坐标Av{}^A\mathbf{v}Av之间的关系。

标准形式(列向量左乘)
Av=BAR Bv {}^A\mathbf{v} = {}^A_B\mathbf{R} \ {}^B\mathbf{v}Av=BARBv

如果我们将向量表示为行向量,并对上述公式两边取转置,利用RT=R−1\mathbf{R}^T = \mathbf{R}^{-1}RT=R1,许可得到:

Avrow=Bvrow BART {}^A\mathbf{v}_{row} = {}^B\mathbf{v}_{row} \ {}^A_B\mathbf{R}^TAvrow=BvrowBART

这个公式在形式上变成了行向量右乘旋转矩阵的转置。其几何意义被动变换改变了观察(描述)它的坐标系。就是:向量在空间中的实际位置不变,我们只


4. 实际应用与总结

左乘一致性与右乘一致性

在构建麻烦的坐标系系统(如机器人D-H模型或SLAM中的姿态图)时,必须选定并遵循一套统一的乘法规则,这被称为一致性

  • 左乘一致性:整个框架的变换推导都遵循左乘规则,变换链的串联是从右到左
  • 右乘一致性:整个系统的变换推导都遵循右乘规则,变换链的串联是从左到右

混合采用规则是许多错误的首要根源。

应用场景总结

场景推荐用法几何解释
无人机/飞船姿态控制左乘串联 (R_final = Ry * Rz)易于理解,所有旋转都相对于固定的大地坐标系。
机械臂逆运动学右乘串联 (R_final = R1 * R2)天然符合关节链结构,每个关节运动都相对于其父关节。
三维建模软件通常给出两种模式(Local/Parent),内部可能统一为一种乘法。为用户提供直观选择,但底层实现需保持一致。
坐标系变换列向量左乘 (ᴬv = ᴬ_BR * ᴮv)标准、无歧义的公式,被大多数数学库采用。

关键结论

  1. 向量旋转用左乘v′=Rv\mathbf{v}' = \mathbf{R}\mathbf{v}v=Rv是唯一标准。
  2. 固定系旋转用左乘串联R_final = R_last ... R_first
  3. 局部系旋转用右乘串联R_final = R_first ... R_last
  4. 理解本质:左乘与右乘的差异源于旋转所参考的坐标系是固定的还是运动的这一根本区别。
  5. 保持一致性:在一个项目或架构中,选定一种乘法规则并始终坚持下去。

希望这篇博客能援助你彻底理解旋转矩阵左乘与右乘的奥秘,从而在未来的工程和科研实践中游刃有余。

http://www.zskr.cn/news/48786.html

相关文章:

  • HEVC视频扩展免费下载
  • 序列化概念及Jackson注解实现动态JSON响应
  • 2025热门学宠物美容师榜:黑龙江学宠物美容师/宠物美容师培训学校毛孩精致变美秘籍!
  • react-window API完全手册:参数、方法与事件全解析 - 指南
  • IOS抓包------Stream
  • 实用指南:数据库的事务和索引
  • 一键账户接管漏洞分析:XSS与CSRF链式攻击实战
  • Vue 3 完全指南:响应式原理、组合式 API 与实战优化 - 实践
  • 创建你的第一个Java文件
  • Imbalance
  • 2025 年 11 月展厅设计公司权威推荐榜:企业展厅、校史馆、博物馆、多媒体数字及VR线上虚拟展厅设计厂家精选
  • 易路AI人才罗盘:点亮组织内部的人才“星空”,让每一次人才决策都精准有据
  • (八大排序)基数排序
  • 业务用例的四个核心要素 - f
  • 20232322 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • 网易梦幻事业部游戏测试开发外包面经(一面)
  • 抚州0.5mm镜面铝板无压痕模厂家优选,品质稳定采购无忧
  • v模型按开发阶段分为四阶段:单元测试、集成测试、系统测试验收测试
  • Python迭代器_迭代器对象可迭代对象必须分开场景
  • 集合框架、io流、多线程
  • Ubuntu 22.04 x86_64 cron不执行原因 - whitesky
  • 为啥要搞utf-8等,直接存储Unicode码点不行吗?
  • 2025 年 11 月闸阀厂家推荐排行榜,美标闸阀,国标闸阀,锻钢闸阀,高压闸阀,碳钢闸阀,高温闸阀,焊接闸阀,法兰闸阀公司推荐
  • 手写汉字
  • 沈阳压死边折弯机模具价格影响因素及采购攻略
  • 贝叶斯优化之采集函数 0基础学习
  • 2025年10月鸡精生产工厂口碑排行榜TOP10:江苏天味食品科技领跑行业
  • 自定义实现Kubernetes CSI
  • 2025年10月复合调味料研发代加工厂家综合实力排行榜
  • Python中,`ord()` 和 `decode()` 有点儿像,区别是什么?