楊國元,呂曉軍,李 超,李依諾
(中國鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京100081)
隨著人工智能、機(jī)器人技術(shù)的發(fā)展,國內(nèi)外研究機(jī)構(gòu)、學(xué)者、企業(yè)紛紛對工業(yè)機(jī)器人、服務(wù)機(jī)器人展開研究。工業(yè)機(jī)器人已成功應(yīng)用于制造、紡織、噴繪等行業(yè),服務(wù)機(jī)器人也占據(jù)了較大的國內(nèi)市場份額,通過利用智能化、信息化以及網(wǎng)絡(luò)化等技術(shù),加速推進(jìn)服務(wù)機(jī)器人在眾多領(lǐng)域的發(fā)展及落地[1]。其中,自主移動(dòng)機(jī)器人成為一個(gè)重要的研究方向和熱點(diǎn),相對于傳統(tǒng)的固定式服務(wù)機(jī)器人,自主移動(dòng)機(jī)器人具有更強(qiáng)的實(shí)用性,能夠自主移動(dòng),部分代替人從事一些復(fù)雜或重復(fù)性的工作。目前,在廣州南站、上海虹橋站、鄭州東站、大連北站等鐵路客運(yùn)車站內(nèi),已展開服務(wù)機(jī)器人的應(yīng)用,但其功能還相對單一,僅限于語音問詢,雖能部分代替客運(yùn)服務(wù)人員的語音問詢工作,尚未實(shí)現(xiàn)自主移動(dòng)為旅客提供便捷的移動(dòng)服務(wù)。
目前,國內(nèi)外學(xué)者及研究機(jī)構(gòu)在移動(dòng)機(jī)器人領(lǐng)域展開了深入研究。2010年1月,美國Willow Garage公司發(fā)布了機(jī)器人操作系統(tǒng)(ROS,RobotOperating System)1.0版本;該系統(tǒng)具有開源、分布式管理等優(yōu)點(diǎn),底層為操作系統(tǒng)[2],上層為實(shí)現(xiàn)定位、導(dǎo)航、路徑規(guī)劃等具體功能的軟件包。E.Voisan[3]設(shè)計(jì)了基于ROS的服務(wù)機(jī)器人,可在巡視區(qū)域內(nèi),通過人像識別、圖像處理等技術(shù)實(shí)現(xiàn)人機(jī)交互。I.Afanasyev[4]設(shè)計(jì)了基于ROS的機(jī)器人,通過在未知環(huán)境中構(gòu)建3D環(huán)境地圖,驗(yàn)證機(jī)器人在此地圖環(huán)境中定位導(dǎo)航的可行性。左軒塵等人[5]以ROS為基礎(chǔ),利用人體姿態(tài)和語音技術(shù),實(shí)現(xiàn)空間機(jī)器人的人機(jī)交互,解決了傳統(tǒng)空間機(jī)器人操縱不便的難題。壽佳鑫[6]以ROS為核心,研究設(shè)計(jì)了移動(dòng)機(jī)器人系統(tǒng)的定位、導(dǎo)航、認(rèn)知與決策、以及運(yùn)動(dòng)控制模塊,論證了移動(dòng)機(jī)器人平臺(tái)設(shè)計(jì)理念的可行性。
本文主要從移動(dòng)機(jī)器人的硬件、軟件架構(gòu)兩方面展開研究,在此基礎(chǔ)上,研究適用于鐵路客運(yùn)車站移動(dòng)服務(wù)機(jī)器人(簡稱:移動(dòng)機(jī)器人)的地圖構(gòu)建技術(shù)、定位技術(shù)、路徑規(guī)劃技術(shù),提出路徑規(guī)劃算法,以滿足移動(dòng)機(jī)器人在鐵路客運(yùn)車站復(fù)雜場景下自主定位、導(dǎo)航及路徑規(guī)劃等功能需求。
鐵路客運(yùn)移動(dòng)機(jī)器人主要滿足在鐵路客運(yùn)車站場景下機(jī)器人的定位、行走、避障等。移動(dòng)機(jī)器人硬件主要包括:移動(dòng)底盤和環(huán)境感知傳感器。其中,移動(dòng)底盤主要實(shí)現(xiàn)機(jī)器人的前行、后退、左轉(zhuǎn)、右轉(zhuǎn)、避障、停止等;環(huán)境感知傳感器主要實(shí)現(xiàn)機(jī)器人對環(huán)境信息的采集、識別、分析等,主要有激光雷達(dá)、超聲、紅外、視覺等傳感器。
移動(dòng)機(jī)器人的硬件架構(gòu)如圖1所示。
ROS是基于Linux 二次開發(fā)的系統(tǒng),是移動(dòng)機(jī)器人的控制核心,將機(jī)器人的定位、地圖構(gòu)建、基于已知地圖的導(dǎo)航、機(jī)器人底盤驅(qū)動(dòng)控制等功能模塊化。
圖1 基于ROS的移動(dòng)機(jī)器人硬件架構(gòu)
移動(dòng)機(jī)器人利用環(huán)境感知傳感器采集環(huán)境信息,上傳到機(jī)器人ROS,經(jīng)ROS識別、分析、處理后,發(fā)布指令,通知移動(dòng)底盤停止、前行、避障等,實(shí)現(xiàn)由ROS對底盤電機(jī)的驅(qū)動(dòng)控制;移動(dòng)底盤根據(jù)指令執(zhí)行相應(yīng)動(dòng)作,并將執(zhí)行結(jié)果反饋給ROS,從而實(shí)現(xiàn)機(jī)器人的定位、移動(dòng)、避障等功能。
軟件層面上,移動(dòng)機(jī)器人將機(jī)器人的控制、感知、定位導(dǎo)航等功能模塊進(jìn)行集成整合,通過各功能模塊的驅(qū)動(dòng),利用以太網(wǎng)、USB等進(jìn)行數(shù)據(jù)交互,將機(jī)器人采集的環(huán)境信息發(fā)送到驅(qū)動(dòng)層;驅(qū)動(dòng)層通過驅(qū)動(dòng)軟件控制傳感器正常工作,并將接收到的環(huán)境信息發(fā)送至算法層,進(jìn)行復(fù)雜算法處理,然后再將處理結(jié)果反饋給驅(qū)動(dòng)層,由驅(qū)動(dòng)電機(jī)執(zhí)行相應(yīng)的任務(wù);同時(shí),表現(xiàn)層將處理結(jié)果通過可視化界面展示出來。移動(dòng)機(jī)器人的軟件架構(gòu)如圖2所示。
圖2 移動(dòng)機(jī)器人軟件架構(gòu)
軟件架構(gòu)劃分為4個(gè)層次:數(shù)據(jù)層,驅(qū)動(dòng)層,算法層,表現(xiàn)層[7]。
(1)數(shù)據(jù)層:主要通過移動(dòng)機(jī)器人傳感器之間的相互協(xié)同,獲取機(jī)器人的運(yùn)行狀態(tài)信息、位置信息、電量信息以及機(jī)器人周圍的環(huán)境信息等。
(2)驅(qū)動(dòng)層:主要是機(jī)器人的底層驅(qū)動(dòng)函數(shù),其組件包括傳感器、執(zhí)行器以及運(yùn)行驅(qū)動(dòng)軟件的硬件;驅(qū)動(dòng)層實(shí)現(xiàn)傳感器正常工作,還可以將傳感器數(shù)據(jù)上傳至算法層。
(3)算法層:主要是機(jī)器人的控制算法, 為機(jī)器人構(gòu)建環(huán)境地圖,使機(jī)器人能在行走過程中根據(jù)周圍的障礙物進(jìn)行動(dòng)態(tài)路徑規(guī)劃,生成控制代碼,然后發(fā)送至驅(qū)動(dòng)層,以驅(qū)動(dòng)電機(jī)。
(4)表現(xiàn)層:主要為機(jī)器人與用戶之間的人機(jī)互動(dòng),或在圖形化界面顯示相關(guān)信息,主要包括機(jī)器人走行速度、方向角、坐標(biāo)、機(jī)器人電量、環(huán)境信息等。
即時(shí)定位與地圖構(gòu)建(SLAM,Simultaneous LocalizationandMapping)主要用于研究機(jī)器人移動(dòng)的智能化,即在未知的環(huán)境中,通過配置激光雷達(dá)、紅外等核心傳感器,幫助機(jī)器人實(shí)現(xiàn)自主構(gòu)建地圖、自主定位、路徑規(guī)劃及以避障。
基于SLAM 的移動(dòng)機(jī)器人所構(gòu)建的地圖采用柵格來表示,即將整個(gè)環(huán)境分為若干大小相同的柵格,然后標(biāo)記出每個(gè)柵格是否存在障礙物,再將這些柵格拼接在一起,形成機(jī)器人定位、避障的地圖。采用SLAM 構(gòu)建地圖的優(yōu)點(diǎn)在于創(chuàng)建、維護(hù)地圖數(shù)據(jù)較為容易,可保留整個(gè)環(huán)境的信息;利用該地圖,機(jī)器人可以快速地定位、導(dǎo)航、路徑規(guī)劃和避障。
SLAM地圖構(gòu)建算法(如圖3所示)描述如下:
(1)機(jī)器人使用環(huán)境感知傳感器測量地標(biāo)相對于機(jī)器人的距離和角度,記錄環(huán)境的特征位置,提取特征,在地圖上標(biāo)記,進(jìn)行數(shù)據(jù)關(guān)聯(lián);
(2)機(jī)器人運(yùn)動(dòng)一段距離后,通過運(yùn)動(dòng)方程預(yù)測新位置,進(jìn)行狀態(tài)估計(jì),估計(jì)當(dāng)前姿態(tài)相對于上一時(shí)刻姿態(tài)的變化量;
(3)機(jī)器人在新的位置上,通過環(huán)境感知傳感器重新測量地標(biāo)相對于機(jī)器人的距離和角度,并通過激光點(diǎn)修正上一步的估計(jì),進(jìn)行狀態(tài)更新;
(4)如此反復(fù),機(jī)器人將指定區(qū)域完整地掃描一遍,記錄下整個(gè)區(qū)域的特征,標(biāo)注在地圖上,完成地圖構(gòu)建。
圖3 SLAM地圖創(chuàng)建過程
圖3 中,R表示機(jī)器人的位置,C表示地標(biāo),即機(jī)器人周圍環(huán)境中的靜止點(diǎn)(或特征點(diǎn))。當(dāng)機(jī)器人從位置R1移動(dòng)到位置R5的過程中,通過激光雷達(dá)和視覺傳感器不斷記錄地標(biāo)C1、C2、C3的特征信息,并進(jìn)行數(shù)據(jù)融合,然后通過卡爾曼濾波對數(shù)據(jù)進(jìn)行預(yù)處理,作為整個(gè)環(huán)境感知傳感器的輸入;最后,通過SLAM算法構(gòu)建出地圖。本文選取車站辦公區(qū)域走廊,利用SLAM 地圖構(gòu)建算法,所繪制的地圖如圖4所示。
圖4 SLAM構(gòu)建地圖
圖4 中,白色區(qū)域?yàn)闄C(jī)器人可通行區(qū)域,灰色區(qū)域?yàn)闄C(jī)器人不可通行區(qū)域。其中,白色區(qū)域中灰色點(diǎn)為障礙物(即地標(biāo)),當(dāng)機(jī)器人移動(dòng)到灰黑色點(diǎn)位置附近時(shí),會(huì)自動(dòng)繞過灰黑色點(diǎn),即實(shí)現(xiàn)自動(dòng)避障。
移動(dòng)機(jī)器人精準(zhǔn)移動(dòng)的關(guān)鍵要素之一是可靠的定位性能。目前,機(jī)器人定位[8]的方法主要分為自主和非自主定位兩類。自主定位是指機(jī)器人僅依靠自身的傳感器進(jìn)行定位。非自主定位是指在定位的過程中,機(jī)器人需要借助自身以外的裝置(如GPS定位系統(tǒng)、北斗定位系統(tǒng)等)進(jìn)行定位。在室內(nèi),因信號遮擋,移動(dòng)機(jī)器人無法使用GPS,安裝其它輔助定位系統(tǒng)較為復(fù)雜;而基于基站的定位和基于iBeacon的定位,其精度又無法達(dá)到機(jī)器人移動(dòng)避障的需求。因此,移動(dòng)機(jī)器人一般采用自主定位的方法。
機(jī)器人定位就是在地圖上估測機(jī)器人的坐標(biāo)和姿勢形態(tài)。通過機(jī)器人運(yùn)動(dòng)狀態(tài)估測,所得到的位置信息通常具有較大誤差,還需要使用測距單元得到周圍環(huán)境信息,對機(jī)器人位置進(jìn)行更新。測距單元主要包括激光、超聲波以及圖像測距3種。其中,激光具有良好的指向性和高度聚焦性,因此激光雷達(dá)成為移動(dòng)機(jī)器人的核心測距傳感器,激光測距技術(shù)也是目前最可靠、最穩(wěn)定的測距定位技術(shù)。
采用基于SLAM創(chuàng)建的地圖,可以對里程計(jì)的誤差進(jìn)行修正,使得機(jī)器人的位姿誤差不會(huì)隨著機(jī)器人運(yùn)動(dòng)距離的增加而無限增加,從而提高機(jī)器人的定位精度。
移動(dòng)機(jī)器人定位和地圖創(chuàng)建是自主導(dǎo)航的基礎(chǔ),機(jī)器人的自主導(dǎo)航就是在沒有人為干預(yù)的情況下,機(jī)器人依據(jù)預(yù)定的信息及傳感器獲取的外部環(huán)境信息,規(guī)劃出一條適合在該環(huán)境中行走的路徑,并沿著規(guī)劃的路徑自主移動(dòng)到目標(biāo)位置。機(jī)器人導(dǎo)航涉及地圖、定位、路徑搜索、路徑規(guī)劃,其中路徑搜索算法決定了導(dǎo)航路徑優(yōu)劣及耗費(fèi)時(shí)間。
2.3.1 改進(jìn)型A*路徑搜索算法
A*路徑搜索算法是一種啟發(fā)式搜索算法,利用估價(jià)函數(shù)來確定路徑中節(jié)點(diǎn)的價(jià)值,最后再?zèng)Q定如何搜索。A*路徑搜索算法的估價(jià)函數(shù)表示:
其中,f(n)是從初始點(diǎn)經(jīng)由節(jié)點(diǎn)n到目標(biāo)點(diǎn)的距離估計(jì);g(n)是從初始點(diǎn)到節(jié)點(diǎn)n的實(shí)際距離;h(n)是從節(jié)點(diǎn)n到目標(biāo)點(diǎn)的最佳路徑估計(jì)距離。
本文中,估價(jià)函數(shù)f(n)就是機(jī)器人路徑搜索,節(jié)點(diǎn)是柵格地圖中的每個(gè)柵格。
h(n)是由“歐拉距離”通過計(jì)算節(jié)點(diǎn)n到目標(biāo)點(diǎn)之間的距離所得,而節(jié)點(diǎn)n與目標(biāo)點(diǎn)之間多數(shù)情況下可能存在障礙物,可有多種路徑選擇供機(jī)器人行走。為了尋找最短路徑,本文采用改進(jìn)型A*路徑搜索算法,通過逆向搜尋最優(yōu)路徑;為提高搜索效率,對估價(jià)函數(shù)f(n)進(jìn)行加權(quán)處理,令:
式(2)中,KD為D點(diǎn)的搜索權(quán)值,D(Xk-1,Ki+KT)表示從當(dāng)前節(jié)點(diǎn)到子節(jié)點(diǎn)的距離。式(3)中,D(Xn,G)表示從當(dāng)前節(jié)點(diǎn)到目標(biāo)點(diǎn)的距離。
算法求解步驟如下:
(1)在式(1)構(gòu)建的估計(jì)函數(shù)f(n)中,g(n)表示從起點(diǎn)A(每個(gè)點(diǎn)為一個(gè)柵格方塊)到當(dāng)前點(diǎn)n的實(shí)際距離,h(n)表示當(dāng)前點(diǎn)n到終點(diǎn)B的估算距離,g值表示從起點(diǎn)A到達(dá)當(dāng)前點(diǎn)n的移動(dòng)量;
(2)創(chuàng)建open 表、close表、p 表,計(jì)算每個(gè)點(diǎn)的h值;open 表記錄尋找最短路徑上所有被考慮的方塊;close表記錄所有不會(huì)再被考慮的方塊;p表記錄當(dāng)前節(jié)點(diǎn)的父節(jié)點(diǎn);h 值采用“曼哈頓距離”[8]或者“城市街區(qū)距離”,計(jì)算出點(diǎn)n到目標(biāo)點(diǎn)B的水平與垂直方塊的數(shù)量和;
(3)初始化open 表,即把起始點(diǎn)A添加到open表中;
(4)計(jì)算f值,在open 表中尋找f值最小的點(diǎn)n;
(5)從open表中將n刪除,加入到close 表中;
(6)判斷目標(biāo)點(diǎn)B是否被添加到close表中;若是,則最優(yōu)路徑被找到,跳到步驟(11);若不是,繼續(xù)下述步驟;
(7)分別考慮與n相鄰的每一個(gè)格中的點(diǎn)T;
(8)如果點(diǎn)T已經(jīng)在close表中或不可通過,忽略該方塊;
(9)如果點(diǎn)T不在open 表中并且可通過,加入到open表中;然后計(jì)算T的f、g值,把點(diǎn)n作為點(diǎn)T的父節(jié)點(diǎn)(p(T)=n);
(10)如果點(diǎn)T已經(jīng)在open 表中,用g值作為參考標(biāo)準(zhǔn),檢查新的路徑(A→n→T)是否更優(yōu)(g值越低表明路徑更優(yōu));如果更優(yōu),把T的父節(jié)點(diǎn)改為點(diǎn)n,重新計(jì)算T的f、g值;將open 表按f值升序排序,返回(4);
(11)算法結(jié)束。
2.3.2 路徑規(guī)劃
機(jī)器人導(dǎo)航的路徑規(guī)劃(move_base),就是安排機(jī)器人如何從起點(diǎn)到達(dá)目標(biāo)點(diǎn),導(dǎo)航過程如圖5所示。
圖5 機(jī)器人導(dǎo)航過程示意
機(jī)器人在導(dǎo)航時(shí),move_base負(fù)責(zé)整個(gè)導(dǎo)航行為的調(diào)度,監(jiān)視導(dǎo)航狀態(tài)適時(shí)更換導(dǎo)航策略等。具體的路徑規(guī)劃邏輯流程如下:
(1)move_base 首先啟動(dòng)全局規(guī)劃和局部規(guī)劃兩個(gè)規(guī)劃器,分別生成全局和局部權(quán)值地圖;
(2)根據(jù)全局路徑規(guī)劃,計(jì)算出機(jī)器人到目標(biāo)位置的全局路線,即采用基于柵格地圖的改進(jìn)型A*路徑搜索算法來尋找最優(yōu)路線;
(3)通過局部規(guī)劃,完成局部避障的規(guī)劃;
(4)機(jī)器人在行走過程中,根據(jù)其狀態(tài)做出規(guī)劃,控制底盤,執(zhí)行行走動(dòng)作。
為了驗(yàn)證改進(jìn)型A*路徑搜索算法的合理性和先進(jìn)性,選擇大連北站作為移動(dòng)機(jī)器人試點(diǎn)車站,進(jìn)行移動(dòng)機(jī)器人路徑搜索、路徑規(guī)劃試驗(yàn)。通過多次試驗(yàn)驗(yàn)證,對傳統(tǒng)A*路徑搜索算法與改進(jìn)型A*路徑搜索算法的搜索效率進(jìn)行比較,如圖6所示。
從圖6可知,采用傳統(tǒng)A*路徑搜索算法,距離每增加1格,搜索節(jié)點(diǎn)個(gè)數(shù)增加約3個(gè);而采用改進(jìn)型A*路徑搜索算法,距離每增加1格,搜索節(jié)點(diǎn)個(gè)數(shù)增加約1個(gè),改進(jìn)后的算法效率提高約30%,顯著節(jié)約了搜索時(shí)間,降低了搜索復(fù)雜度。
圖6 算法搜索效率比較
本文以鐵路客運(yùn)車站移動(dòng)服務(wù)機(jī)器人為研究對象,分析國內(nèi)外移動(dòng)服務(wù)機(jī)器人研究趨勢,確定了基于ROS的移動(dòng)機(jī)器人軟硬件框架,構(gòu)建基于SLAM的地圖,提出改進(jìn)型A*路徑搜索算法,設(shè)計(jì)了移動(dòng)機(jī)器人的導(dǎo)航框架,并選擇試點(diǎn)車站,對該算法進(jìn)行試驗(yàn)驗(yàn)證;試驗(yàn)結(jié)果表明:該算法合理,優(yōu)化了導(dǎo)航路徑規(guī)劃,提高了最優(yōu)路徑的尋優(yōu)能力,能夠滿足在鐵路客運(yùn)車站場景下,機(jī)器人自主定位、導(dǎo)航及路徑規(guī)劃的需求。