鄒看看,張軍,王棟
(安徽理工大學(xué) 人工智能學(xué)院,安徽淮南,232001)
近年來,機(jī)器人技術(shù)日新月異[1],移動機(jī)器人在未知環(huán)境中的自主導(dǎo)航問題導(dǎo)航機(jī)器人的研究已引起科研工作者的極大興趣,特別是隨著智能機(jī)器人在工業(yè)生產(chǎn)、物流倉儲搬運(yùn)、災(zāi)害救援等領(lǐng)域的廣泛應(yīng)用[2]。移動機(jī)器人自主導(dǎo)航的關(guān)鍵技術(shù)包括兩個(gè)方面。一方面,同時(shí)定位與地圖構(gòu)建(SLAM)技術(shù)[3]是實(shí)現(xiàn)機(jī)器人自主導(dǎo)航的前提。SLAM 技術(shù)通常與激光雷達(dá)或深度相機(jī)搭配使用,機(jī)器人通過搭載的傳感器獲得未知環(huán)境的點(diǎn)云數(shù)據(jù)以及深度數(shù)據(jù),隨著機(jī)器人不斷感知周圍環(huán)境,機(jī)器人利用得到的數(shù)據(jù)完成對周圍環(huán)境二維柵格地圖的構(gòu)建。另一方面,機(jī)器人定位與路徑規(guī)劃是實(shí)現(xiàn)機(jī)器人自主導(dǎo)航的關(guān)鍵。路徑規(guī)劃使機(jī)器人在復(fù)雜的環(huán)境中規(guī)劃出一條合適的路線到達(dá)目標(biāo)點(diǎn),并且在移動過程中避開臨時(shí)出現(xiàn)的障礙物。機(jī)器人定位確定機(jī)器人當(dāng)前所在位置,幫助機(jī)器人按照設(shè)定的路線行駛。
文中基于自行搭建的機(jī)器人平臺,構(gòu)建一整套自主導(dǎo)航系統(tǒng),使機(jī)器人能夠在未知環(huán)境下進(jìn)行柵格地圖構(gòu)建,并且在構(gòu)建的環(huán)境地圖中實(shí)現(xiàn)多個(gè)目標(biāo)區(qū)域的巡檢任務(wù)。
移動機(jī)器人平臺采用差速底盤結(jié)構(gòu),機(jī)器人平臺如圖1所示,前輪的作用是支撐底盤,兩個(gè)后輪為驅(qū)動輪??梢詫?shí)現(xiàn)復(fù)雜環(huán)境中靈活移動,相比于全向移動機(jī)器人成本更低,適合大規(guī)模生產(chǎn)。同時(shí)差速移動機(jī)器人運(yùn)動學(xué)解算簡單,計(jì)算量小,開發(fā)效率高[4]。移動機(jī)器人采用模塊化設(shè)計(jì)思想,建立基于移動機(jī)器人平臺的建圖和導(dǎo)航的系統(tǒng)框架。根據(jù)硬件功能不同,下面分別對兩大系統(tǒng)做詳細(xì)介紹。器人移動平臺可分為兩大部分:上位機(jī)系統(tǒng)和下位機(jī)系統(tǒng)。
圖1 移動機(jī)器人平臺
上位機(jī)系統(tǒng)主要負(fù)責(zé)復(fù)雜算法的實(shí)現(xiàn),總體框架圖如圖2 所示。上位機(jī)系統(tǒng)由兩部分組成樹莓派主機(jī)和在PC 從機(jī),兩者通過WiFi 進(jìn)行通信。樹莓派相較于PC 具有體積小,易搭載的優(yōu)點(diǎn),更適合裝載在室內(nèi)小型機(jī)器人。然而樹莓派計(jì)算能力有限且沒有顯示器,為了實(shí)現(xiàn)人機(jī)交互和遠(yuǎn)程控制,通過WiFi 分布式通信將樹莓派與PC 端連接[5]。樹莓派作為上位機(jī)系統(tǒng)的主機(jī),主要負(fù)責(zé)建圖算法的數(shù)據(jù)處理,主要包括基于激光雷達(dá)的Gmapping 算法、局部路徑規(guī)劃算法、全局路徑規(guī)劃算法、多傳感器融合算法和同下位機(jī)系統(tǒng)實(shí)時(shí)數(shù)據(jù)交互。PC 端作為上位機(jī)系統(tǒng)的從機(jī),主要負(fù)責(zé)人機(jī)交互、遠(yuǎn)程控制以及一些組件的使用。ROS 系統(tǒng)下主機(jī)與從機(jī)的配合使用大大提高了機(jī)器人系統(tǒng)的開發(fā)效率。
圖2 上位機(jī)系統(tǒng)框架圖
移動機(jī)器人平臺采用STM32VET6作為控制核心,下位機(jī)系統(tǒng)設(shè)計(jì)框圖如圖3所示。下位機(jī)系統(tǒng)以模塊化設(shè)計(jì)思想將整個(gè)系統(tǒng)分為四個(gè)部分:電機(jī)控制、IMU 數(shù)據(jù)讀取、里程計(jì)數(shù)據(jù)讀取、ROS 數(shù)據(jù)通信以及LCD 屏信息顯示。下位機(jī)系統(tǒng)根據(jù)里程計(jì)數(shù)據(jù)以及上位機(jī)系統(tǒng)下發(fā)的目標(biāo)轉(zhuǎn)速進(jìn)行PID 控制[6]。里程計(jì)數(shù)據(jù)與IMU數(shù)據(jù)也將通過USART 通信上傳到ROS 系統(tǒng),并進(jìn)行算法融合,推算機(jī)器人的位姿信息。
圖3 下位機(jī)系統(tǒng)框架圖
ROS 支持多種SLAM 算法,主流的是Hector SLAM 和Gmapping,其中Hector SLAM 僅依靠激光雷達(dá)就可以正常工作;Gmapping 算法則在激光雷達(dá)的基礎(chǔ)上,融合了電機(jī)編碼器里程計(jì)等信息,其建圖穩(wěn)定性高于Hector SLAM。本文使用的是Gmapping。Gmapping 包含了粒子濾波算法,為開發(fā)者免去內(nèi)部復(fù)雜實(shí)現(xiàn),提高開發(fā)效率。二維柵格地圖構(gòu)建流程如圖4 所示,主要完成對周圍環(huán)境二維柵格地圖的構(gòu)建,為后續(xù)的機(jī)器人定位與多點(diǎn)導(dǎo)航提供基礎(chǔ)。
圖4 地圖創(chuàng)建流程圖
使用Gmapping 功能包構(gòu)建地圖時(shí)最重要的一步是Gmapping 功能包參數(shù)設(shè)計(jì),以下是部分參數(shù)設(shè)計(jì):
每一個(gè)參數(shù)都影響建圖效果[7]。其中,map_update_interval 是地圖刷新頻率,若數(shù)據(jù)設(shè)置過大會導(dǎo)致建圖效率低。相反會占用過多的樹莓派資源導(dǎo)致發(fā)熱卡頓。maxUrang 是激光雷達(dá)能夠探測的最大值,本文使用的激光雷達(dá)最大檢測范圍為25 m,此處設(shè)置為20.0 足夠大部分室內(nèi)場景使用。particles 是Gmapping 算法中的粒子數(shù)。合適的粒子數(shù)保證算法比較準(zhǔn)確同時(shí)有較高的速度。
導(dǎo)航系統(tǒng)中的關(guān)鍵技術(shù)是定位和路徑規(guī)劃兩方面。機(jī)器人路徑規(guī)劃是指機(jī)器人在指定的區(qū)域內(nèi)規(guī)劃出一條合理的從起始點(diǎn)到目標(biāo)點(diǎn)的路徑。move_base 功能包提供了基于動作(action)的路徑規(guī)劃實(shí)現(xiàn)[8],主要由全局路徑規(guī)劃和局部路徑規(guī)劃組成。機(jī)器人定位通過判斷機(jī)器人的當(dāng)前位置是否符合預(yù)期結(jié)果,確保機(jī)器人按照規(guī)劃的路線前進(jìn)。AMCL 功能包提供了定位功能,可實(shí)現(xiàn)機(jī)器人的準(zhǔn)確定位。AMCL 功能包根據(jù)已有的地圖使用粒子錄波器推算機(jī)器人的具體位置。導(dǎo)航系統(tǒng)構(gòu)建流程如圖5 所示,實(shí)現(xiàn)多點(diǎn)導(dǎo)航功能。
圖5 導(dǎo)航系統(tǒng)構(gòu)建流程圖
AMCL 是一種自適應(yīng)蒙特卡洛定位算法[9],利用使用激光雷達(dá)數(shù)據(jù)和地圖信息來估計(jì)機(jī)器人在地圖上的位置。在導(dǎo)航過程中會因?yàn)橥饨绛h(huán)境導(dǎo)致里程計(jì)出現(xiàn)誤差,誤差累計(jì),從而引發(fā)到達(dá)目標(biāo)點(diǎn)失敗的問題。AMCL 功能包可以根據(jù)機(jī)器人的激光雷達(dá)數(shù)據(jù),對機(jī)器人的位置進(jìn)行估計(jì)[10]。AMCL 的估計(jì)流程如下:
(1)初始化粒子群:根據(jù)機(jī)器人所在大致位置,初始化一定數(shù)量的粒子。
(2)運(yùn)動模型更新:根據(jù)機(jī)器人里程計(jì)數(shù)據(jù),計(jì)算每個(gè)粒子的權(quán)重。
(3)傳感器模型更新:根據(jù)激光雷達(dá)數(shù)據(jù)計(jì)算每個(gè)粒子的權(quán)重。
(4)重采樣:根據(jù)粒子的權(quán)重,使具有較低權(quán)重的粒子被刪除,較高權(quán)重的粒子被復(fù)制,并更加密集的表示機(jī)器人的位置。
AMCL 功能包基本參數(shù)設(shè)計(jì)如下:
其中Odom_model_type 為里程計(jì)模型選擇,本文為差速機(jī)器人設(shè)置為diff,全向輪可設(shè)置為omni。Odom_frame_id 設(shè)置里程計(jì)坐標(biāo)系。Base_frame_id 設(shè)置機(jī)器人極坐標(biāo)系。Global_frame_id 設(shè)置地圖坐標(biāo)系。
move_base 功能包是由多個(gè)節(jié)點(diǎn)及其參數(shù)配置組成的復(fù)雜系統(tǒng)。其中,主要的節(jié)點(diǎn)包括了全局路徑規(guī)劃器和局部路徑規(guī)劃器,當(dāng)機(jī)器人運(yùn)動時(shí),全局路徑規(guī)劃器會根據(jù)機(jī)器人目前位置坐標(biāo)和目標(biāo)點(diǎn)位置坐標(biāo),在地圖上規(guī)劃出一條可行的全局路徑;而局部路徑規(guī)劃器則會根據(jù)機(jī)器人傳感器數(shù)據(jù)實(shí)時(shí)地更新局部路徑,避免機(jī)器人發(fā)生碰撞等意外事件[11]。同樣,move_base 功能包也配置參數(shù),以下是幾份相關(guān)的文件。
3.2.1 通用參數(shù)配置
其中:robot_radius 為機(jī)器人半徑,機(jī)器人底盤為圓形半徑為0.13。obstacle_range 是將機(jī)器人周圍2m 范圍內(nèi)的新的障礙物添加到地圖中,raytrance_range 則是將不存在的障礙物從地圖中刪除。Information_radius 是障礙物的擴(kuò)展半徑,防止機(jī)器人發(fā)生碰撞。coservation_sources 是導(dǎo)航中需要的傳感器,本文使用的是激光雷達(dá)。
3.2.2 全局代價(jià)地圖參數(shù)設(shè)置
其中:update_frequency 的作用是確定代價(jià)地圖更新頻率,而publish_frequency[12]是確定代價(jià)地圖發(fā)布的頻率,這兩個(gè)參數(shù)都被設(shè)定為1Hz。此外,transform_tolerance 的作用是確定等待坐標(biāo)轉(zhuǎn)換發(fā)布的最大延誤時(shí)間,這個(gè)數(shù)值設(shè)定為0.5 秒。最后,static_map 的作用則是用于確定是否使用已有的地圖來初始化全局代價(jià)地圖,為了使用之前創(chuàng)建的二維柵格地圖,這里設(shè)置為true。
3.2.3 局部代價(jià)地圖參數(shù)設(shè)置
其中,局部代價(jià)地圖與全局代價(jià)地圖參數(shù)含義大致相同。但是因?yàn)槭覂?nèi)環(huán)境的復(fù)雜性,局部代價(jià)地圖static_map 設(shè)置為false,使用動態(tài)窗口。width 和height 局部地圖的高度和寬度,這里都設(shè)置為2m。resolution 設(shè)置局部地圖的分辨率為0.05,與靜態(tài)地圖分辨率保持一致。
為了驗(yàn)證軟硬件設(shè)計(jì)的可行性,根據(jù)前文的地圖構(gòu)建方案以及導(dǎo)航系統(tǒng)方案,完成移動機(jī)器人平臺的搭建,并對機(jī)器人平臺二維柵格地圖構(gòu)建與多點(diǎn)導(dǎo)航功能進(jìn)行測試。
試驗(yàn)場地選擇宿舍樓茶水間和樓梯間兩間房,如圖6 所示。通過鍵盤控制節(jié)點(diǎn)遠(yuǎn)程控制機(jī)器人移動,機(jī)器人最大角速度設(shè)置為0.2rad/s,最大線速度設(shè)置為0.1m/s,低速行駛建圖更加準(zhǔn)確。機(jī)器人遍歷整個(gè)環(huán)境后,地圖效果如圖7 所示。對比圖6 和圖7可以看出,構(gòu)建的地圖可以準(zhǔn)確體現(xiàn)真實(shí)的環(huán)境特征。
圖6 實(shí)驗(yàn)場地現(xiàn)場圖
圖7 實(shí)驗(yàn)場地地圖創(chuàng)建效果圖
導(dǎo)航實(shí)驗(yàn)是在上節(jié)構(gòu)建的地圖的基礎(chǔ)上進(jìn)行的,機(jī)器人需要滿足合理的路徑規(guī)劃,避免與障礙物發(fā)生碰撞,并且能夠進(jìn)行多點(diǎn)導(dǎo)航,到達(dá)各個(gè)設(shè)置的目標(biāo)點(diǎn)。
在本次測試中,在地圖上設(shè)置了0~16 共17 個(gè)目標(biāo)點(diǎn),機(jī)器人依次到達(dá)17 個(gè)點(diǎn)位,當(dāng)?shù)竭_(dá)目標(biāo)點(diǎn)16 點(diǎn)后機(jī)器人又重新規(guī)劃到0 點(diǎn)的路線進(jìn)行下一次的循環(huán),當(dāng)然在機(jī)器人運(yùn)行過程中也可以新增目標(biāo)點(diǎn)。效果圖如圖8 所示。圖8分別是9 點(diǎn)到10 點(diǎn)以及15 到16 點(diǎn)的導(dǎo)航效果圖,可以看出路徑規(guī)劃平滑合理,與墻壁或其他障礙物保持一定距離,沒有發(fā)生碰撞。機(jī)器人導(dǎo)航系統(tǒng)構(gòu)建成功,成功到達(dá)各個(gè)目標(biāo)點(diǎn),實(shí)現(xiàn)多點(diǎn)導(dǎo)航功能。
圖8 多點(diǎn)導(dǎo)航實(shí)驗(yàn)效果圖
論文以室內(nèi)移動機(jī)器人多目標(biāo)點(diǎn)導(dǎo)航系統(tǒng)研究與實(shí)現(xiàn)為目的,設(shè)計(jì)了移動機(jī)器人平臺,該機(jī)器人平臺上位機(jī)采用樹莓派作為控制中心實(shí)現(xiàn)相關(guān)算法,下位機(jī)采用STM32 作為控制中心驅(qū)動電機(jī)與相關(guān)數(shù)據(jù)采集。基于搭建的實(shí)驗(yàn)平臺完成了相關(guān)的實(shí)驗(yàn)。實(shí)驗(yàn)結(jié)果表明:該機(jī)器人移動平臺能夠完成室內(nèi)復(fù)雜環(huán)境的柵格地圖構(gòu)建,且建圖效果良好;并且基于構(gòu)建的地圖實(shí)現(xiàn)了多點(diǎn)導(dǎo)航功能。該項(xiàng)技術(shù)對于各種巡檢機(jī)器人的導(dǎo)航定位系統(tǒng)的開發(fā)具有較高的參考價(jià)值。