机器人必备知识——关于李群、李代数的理解

机器人必备知识——关于李群、李代数的理解

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

目录

前言

一、问题提出

1.1 位姿的表述

1.2 矩阵求导的问题

二、李群

2.1 群数学定义

2.2 李群和李代数的数学定义

2.3 欧拉公式

三、李群在机器人中的应用

3.1 SO(3)特殊正交群

3.2 SE(3)特殊欧氏群

总结





前言

在对机器人技术的学习过程中,我们经常会听到“旋量”、“四元数”、“李群”、“李代数”等一些听起来高大上的词汇。首先得认识到,这些词汇都是实用的而非像“神经元”、“类脑”、“智能”之类华而不实的,它们是为了解决实际工程问题而发展出来的。其次,要学会如何真正使用它们还是需要一定的耐心和数学功底,不能因为难而拒绝理解。尽管当今这些工具的库已经很成熟了,而且也是开源的方便获取,甚至很多软件平台都自带这些功能函数,大家在实际使用时也可以直接调用输入输出而不需要知道其内部的具体运行机制,但这不利于大家形成机器人技术的知识体系,进而无法进行更深层次的学习。这篇博客将会详细从图解和公式两个方面理解李群、李代数的知识,这是我的学习总结笔记,如果有问题请大家多多指出。


一、问题提出

1.1 位姿的表述

所谓的机器人,可以理解为一堆连杆,或者叫一堆刚体(柔性机械臂一般简化为连续的欠驱动的多刚体机械臂)。机器人技术,便是对刚体的研究技术,这些技术都是成熟的。对于刚体间的关系,其普遍描述于欧氏空间中。欧氏空间,或者叫平直空间,全称是欧几里德空间(Euclidean Space),顾名思义就是欧几里得建立的以角和空间线的关系为法则的空间。其对于空间内固定的点集主要表现出两个特性:其一是平移特性,所有点向相同方向移动相同的距离;其二是旋转特性,所有点关于同一个旋转轴旋转相同角度。

在大量的文献资料上,不难发现机器人等效为一系列关联的坐标系。由于其描述在欧氏空间,坐标系采用的是笛卡尔坐标系,坐标系之间的关系分为旋转和平移两种,如图1所示。工程上一般将机器人描述的欧氏空间定义为x-y-z的3维欧氏空间,空间内的点表示为3×1的列向量,每一行分别对应x、y、z轴上的值。平移和旋转运算在矩阵乘法中为左乘运算。在运算上,空间内的平移可以用一个3×1的平移矢量表示,其平移运算后空间点仍旧还是空间点;空间内的旋转可以用1个9×9的旋转矩阵表示,其旋转运算后仍旧还是空间点。

图1. 欧氏空间中描述位姿的两种变换

从数学公式上看:

1)平移变化可以表示为

T_{translation} = \begin{bmatrix} d_{x}\\ d_{y}\\ d_{z} \end{bmatrix}

P_{new} = P_{old} + T_{translation}

2)旋转变化可以表示为

T_{rotation} = \begin{bmatrix} r_{11} & r_{12} & r_{13}\\ r_{21} & r_{22} & r_{23}\\ r_{31} & r_{32} & r_{33} \end{bmatrix}

P_{new} =T_{rotation} P_{old}

其中,平移变化可以用3个参数表示,而旋转参数需要用9个参数表示。显然,对于3维度的空间描述过于冗余了。

因此,根据旋转矩阵的9个参数,其中大部分耦合。为了简化旋转模型,减少未知变量,产生了欧拉角描述法、旋量描述法、四元数描述法等描述法。

这样,刚体间的位姿关系就可以用平移变化和旋转变化共同表示。

在欧氏空间中,针对一个3D点的变换,这二者不好合并。一个表达形式是矩阵加法,一个表达形式是矩阵乘法,其按照3D形式表达为:

P_{new} =T_{rotation} P_{old} + T_{translation}

为了简化表示,最好能写成如:

P_{new} = A P_{old}

的形式。因为矩阵本身就表征了向量的一种变换,便于算法的后续处理。旋转变化比较好处理,而平移矩阵如何转变成矩阵乘法依靠3D变换则比较困难。一般将待变换的点扩展1维并将多余维度补作1。

平移变换的齐次形式为:

\begin{bmatrix} P_{new}\\ 1 \end{bmatrix}=\begin{bmatrix} I & T_{translation}\\ 0 & 1 \end{bmatrix} \begin{bmatrix} P_{old}\\ 1 \end{bmatrix}

而旋转变换的齐次形式为:

\begin{bmatrix} P_{new}\\ 1 \end{bmatrix}=\begin{bmatrix} T_{rotation} & 0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} P_{old}\\ 1 \end{bmatrix}

因此,平移旋转的合同齐次形式为(齐次坐标左乘旋转矩阵再左乘平移矩阵):

\begin{bmatrix} P_{new}\\ 1 \end{bmatrix}= \begin{bmatrix} I & T_{translation}\\ 0 & 1 \end{bmatrix} \begin{bmatrix} T_{rotation} & 0\\ 0 & 1 \end{bmatrix} \begin{bmatrix} P_{old}\\ 1 \end{bmatrix} = \begin{bmatrix} T_{rotation} & T_{translation} \\ 0 & 1 \end{bmatrix} \begin{bmatrix} P_{old}\\ 1 \end{bmatrix}

进而,定义位姿矩阵为:

T=\begin{bmatrix} T_{rotation} & T_{translation}\\ 0 & 1 \end{bmatrix} , T \in \mathbb{R}^{4 \times 4}

因此刚体变换方程为:

P_{old} = T P_{new}

1.2 矩阵求导的问题

在实际机器人技术中,需要对其涉及的一些刚体位姿进行测量,而这种测量主要是依赖特定特征空间点进行的,比如移动机器人依赖路标点对机器人本体位姿进行测量,机械臂依赖环境特征点对末端位姿进行测量等等。假想,对于一系列与刚体固定的空间点

p_i

(真实值),以及其在传感器上所表现出的“空间点”

z_i

(观测值),目的为了获得一个最佳的位姿

T

,使得:

min_{T} J(T) = \sum_{i=1}^{N} \left \| z_i - T p_i \right \|_{2}^{2}

这就需要让目标函数

J(T)

对变换矩阵

T

进行求导。

求导本质上是一个高阶多项式的线性和的拆分。然而,由于乘法矩阵存在

T_{rotation}T_{rotation}^{-1} = I

det\left ( R \right ) = 1

两个约束,两个旋转矩阵相加后便不是旋转矩阵,进而任意两个位姿矩阵相加后并不是一个位姿矩阵。因此,矩阵

T

所处的空间对于加法运算不封闭,进入无法进行求导运算,李群李代数刚好能很好地解决这个问题。

刚体的三维旋转矩阵所组成集合等价于一个球体,球体上每一个点都对应了一个旋转变换。

图2. 每个旋转矩阵R都等效于其集合空间空间{M}(单位球)上的一个点

二、李群

2.1 群数学定义

群是对称数学中的一个词。对称的定义:一个数学对象

X

,如果存在

X\rightarrow X

的可逆变换能够使它在某种意义上不变,则该数学对象

X

上所有的对称就构成了一个对称群。

群的定义是:一种集合加上一种运算的代数结构。群

\left ( G,\bigcirc \right )

由集合

G

和运算

\bigcirc

共同构成,对于流形内的

x,y,z \in G

以及流形内的幺元

\varepsilon

,需要满足以下约束:

a) 封闭性:

x\bigcirc y = \in G

b) 同一性:

\varepsilon \bigcirc x = x\bigcirc \varepsilon = x

c) 可逆性:

x^{-1} \bigcirc x = x\bigcirc x^{-1} = \varepsilon

d) 可交换性:

\left ( x\bigcirc y \right ) \bigcirc z = x \bigcirc \left ( y \bigcirc z \right )

(注意:幺元

\varepsilon

为集合中的单位元,与集合中其它元素结合时不会改变其它元素,比如旋转矩阵中的单位阵

I

这个对称群的变换和逆变换数学对象的性质不变,对于旋转而言是显而易见的,因为旋转对对象的形状等参数不产生任何变化。因此旋转变换应该对应了一个群。

2.2 李群和李代数的数学定义

李群的定义:具有群结构的实流形或者复流形。

李群是一个光滑(可微)流形,而其元素满足群的公理。光滑流形是一个局部近似于线性空间的拓扑空间,其光滑性意味着空间内每个点都存在一个唯一的切空间,而这个空间是可以做微积分的线性空间,或是叫做向量空间,如图3所示。

图3. 流形{M}与其向量空间Tx{M}在元素X处相切

可以看到,对于机器人状态空间,则假如流形是机器人的位置空间,那么其切空间便是机器人的速度空间。对于旋转矩阵而言,约束于一个具有单位模长(模长为1)半径的球面流形,其球面上每个点都可以进行微分运算,如图4所示。

图4. 旋转矩阵李群{M}及其在幺元处的切空间

对于李群,流形上的每一个点都是类似的,其切空间也是相似的。李群的切空间,也称作李群的李代数。

下面利用常见的单位球模型简要说明李群和李代数的关系(1940年Hans证明了只有

S^0,S^1,S^3

具有李群结构):

a)如图5所示,假设具有李群结构的单位圆

S^{1}

位于平面

\mathbb{C}

上,该群的集合包含了所有单位复数。单位复数的乘积是单位复数,并且

z^{*}z=1

,其中

z^{*}

z

的共轭复数,也是

z

的逆。那么,李代数

s^{1} = T_{\varepsilon } S^{1}

则是由虚数构成的直线

i\mathbb{R}

,其与实直线

\mathbb{R}

同构,,所以图中用蓝色直线绘制。

图5 S1单位圆模型中李群与李代数的关系

对于初始李群元素

X_1

(用实轴虚轴表示),其经过另一个李群元素

z = cos \theta + i sin \theta

(用θ和虚轴表示)左乘运算后得到另一个李群元素

X_2

X_2 = z X_1

。相较于初始向量

X_1

,该旋转的结果在李群

S^1

上对应着唯一的相对角度

\theta

,在李代数

i\mathbb{R}

上也一定对应了一个长度

\theta

,但是维度降低了。

根据完美的欧拉公式:

cos \theta + i sin \theta= e^{i \theta}

可以得到:

X_2 = \left (cos \theta + i sin \theta \right ) X_1= e^{i \theta} X_1

i \theta = log\left ( X_1 ^{*} X_2 \right )

可以发现,对于乘法运算,李群和李代数之间可以用指数关系描述。通过对数变换,李群的乘法等效于李代数的加法;通过指数变换,李代数的加法等于李群的乘法。

(注意:这类变换和拉氏变换表征时域和频域关系类似。我们知道,拉氏变换联系了信号的时域和频域,时域中的信号乘积等于频域中的卷积,时域中的卷积等于频域中的乘积。)

b)如图6所示,假设具有李群结构的3维单位球单位球

S^{3}

位于空间

\mathbb{H}

上,该群的集合包含了所有的单位四元数,即

q = cos(\theta/2) + usin(\theta/2),u=iu_x+ju_y+ku_z

,其中

u

是一个单位向量,

\theta

是一个单位角。单位四元数其也存在

q^{*} q =1

的性质。该李群所对应的李代数位于与球面相切的纯虚四元数空间

ix+jy+kz \in \mathbb{H}_p

中,并与

\mathbb{R}^{3}

同构,图中用红色网格表示。

图6 S3单位圆模型中李群与李代数的关系

对于初始李群元素

X_1

(用实轴虚轴表示),

X_1=ix+jy+kz

,其经过另一个李群元素

q

(用θ和虚轴i、j、k表示)进行乘运算后得到另一个李群元素

X_2

X_2 = q X_1 q^{*}

。相较于初始向量

X_1

,该旋转的结果在李群

S^3

上对应着唯一的相对角度

\theta

,在李代数

T_{x_{1}}S^{3}

上也一定对应了一个长度

\theta

,但是维度降低了。

可以推导出:

X_2 = q X_1 q^{*} =\left ( cos(\theta/2) + usin(\theta/2) \right ) X_1 \left ( cos(\theta/2) - usin(\theta/2) \right )=X_1 e^{u\theta }
u \theta = log\left ( X_1 ^{*} X_2 \right )

可以发现,其

S^3

李群推导结果与

S^1

李群相似。

2.3 欧拉公式

上述李群和李代数之间的映射主要用到了指数映射,而指数映射中核心运算为欧拉公式:

e^{i \theta} = cos \theta + i sin \theta

公式右边

cos \theta + i sin \theta

描述是复平面的单位圆周运动,如图7所示。其自变量是

\theta

,也就是圆周上点在复平面上的方向;

图7 单位复数的圆周运动

公式左边

e^{i \theta}

可以利用泰勒级数公式展开:

e^{i\theta} \\= 1+\frac{i\theta}{1!} - \frac{\theta^2}{2!} - \frac{i\theta^3}{3!}+\frac{\theta^4}{4!}+\frac{i\theta^5}{5!}+\cdots \\ =\left ( 1 - \frac{\theta^2}{2!} + \frac{\theta^4}{4!} + \cdots \right ) + i\left ( \theta-\frac{\theta^3}{3!} + \frac{\theta^5}{5!} + \cdots \right ) \\=cos \theta + i sin \theta

这是利用泰勒级数公式展开得到,不是十分形象,可以利用更一般的式子进行形象表述e的指数旋转过程。

根据定义:

e=\lim_{n \rightarrow \infty } \left ( 1 + \frac{1}{n} \right )^{n}

e^{i}=\lim_{n \rightarrow \infty } \left ( 1 + \frac{i}{n} \right )^{n}
e^{i \theta }= \left [ \lim_{n \rightarrow \infty } \left ( 1 + \frac{i}{n} \right )^{n} \right ] ^{\theta }

复数乘法中,乘以

\left ( 1+ \frac{i}{n} \right )

等价于伸缩和旋转运动,其幅度与

n

的取值直接相关。

\theta =1

(旋转弧度1),

n=3

时,

e^{i}= \left ( 1+\frac{i}{3} \right ) \left ( 1+\frac{i}{3} \right ) \left ( 1+\frac{i}{3} \right )

其在复平面运动如图8所示:

图8 θ=1,n=3的指数展开过程

\theta =1

(旋转弧度1),

n=10

时,

e^{i}= \left ( 1+\frac{i}{10} \right )\left ( 1+\frac{i}{10} \right )\cdots \left ( 1+\frac{i}{10} \right )

其在复平面运动如图9所示:

图9 θ=1,n=10的指数展开过程

\theta =1

(旋转弧度1),

n=50

时,

e^{i}= \left ( 1+\frac{i}{50} \right ) \left ( 1+\frac{i}{50} \right ) \cdots \left ( 1+\frac{i}{50} \right )

其在复平面运动如图10所示:

图9 θ=1,n=50的指数展开过程

因此,可以推断出,当

n \rightarrow \infty

时,

e^{i}

在单位圆上转过了1弧度。同样,当

\theta =\pi

时,

e^{i\pi }

在单位圆上转过了半圈;当

\theta =2\pi

时,

e^{2\pi i }

在单位圆上转过了整圈;详见知乎:https://www.matongxue.com/madocs/8/

特别的,

n

控制了变换的幅度,

\theta

控制了变换的角度。

总的来说,通过欧拉公式可以看到,指数变换可以理解为是一个卷曲的映射。

三、李群在机器人中的应用

经过第二章的推导可以得到李群的定义:

给定一个李群

M

和一个集合

V

,将

X

作用于元素

v

记作:

X\cdot v

,其中

X \in M, v \in V

,定义这类作用为需满足李群约束:

\cdot : M \times V \rightarrow V,\left ( X,v \right ) \rightarrow X \cdot v

其具备以下李群性质:

a)同一性:

\varepsilon \cdot v = v

b)交换性:

\left ( x \cdot y \right ) \cdot v = x \cdot \left ( y \cdot v \right )

3.1 SO(3)特殊正交群

常见的有旋转矩阵

R

构成的李群

SO(3)

,以及其对应的

\mathfrak{so}\left ( 3 \right )

李代数。

SO(3)

李群也被称作特殊正交群,记为:

SO(3) = \left \{ R \in \mathbb{R}^{3 \times 3} | RR^{T} = I , det(R) = 1 \right \}

\mathfrak{so}\left ( 3 \right )

具有3个自由度,比李群

SO(3)

9个参数简洁,记为:

\mathfrak{so}\left ( 3 \right ) = \left \{ \phi \in \mathbb{R}^3, \Phi =\phi^{\wedge } \in \mathbb{R}^{3 \times 3} \right \}

具体数学推导包括:

由于旋转矩阵

R

是正交矩阵,其满足的条件:

R^{-1} = R^{T}

则可以得到

RR^{T} = I

假设

R

是一个随着时间变化的量(实际也得变化),那么

R

可以用

R\left ( t \right )

表示,则,

R\left ( t \right )R^{T} \left ( t \right )= I

等式两边对

t

进行求导,可以得到:

\dot{R}\left ( t \right )R^{T} \left ( t \right )+{R\left ( t \right )\dot{R}^{T} \left ( t \right )= 0
\dot{R}\left ( t \right )R^{T} \left ( t \right )=-{R\left ( t \right )\dot{R}^{T} \left ( t \right )
\dot{R}\left ( t \right )R^{T} \left ( t \right )=- \left ( \dot{R}\left ( t \right )R^{T} \left ( t \right ) \right )^{T}

不难发现,

\dot{R}\left ( t \right )R^{T} \left ( t \right )

是一个反对称矩阵,令:

\phi \left ( t \right )^{\wedge }=\dot{R}\left ( t \right )R^{T} \left ( t \right )

两边同右乘

R(t)
\phi \left ( t \right )^{\wedge } R \left ( t \right )=\dot{R}\left ( t \right )
\dot{R}\left ( t \right ) = \phi^{\wedge } (t) R \left ( t \right )

求解该微分方程可以得到:

R(t) = R(t_0)e^{\phi ^{\wedge } t} = e^{\phi ^{\wedge } t}

即,通过指数映射关系,

\phi _{0}^{\wedge } t

R(t)

一一对应。

更一般地,

SO(3)

李群和李代数的关系被写作:

R = e^{\phi^{\wedge }}

给定李代数

\phi ^{\wedge }

可以计算唯一对应的旋转矩阵

R

。这是李代数和李群之间的指数映射。

值得注意的是,反对称标识符为:

\phi ^{\wedge } =\Phi = \begin{bmatrix} 0 & -\omega_z & \omega_y\\ \omega_z & 0 & -\omega_x\\ -\omega_y & \omega_x & 0 \end{bmatrix}

\Phi^{\vee } = \phi

反对称矩阵

A^{T} = -A

,其主要性质包括:

1)反对称矩阵的主对角线元素均为0,而非主对角线上的上三角和下三角元素反号;

2)若A为反对称矩阵,则A的逆,λA均为反对称矩阵;

3)若A,B均为反对称矩阵,则A±B亦为反对称矩阵;

4)若A为反对称矩阵,B为对称矩阵,则AB-BA为对称矩阵;

5)奇数阶的反对称矩阵行列式必为0,比如

det \left ( a^{\wedge } a^{\wedge } a^{\wedge } \right )=0

6)反对称矩阵的特征值是0或者是纯虚数,并且对应于纯虚数的特征向量的实部和虚部形成的实向量等长且相互正交。

特别的,李代数可以用向量

\omega = \left ( \omega_x, \omega_y, \omega_z \right ) \in \mathbb{R}^{3}

表示,这是一个用3个未知量

\omega_x, \omega_y, \omega_z

表示

3\times 3

矩阵

\phi ^{\wedge }

的方法,即

\phi^{\wedge } = \omega_x E_x + \omega_y E_y + \omega_z E_z

其中,

E_x = \begin{bmatrix} 0 & 0 & 0\\ 0& 0 & -1\\ 0 &1 &0 \end{bmatrix} , E_y = \begin{bmatrix} 0 & 0 & 1\\ 0 & 0 & 0\\ -1 & 0 & 0 \end{bmatrix}, E_z = \begin{bmatrix} 0 & -1 & 0\\ 1 & 0 & 0\\ 0 & 0 & 0 \end{bmatrix},

但是,在继续计算中发现,对于矩阵的指数运算,我们没有合适的运算工具,只能通过泰勒展开:

e^{\phi ^{\wedge }} = \sum_{n=0}^{\infty } \frac{1}{n!} \left ( \phi^{\wedge } \right )

注意到这里的n需要趋于无穷,显然这运算量巨大,不是一种好的逼近方法,需要将其再进一步转换回旋转标识。

考虑到李代数

\mathfrak{so}\left ( 3 \right )

其为一个三维向量,那么其可以用一个模长

\theta

和方向向量

a

进行表示,即:

\phi = \theta a

对于方向向量

a

,其存在以下两条性质:

a^{\wedge } a^{\wedge } \\= \begin{bmatrix} 0 & -a_3 & a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{bmatrix} \begin{bmatrix} 0 & -a_3 & a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{bmatrix} \\= \begin{bmatrix} -a_3^2-a_2 ^2 & a_1a_2 & a_1a_3\\ a_1a_2 & -a_1^2-a_3^2 & a_2a_3\\ a_1a_3 & a_2a_3 & -a_1^2-a_2^2 \end{bmatrix} \\= \begin{bmatrix} -1+a_1^2 & a_1a_2 & a_1a_3\\ a_1a_2 & -1+a_2^2 & a_2a_3\\ a_1a_3 & a_2a_3 & -1+a_3^2 \end{bmatrix} \\=aa^{T}-I

以及其推论

a^{\wedge }a^{\wedge }a^{\wedge } =a^{\wedge }\left ( aa^{T} - I \right ) = -a^{\wedge }

再回到李代数根据微分方程的解:

R = e^{\phi^{\wedge }}

直接对其进行泰勒展开

\phi

无法处理,需要将其分解为模长和向量的形式,进而,

e^{\phi^{\wedge }} \\ = e^{\theta a ^{\wedge }} \\= I + \frac{\theta a^{\wedge }}{1!} + \frac{ \theta ^{2} a^{\wedge } a^{\wedge }}{2!} + \cdots + \frac{\theta^{n} a^{\wedge } a^{\wedge }\cdots a^{\wedge }}{n!} \\ = aa^T - a^{\wedge }a^{\wedge } + \theta a^{\wedge } + \frac{1}{2} \theta^{2} a^{\wedge }a^{\wedge }+\cdots +\frac{1}{n!} \theta^{n} a^{\wedge }a^{\wedge }\cdots a^{\wedge } \\=aa^{T} +\left ( \theta - \frac{1}{3!} \theta^{3}+ \frac{1}{5!} \theta^{5}-\cdots \right )a^{\wedge }-\left ( 1-\frac{1}{2!} \theta^{2} + \frac{1}{4!} \theta^{4} -\cdots \right )a^{\wedge }a^{\wedge } \\= aa^{T} + sin\theta a^{\wedge } -cos \theta a^{\wedge }a^{\wedge } \\=aa^{T} + sin\theta a^{\wedge } - cos \theta\left ( aa^{T} - I \right ) \\= (1-cos\theta) aa^{T} + sin\theta a^{\wedge } +cos \theta I

这也被称作罗德里格斯公式(Rodriguez formula),表征了由旋转向量

\left ( \theta, a \right )

到旋转矩阵

R

的映射关系。

因此,指数映射关系可以重写为:

R= (1-cos\theta) aa^{T} + sin\theta a^{\wedge } +cos \theta I

反之,如果要从李代数

\mathfrak{so}\left ( 3 \right )

推导到李群

SO(3)

,则需要依靠对数映射。其推导过程如下:

对于公式

R = e^{\phi^{\wedge }}

两边取自然对数,得到对数映射的通式

\phi = \ln \left ( R \right )^{\vee }

考虑到对数的泰勒展开公式:

\ln(1+x) = \left\{\begin{matrix} x-\frac{x^2}{2}+\frac{x^3}{3}-\frac{x^4}{4}+\cdots +\left ( -1 \right )^{(n-1)} \frac{x^{n}}{n}, n=2k+1\\ x-\frac{x^2}{2}+\frac{x^3}{3}-\frac{x^4}{4}+\cdots +\left ( -1 \right )^{(n+1)} \frac{x^{n}}{n}, n=2k \end{matrix}\right.

进而对等式的右侧进行泰勒级数展开:

\phi = \left ( \sum_{n=0}^{\infty } \frac{(-1)^n}{n+1} \left ( R-I \right )^{n+1}\right )^{\vee }

这也没办法进行求解。

对于李代数

\phi ^{\wedge } \cong \left ( \theta ,a \right )

,可以利用矩阵的迹对其方向和模长进行分开求解。

其中对于李代数的模长

\theta

,这是标量,最快的求解方式是对罗德里格斯公式两边取迹:

tr\left ( R \right ) \\=cos\theta tr\left ( I \right ) +(1-cos\theta) tr\left ( a a^{\wedge } \right ) + sin \theta tr\left ( a^{\wedge } \right ) \\ = 3cos\theta +(1-cos\theta) + 0\\= 1+2cos\theta

可以得到

\theta

R

的对应关系:

\theta = arccos\left ( \frac{tr\left ( R \right ) - 1}{2} \right )

对于其转轴方向

a

,由于旋转矩阵的特性,其存在

Ra = a

。这就等价于

a

为矩阵

R

特征值为1所对应的特征向量,对该矩阵进行求解再进行归一化可以得到旋转轴单位向量

a

可以发现,旋转矩阵的李群和李代数之间的变换运算主要是依赖罗德里格斯公式进行的,而罗德里格斯公式的核心并不是李代数,而是李代数的拆解形式

\phi ^{\wedge } \cong \left ( \theta ,a \right )

,也就是旋量的形式,其李群李代数的直观表现如图10所示,三维向量p旋转至新的向量p‘时,这个旋转变换所对应的旋转矩阵R可以等效为绕轴a旋转θ角度的定轴旋转,也就是旋量,旋量在其切空间的表示就是李代数。

图10 旋转矩阵李群李代数转换关系示意图

3.2 SE(3)特殊欧氏群

欧氏矩阵是旋转矩阵和位移向量的齐次补齐,欧氏矩阵所构成的

SE(3)

李群也被称作特殊欧氏群,记为:

SE(3) = \left \{ T = \begin{bmatrix} R & d\\ 0^{T} & 1 \end{bmatrix} \in \mathbb{R}^{4 \times 4} | R \in SO(3), d \in \mathbb{R}^{3} \right \}

相较于旋转矩阵

\mathbb{R}^{3 \times 3}

所形成的

SO(3)

李群的李代数

\mathfrak{so}\left ( 3 \right )

处于

\mathbb{R}^{3}

空间,欧氏矩阵

\mathbb{R}^{4 \times 4}

所形成的

SE(3)

群其对应的李代数

\mathfrak{se}\left ( 3 \right )

处于

\mathbb{R}^{6}

空间中,其具有6个独立的变量,记为:

\mathfrak{se}\left ( 3 \right ) = \left \{ \xi = \begin{bmatrix} \rho \\ \phi \end{bmatrix} \in \mathbb{R}^{6},\rho \in \mathbb{R}^{3} , \phi \in so(3), \xi ^{\wedge } = \begin{bmatrix} \phi^{\wedge } & \rho \\ 0 & 0 \end{bmatrix} \in \mathbb{R}^{4\times 4} \right \}

同样,其具体数学推到为:

考虑到欧氏变换矩阵与其逆矩阵的乘积为单位向量,即不对物体产生作用:

T(t) T^{-1}(t) = I

对上述等式两边进行对

t

求导,可以得到:

\dot{T}(t) T^{-1}(t) + T(t) \dot{T}^{-1}(t) = 0
\dot{T}(t) T^{-1}(t) =- T(t) \dot{T}^{-1}(t)

同样,令  

\Xi(t) = \xi^{\wedge }(t) = \dot{T}(t) T^{-1}(t)

,不难发现

\xi^{\wedge }

也是一个反对称矩阵。

值得注意的是,欧式变换矩阵的逆矩阵为:

T^{-1}(t) = \begin{bmatrix} R^{-1}(t) & -R^{-1}d(t)\\ 0 & 1 \end{bmatrix} = \begin{bmatrix} R^{T}(t) & -R^{T}d(t)\\ 0 & 1 \end{bmatrix}

因此,

\xi^{\wedge } (t) \\ = \dot{T}(t) T^{-1}(t) \\=\begin{bmatrix} \dot{R}(t) & \dot{d}(t) \\ 0 & 1 \end{bmatrix} \begin{bmatrix} R^{T}(t) & -R^{T}d(t) \\ 0 & 1 \end{bmatrix} \\ = \begin{bmatrix} \dot{R}(t)R^{T}(t) & -\dot{R}(t) R^{T}d(t) +\dot{d}(t) \\ 0 & 0 \end{bmatrix}

令 

\phi ^{\wedge } (t)= \dot{R}(t) R^{T}(t)

\rho (t) = \dot{d}(t) -\dot{R}(t) R^{T}d(t)

,则

\xi^{\wedge } (t)= \begin{bmatrix} \phi^{\wedge }(t) & \rho(t) \\ 0 & 0 \end{bmatrix}

对于

\rho (t)

,很容易发现其为一个3×1的矩阵,而

\phi ^{\wedge }

\mathfrak{so}\left ( 3 \right )

,因此特殊欧氏群的李代数

\mathfrak{se}\left ( 3 \right )

可用6个变量表示,这就是旋量,记为:

\xi(t) = \begin{bmatrix} \rho(t) \\ \phi(t) \end{bmatrix}

这里有的论文将

\xi(t)

中的平移部分放上面,旋转部分放下面,有的则反过来旋转部分放上面,平移部分放下面。本文采用的是前者。

和特殊正交群一样,特殊欧氏群的李群和李代数之间也是指数/对数映射关系,根据等式:

\xi^{\wedge } = \dot{T}(t) T^{-1}(t)
\dot{T}(t) = \xi^{\wedge }(t)T(t)

其通解也是:

T(t) = e^{\xi^{\wedge } t}

该式子仅在时刻

t

附近有效。当知道李代数

\xi^{\wedge }

和时间

t

时,欧式变换矩阵

T(t)

也通过指数映射唯一确定,这是

\mathfrak{se}\left ( 3 \right )

SE(3)

的映射关系。

\xi^{\wedge }

进行指数映射展开:

e^{\xi^{\wedge }} \\ = \sum_{n=0}^{\infty } \frac{1}{n!} \left (\xi^{\wedge } \right )^{n} \\ = I+ \xi^{\wedge }+\frac{1}{2!} \left ( \xi^{\wedge } \right )^2+\frac{1}{3!} \left ( \xi^{\wedge } \right )^2 + \cdots + \frac{1}{n!} \left ( \xi^{\wedge } \right )^n

通过递推关系可以发现:

\xi^{\wedge } = \begin{bmatrix} \phi^{\wedge } & \rho \\ 0 & 0 \end{bmatrix}

\left ( \xi^{\wedge } \right )^2 = \begin{bmatrix} \phi^{\wedge } & \rho \\ 0 & 0 \end{bmatrix} \begin{bmatrix} \phi^{\wedge } & \rho \\ 0 & 0 \end{bmatrix}= \begin{bmatrix} \left ( \phi^{\wedge } \right )^2 & \phi^{\wedge } \rho \\ 0 & 0 \end{bmatrix}

\left ( \xi^{\wedge } \right )^3 =\begin{bmatrix} \left ( \phi^{\wedge } \right )^2 & \phi^{\wedge } \rho \\ 0 & 0 \end{bmatrix} \begin{bmatrix} \phi^{\wedge } & \rho \\ 0 & 0 \end{bmatrix}= \begin{bmatrix} \left ( \phi^{\wedge } \right )^3 & \left ( \phi^{\wedge } \right )^2 \rho \\ 0 & 0 \end{bmatrix}

...

\left ( \xi^{\wedge } \right )^n =\begin{bmatrix} \left ( \phi^{\wedge } \right )^{n-1} & \left ( \phi^{\wedge } \right )^{n-2} \rho \\ 0 & 0 \end{bmatrix} \begin{bmatrix} \phi^{\wedge } & \rho \\ 0 & 0 \end{bmatrix}= \begin{bmatrix} \left ( \phi^{\wedge } \right )^n & \left ( \phi^{\wedge } \right )^{n-1} \rho \\ 0 & 0 \end{bmatrix}

因此,指数展开式重写为:

e^{\xi^{\wedge }} \\=\sum_{n=0}^{\infty } \frac{1}{n!}\begin{bmatrix} \left ( \phi^{\wedge } \right )^{n} & \left ( \phi^{\wedge } \right )^{n-1} \rho \\ 0 & 0 \end{bmatrix} \\ = \begin{bmatrix} \sum_{n=0}^{\infty } \frac{1}{n!} \left ( \phi^{\wedge } \right )^{n} & \sum_{n=0}^{\infty } \frac{1}{n!} \left ( \phi^{\wedge } \right )^{n-1} \rho \\ 0 & I \end{bmatrix} \\ := \begin{bmatrix} R & J\rho \\ 0 & I \end{bmatrix} \\ = T

这里注意到矩阵的指数展开有一个单位阵

I

这使得右下角0元素变为1。

对于

R=\sum_{n=0}^{\infty } \frac{1}{n!} \left ( \phi^{\wedge } \right )^{n}

,由

\mathfrak{so}\left ( 3 \right )

的计算可以知道,

\sum_{n=0}^{\infty } \frac{1}{n!} \left ( \phi^{\wedge } \right )^{n} \\= I + \frac{\theta a^{\wedge }}{1!} + \frac{ \theta ^{2} a^{\wedge } a^{\wedge }}{2!} + \cdots + \frac{\theta^{n} a^{\wedge } a^{\wedge }\cdots a^{\wedge }}{n!} \\= (1-cos\theta) aa^{T} + sin\theta a^{\wedge } +cos \theta I

对于矩阵

J

同样指数映射需要借助罗德里格斯公式将

\phi^{\wedge }

转化为方向向量

a

和模长

\theta

进行化简,

J\\=\sum_{n=0}^{\infty } \frac{1}{n!} \left ( \phi^{\wedge } \right )^{n-1} \\=I+\frac{1}{2!} \theta a^{\wedge } + \frac{1}{3!} \left ( \theta a^{\wedge } \right )^{2} + \cdots +\frac{1}{n!} \left ( \phi^{\wedge } \right )^{n-1} \\= I + \left ( \frac{1}{2!} \theta - \frac{1}{4!} \theta^3 + \cdots \right )a^{\wedge } + \left ( \frac{1}{3!} \theta^2 - \frac{1}{5!} \theta^4 + \cdots \right ) \left ( a^{\wedge } \right )^{2} \\=I + \frac{1}{\theta} \left ( \frac{1}{2!} \theta^2 - \frac{1}{4!} \theta^4 + \cdots \right )a^{\wedge } +\frac{1}{\theta} \left ( \frac{1}{3!} \theta^3 - \frac{1}{5!} \theta^5 + \cdots \right ) \left ( a^{\wedge } \right )^{2} \\=I + \frac{1}{\theta} (1-cos\theta) a^{\wedge } + \frac{\theta - sin\theta}{\theta} \left ( aa^{T} - I \right ) \\= \frac{sin\theta}{ \theta} I + \left ( 1-\frac{sin\theta}{\theta} \right ) aa^T + \frac{1-cos\theta}{\theta} a^{\wedge }

这样,再已知

\mathfrak{se}\left ( 3 \right )

\phi^{\wedge }

\rho

之后,可以将

\phi^{\wedge }

转化为

a

\theta

,进而求解出欧式变换矩阵T。

反之,求取

SE(3)

\mathfrak{se}\left ( 3 \right )

的对数映射,其与

SO(3)

\mathfrak{so}\left ( 3 \right )

的变换类似,

利用和从

SO(3)

中利用旋转矩阵

R

提取旋量

a

\theta

一模一样的方法,我们可以获得欧氏变换矩阵的

a

\theta

,这样可以得到

\mathfrak{se}\left ( 3 \right )

中的

\phi^{\wedge }

同时,考虑到平移变换满足关系:

d =J\rho

\rho =J^{-1} d

因此,通过计算旋量

a

\theta

也可以计算得到

J

,进而根据平移向量

d

求解线性方程可以得到

\mathfrak{se}\left ( 3 \right )

中的

\rho

。这就完成了

SE(3)

\mathfrak{se}\left ( 3 \right )

的对数映射。

a至此,在机器人应用中的李群李代数的变换关系为如图11所示(来自《视觉SLAM十四讲》)。

图11 机器人技术中常用的特殊正交群和特殊欧氏群的李群李代数映射关系

3.3 李代数的指数映射性质

假设李代数

\phi^{\wedge }

存在,则其指数映射存在以下几个性质(后续为了书写方便,

exp\left ( \cdot \right ) := e^{\left ( \cdot \right )}

 ):

(1)

\exp\left ( \left ( t+s \right ) \phi ^{\wedge } \right ) = \exp \left ( t \phi ^{\wedge } \right ) + \exp \left ( s \phi ^{\wedge } \right )

(2)

\exp\left ( t \phi^{\wedge } \right ) = \exp \left ( \phi^{\wedge } \right )^{t}

(3)

\exp\left ( -\phi^{\wedge } \right ) = \exp\left ( \phi^{\wedge } \right )^{-1}

(4)

\exp\left ( \Phi \phi^{\wedge } \Phi^{-1} \right ) = \Phi \exp\left ( \phi^{\wedge } \right ) \Phi^{-1}, \Phi =\exp\left ( \phi^{\wedge } \right )

...

目前想到的就这么多,看到这想必大家已经入门了,剩下的探索就交给大家吧


总结

为了求导,人类可谓是无所不用其极!

Read more

【2026 最新】Python 与 PyCharm 详细下载安装教程 带图展示(Windows 版)

【2026 最新】Python 与 PyCharm 详细下载安装教程 带图展示(Windows 版)

前言 Python 是当今最流行的编程语言之一,广泛应用于 Web 开发、数据分析、人工智能、自动化脚本等领域。而 PyCharm 作为 JetBrains 公司推出的 Python 专业集成开发环境(IDE),凭借智能代码补全、调试器、虚拟环境管理、版本控制集成等强大功能,成为众多开发者首选工具。 本教程专为 Windows 系统用户 编写,将手把手指导你完成 Python 解释器 和 PyCharm IDE 的下载、安装与基础配置,助你快速搭建本地 Python 开发环境。 一、Python 下载与安装 1.1 访问 Python 官网 打开浏览器,访问 Python 官方网站:Download

By Ne0inhk

利用Python与Virtual Audio Cable实现系统音频的实时捕获与处理

1. 为什么你需要一个虚拟音频线? 如果你曾经想录制电脑里播放的音乐、游戏音效,或者在线会议的声音,你可能会发现一个尴尬的问题:直接用麦克风对着音箱录,效果差不说,还全是环境噪音。更专业的做法是直接从系统内部“抓取”音频流,就像水管工直接从主管道接水,而不是拿水桶去接水龙头流出来的水。这就是虚拟音频线(Virtual Audio Cable,简称VAC)的用武之地。 简单来说,虚拟音频线是一个软件驱动程序,它在你的操作系统里创建了一个虚拟的“声音管道”。你可以把任何正在播放声音的应用程序(比如音乐播放器、浏览器、游戏)的输出,指定到这个虚拟管道里。然后,另一个应用程序(比如你的Python脚本、录音软件)就可以从这个管道的另一端,像读取麦克风一样,读取到纯净、无杂音的系统内部音频。 我最初接触这个技术,是因为想做一个自动化的直播音效播放器。我需要让Python脚本能实时播放一些音效,并且这些音效要和我的麦克风声音混合后,一起送到直播软件里。如果不用虚拟音频线,要么音效会从我的音箱放出来被麦克风拾取(有回声和延迟),要么就得用复杂的音频接口硬件。而虚拟音频线用纯软件的方式,完美解决

By Ne0inhk
AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南

AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南

AI的提示词专栏:Prompt 与 Python Pandas 的结合使用指南 该指南聚焦 Prompt 与 Pandas 结合的实践应用,先阐述二者结合的价值 —— 降低 Pandas 学习门槛、提升数据处理效率,接着梳理代码生成、解释、优化等 6 大核心应用场景及对应 Prompt 目标。随后详解高质量 Prompt 设计的五大原则,强调需精准描述数据结构、明确操作目标等要点。通过 5 个实战案例,从基础数据清洗到批量生成报表,展示 Prompt 设计、模型输出与结果验证全流程,并给出 8 个高频问题的解决方案。最后总结核心价值,提供扩展学习建议,助力读者掌握 “自然语言驱动数据处理” 能力,形成高效工作流。 人工智能专栏介绍     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的

By Ne0inhk
Python保姆级下载安装教程-->Windows版本

Python保姆级下载安装教程-->Windows版本

Windows版本保姆级下载安装 一、下载Python  1、点击下载官网地址 Python官方网站地址https://www.python.org/downloads/ 2、官网页面如下: 3、点击下载界面: 上面最新的版本是3.14.2版本,一般来说新版较之老版优化了一些内容且版本向下兼容,但是不建议下载最新版本,因为python在很多地方使用时没有更新到最新版本,向下兼容性并不好,但也不要太低版本的,很多不适用。 点击Downloads,选择适合自己电脑系统的版本,我的电脑是Windows系统,就选择了Windows,点击后会跳转到另一个页面 【Stable Releases】:稳定发布版本,是官方完成全面测试、修复已知 Bug 的成熟版本,运行稳定、风险低,无论入门学习还是机器视觉项目开发,都优先选这个版本; 【Pre-releases】:预发布版本,属于测试阶段的 “体验版”,可能包含新功能但存在未修复的 Bug,稳定性差,小白或做实际项目(如机器视觉开发)千万别选,易出现代码报错、

By Ne0inhk