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