当前位置: 首页 > 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}_1 Rfinal=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}_n Rfinal=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=BAR Bv

如果我们将向量表示为行向量,并对上述公式两边取转置,利用 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}^T Avrow=Bvrow BART

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


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.dtcms.com/a/481716.html

相关文章:

  • c 网站开发数据库连接网站扫码充值怎么做的
  • 第三方媒体流压力测试:k6插件xk6-webrtc的使用来测试媒体流的性能
  • 综合门户媒体发稿哪家靠谱
  • iis网站属性没有asp.net微信订阅号做微网站
  • 【Nest】权限管理——RBAC/CASL
  • 使用LSTM进行人类活动识别
  • 列表标签之有序标签(本文为个人学习笔记,内容整理自哔哩哔哩UP主【非学者勿扰】的公开课程。 > 所有知识点归属原作者,仅作非商业用途分享)
  • AI时代BaaS | 开源的后端即服务(BaaS)平台Supaba
  • 达梦存储结构篇
  • 桂林网站制作网站佛山公共交易资源平台
  • 域名验证网站如何找推广平台
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段-二阶段(1):文法運用
  • C++面向对象进阶:从构造函数到static成员
  • python3GUI--模仿百度网盘的本地文件管理器 By:PyQt5(详细分享)
  • Go 1.21 新特性:context.AfterFunc 的实用指南
  • Acer软件下载
  • 分组密码:加密模式、可鉴别加密模式、加密认证模式
  • RocketMQ高并发编程技巧(二)
  • 算法沉淀第二天(Catching the Krug)
  • redis-4.0.11-1.ky10.sw_64.rpm安装教程(申威麒麟V10 64位系统详细步骤)
  • 为企业为什么做网站企业网站建设注意什么
  • 从监听风险到绝对隐私:Zoom偷听门后,Briefing+CPolar重新定义远程会议安全标准
  • 网站源代码下载工具网站备案网站前置审批
  • 基于GENESIS64核心可视化组件GraphWorX64的工业图形设计解决方案
  • QML学习笔记(三十七)QML的Slider
  • 3:Django-migrate
  • 【Linux】网络基础概念
  • Go语言技术与应用(三):服务注册发现机制详解
  • 网线学习笔记
  • 【OpenHarmony】存储管理服务模块架构