劉光偉,王 巍,祁賢雨,李明博
(北京航空航天大學(xué)機(jī)械工程及自動化學(xué)院,北京 100083)
同時定位與建圖(Simultaneous Localization and Mapping,SLAM)指的是移動機(jī)器人在運(yùn)動過程中根據(jù)實(shí)時獲取的傳感器數(shù)據(jù)進(jìn)行位姿估計(jì),同時增量式的構(gòu)建環(huán)境地圖。作為移動機(jī)器人實(shí)現(xiàn)自主導(dǎo)航的關(guān)鍵技術(shù),SLAM自1986年在ICRA首次提出以來,經(jīng)過近幾十年的發(fā)展,已經(jīng)有了諸多適用于特定場景的解決方案;但這些SLAM算法都需人為控制機(jī)器人運(yùn)動,為進(jìn)一步提升移動機(jī)器人的智能水平和探索能力,即實(shí)現(xiàn)機(jī)器人在無人為干預(yù)的情況下自動構(gòu)建環(huán)境地圖,文獻(xiàn)[1]提出了主動SLAM。
主動SLAM涉及到移動機(jī)器人定位、建圖、路徑規(guī)劃等技術(shù)的結(jié)合,要求機(jī)器人在保證位姿估計(jì)精度的前提下,向能探測到盡可能多未知區(qū)域的方向運(yùn)動。為解決該問題,文獻(xiàn)[2]提出通過最優(yōu)控制法離散控制輸入,根據(jù)各輸入對機(jī)器人位姿估計(jì)精度和新增探索面積的影響,選擇出最優(yōu)的控制輸入進(jìn)行執(zhí)行,但實(shí)際使用中該方法可能導(dǎo)致機(jī)器人陷入局部最優(yōu);文獻(xiàn)[3]使用線段特征表述環(huán)境,并結(jié)合線段特征特點(diǎn)制定目標(biāo)函數(shù)以評價系統(tǒng)的不確定度,并通過沿墻走來避免機(jī)器人陷入局部最優(yōu);文獻(xiàn)[4]根據(jù)部分可觀測馬爾可夫決策過程模型從當(dāng)前地圖中選擇目標(biāo)點(diǎn),但計(jì)算復(fù)雜度隨問題規(guī)模呈指數(shù)級上升,一般只適用于求解小規(guī)模問題。
對室內(nèi)環(huán)境中的定位與建圖問題進(jìn)行了深入的研究、分析,并結(jié)合室內(nèi)場景特點(diǎn),提出采用基于概率的方法進(jìn)行機(jī)器人的位姿估計(jì)和地圖構(gòu)建。首先通過機(jī)器人運(yùn)動模型進(jìn)行位姿預(yù)測,然后根據(jù)激光雷達(dá)數(shù)據(jù)進(jìn)行位姿更新,從而實(shí)現(xiàn)高精度的定位和建圖;同時通過邊界探索不斷確定出下一步目標(biāo)點(diǎn)、規(guī)劃全局路徑,并通過動態(tài)窗口法實(shí)現(xiàn)了機(jī)器人運(yùn)動過程中的實(shí)時避障。
移動機(jī)器人同時定位與建圖指的是在已知機(jī)器人控制量(u1:t)和傳感器觀測量(z1:t)的情況下,估計(jì)環(huán)境地圖(m)及機(jī)器人位姿(x1:t),表示成數(shù)學(xué)形式即:p(x1:t,m|z1:t+1,u1:t)。
目前SLAM算法可分為概率和圖優(yōu)化兩種,但是由于室內(nèi)場景通常面積較小,且室內(nèi)移動機(jī)器人自身的處理能力有限,所以選擇使用概率方法,并將SLAM問題分解為對路徑的后驗(yàn)概率(位姿估計(jì))和已知路徑情況下地圖的后驗(yàn)概率(地圖更新)兩部分[5],如式(1)所示:
此外,由于柵格地圖具有易于構(gòu)建和保存、便于路徑規(guī)劃等優(yōu)點(diǎn),所以采用柵格地圖來表示環(huán)境信息。
位姿估計(jì)是SLAM技術(shù)的核心,為提高機(jī)器人位姿估計(jì)精度,首先通過實(shí)時獲取的里程計(jì)數(shù)據(jù)進(jìn)行位姿預(yù)測,然后根據(jù)激光雷達(dá)數(shù)據(jù)進(jìn)行掃描匹配以實(shí)現(xiàn)位姿更新。
2.1.1 位姿預(yù)測
室內(nèi)環(huán)境中通常使用X=(x,y,θ)表示機(jī)器人的全局位姿,假設(shè)已知機(jī)器人t時刻位姿Xt、里程計(jì)觀測量ut以及t+1時刻里程計(jì)觀測量ut+1,則可根據(jù)里程計(jì)模型:Xt+1=Xt⊕(ut+1?ut)[6]對機(jī)器人的位姿Xt+1進(jìn)行預(yù)測。
2.1.2 位姿更新
輪子打滑、地面坑洼等因素都會導(dǎo)致里程計(jì)估計(jì)的位姿不準(zhǔn)確,長時間運(yùn)行會產(chǎn)生較大的累計(jì)誤差。而通過使用激光雷達(dá)數(shù)據(jù)進(jìn)行掃描匹配,可以顯著提高位姿估計(jì)精度、減小累計(jì)誤差,所以通過掃描匹配進(jìn)行機(jī)器人位姿更新。位姿更新主要包括采集粒子和掃描匹配兩部分內(nèi)容。
(1)采集粒子
在里程計(jì)估計(jì)的位姿Xt+1周圍((0.3×0.3)m的矩形區(qū)域)進(jìn)行采樣,為保證位姿估計(jì)的精度,在采集粒子時應(yīng)確保同一位置相鄰粒子間的角度差在一定范圍內(nèi),這里的準(zhǔn)則是最遠(yuǎn)處激光點(diǎn)dmax在相鄰兩粒子間的偏移量不超過柵格分辨率r,由幾何關(guān)系可確定出相鄰粒子間的偏角δθ為:
根據(jù)柵格分辨率 r和窗口區(qū)域大?。╓x=Wy=0.3、Wθ=20°),可得采樣范圍為:
(2)掃描匹配
每個粒子都代表了機(jī)器人當(dāng)前時刻的一個可能位姿,按粒子位姿對當(dāng)前觀測的激光點(diǎn)進(jìn)行坐標(biāo)變換,得到其在柵格地圖坐標(biāo)系下的坐標(biāo),然后根據(jù)已有地圖得到各激光點(diǎn)為占有柵格的概率Pxy。
累加各激光點(diǎn)所對應(yīng)的占有概率Pxy,可得當(dāng)前位姿下所有激光點(diǎn)的概率和;但柵格地圖的離散性會限制可以實(shí)現(xiàn)的精度,所以使用雙線性插值來計(jì)算Pxy以提高精度。依次遍歷所有粒子取得最大時的粒子即為機(jī)器人的后驗(yàn)位姿,也即機(jī)器人t+1時刻的最優(yōu)估計(jì)位姿Xt+1。
按照位姿Xt+1對當(dāng)前觀測到的激光點(diǎn)進(jìn)行坐標(biāo)轉(zhuǎn)換,得到其在柵格地圖坐標(biāo)系下的坐標(biāo),從而實(shí)現(xiàn)地圖更新。更新原則為:激光點(diǎn)對應(yīng)的柵格為占有柵格,激光點(diǎn)與當(dāng)前位姿Xt+1之間的柵格為空白柵格,若這些柵格在之前的地圖中未探索過,則分別為其賦值0.6、0.4;若已經(jīng)探索過,則按式(5)進(jìn)行更新:
式中:P—該柵格前一時刻的概率;PN—更新后的概率;P0—占有柵格和空白柵格的初始概率,分別為0.6、0.4。
通過邊界提取不斷從當(dāng)前地圖中提取邊界[7],并選擇出最優(yōu)邊界的中點(diǎn)作為機(jī)器人下一步的目標(biāo)點(diǎn),同時規(guī)劃出全局路徑,從而不斷驅(qū)動機(jī)器人向能探測到盡可能多未知區(qū)域的邊界運(yùn)動,具體實(shí)現(xiàn)分為以下幾步:
(1)提取當(dāng)前地圖的邊界,即當(dāng)前柵格地圖中與未知柵格相鄰的空白柵格,兩種柵格;為防止碰撞,需剔除長度小于機(jī)器人直徑的邊界,如圖1所示。
圖1 提取出的邊界及各柵格的距離變換值Fig.1 Extracted Boundaries and Distance Transform
(2)提取出所有剩余邊界的中點(diǎn)作為待定目標(biāo)點(diǎn),如圖1中紅色柵格。并以各目標(biāo)點(diǎn)為中心,通過Flood-fill算法對已探索柵格進(jìn)行填充,為各柵格計(jì)算距離變換值CostOT(i)。
(3)為避免發(fā)生碰撞,在計(jì)算距離變換值的同時,為各柵格計(jì)算障礙物變換值CostOT(i)。障礙物變換值按式(6)進(jìn)行計(jì)算,各柵格CostOT(i),如圖2所示。
式中:Ω(i)—空白柵格距離障礙物柵格的距離;X—常數(shù),根據(jù)機(jī)器人半徑確定。
(4)將各柵格距離變換值CostOT(i)和障礙物變換值CostOT(i)相加,可以得到各柵格的探索代價值,如圖3所示。然后從機(jī)器人當(dāng)前位置出發(fā),沿探索代價值下降最快的方向進(jìn)行搜索,最先到達(dá)的目標(biāo)點(diǎn)即為下一步的目標(biāo)點(diǎn),該過程所經(jīng)過的柵格即為機(jī)器人的全局路徑。
圖2 障礙物變換Fig.2 Obstacles Transform
圖3 探索代價值及全局路徑Fig.3 Exploration Transform and the Global Plan
(5)通過路徑追蹤算法驅(qū)動機(jī)器人沿規(guī)劃出的全局路徑運(yùn)動,直至無法繼續(xù)從已有地圖中提取出有效邊界。
機(jī)器人的實(shí)際工作環(huán)境通常是動態(tài)的,在沿全局路徑運(yùn)動的過程中,為避免發(fā)生碰撞,需在全局路徑規(guī)劃的基礎(chǔ)上引入局部路徑規(guī)劃,以實(shí)現(xiàn)實(shí)時避障??紤]到避障效果及實(shí)時性,選擇動態(tài)窗口法(Dynamic Window Approach,DWA)[8]進(jìn)行局部路徑規(guī)劃。動態(tài)窗口法主要包括以下幾個步驟:
機(jī)器人在t+1的速度vt+1可以由機(jī)器人當(dāng)前時刻的速度vt、角速度ωt確定,其范圍為:
式中:v˙a、v˙b—機(jī)器人的最大減速度、最大加速度;ω˙a、ω˙b—機(jī)器人的最大角減速度和最大角加速度。
計(jì)算得到機(jī)器人的速度空間后,可根據(jù)運(yùn)動模型對下一周期的軌跡進(jìn)行預(yù)測,機(jī)器人在速度[v,ω]的作用下,下一周期內(nèi)運(yùn)動軌跡為一段弧線,弧線方向與當(dāng)前速度方向相切,弧線半徑為v/ω,機(jī)器人在多組[v,ω]下得到的軌跡,如圖4所示。
圖4 動態(tài)窗口法采樣得到的軌跡Fig.4 Trajectories Obtained by DWA
根據(jù)第一節(jié)所述的地圖構(gòu)建方法,以機(jī)器人當(dāng)前位置為中心,建立一幅實(shí)時更新的(3×3)m的局部地圖,并從方位角(heading(v,ω))、距障礙物最短距離(dist(v,ω))、速度(velocity(v,ω))三方面對各條軌跡進(jìn)行評價。
4.3.1 方位角
方位角指的是機(jī)器人到達(dá)下一周期模擬軌跡末端時的朝向與目標(biāo)點(diǎn)之間的角度差,heading(v,ω)越小,代價值越大。
4.3.2 距障礙物最短距離
距障礙物最短距離指的是機(jī)器人在模擬軌跡上與局部地圖中最近的障礙物之間的距離,若該軌跡上沒有障礙物,則將其設(shè)定為常數(shù);dist(v,ω)越大,代價值越大。
4.3.3 速度
速度指的是各模擬軌跡所對應(yīng)的速度,velocity(v,ω)越大,代價值越大。為了簡化計(jì)算,算法假設(shè)機(jī)器人在模擬軌跡內(nèi)的速度大小不變。
4.3.4 歸一化
為綜合考慮方位角、距障礙物距離、速度大小對局部路徑規(guī)劃的影響,在計(jì)算出上述三項(xiàng)內(nèi)容后,需進(jìn)行歸一化處理,得到歸一化系數(shù)。歸一化計(jì)算公式為:
式中:n—采樣得到的總軌跡數(shù);i—待評價的當(dāng)前軌跡。
將上述各項(xiàng)的計(jì)算結(jié)果帶入評價函數(shù)式(9),可得各軌跡的代價值;選擇代價值取得最大值時的速度作為機(jī)器人下一周期的速度,從而使得機(jī)器人及時避開障礙,以較快的速度向目標(biāo)點(diǎn)運(yùn)動。
式中:α、β、γ—計(jì)算得到的歸一化系數(shù)。
為驗(yàn)證算法,使用裝配有里程計(jì)和激光雷達(dá)的Kobuki移動機(jī)器人平臺進(jìn)行了相關(guān)實(shí)驗(yàn),其中激光雷達(dá)型號為RPLIDAR A2、掃描范圍360°、測量半徑8m,實(shí)驗(yàn)場地為兩室一廳結(jié)構(gòu)的家庭環(huán)境(12×12)m,如圖5所示。
圖5 實(shí)驗(yàn)場地及器材Fig.5 The Experiment Site and Equipment
移動機(jī)器人上電后,在無人為干預(yù)情況下,使用所提算法自動構(gòu)建的室內(nèi)環(huán)境地圖,該地圖為柵格地圖,柵格分辨率為5cm,如圖6所示。圖6中一條曲線為機(jī)器人自動規(guī)劃的全局路徑,曲線端點(diǎn)即從當(dāng)前地圖中提取出的下一步目標(biāo)點(diǎn),實(shí)驗(yàn)過程中機(jī)器人沿規(guī)劃的全局路徑運(yùn)動。當(dāng)機(jī)器人前進(jìn)路徑上突然出現(xiàn)障礙物時(圖6中另一條線),機(jī)器人通過DWA算法規(guī)劃出局部路徑(圖6中一條線),及時調(diào)整速度方向,靈活的避開了障礙物。
圖6 主動SLAM算法構(gòu)建的柵格地圖Fig.6 Grid Map Build by Active SLAM
為驗(yàn)證所提算法的精度,在同一實(shí)驗(yàn)場景中使用目前精度最高的開源激光SLAM算法Cartographer[9](精度約5cm)進(jìn)行建圖實(shí)驗(yàn),建圖方式為人為遙控,地圖構(gòu)建結(jié)果,如圖7所示。
圖7 Cartogerpher構(gòu)建的柵格地圖Fig.7 Grid Map Build by Cartogerpher
通過對比兩種方法所構(gòu)建的地圖,可以發(fā)現(xiàn)在小尺度的室內(nèi)家庭場景下(<150m2),兩種方法的建圖精度非常接近。
為驗(yàn)證算法效率,在外界因素不變的情況下進(jìn)行了多次重復(fù)實(shí)驗(yàn),并對每次實(shí)驗(yàn)的全程用時進(jìn)行統(tǒng)計(jì)。統(tǒng)計(jì)發(fā)現(xiàn),人為遙控方式的平均用時約為4.3mins,所提主動SLAM算法的平均用時約為6.8mins。
通過對室內(nèi)動態(tài)環(huán)境中同時定位和建圖問題的研究及相關(guān)實(shí)驗(yàn)分析,可以得出如下結(jié)論:
(1)利用激光雷達(dá)高精度特性進(jìn)行掃描匹配,可以顯著提高機(jī)器人定位精度,從而構(gòu)建高精度的環(huán)境地圖。
(2)通過將激光SLAM與邊界探索相結(jié)合,可以在保證機(jī)器人位姿估計(jì)精度的前提下,實(shí)現(xiàn)機(jī)器人自動、高效構(gòu)建全局地圖。
(3)局部路徑規(guī)劃可以使機(jī)器人靈活躲避環(huán)境中的隨機(jī)障礙,實(shí)現(xiàn)動態(tài)環(huán)境中的同時定位和建圖。