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