多传感器融合定位二-3D激光里程计其二:NDT
多傳感器融合定位二-3D激光里程計其二:NDT
- 1. 經(jīng)典NDT
- 2. 計算方式
- 2.1 2D場景求解:
- 2.2 3D場景求解:
- 3. 其他 NDT
Reference:
文章跳轉(zhuǎn):
1. 經(jīng)典NDT
NDT 核心思想:基于概率的匹配。目標(biāo)是將點集 Y Y Y 匹配到固定的點集 X X X 中。這里的聯(lián)合概率說的是將 X X X 劃分成柵格(如下圖),每個柵格里面都有很多點,這些點可以計算一個 均值&&協(xié)方差,這是一個概率的概念。而聯(lián)合概率是: Y Y Y 往 X X X 上旋轉(zhuǎn)的時候,它落在柵格中的哪個格子里是知道的。根據(jù)落在格子里的點,本身 X X X 格子已經(jīng)有了一個 均值/協(xié)方差,而 Y Y Y 的這些落在格子里的點可以形成一個聯(lián)合概率。這個聯(lián)合概率會作為有沒匹配好的一個指標(biāo)。
點集:
X = { x 1 , x 2 , ? , x N x } Y = { y 1 , y 2 , ? , y N y } \begin{aligned} & X=\left\{x_1, x_2, \cdots, x_{N_x}\right\} \\ & Y=\left\{y_1, y_2, \cdots, y_{N_y}\right\} \end{aligned} ?X={x1?,x2?,?,xNx??}Y={y1?,y2?,?,yNy??}?目標(biāo): max ? Ψ = max ? ∏ i = 1 N y f ( X , T ( p , y i ) ) \max \Psi=\max \prod_{i=1}^{N_y} f\left(X, T\left(p, y_i\right)\right) maxΨ=max∏i=1Ny??f(X,T(p,yi?))(與ICP這里有些區(qū)別,ICP的是點到點的距離,這里變成了聯(lián)合概率)
2D模型: p = p 3 = [ t x t y ? z ] T \quad p=p_3=\left[\begin{array}{lll}t_x & t_y & \phi_z\end{array}\right]^{\mathrm{T}} p=p3?=[tx??ty???z??]T
3D模型: p = p 6 = [ t x t y t z ? x ? y ? z ] T \quad p=p_6=\left[\begin{array}{llllll}t_x & t_y & t_z & \phi_x & \phi_y & \phi_z\end{array}\right]^{\mathrm{T}} p=p6?=[tx??ty??tz???x???y???z??]T
2. 計算方式
均值和協(xié)方差:
μ = 1 N x ∑ i = 1 N x x i , Σ = 1 N x ? 1 ∑ i = 1 N x ( x i ? μ ) ( x i ? μ ) T \mu=\frac{1}{N_x} \sum_{i=1}^{N_x} x_i, \quad \boldsymbol{\Sigma}=\frac{1}{N_x-1} \sum_{i=1}^{N_x}\left(x_i-\mu\right)\left(x_i-\mu\right)^{\mathrm{T}} μ=Nx?1?i=1∑Nx??xi?,Σ=Nx??11?i=1∑Nx??(xi??μ)(xi??μ)T根據(jù)預(yù)測的位姿,對點進(jìn)行旋轉(zhuǎn)和平移(這里的旋轉(zhuǎn)和平移是一個初始預(yù)測值):
y i ′ = T ( p , y i ) = R y i + t y_i^{\prime}=T\left(p, y_i\right)=R y_i+t yi′?=T(p,yi?)=Ryi?+t旋轉(zhuǎn)和平移后的點與目標(biāo)點集中的點在同一坐標(biāo)系下,此時可計算各點的聯(lián)合概率:
f ( X , y i ′ ) = 1 2 π ∣ Σ ∣ exp ? ( ? ( y i ′ ? μ ) T Σ ? 1 ( y i ′ ? μ ) 2 ) f\left(X, y_i^{\prime}\right)=\frac{1}{\sqrt{2 \pi} \sqrt{|\boldsymbol{\Sigma}|}} \exp \left(-\frac{\left(y_i^{\prime}-\mu\right)^{\mathrm{T}} \boldsymbol{\Sigma}^{-1}\left(y_i^{\prime}-\mu\right)}{2}\right) f(X,yi′?)=2π?∣Σ∣?1?exp(?2(yi′??μ)TΣ?1(yi′??μ)?)所有點的聯(lián)合概率(就是所有點的概率乘一起):
Ψ = ∏ i = 1 N y f ( X , T ( p , y i ) ) = ∏ i = 1 N y 1 2 π ∣ Σ ∣ exp ? ( ? ( y i ′ ? μ ) T Σ ? 1 ( y i ′ ? μ ) 2 ) \begin{aligned} \Psi & =\prod_{i=1}^{N_y} f\left(X, T\left(p, y_i\right)\right) \\ & =\prod_{i=1}^{N_y} \frac{1}{\sqrt{2 \pi} \sqrt{|\mathbf{\Sigma}|}} \exp \left(-\frac{\left(y_i^{\prime}-\mu\right)^{\mathrm{T}} \boldsymbol{\Sigma}^{-1}\left(y_i^{\prime}-\mu\right)}{2}\right) \end{aligned} Ψ?=i=1∏Ny??f(X,T(p,yi?))=i=1∏Ny??2π?∣Σ∣?1?exp(?2(yi′??μ)TΣ?1(yi′??μ)?)?目標(biāo)是讓所有點的聯(lián)合概率最大。但是上式中的 R 和 t 是在 y i ′ y'_i yi′? 內(nèi)的。這里還有一個exp,這個指數(shù)項會讓公式變得復(fù)雜,需要消掉指數(shù)項。這時去對數(shù)可以解決。
取對數(shù),簡化問題(目標(biāo)是讓所有點的聯(lián)合概率最大):
ln ? Ψ = ∑ i = 1 N y ( ? ( y i ′ ? μ ) T Σ ? 1 ( y i ′ ? μ ) 2 + ln ? ( 1 2 π ∣ Σ ∣ ) ) \ln \Psi=\sum_{i=1}^{N_y}\left(-\frac{\left(y_i^{\prime}-\mu\right)^{\mathrm{T}} \boldsymbol{\Sigma}^{-1}\left(y_i^{\prime}-\mu\right)}{2}+\ln \left(\frac{1}{\sqrt{2 \pi} \sqrt{|\boldsymbol{\Sigma}|}}\right)\right) lnΨ=i=1∑Ny??(?2(yi′??μ)TΣ?1(yi′??μ)?+ln(2π?∣Σ∣?1?))去除常數(shù)項 ln ? ( 1 2 π ∣ Σ ∣ ) \ln \left(\frac{1}{\sqrt{2 \pi} \sqrt{|\boldsymbol{\Sigma}|}}\right) ln(2π?∣Σ∣?1?),得到:
max ? Ψ = max ? ln ? Ψ = min ? Ψ 1 = min ? ∑ i = 1 N y ( y i ′ ? μ ) T Σ ? 1 ( y i ′ ? μ ) \max \Psi=\max \ln \Psi=\min \Psi_1=\min \sum_{i=1}^{N_y}\left(y_i^{\prime}-\mu\right)^{\mathrm{T}} \boldsymbol{\Sigma}^{-1}\left(y_i^{\prime}-\mu\right) maxΨ=maxlnΨ=minΨ1?=mini=1∑Ny??(yi′??μ)TΣ?1(yi′??μ)因為之前是負(fù)數(shù),我們上式只需要求最小值就行。(這里又變成馬氏距離了)
這時就變成了一個優(yōu)化問題了:
目標(biāo)函數(shù): min ? ∑ i = 1 N y ( y i ′ ? μ ) T Σ ? 1 ( y i ′ ? μ ) \min \sum_{i=1}^{N_y}\left(y_i^{\prime}-\mu\right)^{\mathrm{T}} \boldsymbol{\Sigma}^{-1}\left(y_i^{\prime}-\mu\right) min∑i=1Ny??(yi′??μ)TΣ?1(yi′??μ)
y i ′ = T ( p , y i ) = R y i + t \quad \quad \quad \quad y_i^{\prime}=T\left(p, y_i\right)=R y_i+t yi′?=T(p,yi?)=Ryi?+t
待求參數(shù): R , t R, t R,t
定義殘差函數(shù): f i ( p ) = y i ′ ? μ f_i(p)=y_i^{\prime}-\mu fi?(p)=yi′??μ
按照高斯牛頓法的流程,只需計算殘差函數(shù)關(guān)于待求參數(shù)的雅可比,便可迭代優(yōu)化。
J i = d f i ( p ) d p J_i=\frac{d f_i(p)}{d p} Ji?=dpdfi?(p)?
2.1 2D場景求解:
p = [ t x t y ? z ] T y i ′ = T ( p , y i ) = [ cos ? ? z ? sin ? ? z sin ? ? z cos ? ? z ] y i + [ t x t y ] \begin{aligned} p & =\left[\begin{array}{lll} t_x & t_y & \phi_z \end{array}\right]^{\mathrm{T}} \\ \\ y_i^{\prime} & =T\left(p, y_i\right) \\ & =\left[\begin{array}{cc} \cos \phi_z & -\sin \phi_z \\ \sin \phi_z & \cos \phi_z \end{array}\right] y_i+\left[\begin{array}{l} t_x \\ t_y \end{array}\right] \end{aligned} pyi′??=[tx??ty???z??]T=T(p,yi?)=[cos?z?sin?z???sin?z?cos?z??]yi?+[tx?ty??]?雅可比:
J i = d f i ( p ) d p = [ 1 0 ? y i 1 sin ? ? z ? y i 2 cos ? ? z 0 1 y i 1 cos ? ? z ? y i 2 sin ? ? z ] J_i=\frac{d f_i(p)}{d p}=\left[\begin{array}{ccc}1 & 0 & -y_{i 1} \sin \phi_z-y_{i 2} \cos \phi_z \\ 0 & 1 & y_{i 1} \cos \phi_z-y_{i 2} \sin \phi_z\end{array}\right] Ji?=dpdfi?(p)?=[10?01??yi1?sin?z??yi2?cos?z?yi1?cos?z??yi2?sin?z??]
2.2 3D場景求解:
p = [ t x t y t z ? x ? y ? z ] T y i ′ = T ( p , y i ) = R x R y R z y i + t = [ c y c z ? c y s z s y c x s z + s x s y c z c x c z ? s x s y s z ? s x c y s x s z ? c x s y c z c x s y s z + s x c z c x c y ] y i + [ t x t y t z ] \begin{aligned} & p=\left[\begin{array}{llllll} t_x & t_y & t_z & \phi_x & \phi_y & \phi_z \end{array}\right]^{\mathrm{T}} \\ & y_i^{\prime}=T\left(p, y_i\right)=R_x R_y R_z y_i+t=\left[\begin{array}{ccc} c_y c_z & -c_y s_z & s_y \\ c_x s_z+s_x s_y c_z & c_x c_z-s_x s_y s_z & -s_x c_y \\ s_x s_z-c_x s_y c_z & c_x s_y s_z+s_x c_z & c_x c_y \end{array}\right] y_i+\left[\begin{array}{c} t_x \\ t_y \\ t_z \end{array}\right] \end{aligned} ?p=[tx??ty??tz???x???y???z??]Tyi′?=T(p,yi?)=Rx?Ry?Rz?yi?+t= ?cy?cz?cx?sz?+sx?sy?cz?sx?sz??cx?sy?cz???cy?sz?cx?cz??sx?sy?sz?cx?sy?sz?+sx?cz??sy??sx?cy?cx?cy?? ?yi?+ ?tx?ty?tz?? ??雅可比:
J i = [ 1 0 0 0 c f 0 1 0 a d g 0 0 1 b e h ] \begin{aligned} J_i=\left[\begin{array}{llllll} 1 & 0 & 0 & 0 & c & f \\ 0 & 1 & 0 & a & d & g \\ 0 & 0 & 1 & b & e & h \end{array}\right] \end{aligned} Ji?= ?100?010?001?0ab?cde?fgh? ??其中:
a = y i 1 ( ? s x s z + c x s y c z ) + y i 2 ( ? s x c z ? c x s y s z ) + y i 3 ( ? c x c y ) b = y i 1 ( c x s z + s x s y c z ) + y i 2 ( ? s x s y s z + c x c z ) + y i 3 ( ? s x c y ) c = y i 1 ( ? s y c z ) + y i 2 ( s y s z ) + y i 3 ( c y ) d = y i 1 ( s x c y c z ) + y i 2 ( ? s x c y s z ) + y i 3 ( s x s y ) e = y i 1 ( ? c x c y c z ) + y i 2 ( c x c y s z ) + y i 3 ( ? c x s y ) f = y i 1 ( ? c y s z ) + y i 2 ( ? c y c z ) g = y i 1 ( c x c z ? s x s y s z ) + y i 2 ( ? c x s z ? s x s y c z ) h = y i 1 ( s x c z + c x s y s z ) + y i 2 ( c x s y c z ? s x s z ) \begin{aligned} & a=y_{i 1}\left(-s_x s_z+c_x s_y c_z\right)+y_{i 2}\left(-s_x c_z-c_x s_y s_z\right)+y_{i 3}\left(-c_x c_y\right) \\ & b=y_{i 1}\left(c_x s_z+s_x s_y c_z\right)+y_{i 2}\left(-s_x s_y s_z+c_x c_z\right)+y_{i 3}\left(-s_x c_y\right) \\ & c=y_{i 1}\left(-s_y c_z\right)+y_{i 2}\left(s_y s_z\right)+y_{i 3}\left(c_y\right) \\ & d=y_{i 1}\left(s_x c_y c_z\right)+y_{i 2}\left(-s_x c_y s_z\right)+y_{i 3}\left(s_x s_y\right) \\ & e=y_{i 1}\left(-c_x c_y c_z\right)+y_{i 2}\left(c_x c_y s_z\right)+y_{i 3}\left(-c_x s_y\right) \\ & f=y_{i 1}\left(-c_y s_z\right)+y_{i 2}\left(-c_y c_z\right) \\ & g=y_{i 1}\left(c_x c_z-s_x s_y s_z\right)+y_{i 2}\left(-c_x s_z-s_x s_y c_z\right) \\ & h=y_{i 1}\left(s_x c_z+c_x s_y s_z\right)+y_{i 2}\left(c_x s_y c_z-s_x s_z\right) \end{aligned} ?a=yi1?(?sx?sz?+cx?sy?cz?)+yi2?(?sx?cz??cx?sy?sz?)+yi3?(?cx?cy?)b=yi1?(cx?sz?+sx?sy?cz?)+yi2?(?sx?sy?sz?+cx?cz?)+yi3?(?sx?cy?)c=yi1?(?sy?cz?)+yi2?(sy?sz?)+yi3?(cy?)d=yi1?(sx?cy?cz?)+yi2?(?sx?cy?sz?)+yi3?(sx?sy?)e=yi1?(?cx?cy?cz?)+yi2?(cx?cy?sz?)+yi3?(?cx?sy?)f=yi1?(?cy?sz?)+yi2?(?cy?cz?)g=yi1?(cx?cz??sx?sy?sz?)+yi2?(?cx?sz??sx?sy?cz?)h=yi1?(sx?cz?+cx?sy?sz?)+yi2?(cx?sy?cz??sx?sz?)?上面是使用旋轉(zhuǎn)矩陣求導(dǎo),也可以使用李代數(shù)求解。
3. 其他 NDT
總結(jié)
以上是生活随笔為你收集整理的多传感器融合定位二-3D激光里程计其二:NDT的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: svs文件转换为tiff文件
- 下一篇: Manipulation Attacks