汪云云, 王連明, 關建文, 王富興
(1.東北師范大學物理學院,長春 130024; 2.海南熱帶海洋學院海洋科學技術學院,三亞 572022)
隨著人工智能技術的快速發展,工業自動化程度日益提高,自動導引車(automated guided vehicle,AGV)作為原始人工勞動力的替代工具已經被應用到一些大型加工制造工廠之中。AGV是指裝備有自行定位導航裝置,可以依據規劃的路線行駛,具有安全保護和移載功能,能夠在物流運輸自動化中不需駕駛員實地操作的運輸車[1]。AGV作為一種自動化的運輸車,針對自動化工廠無人駕駛、安全高效等現實需求,要求其具備地圖構建、自主定位、路徑規劃、路徑跟蹤、自主導航等功能。
導引技術是AGV實現諸多功能的核心技術,目前AGV的導引技術以激光導引為主,磁體導引、視覺導引等方式并存發展。文獻[2]采用磁體導引AGV方式,穩定性較好,但需要定期更換磁體,潛在成本高。文獻[3]提出基于反光板的激光叉車AGV定位導航系統,該方法定位較精確,但是容易受外界光線、地面平整度等環境因素影響。文獻[4]通過圖像處理識別道路顏色實現視覺導引AGV系統,優點是路徑維護方便,但該算法受環境光照影響比較大,對圖像處理算法魯棒性要求比較高。
本文以室內運輸任務為目標,從自動化、柔性化、低成本化等現實需求出發,設計了一款易開發、易維護、適應性強、操作簡便且運行靈活的室內運輸AGV系統。
開源機器人操作系統(robot operating system,ROS)是由斯坦福大學人工智能實驗室開發的一套提供類似操作系統服務的機器人專用開源系統。其包括對硬件的抽象描述、消息傳遞、底層控制等功能,同時提供機器人開發所需的通用工具包和函數庫,比如機器人自主導航的相關功能包,能夠極大地提高機器人研發的代碼復用率[5]。
ROS的分布式點對點通信機制如圖1所示,圖1中的一個節點就是一個ROS進程,兩個節點之間的一對一通信稱為服務,多個節點之間的通信可以通過話題機制實現。該通信機制使用了基于TCP/IP的通信方式,實現模塊間點對點的松耦合連接[6]。基于ROS進行機器人的開發,可降低機器人開發難度,縮短開發周期。

圖1 ROS分布式點對點通信機制Fig.1 Distributed point-to-point communication mechanism of ROS
鑒于AGV有地圖構建、自主定位、路徑規劃等功能需求,而ROS恰好提供了實現這些功能的框架,因此可以借助ROS平臺開發AGV。AGV與ROS兩者的結合充分利用了ROS平臺的優勢,極大地提高了AGV系統的開發效率,降低了開發難度。
本文設計的基于ROS的室內運輸AGV系統可以分為軟件系統和硬件系統兩大部分,如圖2所示。從AGV的功能需求出發,進行硬件選型、設計與搭建硬件系統。在ROS規劃端進行地圖構建、自主定位、路徑規劃、路徑跟蹤、自主導航五大模塊的設計與實現。通過制定ROS規劃端與硬件系統的通信協議,使整個AGV系統軟硬件協同開發、協調工作。

圖2 基于ROS的AGV系統整體方案框圖Fig.2 The block diagram of AGV system based on ROS
軟件部分分為ROS規劃端和網頁人機交互端。ROS規劃端設計與實現AGV的五大功能。網頁人機交互端基于rosbridge通信機制,實現在線發布AGV控制命令,完成動態人機交互功能。
硬件系統設計為三個模塊:電源模塊、傳感器模塊、控制器模塊。其中電源模塊采用直流蓄電池組為整個車載系統提供所需電能。傳感器模塊包含舵機內置編碼器、用于地圖構建和避障的激光雷達、提供車體轉向信息的慣性測量單元、用于AGV手動調試的遙控手柄。控制器模塊包括STM32核心芯片和工業控制計算機,工業控制計算機作為上位機通過串口與STM32芯片進行數據傳輸,實現上位機與底層控制器的實時通信。
為測試基于ROS的室內運輸AGV系統的可行性與實用性,以室內無人工廠為實際應用場景,設計并實現了一款基于ROS的單舵輪室內運輸AGV系統。設計采用的車體行走結構為單舵輪輪系結構,包括一個主舵輪和兩個從動輪,主舵輪選用的是中大的CFR轉向驅動輪。單舵輪式結構承載負荷小、行走速度快、轉向靈活,因此選作實驗設計的平臺。
3.1.1 單舵輪AGV硬件系統設計
AGV系統地圖構建、自主定位、路徑規劃、路徑跟蹤、自主導航五大功能的實現,必須基于相應的硬件平臺。本文設計的基于ROS的室內運輸AGV硬件系統結構框圖如圖3所示。Ubuntu16.04操作系統運行在主控制器工控機上,在該系統下又搭載了一個Kinetic版本的ROS機器人操作系統。SICK LMS1xx系列激光掃描儀通過網口掛載到工控機上,作為地圖構建和避障的傳感器數據來源。微軟XBOX游戲手柄通過USB串口掛接在工控機上,用于手動調試控制AGV。STM32核心控制芯片通過USB-TTL轉換器連接到工控機上,與ROS 系統進行雙向通信。一方面STM32控制板接收ROS端發來的速度及轉向指令,根據CANopen協議通過CAN總線與兩個驅動器進行通信,以達到同時控制直行舵機和轉向電機的運動;另一方面,STM32以50 Hz頻率向ROS端上傳舵機編碼器脈沖數、MPU9250慣性測量單元等傳感器的數據。直流蓄電池組為整個系統供給電能。

圖3 基于ROS的AGV硬件結構框圖Fig.3 Hardware structure diagram of AGV based on ROS
AGV硬件系統中核心部件是主控制器。由于主控制器控制著AGV的通信、行駛、裝卸和故障診斷等任務,所以一般要求其具有較高的可靠性、靈活性和抗干擾能力。選用Intel公司的具有酷睿i7雙核處理器、2 GB內存的研華工業控制計算機。底盤輔助控制芯片采用的是STM32F103ZET6芯片。AGV主控制系統程序流程圖如圖4所示。

圖4 AGV主控制系統程序流程圖Fig.4 Flow chart of the main control system program of AGV
3.1.2 單舵輪AGV運動學模型建立與分析
AGV的運動學模型是運動控制的基礎。通過結合AGV的運動學模型和編碼器采集的數據等已知條件,可以求解AGV的里程計信息,進而可以實現AGV的實時定位[7]。反之,當AGV接收到上位機的運動指令時,通過逆運動學解析,可將運動指令解析為驅動控制器和轉向伺服控制器的控制命令,從而驅動相應電機進行運動。
單舵輪輪系結構如圖5所示,主舵輪既是驅動輪也是轉向輪,分別由直行電機驅動器和轉向電機驅動器進行驅動。車體后方的固定從動輪僅僅起支撐車體作用[8]。因此,AGV的運動學模型僅僅由主舵輪與從動輪安裝的相對位置和布局方式決定。

圖5 單舵輪AGV示意圖Fig.5 Schematic diagram of single wheel AGV
單舵輪AGV的運動學模型建立如6所示,在本模型中,坐標系XOY為二維世界坐標系,點O1為從AGV車體中軸線向兩個從動輪軸線作垂線得到的交點,作為AGV車體位置的參考點。前輪和后輪的軸距為l。β為舵輪與車體中軸線的夾角,可以通過轉向編碼器獲取;α為車體中軸線與世界坐標系X軸的夾角;vsteering為舵輪的行駛速度;vagv為車體中軸線上的速度,即AGV的前向行駛速度;vt為車體的橫向速度。vx、vy分別為舵輪速度在X、Y軸上的分量。ω為車體的角速度,定義逆時針方向為正值。假設車體初始位姿為 (x0,y0,α0),則經過dt時間后,車體在目標點處位姿為(x1,y1,α1),兩者之間的關系如下。
(1)初始位姿(x0,y0,α0)。
(2)AGV車體前向速度和角速度。
(1)
(3)dt時間段內位移增量和方位角增量:
(2)
(4)dt時間后AGV在目標點處的位姿(x1,y1,α1) 為
(3)
經過以上對單舵輪AGV運動學模型的建立與分析可知,通過運動學模型結合AGV的初始位姿(x0,y0,α0)可推算出任意時刻AGV的姿態(x1,y1,α1)。AGV的位姿信息可作為ROS里程計的數據來源,里程計是衡量機器人從初始位姿到終點位姿的一個標準,可以提供機器人往哪個方向行進了多少距離的信息。ROS里程計包含AGV的位姿信息和速度信息。位姿即AGV實時的位置(x,y)和轉角α;速度指的是AGV的直行速度vagv和轉向角速度ω。ROS里程計為地圖構建算法提供數據依據,并且在后期的自主定位導航算法中,為車體基座坐標系和地圖坐標系轉換搭建了一個橋梁。
3.2.1 ROS規劃端的功能模塊設計
ROS規劃端進行AGV的地圖構建、自主定位、路徑規劃、路徑跟蹤、自主導航方案設計,這五大功能的實現需要以AGV的URDF(unified robot description format)模型為前提。
URDF是ROS中機器人模型的統一描述格式[9]。為了給AGV的地圖構建、自主定位、路徑規劃、路徑跟蹤、自主導航提供TF坐標變換所需要的底盤各部件之間的坐標變換關系,所以需要創建AGV的URDF模型。根據AGV硬件架構設計其URDF模型如圖7所示。

紅色軸、綠色軸、藍色軸分別代表以車體中心為參考點車體坐標系的X軸、Y軸、Z軸圖7 AGV的URDF模型Fig.7 URDF model of AGV
3.2.2 AGV地圖構建方案
ROS中開源地圖構建算法使用最廣泛的是同步定位與建圖(simultaneous localization and mapping,SLAM),SLAM主要用于解決機器人在未知環境運動時的定位與地圖構建問題[10]。地圖構建方案采用Google的cartographer SLAM算法。該算法可以生成分辨率為0.05 m的二維柵格地圖,實現實時室內地圖構建。由于其采用強大的圖優化算法并且具備回環檢測,可以消除積累誤差,因此建圖效果比較穩定,成本較低的雷達也能跑出不錯的效果[11]。
3.2.3 AGV定位方案
定位方案采用AMCL自適應蒙特卡洛定位算法[12],該算法實現的是一種自主移動機器人在二維環境下基于概率的定位系統。它使用KLD方法采樣來更新粒子[13],機器人在已知的地圖環境中進行位姿跟蹤。基于ROS平臺的AMCL,充分利用了ROS開源平臺的優勢,有利于AGV自主定位導航的加速實現。
AMCL可以通過編碼器等傳感器獲取外部環境信息并傳遞給里程計,所以必須要存在一個TF變換樹來完成從獲取傳感器數據信息的基座坐標系到里程計坐標系的轉換[14]。TF變換示意圖如圖8所示。在AGV運動過程中,基于地圖的AMCL定位將/base_link基座坐標系利用航跡推演法轉換到/Odom里程計坐標系,并且通過里程漂移數據可以得到/Odom到/map的TF變換關系,從而完成/map_frame地圖坐標系和/base_link坐標系之間的轉換,進而可對AGV的位姿進行估算。

圖8 AMCL定位中的TF變換Fig.8 TF transformation in AMCL location
3.2.4 AGV路徑規劃方案
AGV路徑規劃方案采用ROS中的move_base路徑規劃方案,move_base包括全局路徑規劃器global planner、局部路徑規劃器local planner、行為執行器behavior recovery等模塊[15]。全局路徑規劃采用waypoint-global-planner算法[16],該算法可根據用戶對導航路徑走向的要求人為地在地圖上點擊多個路徑點,自動連接成全局導航路徑。該算法與A*尋路算法相比,算法復雜度較低,操作簡便,路徑更換簡單高效,路徑規劃的結果更貼近用戶的意愿。
3.2.5 AGV路徑跟蹤實現方案
路徑跟蹤的實現基于局部路徑規劃器。局部路徑規劃是經過全局路徑規劃器規劃出一條大致可行的路線之后,結合局部環境的障礙物情況動態地進行躲避障礙物方案的規劃。采用ROS中默認的Dynamic Windows Approach動態窗口法局部路徑規劃器[17]。路徑跟蹤的具體實現算法如下。
(1)將全局路徑規劃器輸出的全局路徑點通過TF坐標系變換關系轉換到Odom局部地圖坐標系下。
(2)根據局部地圖大小截取全局路徑,獲得局部路徑。
(3)在AGV的速度約束范圍內,采樣若干組線速度和角速度。
(4)依據AGV運動學模型與航跡推演原理,對各組采樣速度進行時長為sim_time的軌跡模擬。
(5)由(4)可得若干條模擬軌跡,依據評價函數尋找最優軌跡,從而得到對應的最優速度。評價函數包括終點處的角度偏差是否滿足閾值要求、AGV在模擬軌跡上與障礙物的最近距離條件、當前軌跡的速度大小是否滿足速度閾值要求,若以上三個條件都滿足,則尋得的軌跡便是最優軌跡,對應的速度為最佳采樣速度。
(6)將最佳采樣速度下發給AGV底盤,控制AGV沿最優模擬軌跡運動。
(7)判斷AGV是否到達全局路徑目標點,到達目標點則路徑跟蹤結束;未到達,則返回(2),截取下一段局部路徑,繼續執行路徑跟蹤步驟。
3.2.6 AGV自主導航功能實現方案
在AGV實現地圖構建、自主定位、路徑規劃、路徑跟蹤等子功能的基礎上,結合ROS端與底盤驅動的通信機制,即可實現AGV的自主定位導航。ROS與底盤驅動節點具體的通信過程如圖9所示。ROS將控制AGV運動的指令封裝為ROS消息Twist,該消息發送到/cmd_vel速度命令話題上,被底盤驅動控制節點監聽,底盤驅動節點實時訂閱/cmd_vel話題上的Twist消息,通過通信協議解析成驅動器能夠正確接收的數據和指令,從而控制AGV運動。

圖9 ROS與底盤驅動節點的通信機制Fig.9 Communication mechanism between ROS and chassis driver nodes
AGV的網絡人機交互端采用rosbridge通信機制。rosbridge是一個Web瀏覽器和ROS之間進行數據交互的中間件,能夠實現數據的轉發[18]。rosbridge允許使用HTML5 Web sockets進行ROS的消息傳送,由此便可以順利接入已有的基于ROS框架的AGV系統中。對于rosbridge的應用框架如圖10所示,AGV在ROS層面的功能應用通過rosbridge橋梁采用HTML5 Web sockets進行消息傳送,下位機接收到ROS的消息后進行相應的命令解析處理。

圖10 rosbridge的應用框架Fig.10 Framework of rosbridge’s application
借助rosbridge進行網絡交互平臺設計,與直接采用HTML、PHP、CSS等網絡編程語言進行Web 網頁設計相比,該方法充分利用了ROS平臺的優勢,降低了網頁界面的編程難度,提高了開發效率,縮短了AGV系統開發的周期。
為測試本文設計的AGV系統的導航性能,以實驗室為測試環境,進行各個功能模塊的測試。
4.1.1 Cartographer地圖構建
Cartographer地圖構建過程及結果如圖11所示,首先通過錄制里程計、激光掃描儀、慣性測量單元等傳感器的數據包rosbag,當AGV熟悉環境之后,傳感器數據就存放到ROS的bag包里。然后再通過回放傳感器數據作為Cartographer算法數據輸入,在算法各模塊被啟動后開始建圖。地圖構建完成后通過地圖服務程序包map_server將其保存為.pgm格式的柵格地圖。

圖11 Cartographer構建實驗室柵格地圖Fig.11 Laboratory grid map building based on Cartographer
4.1.2 路徑規劃
路徑規劃功能包將Cartographer構建的柵格地圖作為輸入數據,首先開啟ROS的可視化工具RVIZ,從中打開導航配置文件,然后在RVIZ中初始化AGV當前位置,鼠標在地圖上點擊多個路徑點如圖12(a)所示,在全局路徑規劃器的作用下,會將這多個路徑點連線成全局路徑,如圖12(b)中的綠色路徑軌跡線所示。

圖12 路徑規劃測試Fig.12 Path planning result
4.1.3 路徑跟蹤
根據路徑規劃器可得到一條全局路徑,局部路徑規劃器依據路徑跟蹤步驟,對全局路徑分段完成跟蹤。如圖13所示為AGV跟蹤一條完整全局路徑時截取的兩個位置點跟蹤效果。

圖13 AGV路徑跟蹤測試Fig.13 AGV path tracking test
4.1.4 自主導航
局部路徑規劃器結合全局路徑、地圖數據和傳感器實時反饋的障礙物層costmap信息,規劃出AGV在局部運動時所需的實時速度和角度,通過話題/cmd_vel發送給AGV運動底盤執行,從而實現動態的自主避障導航。AGV在室內運輸貨物自主移動效果如圖14所示。

圖14 自主導航效果圖Fig.14 Diagram of autonomous navigation result
4.1.5 網頁交互界面
通過在電腦、平板、手機等電子產品的瀏覽器中輸入工業控制計算機的網絡IP地址,即可訪問AGV網頁交互界面。網頁交互端的操作舉例如圖15所示。

圖15 網頁人機交互界面操作舉例Fig.15 Examples of human-computer interface operation in web page
系統導航性能測試結果如圖16所示。路徑對比圖表明,直線跟蹤誤差在可接受范圍內,路徑中四個轉彎處的軌跡跟蹤誤差稍大,這是由單舵輪自身存在的機械限位所致。通過對期望路徑和實際路徑等距采樣了170個路徑點,以對應兩個路徑點的歐氏距離作為路徑跟蹤誤差,計算得到的跟蹤誤差如圖17所示。轉彎處的最大誤差不超過0.04 m,該誤差在室內運輸的應用環境中是可以接受的。

圖16 路徑跟蹤對比圖Fig.16 Diagram of path tracing comparison

圖17 采樣點路徑跟蹤誤差值Fig.17 Error value of path tracking for sampling point
(1)設計的基于ROS的室內運輸AGV系統,通過在搭建的單舵輪AGV硬件平臺上進行地圖構建、自主定位、路徑規劃、路徑跟蹤、自主導航五大功能測試,結果表明該系統性能穩定,可控性、靈活性與磁條導引、激光反射板導引、光學導引等方式相比較好。路徑規劃完全依賴上位機的規劃算法,可根據用戶需求和環境情況在ROS端隨時進行修改,并不會受到固定路徑更改困難、替換代價高、環境限制等問題的影響。另外,友好便捷的網頁人機交互界面有利于用戶在云端與AGV進行遠程交互。研究表明,基于ROS的室內運輸AGV系統實現了自主導航功能,能夠有效地完成室內運輸任務,具有一定的現實意義和工程應用價值。
(2)選取單舵輪輪系結構作為系統測試平臺,如果采用其他輪系結構,本文所設計的AGV系統仍然適用,只需要依據所選輪系結構修改運動學模型部分即可。
(3)為了不斷地滿足現代智能化工廠的需求,AGV的導引技術發展趨勢必然是恰當融合多種導引技術的優勢,共同提高導引精度和系統可靠性。