1. 程式人生 > >[LiDAR資料模擬]系列(1) HELIOS模擬平臺介紹

[LiDAR資料模擬]系列(1) HELIOS模擬平臺介紹

關鍵詞:LiDAR 鐳射雷達 點雲模擬 作者:李二 日期:06/05/2020 - 07/05/2020

寫在前面:我前段時間的一個工作(地基鐳射雷達TLS的新型布站策略)需要用到模擬的TLS點雲資料來驗證新型布站模式的效能,因此需要找一個LiDAR模擬平臺來完成以上任務。

據我所知,目前典型的常用的兩個模擬平臺是:

  • DART (Discrete anisotropic radiative transfer) 的LiDAR模擬模組. DART原本主要用於遙感影像模擬與三維反演,在大約2015-2016年,增加了LiDAR的模擬模組。
  • HELIOS (Heidelberg LiDAR Operations Simulator). HELIOS本身就是設計用於LiDAR資料的模擬的,也是在2015年左右完成初始版本的。

這兩個軟體我都用過,並準備分享一下經驗,最近新學習的HELIOS,那就先分享HELIOS吧

1. HELIOS的出現與特點

近些年,隨著計算機算力的提高,遙感中各種計算機模擬軟體層出不窮。其實LiDAR模擬軟體往往是用於以下場景的:

  • 研究掃描策略和規劃路徑:比如一些路徑規劃,以及我的TLS布站策略
  • 演算法發展:根據模擬資料,來發展一些新的方法,比如估算樹木結構屬性資訊
  • 感測器發展:調整掃描引數,以測試不同感測器的掃描效能
  • 教學訓練:比如學校沒有購買鐳射雷達,可以用模擬資料教學

作者在他會議論文總結了一些相關歷史工作,發現以前的研究主要存在如下幾個不足:

  • 一些研究採用的是2.5D高程圖來模擬ALS資料,缺少對場景詳細幾何結構的描述
  • 詳細幾何結構下的模擬十分耗時,需要加速
  • 鐳射脈衝並非一條無寬度的直線(thin line),而是存在beam divergence,即錐形束
  • 缺乏全波形資料(full-waveform)的模擬
  • 視覺化與互動做的不夠好

德國海德堡大學(Heidelberg University) Bernhard Höfle教授團隊的工程師Sebastian Bechtold(主要作者) 開發的HELIOS則具有如下特點(a flexible multi-purpose simulation framework):

  • 支援真實三維幾何,輸入可以為obj模型檔案、GeoTIFF地形高程檔案(自動被轉換為三角網)、ASCII格式的‘xyz’點雲檔案(自動被轉換為體元)
  • 可用於任意場景的模擬:城市、森林、農田、自定義幾何結構等
  • 可以模擬機載LiDAR、無人機LiDAR、車載/揹包LiDAR、地基LiDAR等不同平臺數據
  • 可以輸出三維點雲、強度、全波形資料
  • Java開發,三維視覺化和互動性非常好
  • 各種掃描引數定義十分方便 (XML檔案的形式),適合批量處理
  • 採用核心模組(core component)和擴充套件模組(extension modules)的組成方式,方便擴充套件
  • 程式碼開源,Github下載,且一直在維護

2. HELIOS的軟體結構

HELIOS是Java寫的,當然支援Windows, Linux和 Mac OS作業系統。它的軟體結構比較直觀,如下圖所示。

HELIOS的軟體結構示意圖

2.1. 核心模組之Platform

platform主要用於控制scanner的位置和方位,使用者可以選擇平臺型別諸如航空或地面平臺,對於運動平臺還可以設定speed

平臺型別包含:

  • 四輪車 (mobile laser scanning)
  • 無人機 (multicopter, UAV laser scanning)
  • 有人機 (airplane)
  • 三腳架 (tripod)
HELIOS支援的四種平臺

小注:Platform模組並不能定義行動路徑,其僅能控制平臺怎樣移動,但卻不能控制平臺向哪裡移動(這在survey playback模組中進行)。

2.2. 核心模組之Scene

Scene模組有兩個核心功能:

場景建立:根據輸入的場景檔案,構建三維場景模型。

一般而言,場景是由三角面片 triangle mesh構建的(即輸入多個obj模型,其具有詳細的幾何結構資訊),每個三角面片均在*.mtl檔案中定義了其物理屬性(如反射率),*.obj檔案會對*.mtl檔案中的屬性值進行索引。

*.obj檔案以三角面片的形式儲存(來源於漆建波博士論文)
*.obj檔案中三角面片的儲存格式(來源於漆建波博士論文)

求交計算:根據掃描原點 origin鐳射射線向量 ray vector場景幾何 scene geometry,來快速計算鐳射線與場景的交點。這就是所謂的光線投射 ray casting(也可以稱為光線追蹤 ray tracing)。

通常鐳射雷達每秒鐘的脈衝數量可達百萬,因此需要極為快速的光線投射計算。限制計算速度的主要是如何確定一條鐳射射線向量與場景中那一個三角面片上的點相交,因此需要進行搜尋,一般採用KD-Tree這種資料結構演算法。

光線與場景交點計算的加速結構(來源於漆建波博士論文)
KD-Tree建立過程與遍歷過程(來源於漆建波博士論文)

小注:這裡的幾個圖片都是來自於我師兄漆建波 博士的博士論文,他算是遙感圈很認可的做計算機模擬模型做的很好的青年學者了。這些理論比較相通,恰好他的圖很直觀,於是借過來一用,感謝慷慨。

關於光線追蹤/光線投射的一些具體內容,不妨看一下漆建波博士的論文

2.3. 核心模組之Scanner

Scanner模組主要有三項任務:

  • 模擬射束偏轉(beam deflection):比如對於TLS,就是方位azimuth掃描和天頂zenith掃描範圍,其實就是角度移動的範圍 the pattern of angular movement.
  • 模擬鐳射脈衝發射 (firing of laser pulse):真實的鐳射脈衝是錐形光束,而不是直線,所以要考慮beam divergence
  • 模擬探測和處理鐳射回波訊號:

HELIOS有四類掃描模式(scan pattern)可供選擇:

  • Rotating mirror (parallel scan lines)
  • Fiber array (parallel scan lines)
  • Oscillating mirror (“zig-zag” scan pattern)
  • Conic mirror (elliptical scan pattern, a.k.a. “Palmer scan”)
HELIOS支援的四類掃描模式

beam divergence的模擬:用多條光線投射multiple raycasting queries來近似鐳射錐形束。

一般而言,以錐形束中心為圓心,可以設定不同的數量的圓圈來控制取樣質量

beam divergence通過多光線投射來近似模擬

full waveform 全波形的模擬:對錐形束中每條取樣光線執行光線投射,如果光線與三角面片相交,則記錄surface incidence angle和該面片的物理性質。

波形的計算有點複雜,我還沒搞清楚,挖個坑,回頭填上吧。

點雲輸出:HELIOS通過應用回波檢測演算法,諸如peak detectionGaussian decomposition來匯出點雲。

2.4. 擴充套件模組之Loading assets

Loading assets模組其實就負責匯入資料。它支援:

  • OBJ檔案格式,這是HELIOS支援的標準格式
  • GeoTIFF檔案格式,這是2.5D的數字高程影像,HELIOS會將其自動轉換為三角面片
  • XYZ點雲檔案格式,點雲輸入後被體元化,如果體元存在多於一個點,則該體元為場景結構體元

讀取輸入場景檔案中的座標空間變換,包含平移 translate旋轉 rotate縮放 scale三個要素。

2.5. 擴充套件模組之Visualization

Visualization模組提供了實時互動功能,雖然目前看起來比較粗糙,但是依然很有用。根據視覺化,可以判定測站、結構等是否正確,判定掃描方式是否如預期,發現模擬程式碼是否有問題等等。

HELIOS的TLS模擬掃描視覺化示例

3. 後記

下一期我們具體看一下如何實際使用HELIOS模擬自己想要的資料。

其實我們RAMM研究小組早就有人在用HELIOS,只是我一直用DART比較習慣,而且這篇TLS布站論文中也一直用DART模擬點雲。目前審稿人讓增加新的international benchmarking資料,而手頭又沒有在法國時那麼powerful的電腦了,又經漆建波博士推薦,就學習了HELIOS。

我查了一下文獻,目前國內外用HELIOS的還不多,於是想著總結一下經驗,與大家分享。