天天看點

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

目錄

1.LocalParameterization

2.AutoDiffLocalParameterization

在許多優化問題中,特别是傳感器融合問題中,我們必須對流形空間中的數量進行模組化,例如由四元數表示的傳感器的旋轉/方向。

流形是空間,其局部看起來像歐幾裡得空間。更準确地說,在流形上的每一點上,都有一個與流形相切的線性空間。它的維數等于流形本身的内在維數,而内在維數小于或等于流形所嵌入的環境空間。

例如,在三維空間中,球面上一點的切空間就是二維平面,在這一點上與球面相切。切線空間之是以有趣有兩個原因:

它們是歐幾裡得空間,是以通常的向量空間運算适用于這裡,這使得數值運算很容易。

切線空間中的運動轉化為沿流形的運動。垂直于切線空間的運動不會轉化為流形上的運動。

Returning to our sphere example, moving in the 2 dimensional plane tangent to the sphere and projecting back onto the sphere will move you away from the point you started from but moving

along the normal at the same point and the projecting back onto the sphere brings you back to the point.

除了數學上的精細,正确地模組化流形數值并注意其幾何形狀也有實際的好處:

通過優化,它自然地将數量限制在流形上。将使用者從四元數規範化中解放出來。

它将優化問題的維數降低到其natural size。例如,一個限制在一條線上的量,是一個一維的物體,與這條線所在的環境空間的次元無關。

在切線空間中工作不僅降低了優化算法的計算複雜度,而且還改善了算法的數值行為。

在流形上可以執行的一個基本操作是

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

操作,它計算在x處沿切空間移動的結果,然後投影回x所屬的流形上。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

是歐幾裡得空間中向量加法的一種推廣。形式上,

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

是從一個流形及其切空間

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

到服從恒等式的流形

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

的光滑映射。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

That is, it ensures that the tangent space is centered at and the zero vector is the identity element.

讓我們考慮兩個例子:

歐幾裡得空間

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

是流形的最簡單的例子。

它的維數是n(它的切空間也是),是我們熟悉的向量和運算。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

一個更有趣的例子是

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

,它是三維空間中特殊的正交群——3 × 3旋轉矩陣的空間。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

是嵌入在

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

中的三維流形。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

上的

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

是用指數映射定義的,從切空間(

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

)到流形。指數映射定義為:

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization
17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

參數塊x所在的環境空間的維數。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization
17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

所在的切線空間的大小。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

LocalParameterization::Plus()實作了

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

計算雅可比矩陣

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

in row major form.

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

local_matrix = global_matrix * jacobian

global_matrix是一個num_rows x GlobalSize行主矩陣。local_matrix是一個num_rows x LocalSize行主矩陣。jacobian是LocalParameterization::ComputeJacobian()在x處傳回的矩陣。

這隻在GradientProblem中使用。對于大多數正常使用,使用預設實作是可以的。

Ceres求解器附帶了一些常用的LocalParameterization執行個體。在各種流形上找到

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

運算的高品質實作的另一個好地方是Hauke Strasdat和他的合作者開發的Sophus庫。

IdentityParameterization

TODO...

QuaternionParameterization

EigenQuaternionParameterization

SubsetParameterization

HomogeneousVectorParameterization

LineParameterization

ProductParameterization

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

AutoDiffLocalParameterization相對于LocalParameterization做的事就像AutoDiffCostFunction相對于CostFunction的一樣。

它允許使用者定義一個模闆化的仿函數來實作LocalParameterization::Plus()操作,并使用自動微分來實作雅可比矩陣的計算。

要獲得自動微分的局部參數化,必須定義一個具有模闆化operator()(仿函數)的類來進行計算。

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization

例如,四元數具有三維局部參數化。它的加操作可以實作為(來自于internal/ceres/autodiff_local_parameterization_test.cc)

對于這個結構,自動微分局部參數化現在可以構造為

17.Ceres官方教程-Modeling Non-linear Least Squares (5) LocalParameterization