一文詳解固態(tài)激光雷達的里程計(loam_livox)
作者:Liam
來源:微信公眾號|3D視覺工坊(系投稿)
「3D視覺工坊」技術(shù)交流群已經(jīng)成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學習、SLAM、三維重建、點云后處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫(yī)療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產(chǎn)品落地、視覺競賽、車牌識別、硬件選型、學術(shù)交流、求職交流、ORB-SLAM系列源碼交流、深度估計等。工坊致力于干貨輸出,不做搬運工,為計算機視覺領(lǐng)域貢獻自己的力量!歡迎大家一起交流成長~
添加小助手微信:CV_LAB,備注學校/公司+姓名+研究方向即可加入工坊一起學習進步。

Loam livox(2019 IROS)
介紹:?大疆出品,必屬精品。 固態(tài)激光雷達里程計的工作現(xiàn)階段還是比較少的,大疆自己出了固態(tài)激光雷達后在LOAM的基礎(chǔ)上改進了一個適用于固態(tài)激光雷達的里程計,該系統(tǒng)可以用在小視場角和非重復性掃描的雷達上。
代碼地址:在公眾號「3D視覺工坊」,后臺回復「loam_livox」,即可直接下載。
需要知道的介紹
需要知道的是(文章最后有相關(guān)的技術(shù)手冊):
固態(tài)激光雷達的視角很小,Livox MID40的視角僅有38.4度。但是想要獲得大的視角可以使用多個固態(tài)的激光雷達(比如MID-100其實就是3個MID-40)。
掃描圖案不均勻,原來的激光雷達規(guī)則掃描,極大的簡化了特征提取和匹配。但是固態(tài)激光雷達掃描不均勻Livox MID40掃描的圖案類似花瓣,相鄰的兩次掃描距離很遠。
非重復掃描,這樣可以最大化覆蓋率(盡可能多的得到場景中的信息)。
運動畸變,同一幀的點云掃描有先后順序的,由于運動可能導致同一幀的點云出現(xiàn)運動畸變。
為了解決上述的問題,作者創(chuàng)建了Loam_Livox工具包。解決了在小的視角下進行特征選擇和提取的任務(wù),有嚴格的外點剔除策略,移動的對象濾波和運動畸變補償。在沒有諸如IMU、相機、GPS等傳感器的基礎(chǔ)上,利用點云和局部地圖的匹配魯棒的實時計算雷達的位姿。
相關(guān)工作
目前有點到點,點到面和點到邊緣的匹配方式,3D的特征有Point Feature Histograms (PFH)和viewpoint Feature Histograms (VFH)等。本文采用的是點到平面和點到邊緣的匹配方式,為了解決運動畸變的問題,可以在前端進行線性插值,最近有的方法提出也可以在后端利用優(yōu)化的方法進行畸變矯正。雖然優(yōu)化的方法更好但是不實時運行。 本文的主要貢獻有:
針對小視角的雷達提出了完整的LOAM算法
通過考慮low-level的雷達參數(shù)增加了LOAM算法的精度和魯棒性
提出了一種簡單但是有效的運動補償?shù)姆椒?。分段處理,并使其實現(xiàn)并行化。
特征選擇和提取
系統(tǒng)概述如下圖所示,其前端處理包括點的選取和特征的提取??紤]到激光雷達傳感器的low-level物理特性(如激光光斑大小、信噪比)的測量機制,我們進行點級選擇來提取“優(yōu)點”。

A.點的選擇
計算點距離雷達的距離D(P)=x2+y2+z2
計算光束和X軸的夾角?(P)=tan?1((y2+z2)/x2)
計算反射率I(P)=R/D(P)2,其中R是點的反射強度
當反射率I小的時候證明物體離雷達很遠,反射強度也很小。
θ=((Pa?pc)×Pb|Pa?pc|×|Pb|)
為了提升定位和建圖的精度,我們需要刪除以下的這些點:
接近FoV邊緣的點。 (例如φ(P)≥17?對于Livox MID40)在這樣的區(qū)域,掃描軌跡曲率大,導致特征提取不太可靠。
強度太大或者太小的點
點的入射角大于0度或180度.
刪除物體后邊點
B.特征檢測
選擇點后,我們執(zhí)行特征提取以從“好點”中提取特征。我們通過計算候選點的局部平滑度來提取平面和邊緣特征,如[1]所示。 此外,為了減輕由于有限的FoV和點選擇導致的少量特征而導致的匹配退化,我們將LiDAR反射率用作第4維測量。 如果3D點的反射率與其相鄰點有很大不同,我們將其視為邊緣特征點(由于材料變化而導致反射率的邊緣,與由于形狀變化而導致幾何形狀中的邊緣相反)。在某些退化情況下,例如面對帶有關(guān)閉的門窗的墻壁,這些點是有益的。
迭代的位姿優(yōu)化
第一節(jié)提到的非重復掃描導致提取的特征無法像[12、13、19]中那樣不斷跟蹤。一個簡單的例子是,即使LiDAR是靜態(tài)的,掃描的軌跡(和特征點)也不同于前一幀。 在我們的工作中,我們使用迭代的方法進行姿態(tài)優(yōu)化來計算LiDAR位姿。通過稍后詳細介紹的適當實現(xiàn),我們可以實現(xiàn)20Hz的實時里程計和建圖。
A.邊和邊的殘差




其實就是點到線的距離,分子的叉乘計算的是三個點組成的三角形的面積,分母是底的長度。所以計算的就是三角形的高即點到線的距離。
B.面和面的殘差
與邊緣特征點相似,對于平面中的點當前幀的特征集Pk,我們在地圖的平面特征集Pm中找到5個最近的點,同時通過計算它們的協(xié)方差矩陣Σ來確保這5的點確實在同一平面內(nèi), 如果最小Σ的特征值比第二小的特征值小三倍,我們計算當前幀的地圖中平面點到由這5個點組成的平面的距離,然后將此殘差添加到姿勢優(yōu)化中。

分子后邊的叉乘部分還是地圖三個點組成的三角形的面積,再點乘一得到四面體的體積,再除以底面積得到四面體的高即點到平面的距離。
C.圖像幀運動補償
由于激光采集的點云并不是在同一時刻采集的,所以就會存在運動畸變(坐標系不同引起的),所以需要根據(jù)接收激光點的時間計算位姿把點云投影到同一坐標系。為了補償每次掃描的時間和位姿不同,我們可以利用:
分段線性:把一個新來的幀分成三個連續(xù)的子幀,然后把這三個幀獨立的和現(xiàn)階段構(gòu)建的地圖做匹配。在每個子圖做scan-match的過程中利用子圖中最后一個點的位姿把所有的點投影到全局地圖中,這樣每幀采樣的時間僅為原來的三分之一。盡管這種方法很簡單,但是效果很好(LEGO—LOAM中把一幀分為6份應(yīng)該也是分段線性的思想),分段線性對于多核的CPU并行運算也有好處。
線性插值:這部分在張籍博士的LAOM中介紹的比較詳細,大家在看的時候可以參考。主要思想是在當前幀最后一個激光點得到的雷達位姿[R_k,T_k]和次新幀的[R_k-1,T_k-1]中間的時刻t,利用恒速模型計算中間時刻點的位姿。具體來說:

很容易知道每個點采集的時間(自己計算或者激光雷達采集的時候該信息是可保存的),已經(jīng)知道了上一幀最后一個點的采集時間t_k-1和當前幀最后一個點采集的時間是t_k,在這中間的當前幀的點采集的時間是t,令s=(t-t_k-1)/(t_k-t_k-1),所以t時刻的位姿是:

最后論文給出的建圖的效果如下所示:

算法一:雷達位姿優(yōu)化

(1)計算線和線的誤差
(2)計算面和面的誤差
(3)利用兩個特征迭代的優(yōu)化位姿
(4)刪除殘差中最大的20%
(5)在迭代中如果位姿收斂就break

D.外點和運動物體剔除
在實際跑的時候避免不了會有動態(tài)的車、人及其他物體。本文的動態(tài)物體剔除算法是在每一次迭代優(yōu)化位姿的過程中重新找到每個特征的最近點把邊邊殘差和面面殘差加入到目標函數(shù),第一次只優(yōu)化兩次,然后把殘差中最大的20%丟棄來達到剔除外點的目的。
精度
室內(nèi)和室外的定位精度分別是0.41%和0.65%(直接收尾點和GPS比,這個精度沒什么可以參考的),在實際測試的過程中發(fā)現(xiàn)固態(tài)激光雷達在手持的狀態(tài)下只要晃動的劇烈一點就會丟失,而且由于該激光雷達的特性(非重復性掃描),這個系統(tǒng)不能在快速運動的系統(tǒng)中使用。但是拿視覺或者激光里程計給他提供位姿,在低速的場景中單純拿他建圖效果還是很棒的。最后跑官方數(shù)據(jù)集的效果如下所示:

實驗室的師弟也在實際場景中做了測試,建圖效果如下所示:

最后給上調(diào)研的時候查到的一些資料:?固態(tài)激光雷達的優(yōu)勢:?①其結(jié)構(gòu)簡單,尺寸小,無需旋轉(zhuǎn)部件,在結(jié)構(gòu)和尺寸上可以大大壓縮,提高使用壽命并使其成本降低。 ②掃描精度高,光學相控陣的掃描精度取決于控制電信號的精度,可以達到千分之一度量級以上。 ③可控性好,在允許的角度范圍內(nèi)可以做到任意指向,可以在重點區(qū)域進行高密度的掃描。 ④掃描速度快,光學相控陣的掃描速度取決于所用材料的電子學特性,一般都可以達到MHz量級。?固態(tài)激光雷達劣勢:?①掃描角有限,固態(tài)意味著激光雷達不能進行360度旋轉(zhuǎn),只能探測前方。因此要實現(xiàn)全方位掃描,需在不同方向布置多個(至少前后兩個)固態(tài)激光雷達 ②旁瓣問題,光柵衍射除了中央明紋外還會形成其他明紋,這一問題會讓激光在最大功率方向以外形成旁瓣,分散激光的能量。 ③加工難度高,光學相控陣要求陣列單元尺寸必須不大于半個波長,一般目前激光雷達的工作波長均在1微米左右,故陣列單元的尺寸必須不大于500nm。而且陣列密度越高,能量也越集中,這都提高了對加工精度的要求,需要一定的技術(shù)突破。 ④接收面大、信噪比差:傳統(tǒng)機械雷達只需要很小的接收窗口,但固態(tài)激光雷達卻需要一整個接收面,因此會引入較多的環(huán)境光噪聲,增加了掃描解析的難度。
MID-40簡單使用說明

使用安裝
1.將Livox Mid-40連接到Livox轉(zhuǎn)換器。2.使用以太網(wǎng)電纜將PC和Livox Converter連接到路由器。3.將Livox轉(zhuǎn)換器連接到外部電源。 額定功率是10w,電壓范圍10-16v.需要注意的是溫度越低需要的功率就越大,所以需要合適的電源.
點云掃描方式
非重復掃,高覆蓋率
MID-40

MID-100

參考文獻
[1] Zhang J , Singh S . LOAM: Lidar Odometry and Mapping in Real-time[C]// Robotics: Science and Systems Conference. 2014. [2] Lin J , Zhang F . Loam_livox: A fast, robust, high-precision LiDAR odometry and mapping package for LiDARs of small FoV[J]. 2019.
本文僅做學術(shù)分享,如有侵權(quán),請聯(lián)系刪文。