前置知識:
我們經(jīng)常會構建與位姿有關的函數(shù)惦辛,然后討論該函數(shù)對位姿的導數(shù)肚医,然而咬腋,位姿是SO3(R)或者SE3(T)的羹膳,如果我們把T當成普通矩陣來優(yōu)化,必須對他加約束根竿,就成為了帶約束的非線性優(yōu)化陵像,這是我們不想要的就珠。所以我們通常把SO3或SE3轉(zhuǎn)成so3或者se3的李代數(shù),然后再求導醒颖,有兩個思路:
一妻怎、用李代數(shù)的加法來對李代數(shù)來求導,這會有形式比較復雜的JL泞歉,我們不太希望計算它逼侦,所以基本不用,這個叫微分模型
二腰耙、用擾動模型榛丢,我們來講這個:
以損失函數(shù)求導為例
我們經(jīng)常需要求,損失函數(shù)e對狀態(tài)變量的導數(shù)沟优,而狀態(tài)變量里一般會有位姿涕滋,為了不做帶約束的非線性優(yōu)化,我們的位姿用李代數(shù)來表示的
直接求解e對李代數(shù)的導數(shù)非常復雜挠阁,但我們可以使用擾動模型宾肺,求e對擾動的導數(shù),然后引入中間變量侵俗,比如:
我們引入的中間變量是空間點的位置(注意锨用,我們本來是要求損失函數(shù)對位姿的導數(shù),但通過中間變量也就是地圖點的引入隘谣,我們可以簡化這個過程)從而增拥,e對擾動的導數(shù)等于e對空間點P1的導數(shù)乘P1對擾動的導數(shù)
而e對空間點P1的導數(shù)是很簡單的,我們用計算e的時候的公式就能得到寻歧,而空間點P1對擾動的導數(shù)我們早就推過了掌栅,這也是我們?yōu)槭裁匆x擇P1為中間變量的原因,因為P1是空間點P乘以變換T得到的點码泛,所以P1對擾動的導數(shù)等于TP對擾動的導數(shù)猾封,而TP對擾動的導數(shù),我們早就在SE3的擾動模型中推導過了如下:
所以你會發(fā)現(xiàn)噪珊,通過擾動模型晌缘,我們只需要求解損失函數(shù)對P1的導數(shù),就能求得損失函數(shù)對擾動的導數(shù)痢站,而損失函數(shù)對P1的導數(shù)是顯而易見的