周寶昌,林梓宏,周旭華,3,謝智陽
(1.河源職業技術學院,廣東 河源 517000;2.河源市工業機器人技術應用工程技術研究中心,廣東 河源 517000;3.河源市智能汽車與智慧交通工程技術研究中心,廣東 河源 517000)
國外的移動機器人研究始于上世紀60年代末期,由美國斯坦福研究院研制出世界上第一臺可移動的機器人“沙基”(Shakey)[1]。隨后,各種移動機器人的研究和應用應運而生,如亞馬遜2019年使用的無人送貨機器人Scout,可通過視覺攝像頭與激光雷達融合定位建圖實現自主導航。國內對移動機器人研究比國外稍晚,如小米公司研究的掃地機器人,能通過激光雷達和紅外等傳感器對室內環節進行掃描,根據掃描的路徑規劃完成室內的清掃;文獻[2]首次將立麥克納姆輪的運動學和動力學模型應用在全向輪智能小車上。文獻[3]針對全向移動小車編隊的軌跡跟蹤及防碰撞問題,解決了編隊軌跡跟蹤過程中的防碰撞控制問題。但是,目前國內外研究的移動機器人基本是以2 輪或者4 輪為主的服務機器人[4]。全向輪智能小車通過搭載不同的傳感器,可快速開發并應用于酒店、餐廳等不同場景中化身為不同類型的機器人,實現智能化引導顧客,解放人力。設計一款使用3個全向輪來進行移動的智能機器人小車。
智能小車中控由頂層與底層控制組成,頂層為決策層,通過采集雷達獲取到的環境信息與底層里程計的輪速數據,將數據傳輸到ROS 系統上,通過對數據進行處理,計算出小車當前的位姿信息與加速度信息,然后將新的指令發送到運動控制層,同時配置了慣性測量單元IMU(Inertial Measurement Unit)姿態傳感器來校準各種參數。底層為運動控制層,通過接收到樹莓派傳輸的信號,將速度信號轉換成數字模擬信號并發送到電機驅動板來控制機器人小車移動,并將電機的速度傳回驅動板來實現閉環控制[5]。
樹莓派4B 將各個傳感器獲取到的信息進行整合分析和預處理,然后根據這些信息對小車的下個運動做出決策,將決策指令通過USB 串口通信將信號傳輸到Arduino 上再處理,將最終得到的PWM 脈沖寬度調制信號發送到電機驅動板上,由驅動板來控制三個電機運動,讓小車利用三個全向輪的差速實現直走、轉向運動,最終完成全向輪小車的建圖與導航功能操作。
全向輪智能小車,所需材料見表1。

表1 全向輪小車制作材料清單
全向輪小車的硬件設計包括樹莓派4B、USB 激光雷達、Arduino Mega2560 控制板、降壓模塊、12.6V鋰電池、雙路直流電機驅動板和編碼器組成,硬件結構如圖1 所示。

圖1 硬件結構系統
(1)電源模塊設計,電源是必不可少的硬件,可以讓機器人帶動整個系統正常運轉。為了滿足各個模塊的電源需求,選擇采用規格為12 V、10300 mAh 的鋰離子充電電池分別為樹莓派4B 和底盤電機驅動板供電,Arduino、激光雷達和IMU 通過樹莓派的USB 接口進行數據傳輸與供電,編碼器由Arduino 引出5 V進行供電。
(2)電機模塊,本模塊采用是雙路直流電機驅動板,可驅動兩臺直流電機工作,選用CHR-GM25-370,單路7a 大功率,光耦隔離輸入信號,并有欠壓保護,可靠穩定。由于本設計使用到了3個全向輪,因此需要多使用一個驅動板來進行驅動。驅動板上的ENA1 和ENA2 為電機使能端,通過接收Arduino 板上的PWM 端口信號來控制輸出端A 和B 的電壓大小間接控制輪子的轉速。
(3)底盤控制模塊,底盤控制平臺采用Arduino板為核心。
(4)傳感器模塊,此模塊有多個傳感器組成,主要是選用激光雷達寫RPLIDAR-A3,用于機智能小車的環境感知。通過機器人小車頂部的激光雷達發布高頻率的激光采集室內環境信息,將其處理傳輸到ROS系統上。采樣頻率為16000 次/秒,測量距離為25 m,能獲得精確的環境輪廓信息。
Arduino 驅動板接收到樹莓派傳輸來的指令后向電機驅動板發送數字模擬信號,電機驅動板獲取信號后再單獨控制2個電機的速度。這里用到兩塊電機驅動板,電機驅動板1 的IN1、IN2 和ENA1 控制A 電機的正反轉和速度,電機驅動板2 的IN1、IN2 和ENA1控制B 電機的正反轉和速度,IN3、IN4 和ENA2 控制C 電機的正反轉和速度。電機編碼器與Arduino 驅動板連接,可以測量電機的轉速并調整,還能讓電機更迅速到達目標速度。連接示意圖如圖2 所示。

圖2 電機驅動板與Arduino 和電機的連接
導航功能的實現主要有兩個關鍵因素:機器人的路徑規劃與自主定位。路徑規劃到關鍵在于地圖到構建,利用GMapping 算法繪制出高進度地圖,為路徑規劃提供更優的選擇,而定位則采用了AMCL(Adaptive Monte CarloLocalization)自適應Montcallo 定位法,對地圖中的機器人位置進行跟蹤,從而實現自主定位。ROS 提供了一個完整的導航框架,系統僅需要發布必要的傳感器信息與導航的目標三維坐標與四元數轉向角信息即可完成導航。整體設計如圖3 所示。

圖3 軟件整體設計流程
Gmapping 是一個基于2D 激光雷達使用RBPF算法完成二維柵格地圖構建的SLAM 算法,實現實時構建室內環境地圖。用x表示機器人狀態,m表示環境地圖,z表示傳感器觀測情況,u表示輸入控制,下標表示時刻,則對p(xt,m)|z1:t,u1:t-1進行估計。由條件貝葉斯法則可以得到:

算法的過程是將當前時刻的位置用前一刻的地圖和運動模型進行預測,然后根據傳感器的觀測值、重、粒子的地圖更新等來計算權重,如此往復地進行計算。

為了方便計算,對兩邊取對數:

在沒有任何測量值的初始狀態下,一個點的初始狀態為0,而這一部分關鍵的地方在于的計算,比值為測量值的模型,標記為lomeas。測量值的模型只有兩種和looccu =而且都是定值。這樣每獲得一次測量值,能用加減法對點狀態進行更新。從而完成更新地圖的工作。
采用人Gmapping 算法實時構建室內環境地圖。通過調用Gmapping 算法,能夠繪制高質量的地圖,為移動機器人提供了更優的路徑規劃。
路徑規劃模塊由連接在樹莓派上的激光雷達和讀取里程計信息、發布導航點坐標的程序兩部分組成,主要用來獲取地圖信息到樹莓派4B 上,再由樹莓派處理器對信息分析處理。導航功能需要提前構建一張地圖才能進行導航,程序將地圖處理為兩個代價地圖來保存現實世界中的障礙物信息[6]。
使用Amcl 自適應蒙特卡洛定位法建立機器人在二維移動過程中概率定位系統,采用粒子濾波來跟蹤已經知道的地圖中機器人位姿。AMCL 算法步驟如下:

將筆記本電腦通過USB 線或者無線網絡連接到樹莓派上,進行ROS 系統和所需的功能包下載安裝,并進行編程和通信。
測試時,的測試環境將機器人小推車放在地面上,如圖4 所示。打開開關,觀察小車的地圖構建與導航情況,根據實際情況調整局部地圖、全局地圖參數與小車的平穩度和速度。

圖4 測試環境
是機器人創建的環境地圖(圖5),通常是PGM格式的普通灰階圖像。這張圖片上的黑色pixel 表示障礙物,白色pixel 表示可以自由通過的區域,而灰色則是沒有被探索到的地方。從圖6 中可視化信息視圖測試結果中,可以清晰得出,雷達構建的地圖信息邊緣清晰、對障礙物位置準確定位。

圖5 智能小車構建的環境地

圖6 地圖可視化信息視圖
對3個全向輪的運動學分析后,構建相應的運動學模型,基于ROS 操作系統進行導航功能的設計與實現,并研究出了穩定的機器人系統。經過系統測試結果表明,本系統具有較好的導航與實時避障能力,構建的地圖精準度高,導航任務完成度高、位置精準?;贗MU 與里程計的姿態糾正,使系統對不同環境均有良好的適應性,為三輪全向機器人小車的研究提供了參考。