前言:
說起來,該3D激光掃描測距儀(3D激光雷達)就核心設(shè)計原理來而言,應(yīng)該在激光鍵盤(https://www.cirmall.com/circuit/2978/detail?3)設(shè)計項目之后?,F(xiàn)在給大伙講講3D掃描測距儀的相關(guān)原理和制作細節(jié)。請耐心讀完,方可吸收其中的精華。
在開始介紹原理前,先給出一些掃描得到的3D模型以及演示視頻,給大家一個直觀的認識
掃描得到的房間一角:
掃描的我
掃描儀實物
激光三角測距原理這里統(tǒng)一列出他們的參數(shù):
- 攝像頭:VGA畫質(zhì)的USB攝像頭,30fps (市面普遍可以購買的型號)。非廣角
- 激光器:50mW 紅外一字線激光 808nm
- 濾光片:10mm直徑紅外低通濾光片
- 舵機:HS-322hd 43g標準舵機
本文結(jié)構(gòu)簡單介紹了激光雷達產(chǎn)品的現(xiàn)狀 :
- 線狀激光進行截面測距原理
- 3D激光掃描儀的制作考慮
- 參考文獻
簡介-激光掃描儀/雷達:
這里所說的激光掃描測距儀的實質(zhì)就是3D激光雷達。如上面視頻中展現(xiàn)的那樣,掃描儀可以獲取各轉(zhuǎn)角情況下目標物體掃描截面到掃描儀的距離,由于這類數(shù)據(jù)在可視化后看起來像是由很多小點組成的云團,因此常被稱之為:點云(Point Clould)。在獲得掃描的點云后,可以在計算機中重現(xiàn)掃描物體/場景的三維信息。
這類設(shè)備往往用于如下幾個方面:
機器人定位導(dǎo)航
- 目前機器人的SLAM算法中最理想的設(shè)備仍舊是激光雷達(雖然目前可以使用kinect,但他無法再室外使用且精度相對較低)。機器人通過激光掃描得到的所處環(huán)境的2D/3D點云,從而可以進行諸如SLAM等定位算法。確定自身在環(huán)境當中的位置以及同時創(chuàng)建出所處環(huán)境的地圖。這也是我制作他的主要目 的之一。
- 零部件和物體的3D模型重建
- 地圖測繪
現(xiàn)狀:
目前市面上單點的激光測距儀已經(jīng)比較常見,并且價格也相對低廉。但是它只能測量目標上特定點的距離。當然,如果將這類測距儀安裝在一個旋轉(zhuǎn)平臺上,旋轉(zhuǎn)掃描一周,就變成了2D激光雷達 (LIDAR)。相比激光測距儀,市面上激光雷達產(chǎn)品的價格就要高許多:
Hokuyo 2D激光雷達截圖:
上圖為Hokuyo這家公司生產(chǎn)的2D激光雷達產(chǎn)品,這類產(chǎn)品的售價都是上萬元的水平。其昂貴的原因之一在于他們往往采用了高速的光學(xué)振鏡進行大角度范圍(180-270)的激光掃描,并且測距使用了計算發(fā)射/反射激光束相位差的手段進行。當然他們的性能也是很強的,一般掃描的頻率都在10Hz以上,精度也在幾個毫米的級別。
2D激光雷達使用單束點狀激光進行掃描,因此只能采集一個截面的距離信息。如果要測量3D的數(shù)據(jù) ,就需要使用如下2種方式進行擴充:
- 采用線狀激光器
- 使用一個2D激光雷達掃描,同時在另一個軸進行旋轉(zhuǎn)。從而掃描出3D信息。
說明:
第一種方式是改變激光器的輸出模式,由原先的一個點變成一條線型光。掃描儀通過測量這束線型光在待測目標物體上的反射從而一次性獲得一個掃描截面的數(shù)據(jù)。這樣做的好處是掃描速度可以很快 ,精度也比較高。但缺點是由于激光變成了一條線段,其亮度(強度)將隨著距離大幅衰減,因此測距范圍很有限。對于近距離(<10m)的測距掃描而言,這種方式還是很有效并且極具性價比的,本文介紹的激光雷達也使用這種方式,
對于第二種方式,優(yōu)點是可以很容易用2D激光雷達進行改造,相對第一種做法來說,他在相同的激光器輸出功率下掃描距離更遠。當然,由于需要控制額外自由度的轉(zhuǎn)軸,其誤差可能較大,同時掃描速度也略低。
這類激光雷達產(chǎn)品目前在各類實驗室、工業(yè)應(yīng)用場景中出現(xiàn)的比較多,但對于個人愛好著或者家用 設(shè)備中,他們的價格實在是太高了。當然,目前也有了一個替代方案,那就是kinect,不過他的成像 分辨率和測距精度相比激光雷達而言低了不少,同時無法在室外使用。
低成本的方案
造成激光雷達設(shè)備高成本的因素為
- 使用測量激光相位差/傳播時間差測距
- 高速振鏡的高成本
- 矯正算法和矯正人工成本
對于個人DIY而言,第三個因素可以排除,所謂知識就是力量這里就能體現(xiàn)了:-) 對于前2個因素,如果要實現(xiàn)完全一樣的精度和性能,那恐怕成本是無法降低的。但是,如果我們對精度、性能要求稍 微降低,那么成本將可以大幅的下降。
首先要明確的是投入的物料成本與能達成的性能之間并非線型比例的關(guān)系,當對性能要求下降到一 定水平后,成本將大幅下降。對于第一個因素,可以使用本文將介紹的三角測距方式來進行。而對于 掃錨用振鏡,則可以使用普通的電機機構(gòu)驅(qū)動激光器來替代。
本文介紹的低成本3D激光掃描儀實現(xiàn)了如下的成本/性能:
成本:~¥150
測量范圍:最遠6m
測量精度:(測量距離與實際距離的誤差)最遠6m出最大80mm誤差,近距離(<1m),誤差水平在 5mm以內(nèi)
掃描范圍:180度
掃描速度:30 samples/sec (比如以1度角度增量掃描180度,耗時6秒)
對于精度而言,這個低成本方案足以超過kinect,不過掃描速度比較慢,但是對于一般業(yè)余用途而言已經(jīng)足夠。不過,該掃描速度是很容易提升的,本文將在分析其制約因素后介紹提高掃描速度的方 法。
原理和算法:https://www.csksoft.net/blog/post/lowcost_3d_laser_...
自制低成本3D激光掃描測距儀(3D激光雷達),第二部分
https://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_2.html
視頻:另一段實時掃面渲染
視頻:matlab中觀察點云:https://v.youku.com/v_show/id_XMzE4MTA0MzMy.html
參考文獻
[1] 自制低成本3D激光掃描測距儀(3D激光雷達),第一部分
https://www.csksoft.net/blog/post/lowcost_3d_laser_ranger_1.html
[2]: Driverless USB AVR/51 ISP Programmer powered by RoboPeak
https://code.google.com/p/rp-usb-connector/
[3]: 本制作在Google Code的開源項目頁面
https://code.google.com/p/rp-3d-scanner
[4]: V-USB, Virtual USB port for AVR microcontrollers
https://www.obdev.at/products/vusb/index.html
[5]: Arduino-Lite, Lightweight AVR library developed by RoboPeak
https://www.robopeak.net/blog/?p=131
[6]: Arduino-Lite Project
https://code.google.com/p/arduino-lite/
[7]: Irrlicht Engine - A free open source 3d engine
https://irrlicht.sourceforge.net/
[8]: MeshLab OpenSource Project
https://meshlab.sourceforge.net/
[9]: Blender OpenSource Project
https://www.blender.org/
[10]: PCL - Point Cloud Library
https://pointclouds.org/