匡 兵,邱德憲,黃春德,黃廷輝,崔更申
(桂林電子科技大學(xué) a.機(jī)電工程學(xué)院;b.計(jì)算機(jī)與信息安全學(xué)院,桂林 541004)
近年來,隨著自主移動機(jī)器人技術(shù)的發(fā)展,在工業(yè)、農(nóng)業(yè)和服務(wù)業(yè)等各種不同領(lǐng)域的應(yīng)用范圍不斷擴(kuò)大。機(jī)器人自主移動需要導(dǎo)航系統(tǒng),定位是實(shí)現(xiàn)導(dǎo)航的關(guān)鍵之一[1]。環(huán)境地圖用于描述周圍環(huán)境信息,是機(jī)器人定位的基礎(chǔ)。移動機(jī)器人建立環(huán)境地圖的重要前提是能對環(huán)境特征中的特征點(diǎn)或特征線段進(jìn)行準(zhǔn)確有效地提取[2]。在提取環(huán)境數(shù)據(jù)時(shí)通常使用激光雷達(dá),激光雷達(dá)掃描速度快,測距精度高,角分辨率高,方向性強(qiáng),廣泛用于機(jī)器人定位?;诩す饫走_(dá)的環(huán)境特征提取是當(dāng)前移動機(jī)器人定位研究的熱點(diǎn)之一。
基于激光雷達(dá)的室內(nèi)環(huán)境特征提取的一個(gè)主要內(nèi)容是線段提取。目前,線段提取技術(shù)主要可以分為序慣方法和遞歸方法兩類。序慣方法有PDBS(point distance based methods)算法、SEF(successive edge following)算法和LT(line tracking)算法。遞歸方法有IEPF(iterative end point fit)算法[3]和Split-Merge算法[4]。除此以外,還有不依賴于局部信息的HT(hough transform)算法[5]?,F(xiàn)有的多數(shù)序慣類算法都存在無法對相交直線進(jìn)行分割的缺點(diǎn)。遞歸類算法存在對線段過分割或欠分割的現(xiàn)象。HT算法嚴(yán)重依賴于掃描點(diǎn)的空間密集程度。
滿增光等[6]提出了一種分開-合并框架,該方法較好地解決了IEPF算法固定閾值所帶來的過分割或欠分割的問題,降低了誤分割率,取得了較好的特征提取效果,但是計(jì)算量依然偏大,計(jì)算效率較低[7-10]。綜上所述,目前從激光雷達(dá)距離中提出直線特征的方法較多,但普遍采用迭代計(jì)算,依然缺少一種高效、簡便、準(zhǔn)確率高的算法。劉朋等[11]提出一種利用斜率差對線段進(jìn)行分割和特征點(diǎn)提取的基于斜率差的激光雷達(dá)環(huán)境特征提取方法。該方法使用相鄰點(diǎn)之間斜率的變化關(guān)系來提取特征點(diǎn),再通過特征點(diǎn)對點(diǎn)云進(jìn)行分割來提取線段,本算法不需要迭代,工作量較小,而且對閾值不敏感,準(zhǔn)確率也較高。然而在基于斜率差的激光雷達(dá)環(huán)境特征提取方法中,盡管激光雷達(dá)測距精度較高,但是仍然會有誤差存在,測距的誤差在某些時(shí)候會造成角點(diǎn)和斷點(diǎn)識別的錯(cuò)誤,進(jìn)而導(dǎo)致線段過分割現(xiàn)象和誤分割現(xiàn)象。本文分析了導(dǎo)致該問題的原因,并提出了一種考慮激光雷達(dá)誤差的環(huán)境特征識別斜率差優(yōu)化方法。
圖1 掃描點(diǎn)示意圖
(1)
令第i點(diǎn)的斜率ki為:
(2)
因?yàn)橛蓭缀侮P(guān)系得:ω3=ω2+Δθ=ω1+2Δθ,所以:
k3-k2≈k2-k1≈0
(3)
當(dāng)相鄰兩點(diǎn)處的k值之差很小時(shí),就認(rèn)為該兩點(diǎn)處于同一條直線上,否則該點(diǎn)為斷點(diǎn)或角點(diǎn)。令相鄰激光點(diǎn)斜率的差值:
Δki=ki-ki-1
(4)
激光雷達(dá)掃描得到的點(diǎn)集為:
Q={(θi,di),i=2,3,…,n}
式中:θi和di分別為掃描第i點(diǎn)時(shí)轉(zhuǎn)過的角度和到雷達(dá)的距離。尋找斷點(diǎn)和角點(diǎn)并進(jìn)行分割線段的算法為:
(1)計(jì)算相鄰激光點(diǎn)斜率的差值Δk,即:
(5)
(2)如果相鄰的3個(gè)激光點(diǎn)斜率的差值Δki-1、Δki和Δki+1均大于閾值kth且|Δki-Δki-1|>2kth,|Δki+1-Δki|>2kth,則認(rèn)為第i點(diǎn)是第一類孤立點(diǎn)。找出所有第一類孤立點(diǎn),刪除后更新點(diǎn)集Q。
(3)更新點(diǎn)集Q后,再依次計(jì)算第i個(gè)掃描點(diǎn)的θi與相鄰兩掃描點(diǎn)的θi-1和θi+1的差值,如果|θi-θi-1|>θth,且|θi+1-θi|>θth(θth為閾值),則認(rèn)為第i點(diǎn)為第二類孤立點(diǎn)。找出所有第二類孤立點(diǎn),刪除后再次更新點(diǎn)集Q。
(4)將去除孤立點(diǎn)后的點(diǎn)集Q重新利用式(5)計(jì)算相鄰掃描點(diǎn)的斜率差值,進(jìn)行斷點(diǎn)和角點(diǎn)的判斷。判斷規(guī)則如下:
①如果|θi+1-θi|>θth,則第i點(diǎn)和第i+1點(diǎn)均為斷點(diǎn),分別為前一條直線上的結(jié)束點(diǎn)和后一條直線的起始點(diǎn);
②如果Δki和Δki+1均大于閾值kth,且ΔkiΔki+1<0,則第i點(diǎn)和第i+1點(diǎn)均為斷點(diǎn),分別為前一條直線上的結(jié)束點(diǎn)和后一條直線的起始點(diǎn);
③如果有|Δki|>αkth(0<α<1),而且還滿足|Δki+1-Δki|>0&|Δki-Δki-1|>0&(Δki+1-Δki)(Δki-Δki-1)<0,則第i點(diǎn)為角點(diǎn),即前一條直線的結(jié)束點(diǎn),同時(shí)也是后一條直線的起始點(diǎn),其中,α為角點(diǎn)閾值系數(shù)。
(5)根據(jù)點(diǎn)集Q中各點(diǎn)的屬性,從第一點(diǎn)至最后一個(gè)點(diǎn)依次分割,并計(jì)算每條線段的始末點(diǎn)坐標(biāo)和線段的斜率,得到線段集L。
在實(shí)際應(yīng)用中,由于激光雷達(dá)數(shù)據(jù)存在誤差,會導(dǎo)致兩個(gè)問題,一是在角點(diǎn)處可能無法識別真實(shí)角點(diǎn),二是在直線上可能會識別出錯(cuò)誤的斷點(diǎn)和角點(diǎn)。
因?yàn)槔走_(dá)數(shù)據(jù)的誤差會影響角點(diǎn)識別算法,導(dǎo)致真實(shí)角點(diǎn)無法被識別。通過一種角點(diǎn)識別優(yōu)化算法,來提高真實(shí)角點(diǎn)識別準(zhǔn)確度。
從O點(diǎn)向直線L以等角度Δθ的間隔畫直線,交點(diǎn)依次為Q1,Q2,Q3,Q4,Q5,O點(diǎn)到交點(diǎn)的長度依次為d1,d2,d3,d4,d5。雷達(dá)的距離數(shù)據(jù)存在誤差,在獲取OQ3時(shí),雷達(dá)距離數(shù)據(jù)為OE1,雷達(dá)誤差為E1Q3,此時(shí)d3的長度較長,ω2、ω3因雷達(dá)誤差而減小,則|Δk3|也減小。因?yàn)樵撉闆r下ω2、ω3、|Δk3|的值變化非常小,所以雷達(dá)誤差對識別角點(diǎn)E1的影響非常小,點(diǎn)集信息如圖2a所示。
(a) 遠(yuǎn)距離角點(diǎn) (b) 近距離角點(diǎn)圖2 角點(diǎn)誤差掃描點(diǎn)示意圖
但是如果在獲取OQ3時(shí),d3長度比較短,雷達(dá)距離數(shù)據(jù)為OE1,雷達(dá)誤差E1Q3長度不變,那么點(diǎn)集信息如圖2b所示??梢钥吹诫m然雷達(dá)誤差距離沒變,但是d3變小了,所以雷達(dá)誤差對識別角點(diǎn)E1產(chǎn)生的影響也產(chǎn)生了變化。此時(shí)ω2、ω3、|Δk3|的值減小程度更大,若|Δk3|小于設(shè)置的角點(diǎn)判斷閾值αkth,則角點(diǎn)E1識別失敗,真實(shí)角點(diǎn)識別準(zhǔn)確度降低。
在雷達(dá)到角點(diǎn)距離相同的情況下,如果雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線的夾角發(fā)生變化,角點(diǎn)的斜率差值也會發(fā)生變化。當(dāng)雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線的夾角相同時(shí),雷達(dá)所處位置稱為角點(diǎn)中心處,如圖3a所示,已知角點(diǎn)兩側(cè)直線的夾角為A,則ω5+ω6=A,ω5=ω6,ω6+ω3+Δθ=90°,因?yàn)棣う确浅P?所以ω2+ω5=90°≈ω3+ω6,ω2≈ω3,從而可以得到ω2+ω3≈|180°-A|,故而有:
(a) 角點(diǎn)中心處 (b) 非角點(diǎn)中心處圖3 角點(diǎn)掃描示意圖
|Δk3|=|-tanω3-tanω2|≈
|-tan(90°-ω6)-tan(90°-ω5)|
(6)
當(dāng)雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線的夾角不同時(shí),如圖3b所示。已知角點(diǎn)兩側(cè)直線的夾角仍為A,根據(jù)之前推理可知,ω2+ω3≈|180°-A|,與圖3a相比,ω2增大,ω3減小,且ω2增大和ω3減小的程度相同。此時(shí)仍有:
|Δk3|=|-tanω3-tanω2|≈
|-tan(90°-ω6)-tan(90°-ω5)|
(7)
參考正切函數(shù)曲線,在0°~90°的區(qū)間中,因?yàn)楹瘮?shù)的斜率為正,并且斜率的變化率也為正,ω2>ω3,所以tanω2增大的量大于tanω3減小的量,|Δk3|變大,雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線的夾角間差值的絕對值越大,該角點(diǎn)的斜率差的絕對值越大。由上述得出結(jié)論:角點(diǎn)兩側(cè)直線夾角的角度為A,雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線的夾角相同時(shí)角點(diǎn)的斜率差絕對值最小,此時(shí)角點(diǎn)相鄰點(diǎn)的最小斜率差絕對值為:
(8)
所以設(shè)置的角點(diǎn)判斷閾值αkth要大于環(huán)境中存在的角點(diǎn)兩側(cè)直線夾角角度最大的角點(diǎn)的Δkmin。
若雷達(dá)到角點(diǎn)的距離大于Damin時(shí),角點(diǎn)處相鄰點(diǎn)的斜率差絕對值被影響后仍然大于設(shè)置的角點(diǎn)判斷閾值αkth,則Damin稱為角點(diǎn)誤差臨界距離。根據(jù)之前的結(jié)論可知,雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線的夾角相等時(shí)角點(diǎn)相鄰點(diǎn)的斜率差值最小,所以只要該情況下被雷達(dá)誤差影響后的角點(diǎn)相鄰點(diǎn)的斜率差絕對值仍大于角點(diǎn)判斷閾值αkth,則該距離下識別角點(diǎn)不受雷達(dá)誤差影響。如圖4所示,角點(diǎn)兩側(cè)相鄰點(diǎn)的雷達(dá)誤差E1Q2和E3Q4與角點(diǎn)處雷達(dá)誤差E2Q3為相反數(shù),并且使得角點(diǎn)兩側(cè)直線夾角變大,并且他們的絕對值都等于雷達(dá)最大誤差值,稱該情況為角點(diǎn)極端誤差情況,此時(shí)角點(diǎn)相鄰點(diǎn)的斜率差值受影響最大。
圖4 角點(diǎn)極端誤差掃描點(diǎn)示意圖
已知角點(diǎn)兩側(cè)直線夾角的角度為A,雷達(dá)最大誤差值為X,雷達(dá)角度間隔為Δθ,角點(diǎn)判斷閾值為αkth,且αkth>Δkmin,在角點(diǎn)極端誤差情況下,并且雷達(dá)到角點(diǎn)的射線與角點(diǎn)兩側(cè)直線夾角相同,ω2≈ω3,若此時(shí)角點(diǎn)Q3相鄰點(diǎn)的的斜率差|Δk3|仍大于αkth,則角點(diǎn)識別不受影響:
|Δk3|=|-tanω3-tanω2|≈2|tanω2|
(9)
(10)
(11)
在正常情況下,如圖3a所示,ω1≈ω2,ω3≈ω4,而且Δk4≈Δk2≈0,|Δk3|>αkth,Δk2+Δk3+Δk4<0,因而有:
|Δk2+Δk3+Δk4|≈|Δk3|
(12)
在一般誤差情況下,如圖2b所示,當(dāng)角點(diǎn)出現(xiàn)誤差時(shí),ω2和ω3減小,|Δk3|會產(chǎn)生變化,若變化后的|Δk3|<αkth,則真實(shí)角點(diǎn)識別失敗。因?yàn)榇藭r(shí)Δk2的減少值等于tanω2的減小值,Δk4的減小值等于tanω3的減小值,并且tanω2的減少值與tanω3的減小值之和為Δk3的增大值,Δk2<0,Δk3<0,Δk4<0,Δk2+Δk3+Δk4<0,所以Δk2+Δk3+Δk4的值保持不變,|Δk2+Δk3+Δk4|>αkth。
在極端誤差情況下,如圖4所示,因?yàn)棣2的減少值大于tanω2的減小值,Δk4的減小值大于tanω3的減小值,但Δk3的增大值仍為tanω2的減少值與tanω3的減小值之和,Δk2<0,Δk3<0,Δk4<0,Δk2+Δk3+Δk4<0,所以Δk2+Δk3+Δk4減小,|Δk2+Δk3+Δk4|增大,|Δk2+Δk3+Δk4|>αkth。
在兩種誤差情況下,在角點(diǎn)處都有|Δk2+Δk3+Δk4|>αkth,因此得到一種識別角點(diǎn)的優(yōu)化方法:如果ki-1ki<0,并且|Δki-1+Δki+Δki+1|>αkth,則第i點(diǎn)為角點(diǎn)。
因?yàn)槔走_(dá)數(shù)據(jù)存在誤差,角點(diǎn)和斷點(diǎn)的識別算法會受到影響,導(dǎo)致在直線上識別出錯(cuò)誤的角點(diǎn)和斷點(diǎn)。通過算法的優(yōu)化把這些錯(cuò)誤的角點(diǎn)和斷點(diǎn)過濾掉,保證直線的完整性和正確性。
從O點(diǎn)向直線L以等角度Δθ的間隔畫直線,交點(diǎn)依次為Q1,Q2,Q3,Q4,Q5,O點(diǎn)到交點(diǎn)的長度依次為d1,d2,d3,d4,d5。因?yàn)槔走_(dá)的距離數(shù)據(jù)存在誤差,在獲取OQ3時(shí),雷達(dá)距離數(shù)據(jù)為OE1,雷達(dá)誤差為E1Q3,此時(shí)d3的長度較長,點(diǎn)集信息如圖5a所示,可以得到:
(a) 遠(yuǎn)距離直線掃描點(diǎn) (b) 近距離直線掃描點(diǎn)圖5 直線掃描點(diǎn)示意圖
|tanω2-tanω1|≈|tanω3-tanω2|≈|tanω4-tanω3|≈0
(13)
雖然在OQ3上出現(xiàn)了雷達(dá)誤差E1Q3,但它對點(diǎn)E1的識別造成的影響不大,點(diǎn)E1仍被識別為普通點(diǎn)。
|tanω2-tanω1|≠|(zhì)-tanω3-tanω2|
(14)
|tanω4-(-tanω3)|≠|(zhì)-tanω3-tanω2|
(15)
且都不約等于0,Q2、E1、Q4的相鄰點(diǎn)的斜率差值分別為:
Δk2=tanω2-tanω1>0
(16)
Δk3=-tanω3-tanω2<0
(17)
Δk4=tanω4-(-tanω3)>0
(18)
結(jié)合特征點(diǎn)判斷規(guī)則,如果|Δk3|>αkth,則E1為角點(diǎn),若此時(shí)|Δk3|和|Δk4|都大于kth,則E1、Q4為斷點(diǎn)。
如圖6所示,雷達(dá)距離數(shù)據(jù)OE1、OE2、OE3的雷達(dá)誤差分別為E1Q2、E2Q3、E3Q4,若這些雷達(dá)誤差的長度相等且為雷達(dá)的最大誤差值,并且兩邊的雷達(dá)誤差與中間雷達(dá)誤差為相反數(shù),并且中間點(diǎn)相鄰點(diǎn)的斜率差絕對值最大,稱該情況為直線極端誤差情況。
圖6 垂直直線誤差掃描點(diǎn)示意圖
當(dāng)激光射線與直線夾角越小的時(shí)候,雷達(dá)距離誤差對普通點(diǎn)識別產(chǎn)生的影響越小,如圖7所示,盡管在直線極端誤差情況下,但仍有:
圖7 小夾角直線掃描點(diǎn)示意圖
|tanω2-tanω1|≈|tanω3-tanω2|≈|tanω4-tanω3|≈0
(19)
雷達(dá)誤差E2Q3對普通點(diǎn)E2的識別造成的影響不大。
通過對比可知,當(dāng)激光射線與直線垂直的時(shí)候,對特征點(diǎn)識別產(chǎn)生的影響最大,如圖6所示。當(dāng)雷達(dá)與墻面距離大于Dlmin時(shí),若在激光射線垂直墻面且在直線極端誤差情況下,仍未出現(xiàn)特征點(diǎn)的錯(cuò)誤識別,則Dlmin稱為直線誤差臨界距離。在該情況下,假設(shè)激光雷達(dá)最大誤差為X,雷達(dá)角度間隔為Δθ且很小,E1Q2=E2Q3=E3Q4=X,OQ2≈OQ3≈OQ4≈d3,根據(jù)斜率差公式有:
(20)
(21)
(22)
角點(diǎn)判定條件為:Δk3>αkth(0<α<1)
斷點(diǎn)判定條件:|Δk3|>kth,|Δk4|>kth
所以,
(23)
經(jīng)過第二類孤立點(diǎn)的過濾后,在直線上出現(xiàn)的一對錯(cuò)誤的斷點(diǎn)之間的角度差非常小,它們之間的距離非常近,所以設(shè)置一個(gè)閾值Dline來過濾錯(cuò)誤的斷點(diǎn),若兩斷點(diǎn)的直線距離小于Dline,則該兩點(diǎn)視為普通點(diǎn)。
當(dāng)提高了真實(shí)角點(diǎn)識別準(zhǔn)確度并且對錯(cuò)誤的斷點(diǎn)進(jìn)行過濾后,接下來設(shè)置一個(gè)閾值Dangle,來過濾掉直線上的錯(cuò)誤的角點(diǎn)。如圖8所示,Q1和Q9為斷點(diǎn),Q2~Q8為找出的所有錯(cuò)誤的角點(diǎn)、錯(cuò)誤的斷點(diǎn)和真實(shí)角點(diǎn),找出真實(shí)的角點(diǎn)Q6、Q3。
(a) 點(diǎn)簇(Q1~Q9)找到角點(diǎn)Q6 (b) 點(diǎn)簇(Q1~Q6)找到角點(diǎn)Q3
具體步驟如下:
步驟1:初始化,把斷點(diǎn)內(nèi)所有點(diǎn)組成點(diǎn)簇,設(shè)置一個(gè)對錯(cuò)誤的角點(diǎn)進(jìn)行過濾的閾值Dangle;
步驟2:通過點(diǎn)簇的起點(diǎn)和終點(diǎn)作直線;
步驟3:依次計(jì)算該點(diǎn)簇中其他點(diǎn)到直線的距離,找出到直線距離最大的點(diǎn);
步驟4:如果該最大距離大于Dangle,則該點(diǎn)為真實(shí)角點(diǎn),并在該點(diǎn)處把點(diǎn)簇分割為前后兩個(gè)點(diǎn)簇,轉(zhuǎn)步驟2;如果該距離小于Dangle,則在該點(diǎn)簇內(nèi)無真實(shí)角點(diǎn),結(jié)束判斷;
步驟5:找出所有真實(shí)角點(diǎn),結(jié)束。
測試環(huán)境符合真實(shí)的室內(nèi)環(huán)境特征,而且測試環(huán)境中包含了該特征識別優(yōu)化算法進(jìn)行識別的所有特征情況,即兩類斷點(diǎn)和3種角度的角點(diǎn)(銳角、直角、鈍角)。實(shí)際測試環(huán)境在某實(shí)驗(yàn)樓內(nèi)搭建,如圖9所示,設(shè)雷達(dá)坐標(biāo)為原點(diǎn),朝向角為Y軸正方向,該測試環(huán)境的幾何坐標(biāo)由皮尺測量而得。算法在STM32F103平臺下進(jìn)行,可視化結(jié)果圖在MATLAB平臺下得到,圖中的點(diǎn)代表環(huán)境中的角點(diǎn)或斷點(diǎn),數(shù)字表示線段標(biāo)號,如圖10a所示。測試?yán)走_(dá)選用某公司的RPLIDER S1型激光雷達(dá),雷達(dá)固有誤差為±5 cm,角度分辨率為0.391°,測試環(huán)境在激光雷達(dá)有效掃描范圍內(nèi)。實(shí)驗(yàn)中各參數(shù)如下:θth=2.3°,kth=0.97,α=0.9,Dline=20,根據(jù)式(11)和式(23)可以算出環(huán)境中雷達(dá)到每條直線和到每個(gè)角點(diǎn)的距離都未達(dá)到它們的Dlmin和Damin,所以該環(huán)境下有概率出現(xiàn)直線處識別出錯(cuò)誤的斷點(diǎn)、角點(diǎn)的情況和在角點(diǎn)處識別真實(shí)角點(diǎn)錯(cuò)誤的情況。在實(shí)際測試中,放置雷達(dá)的時(shí)候,雷達(dá)實(shí)際朝向角與預(yù)設(shè)朝向角會有微小誤差,所以最終得到的地圖會有微小的旋轉(zhuǎn)。
圖9 實(shí)際測試環(huán)境
(a) 實(shí)際地圖 (b) 原始斜率差特征識別算法效果
對算法進(jìn)行優(yōu)化后的效果如圖10所示,在原始斜率差特征識別算法效果下,如圖10b所示,通過與實(shí)際地圖進(jìn)行對比,可以看到在4~9號直線上識別出了多個(gè)錯(cuò)誤的角點(diǎn)或斷點(diǎn),盡管在該情況下原本的一條完整線段被分成了多條線段,但是這些線段的斜率與原線段斜率相比變化不大,并且線段端點(diǎn)坐標(biāo)仍在原線段周圍。但是在2號3號線段連接處,角點(diǎn)識別錯(cuò)誤,導(dǎo)致3號線段的斜率和線段端點(diǎn)坐標(biāo)改變過大,并且兩條線段的夾角變大。對角點(diǎn)識別算法進(jìn)行優(yōu)化后,效果如圖10c所示,對比實(shí)際地圖可以看出,地圖中的所有真實(shí)角點(diǎn)都被算法所識別,與原始斜率差特征識別算法效果對比,在3號2號線段連接處,端點(diǎn)坐標(biāo)和夾角發(fā)生了明顯變化且更加接近實(shí)際地圖。在過濾錯(cuò)誤的角點(diǎn)和斷點(diǎn)后,效果如圖10d所示,解決了線段過分割問題,所有條線段都變完整。通過對整個(gè)優(yōu)化過程進(jìn)行分析,盡管4號5號線段、8號9號線段連接處,真實(shí)角點(diǎn)被識別后,與原始斜率差特征識別算法效果對比,線段端點(diǎn)坐標(biāo)的變化不大,但是在過濾掉錯(cuò)誤的角點(diǎn)和斷點(diǎn)后得到完整線段的斜率產(chǎn)生了改變,且更加接近實(shí)際地圖。
根據(jù)地圖的匹配優(yōu)化算法,可以進(jìn)行相對定位,從而實(shí)現(xiàn)AGV小車的自主導(dǎo)航,自主導(dǎo)航結(jié)果如圖11所示。
圖11 自主導(dǎo)航路徑誤差結(jié)果圖
在整個(gè)導(dǎo)航過程中,使用改進(jìn)算法的AGV路徑最大誤差4.78 cm,平均誤差1.21 cm,而斜率差算法的最大誤差為7.24 cm,平均誤差2.1 cm,改進(jìn)算法的定位效果有了一定的提高。
針對激光雷達(dá)距離數(shù)據(jù)的誤差對基于斜率差的激光雷達(dá)環(huán)境特征識別算法的影響,本文分析了算法出現(xiàn)錯(cuò)誤的原因,確定特征識別不準(zhǔn)確的關(guān)鍵是角點(diǎn)和斷點(diǎn)識別不準(zhǔn)確,在誤差情況下,利用真實(shí)角點(diǎn)與左右相鄰點(diǎn)的相鄰點(diǎn)斜率差值之和不變的關(guān)系優(yōu)化角點(diǎn)處真實(shí)角點(diǎn)識別算法,提高了真實(shí)角點(diǎn)識別的準(zhǔn)確度,利用閾值過濾直線上錯(cuò)誤的斷點(diǎn)和角點(diǎn),提高了每條線段的完整性。實(shí)驗(yàn)結(jié)果證明該優(yōu)化方法提高了基于斜率差的激光雷達(dá)環(huán)境特征識別方法的特征識別準(zhǔn)確度。