張明岳
(西安工程大學(xué)電子信息學(xué)院,西安710600)
隨著科學(xué)技術(shù)的迅猛發(fā)展,越來越多的機(jī)器人被應(yīng)用到人們的生活中,機(jī)器人的智能化也逐漸成為科技發(fā)展主流之一[1]。目前,機(jī)器人應(yīng)用種類繁多,諸如特種機(jī)器人、服務(wù)型機(jī)器人、工業(yè)機(jī)器人等。其中室內(nèi)服務(wù)型機(jī)器人因其深入人們的日常生活而受到廣泛關(guān)注。室內(nèi)機(jī)器人由于周圍環(huán)境相對(duì)復(fù)雜而且在移動(dòng)時(shí)涉及到位姿實(shí)時(shí)變化,使其進(jìn)行定位與導(dǎo)航的準(zhǔn)確度大受限制[2]。對(duì)此,設(shè)計(jì)基于開源機(jī)器人操作系統(tǒng)(Robot Operating System,ROS)對(duì)室內(nèi)機(jī)器人的自主移動(dòng)與導(dǎo)航系統(tǒng)的關(guān)鍵技術(shù)進(jìn)行研究,通過即時(shí)定位與地圖建構(gòu)(Simultaneous Localization and Mapping,SLAM)技術(shù)創(chuàng)建機(jī)器人所在未知環(huán)境下的地圖;在創(chuàng)建好的地圖下結(jié)合自適應(yīng)蒙特卡洛定位(Adaptive Monte-Carlo Localization,AMCL)方法對(duì)機(jī)器人自身位置進(jìn)行準(zhǔn)確定位;最終利用全局路徑規(guī)劃算法進(jìn)行機(jī)器人從起始點(diǎn)到目標(biāo)點(diǎn)的最優(yōu)路徑?jīng)Q策。
ROS作為開源的機(jī)器人軟件操作系統(tǒng)平臺(tái),具有良好的可擴(kuò)展性。與其他操作系統(tǒng)類似,ROS程序是基于圖狀架構(gòu),不同組件根據(jù)功能的不同被放作者簡介:張明岳(1996—),男,陜西省西安市人,碩士研究生,主研方向:人工智能與機(jī)器視覺技術(shù)。收稿日期:2021-02-07在對(duì)應(yīng)的文件下[3]。ROS文件統(tǒng)級(jí)如圖1所示。
圖1 ROS文件統(tǒng)級(jí)
系統(tǒng)的正常運(yùn)轉(zhuǎn)主要包括以下方面:
傳感器數(shù)據(jù)采集:通過激光測距儀測量機(jī)器人在未知環(huán)境下的空間分布、障礙物大小以及與障礙物之間的距離等等特征;再通過里程計(jì)中的加速度傳感器、電子羅盤傳感器、陀螺儀傳感器獲取機(jī)器人的移速、方位變化和平衡狀態(tài)的數(shù)據(jù)。結(jié)合兩種傳感器數(shù)據(jù)提供機(jī)器人運(yùn)動(dòng)控制完成路徑導(dǎo)航。
SLAM模塊:用于構(gòu)建未知條件下的環(huán)境地圖。
路徑規(guī)劃:通過路徑規(guī)劃算法,為機(jī)器人標(biāo)記一條從起始點(diǎn)到目標(biāo)點(diǎn)的最優(yōu)路徑。最優(yōu)路徑的定義可有多種標(biāo)準(zhǔn),比如距離最近或障礙物最少等。
要實(shí)現(xiàn)機(jī)器人的定位與路徑規(guī)劃,建立機(jī)器人在未知條件下的地圖是不可或缺的前提,這也是機(jī)器人實(shí)現(xiàn)自主移動(dòng)的核心技術(shù)之一[4]。
地圖生成技術(shù)可描述為:機(jī)器人在一個(gè)未知的地區(qū)開始移動(dòng),在移動(dòng)的過程中,傳感器開始采集機(jī)器人四周的環(huán)境信息,機(jī)器人通過獲取到的環(huán)境信息創(chuàng)建該地區(qū)的環(huán)境地圖[5]。
SLAM算法通過結(jié)合脈沖式激光傳感器來測量未知地區(qū)的地形、障礙物與機(jī)器人的距離等信息,測距原理如圖2所示。首先傳感器向未知區(qū)域四周發(fā)射脈沖信號(hào),然后接收回波信號(hào),通過計(jì)時(shí)電路來計(jì)算激光從發(fā)射到接收的往返時(shí)間,以此標(biāo)準(zhǔn)來計(jì)算機(jī)器人與障礙物之間的距離[6]。此處,SLAM算法是在gmapping功能包中實(shí)現(xiàn)的。
圖2 激光測距傳感器原理圖
通過前一步地圖建模將機(jī)器人所處環(huán)境m從未知變成了已知,接下來在已知環(huán)境的條件下機(jī)器人結(jié)合傳感器采集到的環(huán)境信息和運(yùn)動(dòng)控制信息進(jìn)行自身位置的定位。機(jī)器人定位可描述為圖3所示的過程。圖中灰色圓圈是已知的,Z和U分別代表上述的環(huán)境信息和控制信息。ROS中的AMCL算法功能包會(huì)對(duì)地圖m使用粒子濾波器來推算位姿X。
圖3 機(jī)器人定位模型
導(dǎo)航作為另一個(gè)實(shí)現(xiàn)機(jī)器人自主移動(dòng)的核心技術(shù)之一,其過程可描述為:機(jī)器人在已知環(huán)境下,需要規(guī)劃出一條從起始點(diǎn)到目標(biāo)點(diǎn)的最優(yōu)路徑解,然后在機(jī)器人移動(dòng)的過程中,通過傳感器實(shí)時(shí)地采集周圍環(huán)境深度信息,當(dāng)從移動(dòng)路徑中發(fā)現(xiàn)障礙物需要機(jī)器人避讓時(shí),可以立即調(diào)節(jié)機(jī)器人的移動(dòng)速度和航向[7](加速度傳感器和電子羅盤傳感器的作用就在于此),以確保機(jī)器人可以安全抵達(dá)目標(biāo)點(diǎn)。
路徑規(guī)劃是導(dǎo)航的重要組成部分,可分為全局最優(yōu)路徑規(guī)劃和本地實(shí)時(shí)最優(yōu)路徑規(guī)劃兩種模式[8]。
全局最優(yōu)路徑規(guī)劃:在實(shí)際導(dǎo)航中,可通過使用Dijkstra算法或者A*算法在已知地圖條件下計(jì)算機(jī)器人從起始點(diǎn)到目標(biāo)點(diǎn)最優(yōu)路線解。最優(yōu)路線解的評(píng)判標(biāo)準(zhǔn)可以是距離最近或是耗費(fèi)時(shí)間最短等等。此處將距離最短作為最優(yōu)路線評(píng)判標(biāo)準(zhǔn),將距離最短且避開障礙物的路線作為機(jī)器人移動(dòng)的全局最優(yōu)路線[9]。
本地實(shí)時(shí)最優(yōu)路徑規(guī)劃:在實(shí)際導(dǎo)航中,機(jī)器人周圍隨時(shí)可能會(huì)出現(xiàn)新的障礙物,阻擋機(jī)器人向目標(biāo)點(diǎn)移動(dòng)。導(dǎo)致機(jī)器人會(huì)出現(xiàn)偏離最優(yōu)路徑規(guī)劃算法標(biāo)記的路線移動(dòng),因此需要機(jī)器人針對(duì)采集到的實(shí)時(shí)環(huán)境信息進(jìn)行及時(shí)的調(diào)整,局部路徑規(guī)劃在此也有所體現(xiàn)。ROS系統(tǒng)中l(wèi)ocal_planner模塊的DWA算法會(huì)輔助機(jī)器人盡量符合最優(yōu)路徑規(guī)劃算法標(biāo)記的路線[10],綜合機(jī)器人移動(dòng)的最優(yōu)路線評(píng)判標(biāo)準(zhǔn)結(jié)合傳感器實(shí)時(shí)采集到的周圍環(huán)境深度信息對(duì)機(jī)器人移動(dòng)路線進(jìn)行及時(shí)的調(diào)整,以達(dá)到避免機(jī)器人與動(dòng)態(tài)障礙物發(fā)生碰撞的情況出現(xiàn),其原理簡圖如圖4所示。
圖4 機(jī)器人避障原理
路徑規(guī)劃部分的功能是通過ROS系統(tǒng)平臺(tái)中的move_base功能包來實(shí)現(xiàn)的。
以下用Dijkstra算法和A*算法兩種方式計(jì)算全局最優(yōu)路徑解,并對(duì)兩者特點(diǎn)進(jìn)行對(duì)比。
Dijkstra算法基于貪心的思想,在計(jì)算機(jī)器人全局最優(yōu)路徑解時(shí)會(huì)從機(jī)器人所在位置的起始點(diǎn)向四周擴(kuò)散尋找目標(biāo)點(diǎn),直到找到為止。如圖5所示為Dijkstra算法規(guī)劃全局路徑的效果圖。
圖5 Dijkstra算法搜索區(qū)域
圖中描述了使用Dijkstra算法從中間一個(gè)起始點(diǎn)開始計(jì)算,直到得到邊緣位置上的一個(gè)目標(biāo)點(diǎn)的最優(yōu)路徑解的過程。從圖中可以清楚觀察到Dijkstra算法向四周擴(kuò)散尋找目標(biāo)點(diǎn)的搜索范圍。
A*算法在計(jì)算最優(yōu)路徑解時(shí)會(huì)根據(jù)已知的信息,估計(jì)從起始點(diǎn)到目標(biāo)點(diǎn)的所需代價(jià)距離,將代價(jià)距離作為下一步移動(dòng)的評(píng)判依據(jù)。A*算法規(guī)劃全局路徑的效果如圖6所示。
圖6 A*算法搜索區(qū)域
在此選用A*算法尋找從起點(diǎn)到終點(diǎn)的最優(yōu)路徑解。該算法在路徑規(guī)劃過程中會(huì)充分利用所有已知信息估算從當(dāng)前位置到目標(biāo)位置的所需代價(jià)來選擇下一步路徑。通過對(duì)比可發(fā)現(xiàn)兩種全局最優(yōu)路徑規(guī)劃算法標(biāo)記的從起始點(diǎn)到目標(biāo)點(diǎn)的最優(yōu)路線是一致的,且A*算法還可有效地避免Dijkstra算法因搜索范圍大而導(dǎo)致的收斂速度慢的缺點(diǎn)[11]。
通過ROS中的可視化界面Rviz可以實(shí)時(shí)查看所生成的地圖信息與各種傳感器的采集信息。打開gmapping功能包里的SLAM地圖生成文件,通過控制機(jī)器人移動(dòng),即可實(shí)時(shí)查看傳感器采集到的四周環(huán)境信息,并結(jié)合激光雷達(dá)SLAM地圖建模技術(shù)生成該地區(qū)的代價(jià)地圖。
如圖7所示為機(jī)器人進(jìn)行自主導(dǎo)航實(shí)驗(yàn)的實(shí)際移動(dòng)路徑。圖中右上方圓形標(biāo)記為機(jī)器人起始位置,右下方三角形標(biāo)記為機(jī)器人移動(dòng)的目標(biāo)點(diǎn)。淺色路線為A*算法標(biāo)記路線,深色路線為機(jī)器人實(shí)際移動(dòng)路線??梢钥吹綑C(jī)器人能夠進(jìn)行自主移動(dòng)達(dá)到目標(biāo)點(diǎn),實(shí)際移動(dòng)路線也與A*算法標(biāo)記的最優(yōu)路徑有較高的吻合度,達(dá)到設(shè)計(jì)與實(shí)驗(yàn)任務(wù)總體要求。
圖7 機(jī)器人在自主導(dǎo)航實(shí)驗(yàn)中的路徑規(guī)劃
自主移動(dòng)機(jī)器人功能強(qiáng)大,應(yīng)用前景廣闊,在未來“互聯(lián)網(wǎng)+”的發(fā)展趨勢下,有望在生物醫(yī)療(康復(fù)、輔助等)、交通(監(jiān)控、指揮等)、農(nóng)業(yè)(任務(wù)調(diào)度等)等領(lǐng)域發(fā)揮重要作用。為驗(yàn)證開源機(jī)器人操作系統(tǒng)ROS實(shí)現(xiàn)室內(nèi)機(jī)器人自主導(dǎo)航的現(xiàn)實(shí)可行性,設(shè)計(jì)利用激光雷達(dá)SLAM算法實(shí)現(xiàn)機(jī)器人在未知環(huán)境下的實(shí)時(shí)地圖精確建模;利用AMCL算法實(shí)現(xiàn)機(jī)器人的自身定位;利用A*算法實(shí)現(xiàn)機(jī)器人最優(yōu)路徑規(guī)劃,完成自主定位與導(dǎo)航的功能。通過編程各個(gè)模塊并將各模塊整合成一個(gè)完整的系統(tǒng),在室內(nèi)環(huán)境下對(duì)機(jī)器人自主移動(dòng)與導(dǎo)航進(jìn)行實(shí)驗(yàn),機(jī)器人在實(shí)驗(yàn)中的表現(xiàn)良好,符合理論預(yù)期。