周寶昌,林梓宏,周旭華,3,謝智陽
(1.河源職業(yè)技術(shù)學(xué)院,廣東 河源 517000;2.河源市工業(yè)機(jī)器人技術(shù)應(yīng)用工程技術(shù)研究中心,廣東 河源 517000;3.河源市智能汽車與智慧交通工程技術(shù)研究中心,廣東 河源 517000)
國外的移動(dòng)機(jī)器人研究始于上世紀(jì)60年代末期,由美國斯坦福研究院研制出世界上第一臺(tái)可移動(dòng)的機(jī)器人“沙基”(Shakey)[1]。隨后,各種移動(dòng)機(jī)器人的研究和應(yīng)用應(yīng)運(yùn)而生,如亞馬遜2019年使用的無人送貨機(jī)器人Scout,可通過視覺攝像頭與激光雷達(dá)融合定位建圖實(shí)現(xiàn)自主導(dǎo)航。國內(nèi)對(duì)移動(dòng)機(jī)器人研究比國外稍晚,如小米公司研究的掃地機(jī)器人,能通過激光雷達(dá)和紅外等傳感器對(duì)室內(nèi)環(huán)節(jié)進(jìn)行掃描,根據(jù)掃描的路徑規(guī)劃完成室內(nèi)的清掃;文獻(xiàn)[2]首次將立麥克納姆輪的運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)模型應(yīng)用在全向輪智能小車上。文獻(xiàn)[3]針對(duì)全向移動(dòng)小車編隊(duì)的軌跡跟蹤及防碰撞問題,解決了編隊(duì)軌跡跟蹤過程中的防碰撞控制問題。但是,目前國內(nèi)外研究的移動(dòng)機(jī)器人基本是以2 輪或者4 輪為主的服務(wù)機(jī)器人[4]。全向輪智能小車通過搭載不同的傳感器,可快速開發(fā)并應(yīng)用于酒店、餐廳等不同場(chǎng)景中化身為不同類型的機(jī)器人,實(shí)現(xiàn)智能化引導(dǎo)顧客,解放人力。設(shè)計(jì)一款使用3個(gè)全向輪來進(jìn)行移動(dòng)的智能機(jī)器人小車。
智能小車中控由頂層與底層控制組成,頂層為決策層,通過采集雷達(dá)獲取到的環(huán)境信息與底層里程計(jì)的輪速數(shù)據(jù),將數(shù)據(jù)傳輸?shù)絉OS 系統(tǒng)上,通過對(duì)數(shù)據(jù)進(jìn)行處理,計(jì)算出小車當(dāng)前的位姿信息與加速度信息,然后將新的指令發(fā)送到運(yùn)動(dòng)控制層,同時(shí)配置了慣性測(cè)量單元IMU(Inertial Measurement Unit)姿態(tài)傳感器來校準(zhǔn)各種參數(shù)。底層為運(yùn)動(dòng)控制層,通過接收到樹莓派傳輸?shù)男盘?hào),將速度信號(hào)轉(zhuǎn)換成數(shù)字模擬信號(hào)并發(fā)送到電機(jī)驅(qū)動(dòng)板來控制機(jī)器人小車移動(dòng),并將電機(jī)的速度傳回驅(qū)動(dòng)板來實(shí)現(xiàn)閉環(huán)控制[5]。
樹莓派4B 將各個(gè)傳感器獲取到的信息進(jìn)行整合分析和預(yù)處理,然后根據(jù)這些信息對(duì)小車的下個(gè)運(yùn)動(dòng)做出決策,將決策指令通過USB 串口通信將信號(hào)傳輸?shù)紸rduino 上再處理,將最終得到的PWM 脈沖寬度調(diào)制信號(hào)發(fā)送到電機(jī)驅(qū)動(dòng)板上,由驅(qū)動(dòng)板來控制三個(gè)電機(jī)運(yùn)動(dòng),讓小車?yán)萌齻€(gè)全向輪的差速實(shí)現(xiàn)直走、轉(zhuǎn)向運(yùn)動(dòng),最終完成全向輪小車的建圖與導(dǎo)航功能操作。
全向輪智能小車,所需材料見表1。
表1 全向輪小車制作材料清單
全向輪小車的硬件設(shè)計(jì)包括樹莓派4B、USB 激光雷達(dá)、Arduino Mega2560 控制板、降壓模塊、12.6V鋰電池、雙路直流電機(jī)驅(qū)動(dòng)板和編碼器組成,硬件結(jié)構(gòu)如圖1 所示。
圖1 硬件結(jié)構(gòu)系統(tǒng)
(1)電源模塊設(shè)計(jì),電源是必不可少的硬件,可以讓機(jī)器人帶動(dòng)整個(gè)系統(tǒng)正常運(yùn)轉(zhuǎn)。為了滿足各個(gè)模塊的電源需求,選擇采用規(guī)格為12 V、10300 mAh 的鋰離子充電電池分別為樹莓派4B 和底盤電機(jī)驅(qū)動(dòng)板供電,Arduino、激光雷達(dá)和IMU 通過樹莓派的USB 接口進(jìn)行數(shù)據(jù)傳輸與供電,編碼器由Arduino 引出5 V進(jìn)行供電。
(2)電機(jī)模塊,本模塊采用是雙路直流電機(jī)驅(qū)動(dòng)板,可驅(qū)動(dòng)兩臺(tái)直流電機(jī)工作,選用CHR-GM25-370,單路7a 大功率,光耦隔離輸入信號(hào),并有欠壓保護(hù),可靠穩(wěn)定。由于本設(shè)計(jì)使用到了3個(gè)全向輪,因此需要多使用一個(gè)驅(qū)動(dòng)板來進(jìn)行驅(qū)動(dòng)。驅(qū)動(dòng)板上的ENA1 和ENA2 為電機(jī)使能端,通過接收Arduino 板上的PWM 端口信號(hào)來控制輸出端A 和B 的電壓大小間接控制輪子的轉(zhuǎn)速。
(3)底盤控制模塊,底盤控制平臺(tái)采用Arduino板為核心。
(4)傳感器模塊,此模塊有多個(gè)傳感器組成,主要是選用激光雷達(dá)寫RPLIDAR-A3,用于機(jī)智能小車的環(huán)境感知。通過機(jī)器人小車頂部的激光雷達(dá)發(fā)布高頻率的激光采集室內(nèi)環(huán)境信息,將其處理傳輸?shù)絉OS系統(tǒng)上。采樣頻率為16000 次/秒,測(cè)量距離為25 m,能獲得精確的環(huán)境輪廓信息。
Arduino 驅(qū)動(dòng)板接收到樹莓派傳輸來的指令后向電機(jī)驅(qū)動(dòng)板發(fā)送數(shù)字模擬信號(hào),電機(jī)驅(qū)動(dòng)板獲取信號(hào)后再單獨(dú)控制2個(gè)電機(jī)的速度。這里用到兩塊電機(jī)驅(qū)動(dòng)板,電機(jī)驅(qū)動(dòng)板1 的IN1、IN2 和ENA1 控制A 電機(jī)的正反轉(zhuǎn)和速度,電機(jī)驅(qū)動(dòng)板2 的IN1、IN2 和ENA1控制B 電機(jī)的正反轉(zhuǎn)和速度,IN3、IN4 和ENA2 控制C 電機(jī)的正反轉(zhuǎn)和速度。電機(jī)編碼器與Arduino 驅(qū)動(dòng)板連接,可以測(cè)量電機(jī)的轉(zhuǎn)速并調(diào)整,還能讓電機(jī)更迅速到達(dá)目標(biāo)速度。連接示意圖如圖2 所示。
圖2 電機(jī)驅(qū)動(dòng)板與Arduino 和電機(jī)的連接
導(dǎo)航功能的實(shí)現(xiàn)主要有兩個(gè)關(guān)鍵因素:機(jī)器人的路徑規(guī)劃與自主定位。路徑規(guī)劃到關(guān)鍵在于地圖到構(gòu)建,利用GMapping 算法繪制出高進(jìn)度地圖,為路徑規(guī)劃提供更優(yōu)的選擇,而定位則采用了AMCL(Adaptive Monte CarloLocalization)自適應(yīng)Montcallo 定位法,對(duì)地圖中的機(jī)器人位置進(jìn)行跟蹤,從而實(shí)現(xiàn)自主定位。ROS 提供了一個(gè)完整的導(dǎo)航框架,系統(tǒng)僅需要發(fā)布必要的傳感器信息與導(dǎo)航的目標(biāo)三維坐標(biāo)與四元數(shù)轉(zhuǎn)向角信息即可完成導(dǎo)航。整體設(shè)計(jì)如圖3 所示。
圖3 軟件整體設(shè)計(jì)流程
Gmapping 是一個(gè)基于2D 激光雷達(dá)使用RBPF算法完成二維柵格地圖構(gòu)建的SLAM 算法,實(shí)現(xiàn)實(shí)時(shí)構(gòu)建室內(nèi)環(huán)境地圖。用x表示機(jī)器人狀態(tài),m表示環(huán)境地圖,z表示傳感器觀測(cè)情況,u表示輸入控制,下標(biāo)表示時(shí)刻,則對(duì)p(xt,m)|z1:t,u1:t-1進(jìn)行估計(jì)。由條件貝葉斯法則可以得到:
算法的過程是將當(dāng)前時(shí)刻的位置用前一刻的地圖和運(yùn)動(dòng)模型進(jìn)行預(yù)測(cè),然后根據(jù)傳感器的觀測(cè)值、重、粒子的地圖更新等來計(jì)算權(quán)重,如此往復(fù)地進(jìn)行計(jì)算。
為了方便計(jì)算,對(duì)兩邊取對(duì)數(shù):
在沒有任何測(cè)量值的初始狀態(tài)下,一個(gè)點(diǎn)的初始狀態(tài)為0,而這一部分關(guān)鍵的地方在于的計(jì)算,比值為測(cè)量值的模型,標(biāo)記為lomeas。測(cè)量值的模型只有兩種和looccu =而且都是定值。這樣每獲得一次測(cè)量值,能用加減法對(duì)點(diǎn)狀態(tài)進(jìn)行更新。從而完成更新地圖的工作。
采用人Gmapping 算法實(shí)時(shí)構(gòu)建室內(nèi)環(huán)境地圖。通過調(diào)用Gmapping 算法,能夠繪制高質(zhì)量的地圖,為移動(dòng)機(jī)器人提供了更優(yōu)的路徑規(guī)劃。
路徑規(guī)劃模塊由連接在樹莓派上的激光雷達(dá)和讀取里程計(jì)信息、發(fā)布導(dǎo)航點(diǎn)坐標(biāo)的程序兩部分組成,主要用來獲取地圖信息到樹莓派4B 上,再由樹莓派處理器對(duì)信息分析處理。導(dǎo)航功能需要提前構(gòu)建一張地圖才能進(jìn)行導(dǎo)航,程序?qū)⒌貓D處理為兩個(gè)代價(jià)地圖來保存現(xiàn)實(shí)世界中的障礙物信息[6]。
使用Amcl 自適應(yīng)蒙特卡洛定位法建立機(jī)器人在二維移動(dòng)過程中概率定位系統(tǒng),采用粒子濾波來跟蹤已經(jīng)知道的地圖中機(jī)器人位姿。AMCL 算法步驟如下:
將筆記本電腦通過USB 線或者無線網(wǎng)絡(luò)連接到樹莓派上,進(jìn)行ROS 系統(tǒng)和所需的功能包下載安裝,并進(jìn)行編程和通信。
測(cè)試時(shí),的測(cè)試環(huán)境將機(jī)器人小推車放在地面上,如圖4 所示。打開開關(guān),觀察小車的地圖構(gòu)建與導(dǎo)航情況,根據(jù)實(shí)際情況調(diào)整局部地圖、全局地圖參數(shù)與小車的平穩(wěn)度和速度。
圖4 測(cè)試環(huán)境
是機(jī)器人創(chuàng)建的環(huán)境地圖(圖5),通常是PGM格式的普通灰階圖像。這張圖片上的黑色pixel 表示障礙物,白色pixel 表示可以自由通過的區(qū)域,而灰色則是沒有被探索到的地方。從圖6 中可視化信息視圖測(cè)試結(jié)果中,可以清晰得出,雷達(dá)構(gòu)建的地圖信息邊緣清晰、對(duì)障礙物位置準(zhǔn)確定位。
圖5 智能小車構(gòu)建的環(huán)境地
圖6 地圖可視化信息視圖
對(duì)3個(gè)全向輪的運(yùn)動(dòng)學(xué)分析后,構(gòu)建相應(yīng)的運(yùn)動(dòng)學(xué)模型,基于ROS 操作系統(tǒng)進(jìn)行導(dǎo)航功能的設(shè)計(jì)與實(shí)現(xiàn),并研究出了穩(wěn)定的機(jī)器人系統(tǒng)。經(jīng)過系統(tǒng)測(cè)試結(jié)果表明,本系統(tǒng)具有較好的導(dǎo)航與實(shí)時(shí)避障能力,構(gòu)建的地圖精準(zhǔn)度高,導(dǎo)航任務(wù)完成度高、位置精準(zhǔn)?;贗MU 與里程計(jì)的姿態(tài)糾正,使系統(tǒng)對(duì)不同環(huán)境均有良好的適應(yīng)性,為三輪全向機(jī)器人小車的研究提供了參考。