美文网首页
非线性优化:李代数的扰动求导

非线性优化:李代数的扰动求导

作者: 循梦渡 | 来源:发表于2021-07-21 10:00 被阅读0次

    前置知识:

    我们经常会构建与位姿有关的函数,然后讨论该函数对位姿的导数,然而,位姿是SO3(R)或者SE3(T)的,如果我们把T当成普通矩阵来优化,必须对他加约束,就成为了带约束的非线性优化,这是我们不想要的。所以我们通常把SO3或SE3转成so3或者se3的李代数,然后再求导,有两个思路:
    一、用李代数的加法来对李代数来求导,这会有形式比较复杂的JL,我们不太希望计算它,所以基本不用,这个叫微分模型

    二、用扰动模型,我们来讲这个:

    以损失函数求导为例

    我们经常需要求,损失函数e对状态变量的导数,而状态变量里一般会有位姿,为了不做带约束的非线性优化,我们的位姿用李代数来表示的

    直接求解e对李代数的导数非常复杂,但我们可以使用扰动模型,求e对扰动的导数,然后引入中间变量,比如:

    我们引入的中间变量是空间点的位置(注意,我们本来是要求损失函数对位姿的导数,但通过中间变量也就是地图点的引入,我们可以简化这个过程)从而,e对扰动的导数等于e对空间点P1的导数乘P1对扰动的导数

    而e对空间点P1的导数是很简单的,我们用计算e的时候的公式就能得到,而空间点P1对扰动的导数我们早就推过了,这也是我们为什么要选择P1为中间变量的原因,因为P1是空间点P乘以变换T得到的点,所以P1对扰动的导数等于TP对扰动的导数,而TP对扰动的导数,我们早就在SE3的扰动模型中推导过了如下:

    其中 Rp+t其实就等于P1  而P1^ 是用P1生成的反对称矩阵

    所以你会发现,通过扰动模型,我们只需要求解损失函数对P1的导数,就能求得损失函数对扰动的导数,而损失函数对P1的导数是显而易见的

    下面我们简单看一看,为什么我们可以用损失对扰动的导数来替代损失对位姿的导数? 

    相关文章

      网友评论

          本文标题:非线性优化:李代数的扰动求导

          本文链接:https://www.haomeiwen.com/subject/ccjrmltx.html