SVD求解Ax=0

2024-05-27 13:20
文章标签 求解 ax svd

本文主要是介绍SVD求解Ax=0,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

源于计算机视觉life的LiDAR+视觉+IMU多传感器融合SLAM:原理推导+源码逐行详解+项目实战

SVD求解Ax=0

首先,我们需要了解四元数的基本概念。四元数是由三个虚部和一个实部组成的复数扩展,可以用来表示三维空间中的旋转。四元数的乘法规则如下:

q 1 ⊗ q 2 = [ q 1 ] L q 2 = [ q 2 ] R q 1 q_1 \otimes q_2 = [q_1]_L q_2 = [q_2]_R q_1 q1q2=[q1]Lq2=[q2]Rq1

其中,

  • [ q 1 ] L [q_1]_L [q1]L 是左乘矩阵:
    [ p w − p x − p y − p z p x p w − p z p y p y p z p w − p x p z − p y p x p w ] \begin{bmatrix}p_w & -p_x & -p_y & -p_z\\p_x & p_w & -p_z & p_y\\p_y & p_z & p_w & -p_x\\p_z & -p_y & p_x & p_w\end{bmatrix} pwpxpypzpxpwpzpypypzpwpxpzpypxpw
  • [ q 1 ] R [q_1]_R [q1]R 是右乘矩阵:
    [ q w − q x − q y − q z q x q w − q z q y q y q z q w − q x q z − q y q x q w ] \begin{bmatrix}q_w & -q_x & -q_y & -q_z\\q_x & q_w & -q_z & q_y\\q_y & q_z & q_w & -q_x\\q_z & -q_y & q_x & q_w\end{bmatrix} qwqxqyqzqxqwqzqyqyqzqwqxqzqyqxqw

化简一下,即:

  • [ q 1 ] L = q w I + [ 0 − q v → q v → [ q v → ] × ] [q_1]_L = q_w I + \begin{bmatrix}0 & -\overrightarrow{q_v}\\ \overrightarrow{q_v} & [\overrightarrow{q_v}]_{\times}\end{bmatrix} [q1]L=qwI+[0qv qv [qv ]×]
  • [ q 1 ] R = q w I + [ 0 − q v → q v → − [ q v → ] × ] [q_1]_R = q_w I + \begin{bmatrix}0 & -\overrightarrow{q_v}\\ \overrightarrow{q_v} & -[\overrightarrow{q_v}]_{\times}\end{bmatrix} [q1]R=qwI+[0qv qv [qv ]×]

其中,

  • [ a ] × ≜ [ 0 − a z a y a z 0 − a x − a y a x 0 ] [\mathbf{a}]_{\times} \triangleq \begin{bmatrix}0 & -a_z & a_y\\a_z & 0 & -a_x\\-a_y & a_x & 0\end{bmatrix} [a]× 0azayaz0axayax0

对于SVD求解Ax=0,举个例子,如lidar和IMU的外参标定,有以下关系

Q b h + 1 b k L q i l = Q l h + 1 l i R q l b Q^{b_k L}_{b_h+1} q^l_i = Q^{l_i R}_{l_{h+1}} q^b_l Qbh+1bkLqil=Qlh+1liRqlb

合并之后为:

( Q b h + 1 b k L − Q l h + 1 l i R ) q l b = 0 (Q^{b_k L}_{b_h+1} - Q^{l_i R}_{l_{h+1}}) q^b_l = 0 (Qbh+1bkLQlh+1liR)qlb=0

通常来说,我们会收集若干个IMU和lidar的相对旋转和平移,则可以联立如下:

[ Q b n − 1 b n L − Q l n − 1 l n R Q b n − 2 b n − 1 L − Q l n − 2 l n − 1 R ⋮ Q b 0 b 1 L − Q l 0 l 1 R ] q l b = A 4 n × 4 q l b = 0 (1) \begin{bmatrix} Q^{b_n L}_{b_{n-1}} - Q^{l_n R}_{l_{n-1}} \\ Q^{b_{n-1} L}_{b_{n-2}} - Q^{l_{n-1} R}_{l_{n-2}} \\ \vdots \\ Q^{b_1 L}_{b_0} - Q^{l_1 R}_{l_0} \end{bmatrix} q^b_l = A_{4n\times 4} q^b_l = 0 \tag{1} Qbn1bnLQln1lnRQbn2bn1LQln2ln1RQb0b1LQl0l1R qlb=A4n×4qlb=0(1)

相当于已知一个 4 n × 4 4n\times 4 4n×4的小矩阵,求出一个 4 × 1 4\times 1 4×1向量的最优解,通常 n > 4 n > 4 n>4,因此,这是一个基本的超定方程组求解问题,通常使用SVD方法求解。

即将A矩阵进行SVD分解,得

U D V T x = 0 UDV^T x = 0 UDVTx=0

这里U矩阵和V矩阵都是正交矩阵(类比旋转矩阵,不改变大小),D是奇异值由大到小的对角矩阵,因此等价求解

D V T x = 0 DV^T x = 0 DVTx=0

然后,我们令 V T x = y V^T x = y VTx=y,y仍然是一个四元数,所以 ∣ ∣ y ∣ ∣ = 1 ||y||=1 ∣∣y∣∣=1

当仅当 y = [ 0 , 0 , 0 , 1 ] T y=[0,0,0,1]^T y=[0,0,0,1]T时, D y Dy Dy取得最小值,则 x = V ∗ [ 0 , 0 , 0 , 1 ] T x=V*[0,0,0,1]^T x=V[0,0,0,1]T

此时对应的 x x x即为V矩阵中最小奇异值对应的列向量,然后将其转换成四元数即为所求的旋转。

这篇关于SVD求解Ax=0的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1007589

相关文章

鹅算法(GOOSE Algorithm,GOOSE)求解复杂城市地形下无人机避障三维航迹规划,可以修改障碍物及起始点(Matlab代码)

一、鹅算法 鹅优化算法(GOOSE Algorithm,GOOSE)从鹅的休息和觅食行为获得灵感,当鹅听到任何奇怪的声音或动作时,它们会发出响亮的声音来唤醒群中的个体,并保证它们的安全。 参考文献 [1]Hamad R K, Rashid T A. GOOSE algorithm: a powerful optimization tool for real-world engineering

SQL求解两个时间差 时间类型 时间值

sql 求解两个时间差 SELECTDATEDIFF( Second, '2009-8-25 12:15:12', '2009-9-1 7:18:20') --返回相差秒数 SELECTDATEDIFF( Minute, '2009-9-1 6:15:12', '2009-9-1 7:18:20') --返回相差分钟数 SELECTDATEDIFF( Day, '2009-8

编写程序,采用辗转相除法求解两个正整数的最大公约数

--编写程序,采用辗转相除法求解两个正整数的最大公约数DECLARE @a int,@b intSELECT @a=12,@b=21DECLARE @temp intprint cast(@a as varchar(5))+'和'+cast(@b as varchar(5))+'的最大公约数是'if @a<@b --或者是select @temp=@a,@a=@b,@b=@tempb

【工具笔记】Microsoft数学求解器Math Solver

【工具笔记】Microsoft数学求解器Math Solver 工具笔记用于记录各种有用的工具,这里记录的是一个由Microsoft提供的数学求解器Math Solver。 可以用于求解代数,三角学,微积分,矩阵等各种数学问题,并且可以获取分步解释,查看如何解决问题并获取数学概念的定义,立即画出任何公式以可视化函数并了解变量之间的关系。还会搜索出相关的视频,练习题,类似问题等。 Math S

编译原理-各章典型题型+思路求解

第2章文法和语言习题 基础知识: 思路: 基础知识: 思路: 基础知识: 编译原理之 短语&直接短语&句柄 定义与区分_编译原理短语,直接短语,句柄-CSDN博客 思路: 题目: 基础解释:   简单来说: 上下文无关文法就是这个文法中所有的产生式左边只有一个非终结: 例如:S->Abc 上下文无关文法就是第一个产生式左

用栈来求解限制后的汉诺塔问题

用栈来求解限制后的汉诺塔问题(限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间,求当塔有N层的时候,打印最优移动过程和最优移动总步数) import java.util.Stack;//用栈来求解限制后的汉诺塔问题(限制不能从最左侧的塔直接移动到最右侧,也不能从最右侧直接移动到最左侧,而是必须经过中间,求当塔有N层的时候,打印最优移动过程和最优移动总步数

PCA使用SVD解决

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html  主成分分析在上一节里面也讲了一些,这里主要谈谈如何用SVD去解PCA的问题。PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模

文本分类之降维技术之特征抽取之SVD矩阵的分解的原理的介绍

http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html 一、奇异值与特征值基础知识:     特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。两者有着很紧密的关系,我在接下来会谈到,特征值分解和奇异值分解的目的都是一样,就是提取出一个矩阵最重要的特征。先谈谈特征值分解吧:

线性代数习题求解复习

problem1: Section 2.2. Problem 20: Three planes can fail to have an intersection point, even if no planes are parallel. The system is singular if row 3 of A is a of the first two rows. Find a third

改进位删除谜题的求解方法

问题背景 给定长度为 n 的二进制向量,如何删除恰好 n/3 个位,使剩余二进制向量的不同数量最小化。该问题被称为“位删除谜题”。 以下是该问题的示例: 对于 n = 3 的情况,最优解是 2,对应两个不同的向量 11 和 00。对于 n = 6 的情况,最优解是 4。对于 n = 9 的情况,最优解是 6。对于 n = 12 的情况,最优解是 10。 对于较小的 n,这个问题可以通过