首先根據最大後驗估計(Maximum a posteriori estimation,MAP)構建非線性優化的目標函數。函數
初始化過程經過線性求解直接會給出一個狀態的初值,而非線性優化的過程關鍵在於求解增量方程,並不斷迭代到最優勢,須要在初值以及後續的迭代點附近線性化(泰勒展開保留一階後平方構建高斯牛頓梯度降低的增量方程):post
在初值x附近泰勒展開優化
$f(x+\Delta x) = f(x) + J\Delta x$blog
$costFunction = [f(x+\Delta x)]^{2}$io
最小化costFunction的過程其實就是迭代求解增量方程im
$H\Delta x = b$error
其中$H = J^{T}J$,$b = -J^{T}f$img
所以,首先須要定義狀態的增量,主要由於旋轉矩陣沒有加法,沒法迭代求解,所以在SO(3)流形的正切空間上定義四元數的加法,並表示成最小座標的李代數(軸轉角)形式di
所以對應的error-state costFunction定義爲:co
注意該式求解的是迭代須要使用的增量,而不是初始化過程能夠直接線性求解出的初值。這是優化過程和初始化過程當中costFunction的主要不一樣點。
接下來還須要創建對應的觀測方程去計算residual及其Jacobian,而且推到偏差的傳播方程。和初始化過程當中對比,增長的有:
對比初始化和非線性優化過程: