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