[LiDAR數據模擬]系列(1) HELIOS模擬平臺介紹

關鍵詞:LiDAR 激光雷達 點雲模擬 做者:李二 日期:06/05/2020 - 07/05/2020node

寫在前面:我前段時間的一個工做(地基激光雷達TLS的新型布站策略)須要用到模擬的TLS點雲數據來驗證新型布站模式的性能,所以須要找一個LiDAR模擬平臺來完成以上任務。ios

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

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

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

1. HELIOS的出現與特色

近些年,隨着計算機算力的提升,遙感中各類計算機模擬軟件層出不窮。其實LiDAR模擬軟件每每是用於如下場景的:web

  • 研究掃描策略和規劃路徑:好比一些路徑規劃,以及個人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的軟件結構示意圖
HELIOS的軟件結構示意圖

2.1. 核心模塊之Platform

platform主要用於控制scanner的位置 和方位 ,用戶能夠選擇平臺類型諸如航空或地面平臺,對於運動平臺還能夠設置speedide

平臺類型包含:svg

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

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

2.2. 核心模塊之Scene

Scene模塊有兩個核心功能:

場景創建:根據輸入的場景文件,構建三維場景模型。

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

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

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

一般激光雷達每秒鐘的脈衝數量可達百萬,所以須要極爲快速的光線投射計算。限制計算速度的主要是如何肯定一條激光射線向量與場景中那一個三角面片上的點相交,所以須要進行搜索,通常採用KD-Tree這種數據結構算法。

光線與場景交點計算的加速結構(來源於漆建波博士論文)
光線與場景交點計算的加速結構(來源於漆建波博士論文)
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支持的四類掃描模式
HELIOS支持的四類掃描模式

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

通常而言,以錐形束中心爲圓心,能夠設置不一樣的數量的圓圈來控制採樣質量

beam divergence經過多光線投射來近似模擬
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模擬掃描可視化示例
HELIOS的TLS模擬掃描可視化示例

3. 後記

下一期咱們具體看一下如何實際使用HELIOS模擬本身想要的數據。

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

我查了一下文獻,目前國內外用HELIOS的還很少,因而想着總結一下經驗,與你們分享。

相關文章
相關標籤/搜索