指数映射

 旋转变换的指数形式

   用单位向量ω^代表旋转轴,以及θ代表绕该轴的旋转角度。则可以用三维向量ω^θR3以指数形式来描述旋转。如果将ω^θ分开描述,即为Axis-Angle形式。用ω^θ来描述旋转矩阵R可以有下面几种理解方法:

  1. 某坐标系初始与参考坐标系{s}重合,绕轴ω^旋转θ角度后当到达当前姿态,其相对于{s}的旋转矩阵为R。这种描述方法为 Axis–angle representation
  2. 角速度矢量ω^θ 在参考坐标系{s}中描述,某坐标系初始与参考坐标系{s}重合,以角速度ω^θ转动,经过单位时间到达当前姿态(可由矩阵R表示)。
  3. 角速度矢量ω^在参考坐标系{s}中描述,某坐标系初始与参考坐标系{s}重合,以角速度ω^转动,经过θ时间到达当前姿态(可由矩阵R表示)。
  •  Essential Results from Linear Differential Equations Theory

  考虑下面的一阶线性微分方程:x˙(t)=Ax(t)

  其中,x(t)RnARn×n是一个常量矩阵。若给出初始条件x(0)=x0,则可得到微分方程的解为:x(t)=x0eAt

  矩阵指数eAt可以根据泰勒展开式来计算:eAt=I+At+(At)22!+(At)33!+...

  如果矩阵A可以表达成A=PDP1P为可逆矩阵,则有:

eAt=I+At+(At)22!+(At)33!+...=I+(PDP1)t+(PDP1)(PDP1)t22!+...=P(I+Dt+(Dt)22!+...)P1=PeDtP1

   更进一步,如果A可以对角化,即D是对角矩阵:D=diag{d1,d2,...,dn},则eDt可以很方便的计算:

eDt=[ed1t000ed2t000ednt]

  •  Exponential Coordinates of Rotations

   参考下图中的描述,假设三维向量p(0)绕着转轴ω^旋转θ度后到达p(θ)。用p(t)代表t时刻向量p的位置,则该过程也可以描述为:p(0)以角速度ω^旋转(ω^为单位角速度),从t=0运动到t=θ

   旋转时的速度可用p˙来描述,且有:p˙=ω^×p

  用斜对称矩阵[ω^]可以将向量叉乘变为矩阵与向量乘法,因此上面的微分方程可写为:p˙=[ω^]p

   若ω^=[ωx,ωy,ωz]T,定义斜对称矩阵[ω^]

[ω^]=[0ωzωyωz0ωxωyωx0]

  已知初始条件p(0),该方程形式如前面研究过的x˙=Ax,因此其解为:p(t)=e[ω^]tp(0)

  由于变量tθ可互换,则上面方程可写为:p(θ)=e[ω^]θp(0)

  下面将e[ω^]t进行泰勒展开,计算斜对称矩阵[ω^]的幂可得关系式:[ω^]3=[ω^],利用这一关系我们可以将[ω^]3替换为[ω^][ω^]4替换为[ω^]2[ω^]5替换为[ω^]3...于是可以得到:

e[ω^]θ=I+[ω^]θ+[ω^]2θ22!+[ω^]3θ33!+...=I+(θθ33!+θ55!...)[ω^]+(θ22!θ44!θ66!...)[ω^]2

  根据正弦和余弦函数的泰勒展开式:

sinθ=θθ33!+θ55!...cosθ=1θ22!+θ44!...

  可以将上面公式进行简化。给定ω^θR3,其中θ为任意标量,ω^R3且为单位向量。则根据[ω^]θ进行旋转的旋转矩阵为:Rot(ω^,θ)=e[ω^]θ=I+sinθ[ω^]+(1cosθ)[ω^]2

  该公式也称为Rodrigues’ formula(罗德里格斯公式) 。

   举个例子,下图中坐标系{b}相对于固定参考坐标系{s}的姿态可以描述为:初始时刻两坐标系一致,{b}绕单位向量ω1^=(0,0.866,0.5)旋转θ1=30°=0.524rad后到达当前姿态。

  则{b}相对于{s}的旋转矩阵可以计算为:

R=e[ω1^]θ1=I+sinθ1[ω1^]+(1cosθ1)[ω1^]2=I+0.5[00.50.8660.5000.86600]+0.134[00.50.8660.5000.86600]2=[0.8660.2500.4330.2500.9670.0580.4330.0580.899]

  坐标系{b}的姿态可由矩阵R描述,或者由单位向量ω1^=(0,0.866,0.5)以及转角θ1=0.524rad来描述,即旋转矩阵R的指数坐标为ω1^θ1=(0,0.453,0.262)

  在Mathematica中RotationMatrix函数可以根据转轴和转角计算旋转矩阵:

  •  Matrix Logarithm of Rotations

  如果向量ω^θR3表达了旋转矩阵R的指数坐标,则斜对称矩阵[ω^θ]=[ω^]θ是旋转矩阵R的对数。矩阵的对数是矩阵指数的逆:

  当转角θ不为π的整数倍时,可以根据旋转矩阵R计算出转轴:ωx^=12sinθ(r32r23)ωy^=12sinθ(r13r31)ωz^=12sinθ(r21r12)

  或表述为斜对称矩阵形式:[ω^]=[0ωz^ωy^ωz^0ωx^ωy^ωx^0]=12sinθ(RRT)

  具体推导和细节可参考:Modern Robotics: Mechanics, Planning, and Control   3.2.3.3 Matrix Logarithm of Rotations 

 

 

 

 

参考:

物理引擎中的刚体转动2

四元数指数映射旋转参数化的实际应用

视觉SLAM中的数学基础 第二篇 四元数

视觉SLAM中的数学基础 第三篇 李群与李代数

李群与李代数 - part 2 指数与对数映射、李代数求导与扰动模型

Axis–angle representation

Rodrigues' rotation formula

Lie Groups for 2D and 3D Transformations

Modern Robotics: Mechanics, Planning, and Control  3.2.3 Exponential Coordinate Representation of Rotation

Lie groups, Lie algebras, projective geometry and optimization for 3D Geometry, Engineering and Computer Vision

posted @   XXX已失联  阅读(2711)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示