德州職業(yè)技術(shù)學(xué)院 王東霞
移動機(jī)器人由多個模塊構(gòu)成,自動導(dǎo)航系統(tǒng)是其中重要模塊之一,直接關(guān)系到機(jī)器人的運(yùn)動情況。基于此,本文對基于ROS的移動機(jī)器人自動導(dǎo)航系統(tǒng)進(jìn)行了設(shè)計,為現(xiàn)代移動機(jī)器人領(lǐng)域的發(fā)展提供一定幫助。該系統(tǒng)包括硬件與軟件兩部分,由SLAM功能、導(dǎo)航功能等構(gòu)成,可自動進(jìn)行定位、繪圖、導(dǎo)航等工作。
科學(xué)技術(shù)迅猛發(fā)展的今天,移動機(jī)器人技術(shù)更加成熟與完善,其已被廣泛應(yīng)用到各個領(lǐng)域。通過移動機(jī)器人的應(yīng)用,減少了人員的參與,不僅提升了各項工作的開展效率,還降低了各種問題的發(fā)生率,對現(xiàn)代社會發(fā)展具有重要意義。所以,現(xiàn)代社會發(fā)展過程中,急需設(shè)計出一種性能良好且功能健全的移動機(jī)器人自動導(dǎo)航系統(tǒng),以進(jìn)一步提升移動機(jī)器人性能。
在硬件方面,其主要由兩大模塊構(gòu)成,一個是移動底盤,在底盤的前端安裝一對獨(dú)立的驅(qū)動輪;在底盤的后端安裝一對小腳輪,通過調(diào)節(jié)輪子的速度,以此達(dá)到控制機(jī)器人左右移動的目的。該方式機(jī)動性更強(qiáng),控制效果更好,且成本相對較低。另一個是核心模塊,主要包括:(1)上位機(jī)系統(tǒng)。選擇了ROS機(jī)器人平臺,內(nèi)部安裝了Ubuntul6.04系統(tǒng),用于繪圖、定位、導(dǎo)航等工作;(2)雷達(dá)系統(tǒng)。采用了型號為RPLIDAR A的激光雷達(dá)傳感器,發(fā)出的信息接觸到障礙物后則會立即返回,以此可以推算出兩者間的距離。在設(shè)備內(nèi)部,安裝了可以360°旋轉(zhuǎn)的探頭,能夠?qū)λ薪嵌冗M(jìn)行檢測,測距半徑最大值是8m;(3)電機(jī)編碼器。選擇了旋轉(zhuǎn)編碼器,用于推算設(shè)備旋轉(zhuǎn)圈數(shù),并以此為基礎(chǔ),結(jié)合輪的周長,推導(dǎo)出設(shè)備的移動速度,機(jī)器所處的具體位置等;(4)下位機(jī)。用于命令的發(fā)布,選擇了型號為STM32S103-ARM M3單片機(jī);(5)驅(qū)動器,獲得下位機(jī)傳輸?shù)拿詈螅{(diào)節(jié)電機(jī)的轉(zhuǎn)動,以此控制設(shè)備的運(yùn)動狀況。
ROS是現(xiàn)代機(jī)器人當(dāng)中的重要組成部分,主要用于機(jī)器人的控制,直接關(guān)系到機(jī)器人的性能。ROS屬于開源操作系統(tǒng),可完成多種系統(tǒng)操作工作,如硬件抽象描述、底層驅(qū)動程序管理、共用功能的執(zhí)行、模塊間信息的傳輸、模塊發(fā)行包的管理等。與此同時,還包括采集、分析、整理數(shù)據(jù)等功能,在各節(jié)點的連接下,將所有程序連接到一起,并通過話題的方式完成程序間數(shù)據(jù)的傳輸。在基本框架方面,共包括三個Level,分別為計算圖級、文件級與開源社區(qū)級。
在下位機(jī)方面,主要由以下程序構(gòu)成:驅(qū)動程序,用于控制驅(qū)動器的運(yùn)行;格式包程序,用于對通訊信息的管理;電源程序,用于對電源的控制等,在各程序模塊共同作用下,發(fā)放相應(yīng)指令,并向系統(tǒng)提供電力能源,控制上位機(jī)正常運(yùn)行。在上位機(jī)方面,主要包括:雷達(dá)驅(qū)動程序,用于發(fā)射并接收激光信息;無線接口,用于與ROS連接;同時,在ROS另一端,可連接到計算機(jī)中,以控制工作量較大的軟件,如rive軟件、Gazebo軟件等,使得系統(tǒng)能夠完成繪圖、導(dǎo)航等工作。此外,本設(shè)計當(dāng)中,還以前人的研究成果為基礎(chǔ),利用節(jié)點的方式將多種功能包連接到一起,從而形成性能良好且功能健全的ROS系統(tǒng),確保該系統(tǒng)能夠有序完成數(shù)據(jù)分析、繪圖、導(dǎo)航等工作。
本系統(tǒng)設(shè)計時以ROS為核心操作模塊,在構(gòu)架方面采用了分布式的形式,因而在軟件設(shè)計時,可根據(jù)功能的不同,將其劃分為多個模塊,并針對各模塊予以設(shè)計,一方面減少了設(shè)計時間,另一方面降低設(shè)計難度,有利于后期的運(yùn)維。本自動導(dǎo)航系統(tǒng)內(nèi),共包括gmapping、base-controller、move-basey、ydrobot、與amcl功能包等;其中,gmapping功能包加載了Rao-BlackWellized粒子概率算法,能夠準(zhǔn)確對相關(guān)信息進(jìn)行整理與分析,有利于柵格圖的繪制;base-controller功能包屬于一種控制器,主要用于對整個設(shè)備進(jìn)行運(yùn)動控制,該功能包接收到信息后,經(jīng)過對這些信息的計算與分析,進(jìn)而發(fā)布相關(guān)指令,以控制輪子速度,與此同時,還會展示設(shè)備的運(yùn)動距離;move-basey功能包將會以里程信息為基礎(chǔ),結(jié)合激光測量結(jié)果制定出最佳的運(yùn)動路徑;ydrobot功能包為描述文件,能夠展示出設(shè)備的坐標(biāo)改變情況;amcl功能包則加載了蒙塔卡羅定位法,可動態(tài)分析設(shè)備的在map內(nèi)的位置。
本系統(tǒng)設(shè)計中選擇的是gmapping,其是一種開源功能包,主要利用RBPF粒子概率算法為基礎(chǔ)而開發(fā)的。對于該功能包來說,安裝了相應(yīng)的編碼器,以此采集里程信息,對信息要求相對較低,因而在激光雷達(dá)方面,僅需要選擇精度一般的雷達(dá)即可,無需投入較高成本。該功能包剛剛開發(fā)時,主要是幫助機(jī)器人繪制圖像,并確定出設(shè)備所處的位置。gmapping運(yùn)行時,首先利用scan工具采集設(shè)備初始狀態(tài)的各種信息;然后以此為基礎(chǔ),添加適當(dāng)?shù)腎MU數(shù)據(jù),以提升信息的準(zhǔn)確性,并得到更加穩(wěn)定的圖像;最后,繪制柵格圖,并利用rivz展示出來。具體如圖1所示。
圖1 SLAM功能流程圖
ROS導(dǎo)航時主要利用move-base與amcl兩個功能包,傳感器采集到相關(guān)數(shù)據(jù)后,會傳輸?shù)絤ove-base功能包,通過該功能包的分析,以此調(diào)節(jié)設(shè)備的運(yùn)行狀況并設(shè)計出最佳的運(yùn)動路線。在另一個功能包的作用下,能夠確定設(shè)備在整個柵格圖中的位置,本系統(tǒng)所設(shè)計中,mave-base應(yīng)符合下述幾個要求:(1)可繪制出準(zhǔn)確的外界環(huán)境圖;(2)安裝了激光雷達(dá)裝置;(3)安裝了編碼器,可采集里程信息。該功能包內(nèi)由兩個costmap構(gòu)成,一個用于設(shè)計全局路徑,另一個用于設(shè)計本地實時路徑,以此構(gòu)建出環(huán)境圖像。該圖像內(nèi),長方形為設(shè)備檢測的范圍大小,灰度值為存在障礙物,進(jìn)而可以得到設(shè)備的運(yùn)行路線。設(shè)備導(dǎo)航時主要流程為:將設(shè)備啟動,先分析給定坐標(biāo),確定目標(biāo)點,并以此為基礎(chǔ),根據(jù)障礙物檢測結(jié)果確定出最佳的運(yùn)行路徑,保證設(shè)備運(yùn)行到目標(biāo)點的同時,不會與周邊物體發(fā)生碰撞。
按照設(shè)計內(nèi)容完成設(shè)備安裝后,將機(jī)器人驅(qū)動,通過ssh連接到移動平臺的上位機(jī)計算機(jī)中,之后在系統(tǒng)內(nèi)錄入相應(yīng)指令,觀察各節(jié)點是否能夠正常運(yùn)行,能夠獲取相關(guān)信息。若未發(fā)現(xiàn)問題,將gmapping打開,則會使雷達(dá)、rivz模塊運(yùn)行,在rivz界面內(nèi)會出現(xiàn)大量紅色小點,且在界面左側(cè)能夠展示出具體信息。最后,觀察系統(tǒng)是否能夠繪制出柵格圖。若上述全部未發(fā)現(xiàn)問題,則表明SLAM功能符合要求。本次研究中,選擇了某辦公室進(jìn)行了驗證,可繪制出較為清晰的柵格圖,且通過與實物圖對比后發(fā)現(xiàn),兩者結(jié)構(gòu)基本相同,表示該功能符合要求。
在電腦終端處,打開move-base內(nèi)的launch文件,之后在rivz頁面內(nèi)選擇“2DNav Goal”選項,界面內(nèi)會形成綠色箭頭,由此展示設(shè)備移動方向即機(jī)器人的運(yùn)動路線。通過測試發(fā)現(xiàn),本系統(tǒng)可在無碰撞的狀態(tài)下自動移動到目標(biāo)點,基本達(dá)到了預(yù)期要求。
總結(jié):綜上所述,自動導(dǎo)航系統(tǒng)是現(xiàn)代移動機(jī)器人當(dāng)中的重要組成部分,直接關(guān)系到機(jī)器人的運(yùn)動情況。基于此,本研究設(shè)計出了一款性能良好且功能健全的自動導(dǎo)航系統(tǒng),通過該系統(tǒng)的應(yīng)用能夠繪制出較為準(zhǔn)確的柵格圖,并確定出無障礙運(yùn)行路線,可為機(jī)器人的運(yùn)行提供良好引導(dǎo),符合移動機(jī)器人的開發(fā)要求。