作者:Liam

「3D視覺工坊」技術交流群已經成立,目前大約有12000人,方向主要涉及3D視覺、CV&深度學習、SLAM、三維重建、點雲後處理、自動駕駛、CV入門、三維測量、VR/AR、3D人臉識別、醫療影像、缺陷檢測、行人重識別、目標跟蹤、視覺產品落地、視覺競賽、車牌識別、硬體選型、學術交流、求職交流、ORB-SLAM系列原始碼交流、深度估計等。工坊致力於乾貨輸出,不做搬運工,為計算機視覺領域貢獻自己的力量!歡迎大家一起交流成長~

新增小助手微信:CV_LAB,備註學校/公司+姓名+研究方向即可加入工坊一起學習進步。

一文詳解固態鐳射雷達的里程計(loam_livox)

Loam livox(2019 IROS)

介紹:

大疆出品,必屬精品。 固態鐳射雷達里程計的工作現階段還是比較少的,大疆自己出了固態鐳射雷達後在LOAM的基礎上改進了一個適用於固態鐳射雷達的里程計,該系統可以用在小視場角和非重複性掃描的雷達上。

程式碼地址:

在公眾號「

3D視覺工坊

」,後臺回覆「

loam_livox

」,即可直接下載。

需要知道的介紹

需要知道的是(文章最後有相關的技術手冊):

固態鐳射雷達的視角很小,Livox MID40的視角僅有38。4度。但是想要獲得大的視角可以使用多個固態的鐳射雷達(比如MID-100其實就是3個MID-40)。

掃描圖案不均勻,原來的鐳射雷達規則掃描,極大的簡化了特徵提取和匹配。但是固態鐳射雷達掃描不均勻Livox MID40掃描的圖案類似花瓣,相鄰的兩次掃描距離很遠。

非重複掃描,這樣可以最大化覆蓋率(儘可能多的得到場景中的資訊)。

運動畸變,同一幀的點雲掃描有先後順序的,由於運動可能導致同一幀的點雲出現運動畸變。

為了解決上述的問題,作者建立了Loam_Livox工具包。解決了在小的視角下進行特徵選擇和提取的任務,有嚴格的外點剔除策略,移動的物件濾波和運動畸變補償。在沒有諸如IMU、相機、GPS等感測器的基礎上,利用點雲和區域性地圖的匹配魯棒的實時計算雷達的位姿。

相關工作

目前有點到點,點到面和點到邊緣的匹配方式,3D的特徵有Point Feature Histograms (PFH)和viewpoint Feature Histograms (VFH)等。本文采用的是點到平面和點到邊緣的匹配方式,為了解決運動畸變的問題,可以在前端進行線性插值,最近有的方法提出也可以在後端利用最佳化的方法進行畸變矯正。雖然最佳化的方法更好但是不實時執行。 本文的主要貢獻有:

針對小視角的雷達提出了完整的LOAM演算法

透過考慮low-level的雷達引數增加了LOAM演算法的精度和魯棒性

提出了一種簡單但是有效的運動補償的方法。分段處理,並使其實現並行化。

特徵選擇和提取

系統概述如下圖所示,其前端處理包括點的選取和特徵的提取。考慮到鐳射雷達感測器的low-level物理特性(如鐳射光斑大小、信噪比)的測量機制,我們進行點級選擇來提取“優點”。

一文詳解固態鐳射雷達的里程計(loam_livox)

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)在這樣的區域,掃描軌跡曲率大,導致特徵提取不太可靠。

強度太大或者太小的點

點的入射角大於0度或180度。

刪除物體後邊點

B.特徵檢測

選擇點後,我們執行特徵提取以從“好點”中提取特徵。我們透過計算候選點的區域性平滑度來提取平面和邊緣特徵,如[1]所示。 此外,為了減輕由於有限的FoV和點選擇導致的少量特徵而導致的匹配退化,我們將LiDAR反射率用作第4維測量。 如果3D點的反射率與其相鄰點有很大不同,我們將其視為邊緣特徵點(由於材料變化而導致反射率的邊緣,與由於形狀變化而導致幾何形狀中的邊緣相反)。在某些退化情況下,例如面對帶有關閉的門窗的牆壁,這些點是有益的。

迭代的位姿最佳化

第一節提到的非重複掃描導致提取的特徵無法像[12、13、19]中那樣不斷跟蹤。一個簡單的例子是,即使LiDAR是靜態的,掃描的軌跡(和特徵點)也不同於前一幀。 在我們的工作中,我們使用迭代的方法進行姿態最佳化來計算LiDAR位姿。透過稍後詳細介紹的適當實現,我們可以實現20Hz的實時里程計和建圖。

A.邊和邊的殘差

一文詳解固態鐳射雷達的里程計(loam_livox)

一文詳解固態鐳射雷達的里程計(loam_livox)

一文詳解固態鐳射雷達的里程計(loam_livox)

一文詳解固態鐳射雷達的里程計(loam_livox)

其實就是點到線的距離,分子的叉乘計算的是三個點組成的三角形的面積,分母是底的長度。所以計算的就是三角形的高即點到線的距離。

B.面和麵的殘差

與邊緣特徵點相似,對於平面中的點當前幀的特徵集Pk,我們在地圖的平面特徵集Pm中找到5個最近的點,同時透過計算它們的協方差矩陣Σ來確保這5的點確實在同一平面內, 如果最小Σ的特徵值比第二小的特徵值小三倍,我們計算當前幀的地圖中平面點到由這5個點組成的平面的距離,然後將此殘差新增到姿勢最佳化中。

一文詳解固態鐳射雷達的里程計(loam_livox)

分子後邊的叉乘部分還是地圖三個點組成的三角形的面積,再點乘一得到四面體的體積,再除以底面積得到四面體的高即點到平面的距離。

C.影象幀運動補償

由於激光采集的點雲並不是在同一時刻採集的,所以就會存在運動畸變(座標系不同引起的),所以需要根據接收鐳射點的時間計算位姿把點雲投影到同一座標系。為了補償每次掃描的時間和位姿不同,我們可以利用:

分段線性:把一個新來的幀分成三個連續的子幀,然後把這三個幀獨立的和現階段構建的地圖做匹配。在每個子圖做scan-match的過程中利用子圖中最後一個點的位姿把所有的點投影到全域性地圖中,這樣每幀取樣的時間僅為原來的三分之一。儘管這種方法很簡單,但是效果很好(LEGO—LOAM中把一幀分為6份應該也是分段線性的思想),分段線性對於多核的CPU並行運算也有好處。

線性插值:這部分在張籍博士的LAOM中介紹的比較詳細,大家在看的時候可以參考。主要思想是在當前幀最後一個鐳射點得到的雷達位姿[R_k,T_k]和次新幀的[R_k-1,T_k-1]中間的時刻t,利用恆速模型計算中間時刻點的位姿。具體來說:

一文詳解固態鐳射雷達的里程計(loam_livox)

很容易知道每個點採集的時間(自己計算或者鐳射雷達採集的時候該資訊是可儲存的),已經知道了上一幀最後一個點的採集時間t_k-1和當前幀最後一個點採集的時間是t_k,在這中間的當前幀的點採集的時間是t,令s=(t-t_k-1)/(t_k-t_k-1),所以t時刻的位姿是:

一文詳解固態鐳射雷達的里程計(loam_livox)

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

一文詳解固態鐳射雷達的里程計(loam_livox)

演算法一:雷達位姿最佳化

一文詳解固態鐳射雷達的里程計(loam_livox)

(1)計算線和線的誤差

(2)計算面和麵的誤差

(3)利用兩個特徵迭代的最佳化位姿

(4)刪除殘差中最大的20%

(5)在迭代中如果位姿收斂就break

一文詳解固態鐳射雷達的里程計(loam_livox)

D.外點和運動物體剔除

在實際跑的時候避免不了會有動態的車、人及其他物體。本文的動態物體剔除演算法

是在每一次迭代最佳化位姿的過程中重新找到每個特徵的最近點把邊邊殘差和麵面殘差加入到目標函式,第一次只最佳化兩次,然後把殘差中最大的20%丟棄來達到剔除外點的目的。

精度

室內和室外的定位精度分別是0。41%和0。65%(直接收尾點和GPS比,這個精度沒什麼可以參考的),在實際測試的過程中發現固態鐳射雷達在手持的狀態下只要晃動的劇烈一點就會丟失,而且由於該鐳射雷達的特性(非重複性掃描),這個系統不能在快速運動的系統中使用。但是拿視覺或者鐳射里程計給他提供位姿,在低速的場景中單純拿他建圖效果還是很棒的。最後跑官方資料集的效果如下所示:

一文詳解固態鐳射雷達的里程計(loam_livox)

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

一文詳解固態鐳射雷達的里程計(loam_livox)

最後給上調研的時候查到的一些資料:

固態鐳射雷達的優勢:

①其結構簡單,尺寸小,無需旋轉部件,在結構和尺寸上可以大大壓縮,提高使用壽命並使其成本降低。 ②掃描精度高,光學相控陣的掃描精度取決於控制電訊號的精度,可以達到千分之一度量級以上。 ③可控性好,在允許的角度範圍內可以做到任意指向,可以在重點區域進行高密度的掃描。 ④掃描速度快,光學相控陣的掃描速度取決於所用材料的電子學特性,一般都可以達到MHz量級。

固態鐳射雷達劣勢:

①掃描角有限,固態意味著鐳射雷達不能進行360度旋轉,只能探測前方。因此要實現全方位掃描,需在不同方向佈置多個(至少前後兩個)固態鐳射雷達 ②旁瓣問題,光柵衍射除了中央明紋外還會形成其他明紋,這一問題會讓鐳射在最大功率方向以外形成旁瓣,分散鐳射的能量。 ③加工難度高,光學相控陣要求陣列單元尺寸必須不大於半個波長,一般目前鐳射雷達的工作波長均在1微米左右,故陣列單元的尺寸必須不大於500nm。而且陣列密度越高,能量也越集中,這都提高了對加工精度的要求,需要一定的技術突破。 ④接收面大、信噪比差:傳統機械雷達只需要很小的接收視窗,但固態鐳射雷達卻需要一整個接收面,因此會引入較多的環境光噪聲,增加了掃描解析的難度。

MID-40簡單使用說明

一文詳解固態鐳射雷達的里程計(loam_livox)

使用安裝

1。將Livox Mid-40連線到Livox轉換器。2。使用乙太網電纜將PC和Livox Converter連線到路由器。3。將Livox轉換器連線到外部電源。 額定功率是10w,電壓範圍10-16v。需要注意的是溫度越低需要的功率就越大,所以需要合適的電源。

點雲掃描方式

非重複掃,高覆蓋率

MID-40

一文詳解固態鐳射雷達的里程計(loam_livox)

MID-100

一文詳解固態鐳射雷達的里程計(loam_livox)

參考文獻

[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。

本文僅做學術分享,如有侵權,請聯絡刪文。