李 揚,蘇 海,余松森,曹一波,劉好新
(1.華南師范大學計算機學院,廣東 廣州 510631;2.華南師范大學軟件學院,廣東 佛山 528225;3.海南大學信息與通信工程學院,海南 海口 570228)
激光頭發出的紅外激光打到物體表面時發生漫反射,旋轉激光掃描儀接收漫反射回的激光信號,利用激光測距算法,如三角測距法[1],實現距離測量,具有成本低、計算快以及精度高的特點。而這正好滿足移動機器人對環境感知類傳感器實時性和高精度的要求,因此被廣泛應用于移動機器人測距領域,用于獲取環境障礙物的分布[2]。
但是基于漫反射原理的測距儀,常受環境影響而產生誤差。尤其是產生的粗大誤差嚴重偏離了被測量物體的真值,在后續的機器人任務中影響最大,必須被過濾[3-4]。粗大誤差產生的原因有很多,分為主觀原因與客觀原因兩類[5]。文獻[6]-[8]詳細分析了激光測距的誤差來源,其中環境溫度、物體材質、顏色和傾斜度等外界環境都會影響漫反射回的信號,進而影響測距精度。此外,粗大誤差相對于系統誤差和偶然誤差,擁有更鮮明的特征,較容易在數據預處理階段實現直接過濾。因此,進行粗大誤差過濾是很有收益且必不可少的過程。
目前國內外針對粗大誤差過濾的算法已有較深入的研究。總體分為兩大類,一類是鄰域比較法,如中值濾波[9]、弦夾角、弦高比[10]等通過和鄰域的數據進行比較來進行誤差判斷,算法簡單易實現,但是比較時使用的閾值難以定義,因此無法應對多變的環境,魯棒性不強。文獻[11]中提到了一種移動最小二乘中位數法,通過預先估計出測量數據集的標準差,然后以標準差作為判斷依據,它能在一定程度上減輕過濾效果對閾值的依賴,但存在計算量大的問題。另外一類是分段法,將數據分段后過濾成員數少的段。文獻[12]采用基于改進的連續邊緣提取方法(Improved Successive Edge Following,ISEF)進行快速分段及濾波。文獻[13]將掃描點進行區域轉換后,計算相鄰點間的距離,通過分析得出了不同測量距離下的閾值,從而分段過濾。然而這些算法除了本身的缺陷外均存在不適合應用于移動機器人領域的問題。裝載到移動機器人上的旋轉激光掃描儀,其測量數據具有缺失性(某些角度有數據缺失)、不確定性(測量長度隨著環境不斷變化)、數據量大(旋轉激光測距儀隨機器移動的同時以一定的角速度不斷旋轉采集數據)、粗大誤差量少等特點。并且機器人在移動測量的同時進行環境地圖構建,這要求數據過濾需要具備一定的實時性[14-16]。因此,本文研究了一種旋轉激光掃描數據的實時過濾方法,解決如何在上述特性下實現粗大誤差的實時過濾。
本文采用動態閾值分段,根據上一個相鄰的有效采樣點設定動態閾值,對當前采樣數據進行同段判斷,將數據分段后,過濾掉包含成員少的分段。文中給出了動態閾值的設定方法及原理推導,并建立了多組環境進行算法測試,同時為了量化分析算法的效果,通過構建實驗環境的等比例平面圖對測試數據進行了人工標注,且對特殊環境做了具體分析,最后的實驗結果表明了算法的可行性。
在對移動旋轉激光掃描數據進行過濾之前,分析其數據來源及數據特點。
三角測距法是常用的激光測距方法。通常旋轉激光掃描儀使用三角測距法得到環境距離數據,而后經由機器人平臺傳輸給上位機或后臺等待處理。如圖1所示為三角測距原理,激光頭與攝像頭處在同一基準線上,兩者間距離為s,攝像頭焦距為f,激光頭與基準線呈固定夾角β。激光頭發射的激光打在物體表面,經由漫反射被攝像頭捕捉到,經過小孔成像,顯示到成像面上。

圖1 三角測距原理
根據三角形相似和余弦定理可得:
(1)
以常見的傳感器設備為例,參數為f=16 mm,s=41 mm,β=82.145°,每個像元的大小為5.5 μm,則其像元偏移X與測距長度D的對應關系如圖2所示。

圖2 X-D曲線
由于像元偏移X是離散值所以測距長度D也是離散的。這意味著對于300 cm處的障礙物,激光測距所得到的測距距離只能是301 cm或者漫反射的激光點投影錯誤時可能會得到293.7 cm的次等結果,此時的誤差大概為2.1 %。由圖2易知誤差值隨著測距距離的增大而增大,當測距距離為最大有效值Dmax時,誤差最大。另一方面,隨著X增大,距離D的變化逐漸放緩,且由于成像面有限,所以實際的X并不會無限增大,致使最終D會趨近于一個極小值Dmin。因此,系統會結合傳感器的參數,在誤差可接受范圍內,定義一個有效測距范圍[Dmin,Dmax],只處理有效范圍內的數據。
上位機接收到的數據經過奇偶校驗以及范圍篩選后才進行誤差過濾,可以定義這樣的數據為待過濾數據。如圖3所示為在某室內環境下旋轉激光測距儀旋轉一圈所得到的待過濾數據,橫軸為采樣時間,縱軸為測距距離,測距儀每旋轉一度進行一次采樣,為方便顯示,將缺失的數據用零填充。

圖3 待過濾數據
結合圖3以及移動機器人的工作特性可知,待過濾數據具有如下特點:
(1)缺失性。部分角度對應的測距數據有缺失,主要的原因可能是對應角度在有效范圍內并沒有障礙物存在,或者該角度所在的數據幀,因為傳輸錯誤而丟失。
(2)不確定性。角度所對應的長度變化完全由所處的環境決定,測距長度的走勢具有不確定性。
(3)分段性。數據的不確定性和缺失性使得連續的角度所對應的測量數據被分割成了多個段,但是正確的數據在獨立成段時往往會擁有足夠多的段成員。
(4)數據量大。在機器人移動過程中,旋轉激光測距儀一直在進行測距,新的數據一直在不斷的傳回給上位機等待處理,因此所提的算法應該具備實時性以及計算量小的特點。
(5)粗大誤差量少。旋轉一圈所采樣數據中包含的粗大誤差并不多,且不會多個連續出現。
搭載在移動機器人上的旋轉激光掃描儀所產生的掃描數據具備其獨有的特性,加上對實時性和計算量的要求,導致現有的一些過濾算法都不太適用。本文針對粗大誤差與相鄰數據差異較大,且數量較少的特點,通過設定動態閾值實現數據分段,最后定義成員數較少的段為粗大誤差,進行過濾。算法總流程如圖4所示。

圖4 算法總流程
分段的依據是判斷新的采樣數據是否存在突變,即采樣值是否大于動態閾值,若是,則需要分段,否則,定義為同段數據。現實環境中,對相對較平緩的物體表面進行采樣所構成的點集通常會組成同段數據。另一方面,基于漫反射原理的測距傳感器,在入射角θ較大時,傳感器所能接收到的漫反射信號較弱,會影響到像元偏移量的計算。由前述可知,在測距很遠時,較小的像元偏移計算錯誤也會導致較大的測量誤差[17]。因此,本文通過分析平緩物體表面采樣數據的分布推導動態閾值的設定方法,同時考慮入射角作為約束條件,構建了如圖所示的約束模型,定義掃描儀逆時針旋轉,lt-k為采樣時刻t-k所對應的測距長度,α為入射角的余角。k既是角度也代表采樣間隔(每隔一度進行一次采樣)。
如圖5所示,相鄰的采樣點間存在數據約束。對于lt時刻的數據,記其最近的上一個有效數據為lt-k,則lt相對于lt-k可能是遞增的或是遞減的。在限定了入射角的前提下,我們可以根據t-k時刻的數據lt-k計算在分別進行最大遞增和最大遞減變化的k個時刻后的數據值,作為t時刻數據lt的合理取值范圍。


圖5 約束模型

(2)
則合理的lt應滿足:
(3)

(4)
lt應滿足:
(5)
綜上,得到lt的合理取值范圍:
(k (6) 式中,lt-k為最近的一個先前時刻的有效數據,即Dmin≤lt-k≤Dmax;α和N為預設參數,當且僅當lt滿足上式且k 每當建立新段時,檢查舊段的成員數,若小于N,則將舊段中數據均標記為粗大誤差,進行過濾。在分段過程中,當檢測到當前段成員數大于等于N時,段內的數據均能直接標記為正確數據,因此本文所提算法能在N個采樣時間間隔內實現數據過濾。 如圖6所示為實驗所用的旋轉激光掃描儀,以及裝載有旋轉激光掃描儀的機器人平臺。旋轉激光掃描儀使用三角測距法得到環境距離信息,后經由機器人通過ZigBee通信傳輸給上位機。 圖6 旋轉激光掃描儀與機器人 所用旋轉激光掃描儀的參數為:f=16 mm,s=41 mm,β=82.145°,每個像元的大小為5.5 μm。由此,定義15~300 cm為激光掃描儀的有效測距范圍,即Dmin=15 cm,Dmax=300 cm。 經過測試,發現所使用的移動機器人主要是在受環境影響時會產生粗大誤差,尤其是在如圖7所示的兩種環境下。 圖7 粗大誤差環境 如圖7(a)所示,激光頭正對著的方向,若存在黑色且表面光滑的障礙物,則易產生粗大誤差。其次,如圖7(b)所示,對于由兩個光滑平面所組成的夾角,被激光頭直射到時,也容易產生粗大誤差。基于此,我們構造了四組不同的能產生粗大誤差的測試環境,并采集該環境下的測量數據進行實驗,以驗證算法的可行性。如圖8所示,為構建環境所用到的障礙物,包括:兩個邊長為6 cm的六面體,一個邊長為4.5 cm的八面體,一個直徑為11.5 cm的圓柱及多個長為15 cm、寬為4 cm的長方體。圖中瓷磚大小為50 cm×50 cm。 圖8 障礙物集合 結合粗大誤差產生條件,我們布置了如圖9(a)所示的實測環境。除了用到了部分障礙物,實際環境中也包含了門及黑色墻磚。如圖9(b)所示為由旋轉激光掃描儀在該環境下所得到的激光點圖。由激光點圖可知,在某些夾角處產生了粗大誤差。 圖9 采樣環境 測量現實環境能得到環境的測量集(一圈的有效掃描數據),為了方便分析所提算法的優缺點,我們對測量集的數據進行人工標注,標注每一個數據點的好壞。本文使用Auto CAD(Autodesk Computer Aided Design)按1∶10的比例重建了環境圖,如圖10所示為環境1的等比例平面圖,并模擬激光束發射,每隔一度數據進行一次采樣,得到每個角度對應的測距長度,構成環境的標準集。 圖10 環境1等比例平面圖 根據標準集標注測量集的方法為:對于測量集中每一個點數據,找到其在標準集中的值,若兩者差值的絕對值小于閾值,則定義為好點,否則為壞點。本文取對應標準采樣點的20 %作為閾值。如圖11所示,為標準集和測量集的混合圖,橫軸代表采樣時間,縱軸代表測距長度,為了顯示方便,對于某些角度是無效數據的情況做了數據填充,無效點的縱坐標值填充為零,圖中方點為測量集,圓點代表標準集。 圖11 標準集與測量集 使用所提算法對測量集進行過濾,圖11中“*”點即為算法認為需要被過濾的點。因為所提過濾算法將包含成員數較少的段定義為粗大誤差,進行濾掉,因此會出現誤過濾的情況。 根據多次實驗測試,本文將使用參數α=20,N=4,如下表所示為過濾結果,錯誤數據標記為0,正確數據標記為1。以標準集對測量集的標記為準對比所提過濾算法對測量集的標記,可以得到過濾算法的過濾率等評價指標。對于環境1,正確率為98.12 %,有1.94 %的數據被誤過濾,不過算法的未過濾率為0 %,這說明算法能準確的識別粗大誤差數據并實現過濾,具體過濾結果如表1所示。 表1 過濾結果 同一個環境下,機器人運動時的測量數據與靜止時的測量數據有很大差別,但是很難為移動中得到的測量集制定標準集,即難以人工標注,因此本文借助了相對運動的概念,使機器人靜止,但布置了多種障礙物環境,在能產生粗大誤差的同時讓環境盡量復雜,如此既能得到和機器人移動時相近的測量集,也能進行人工標注。本文設置了多組實驗,如圖12所示為另外三組實驗的環境圖和激光點圖。 (a)環境2 (b)環境3 (c)環境4 以上所述的四種環境的算法過濾效果匯總如表2所示。結合環境圖和過濾結果可知,所提算法在不同的環境下均能實現粗大誤差數據的過濾(未過濾率均為0 %)。在較為復雜的環境4中,誤過率的數據最多,達到了5.05 %,這主要是因為,環境4中存在較多離散的障礙物。這些障礙物在離激光源較遠的時候,其數據點集所對應的段成員數會很少,因此被誤過濾。但因為數據量大,所以誤過濾部分數據是可以接受的,又因為測距是在移動中進行的,所以不會出現某一障礙物所對應的測量數據一直被誤過濾的情況。 粗大誤差與相鄰數據存在較大的距離差,為何不能用直接比較的方法進行過濾?是因為直接比較能過濾粗大誤差,但只能做到部分過濾,無法應對某些特殊情況。如圖13所示,a、b均為粗大誤差,但是由于a點與b點的距離差較小,不滿足粗大誤差的判定條件,a點會被漏判為好點,同理b點也會被漏判。而且,距離差的閾值不好界定。因此,直接比較的方法在多樣的環境下會存在漏判,不具備魯棒性。 表2 過濾結果統計 圖13 特殊粗大誤差 那么基于分段法,應用弦夾角或弦高比進行分段的算法是否可行?仍存在閾值無法確定和特殊環境漏判的問題,如弦夾角法通過比較當前點的弦夾角和預設閾值來進行突變點判斷,那么在a點所示環境下,其弦夾角較大,從而產生了漏判。但是本文算法能將a、b分為同一段,進而過濾。因此,本文算法具備一定的魯棒性,且給出了動態閾值的設定方法。 理論上,本文算法對于離散環境會出現所有數據均被誤過濾的情況。取N=4,當段成員數小于N時進行過濾,我們分析該條件下環境的離散程度。如圖13所示為激光視野的極限模型,表示被測物體表面至少有多長才能被四個連續的激光點擊中。設圖4中圓的半徑為r,相鄰線段間的夾角為1°。如圖14(a)所示,取r=300 cm,可得四條有效范圍內最長的激光光束所擊中的物體,其最小長度約為15.7 cm。這意味著在機器視野最遠處的物體,若長度在15.7 cm以下,則會被誤過濾,該物體對激光傳感器不可見。如圖14(b)所示,取r=30 cm,可得四條有效范圍內最短的激光光束所擊中的物體,其最小長度約為1.6 cm,即在機器視野最近處的物體,只要長度大于1.6 cm,激光傳感器均能檢測到。 本文認為,由于環境過于離散導致好點被誤過濾的情況不需要視為特殊情況區別對待。因為機器一直在移動,在極限遠時被誤過濾的數據,會在機器人靠近物體的時候再次被檢測到。如環境3和環境4中的兩個圓柱體,環境3中的圓柱體離機器較近,測量數據被保留下來,而環境4中的因為過遠,生成的段成員數較少而被過濾。 圖14 激光視野極限模型 另一種離散環境,如圖13所示,由于粗大誤差的出現,將連續的序列分割成了兩個子序列,由于某段子序列過小而產生了誤過濾。對于該種情況可以通過合并兩個子序列,進而再進行段判斷,決定是否過濾。當然也可以不處理該種情況,如前所述,當機器人移動到近處時,自然會再次檢測到誤過濾的物體。因此,誤過濾部分數據是可以接受的。 本文通過分析移動旋轉測距數據的特點,提出了一種基于動態閾值分段的移動旋轉激光掃描數據實時過濾算法,可應用于移動機器人領域,對機器移動中采集的旋轉激光掃描數據進行實時過濾。算法通過前序有效采樣值為當前采樣點設定動態閾值,將滿足閾值的采樣點合并為同一個分段,再將段成員數量較少的段作為粗大誤差進行過濾,通過考慮入射角作為約束條件,分析平緩物體表面采樣數據的分布,推導出了動態閾值的設定方法,從而實現了使用動態閾值進行數據分段。算法兼顧了移動機器人對過濾的實時性需求,最后的實驗分析表明,該算法具備一定的魯棒性,能準確過濾粗大誤差,雖然存在誤過濾,但在可接受范圍內。3.2 段判斷
4 實 驗
4.1 實驗環境






4.2 實驗分析






4.3 特殊環境分析



5 總 結