本發(fā)明涉及移動機器人導航定位,尤其是涉及到一種基于2d激光雷達的無軌導航agv機器人的slam(同時定位與地圖構建)方法。
背景技術:
同時定位與地圖構建(或并發(fā)建圖與定位)(simultaneouslocalizationandmapping,slam),是一種實現(xiàn)真正全自主移動機器人的關鍵技術。傳統(tǒng)的agv(automatedguidedvehicle)導航主要有磁條導引、磁釘導引、色帶或二維碼導引等,雖然簡單易行、路徑跟蹤可靠性好,但均屬于固定路徑引導方式、靈活性和柔性差。新的激光導航方式無需固定路線導引,在應用時具有更高的柔性,但目前激光導航方法大多數(shù)是采用反射板和三角定位原理進行的,依然存在前期施工及標定問題,其靈活性和柔性受到限制,基于slam的激光導航是agv的重要發(fā)展趨勢之一。
目前基于激光傳感器的slam多數(shù)使用濾波器方法、概率方法、最小二乘法、以及圖優(yōu)化等,如常用的gmapping、hectorslam、kartoslam等算法,擁有較小的誤差和較低的計算量,在室內移動機器人中得到了一定應用,但濾波、估計、優(yōu)化的穩(wěn)定性以及定位精度無法絕對保證(這些方法多數(shù)針對的是低成本低精度的激光測距傳感器),在工業(yè)agv機器人中的適用性還有待驗證。使用輪廓外形匹配的方法相對于其他方法而言,物理意義更明確,符合人的思維方式,在保證agv導航定位的穩(wěn)定性和精度上具有很好的可行性。
參考文獻:
[1]羅元,傅有力,程鐵鳳.基于改進rao-blackwellized粒子濾波器的同時定位與地圖構建[j].控制理論與應用,2015,32(2):267-272.
[2]蘇州艾吉威機器人有限公司.無反射板激光導航agv在汽車零部件整廠物流調度中的應用[j].物流技術與應用,2016,21(10):175-176.
[3]吳文軍,張巖,吳為民,等.一種運輸自動導引車導航方法研究[j].物聯(lián)網技術,2016,6(9):58-62.
[4]常皓,楊巍.基于全向移動模型的gmapping算法[j].計量與測試技術,2016,43(10):1-4.
[5]葛艷茹,張國偉,沈宏雙,等.基于激光測距儀全局匹配掃描的slam算法研究[j].計算機測量與控制,2016,24(12):198-199.
[6]汪威,吳耀華,陳云霞.自然導航在agv中的應用[j].物流技術,2016,35(12):33-36.
[7]孫海,任翠平,盧軍,等.激光測距在倉儲搬運機器人運動中的應用[j].電子技術與軟件工程,2017(1):103-104.
[8]林偉民,頓向明,林子洋,等.基于激光雷達的重型自動導引運載車定位研究[j].機械與電子,2017(3):64-68.
技術實現(xiàn)要素:
:
本發(fā)明的目的在于針對現(xiàn)有激光slam算法多數(shù)針對低精度傳感器,其濾波、估計、優(yōu)化的穩(wěn)定性以及定位精度無法絕對保證,難以達到工業(yè)agv機器人應用要求的問題,提供基于虛擬掃描與測距匹配的agv激光slam方法。
本發(fā)明包括以下步驟:
1)柵格地圖表示與創(chuàng)建方法;
在步驟1)中,所述柵格地圖表示與創(chuàng)建方法的具體方法可為:采用柵格表示地圖m,每個柵格為正方形,其長寬為δ(δ≤定位精度指標),對于某個柵格mi為障礙時,定義其標志位si=1(為非障礙時si=-1、不確定時si=0),其列行編號為(xi,yi),柵格地圖m表示為:
m={m1(x1,y1,s1),m2(x2,y2,s2),...,mi(xi,yi,si),...,mn(xn,yn,sn)}(1)
使用2d激光雷達(lidar)進行掃描測距(最大測距范圍為dmax),得到一幀測距數(shù)據(jù)為{d1,d2,...,di,...,dn},對于其中某一方向的測距di,其相對于激光雷達的角度為θi,定義其標志位為ai(若di<dmax,則令ai=1;否則ai=-1);激光雷達總的一幀測距數(shù)據(jù)l表示為:
l={l1(d1,θ1,a1),l2(d2,θ2,a2),...,li(di,θi,ai),...,ln(dn,θn,an)}(2)
agv機器人采用2d激光雷達進行導航,假設激光雷達的位姿即為機器人的位姿,xr、yr表示位置坐標,θr表示方向角,在已知激光雷達位姿情況下,則可以把當前的測距數(shù)據(jù)l映射到柵格地圖m當中,其中m為增量式構建地圖,對于l中的li,其對應的柵格mi為:
若ai=1,取柵格標志位si(xi,yi)=1;以δ為單位長度(或更小)把線段di等分,采用同樣的方法計算各等分點對應的柵格并令其標志位為-1(即線段di穿過的柵格為非障礙點,標志位為-1)。
2)虛擬掃描與匹配定位方法;
在步驟2)中,所述虛擬掃描與匹配定位方法的具體方法可為:agv機器人每運行一步后,通過激光雷達獲得當前的測距數(shù)據(jù)l,再結合之前建立的柵格地圖m,進行當前位姿的估算(即定位):
(1)虛擬激光雷達(vlidar)掃描:
采用局部遍歷的方式,先設置一定的位置和角度遍歷范圍ω,在所有的遍歷位姿(假設為可能的激光雷達位姿),模擬激光雷達,逐一對地圖m進行虛擬掃描;在某一遍歷位姿(vxi,vyi,vθi),獲得虛擬掃描數(shù)據(jù)li如下:
li={vli1(vdi1,vθi1,vai1),...,vlij(vdij,vθij,vaij),...,vlin(vdin,vθin,vain)}(4)
在虛擬掃描的vθi1方向獲得測距vdi1(若vdi1<dmax,則令vai1=1;否則vai1=-1);在vθi2方向獲得測距vdi2(若vdi2<dmax,則令vai2=1;否則vai2=-1);...;在vθin方向獲得測距vdin(若vdin<dmax,則令vain=1;否則vain=-1);
以方向vθij為例,采用逐步推進的方式獲得測距vdij,其過程如下:從起始點(vxi,vyi)開始,沿相對于vθi角度為vθij的方向,以長度δ(或更小)為增量向前推進,每推進一次計算一次到達點對應的柵格(計算方法同式(3)),直到所到達點柵格的標志位為1則停止推進(若推進距離>dmax則同樣停止推進),此時起始點(vxi,vyi)到該柵格的推進距離即為vdij(若vdij<dmax,則令vaij=1;否則vaij=-1);
遍歷方式:逐一遍歷ω中的每個柵格點,遍歷到每個柵格點時再逐一遍歷每個角度值。例如,若ω的位置范圍為10×10=100個柵格,角度范圍為5°/0.1°=50個角度值,則總的遍歷次數(shù)為100×50=5000=k,遍歷完后獲得k個虛擬掃描數(shù)據(jù)vss(ω)={l1,l2,...,li,...,lk};
(2)基于測距的輪廓匹配:
采用基于測距的輪廓匹配方式進行定位,將vss(ω)中所有的虛擬掃描數(shù)據(jù)與當前的真實測距數(shù)據(jù)l進行比較,找出與l的測距數(shù)據(jù)最接近的虛擬掃描數(shù)據(jù)l*,即:
其中dmin≥0,根據(jù)具體應用環(huán)境來設定;l*所在的遍歷位姿(vx*,vy*,vθ*)即為激光雷達當前位姿的最優(yōu)估計值,即:
xr=vx*,yr=vy*,θr=vθ*(6)
3)提高算法實時性的方法。
在步驟3)中,所述提高算法實時性的方法的具體方法可為:基于虛擬掃描與測距匹配的slam方法可先用于離線建圖,然后用于agv機器人工作時的即時定位,其中,虛擬激光雷達掃描的計算量最大,每次遍歷時都需要模擬激光雷達在其n個掃描方向上進行推進測距,采取以下措施:
(1)采用多gpu并行處理方式,每個gpu運行一個掃描方向上模擬測距的推進測距算法;
(2)對于第i個掃描方向,改變虛擬測距方向vθi上的初始推進位置,從小于真實測距離di的某個位置開始(即不從遍歷位置開始),推進時遇到障礙柵格或到距離大于di的某個位置則停止推進。
所述虛擬掃描方向vθi對應的gpu推進測距算法如下:
算法輸入:遍歷位姿(vx,vy,vθ),地圖m,激光測距l(xiāng)
算法輸出:虛擬掃描方向上的測距vdi,標志位vai
本發(fā)明采用輪廓外形遍歷匹配的原理,在每一遍歷位姿采用虛擬激光雷達對地圖進行掃描,然后虛擬掃描的數(shù)據(jù)與當前激光雷達的數(shù)據(jù)直接進行比較,找出agv機器人的最優(yōu)位姿信息,再增量式構建地圖。本發(fā)明基于虛擬掃描與測距匹配的agv激光slam方法,涉及一種應用于agv機器人導航的同時定位與地圖構建方法。主要包括一個柵格地圖表示與創(chuàng)建步驟;一個虛擬掃描與匹配定位步驟;一種提高虛擬掃描實時性的措施和算法實現(xiàn)。針對現(xiàn)有激光slam算法多數(shù)針對低精度傳感器,其濾波、估計、優(yōu)化的穩(wěn)定性以及定位精度無法絕對保證,難以達到工業(yè)agv機器人應用要求的問題,提供了一種適合高精度激光雷達的slam方法。該方法采用輪廓外形遍歷匹配的原理,在每一遍歷位姿采用虛擬激光雷達對地圖進行掃描,然后虛擬測距數(shù)據(jù)與當前激光雷達的測距數(shù)據(jù)直接進行比較,找出agv機器人的最優(yōu)位姿信息,再增量式構建地圖;其中可通過采用多gpu并行處理和改變虛擬測距的初始推進位置,提高該slam方法的實時性。因此,解決了采用反射板和三角定位原理進行導航存在的前期施工及標定問題,為提高agv與其他移動機器人的靈活性和柔性,提供了一種簡單可靠和有精度保證的可行slam方法。
附圖說明
圖1為柵格地圖表示與創(chuàng)建方法示意圖。
圖2為虛擬激光雷達(vlidar)掃描方法示意圖。
圖3為基于虛擬掃描與測距匹配的slam方法組成框圖。
具體實施方式
下面結合附圖和實施例對本發(fā)明的具體實施方式進行說明。
實施例1:本發(fā)明基于虛擬掃描與測距匹配的slam方法用于離線建圖,具體實施的操作過程如下。
step1:采用遙控或其他人工操作方式,控制agv機器人在工作環(huán)境中行走一遍,激光雷達采集并保存所有時刻(t0至tend)的測距信息{d1,d2,...,dn}|t0、{d1,d2,...,dn}|t1、...、{d1,d2,...,dn}|tend。
step2:采用合適的數(shù)據(jù)格式和文件,定義如式(1)所示的柵格地圖m,并進行初始化。
step3:從t0開始時刻到tend結束時刻,利用測距信息構建地圖,步驟如下。
step3.1:對于初始時刻t0,激光雷達的初始位姿已知,根據(jù)式(2)把{d1,d2,...,dn}|t0轉換為lt0,然后根據(jù)式(3)將lt0映射到柵格地圖m當中;
step3.2:對于時刻t1,①激光雷達的當前位姿未知,先根據(jù)式(2)把{d1,d2,...,dn}|t1轉換為lt1,在遍歷范圍ω中逐一模擬激光雷達進行掃描,得到虛擬掃描數(shù)據(jù)vss(ω)={l1,l2,...,li,...,lk}(其li的格式如式(4)所示),然后與lt1進行比較,根據(jù)式(5)找出與lt1最接近的虛擬掃描數(shù)據(jù)l*;②根據(jù)l*和式(6)獲得激光雷達t1時刻的位姿,進而根據(jù)式(3)將lt1映射到柵格地圖m當中;
step3.3:對于時刻t2,定位和建圖過程與step3.2類似;
...(依此一直往下進行,直到時刻tend,則建圖結束)
實施例2:在離線建圖后,本發(fā)明用于有地圖的agv機器人實時定位,具體實施的操作過程如下。
step1:在當前時刻,激光雷達獲得測距信息{d1,d2,...,dn},根據(jù)式(2)把{d1,d2,...,dn}轉換為l。
step2:在遍歷范圍ω中的每一位姿,模擬激光雷達對地圖m進行掃描(采用多gpu并行處理和推進測距算法,每個gpu對應一個激光掃描方向),得到虛擬掃描數(shù)據(jù)vss(ω)={l1,l2,...,li,...,lk}。
step3:將數(shù)據(jù)vss(ω)={l1,l2,...,li,...,lk}與l進行比較,根據(jù)式(5)找出與l最接近的虛擬掃描數(shù)據(jù)l*;
step4:根據(jù)l*和式(6)獲得激光雷達當前時刻的位姿估計值(即定位)。
實施例3:本發(fā)明基于虛擬掃描與測距匹配的slam方法直接用于實時并發(fā)建圖與定位,具體實施的操作過程如下。
step1:采用合適的數(shù)據(jù)格式和文件,定義如式(1)所示的柵格地圖m,并進行初始化。
step2:對于初始時刻t0,激光雷達的初始位姿已知,根據(jù)式(2)把測距{d1,d2,...,dn}|t0轉換為lt0,然后根據(jù)式(3)將lt0映射到柵格地圖m當中;
step3:在下一個當前時刻,激光雷達獲得測距信息{d1,d2,...,dn},根據(jù)式(2)把{d1,d2,...,dn}轉換為l。
step4:在遍歷范圍ω中的每一位姿,模擬激光雷達對地圖m進行掃描(采用多gpu并行處理和推進測距算法,每個gpu對應一個激光掃描方向),得到所有虛擬掃描數(shù)據(jù)vss(ω)={l1,l2,...,li,...,lk}。
step5:將數(shù)據(jù)vss(ω)={l1,l2,...,li,...,lk}與l進行比較,根據(jù)式(5)找出與l最接近的虛擬掃描數(shù)據(jù)l*;
step6:根據(jù)l*和式(6)獲得激光雷達當前時刻的位姿估計值(即定位);
step7:激光雷達的位姿估計值已知,根據(jù)式(3)將l映射到柵格地圖m當中;返回到step3。
以上實施例中,柵格地圖表示與創(chuàng)建方法的如圖1所示,虛擬激光雷達掃描方法的原理如圖2所示,步驟之間的邏輯關系如圖3所示。