黃畫恒 ,李健 方士聞 徐一帆 馮晨曦 鄧茹心 薛萬利
摘要:該文以機器人操作系統(tǒng)(ROS) 作為整體框架展開設(shè)計一輛AGV智能搬運車(Automated Guided Vehicle) ,首先通過單片機編程實現(xiàn)搬運車的運動控制及硬件數(shù)據(jù)的傳輸,其次在jetson nano運算平臺上通過集成傳統(tǒng)視覺算法、同步定位與建圖算法(SLAM) 及A*算法實現(xiàn)車輛對周圍環(huán)境的感知和運輸路線的路徑規(guī)劃,最后通過Visual Studio開發(fā)搬運車控制系統(tǒng)軟件,在PC端上通過軟件實現(xiàn)操縱員遠程調(diào)度管理搬運車。該智能搬運車設(shè)計方案在以“智能物流”為主題的貨物搬運挑戰(zhàn)賽中完成了研究目標所設(shè)定的任務(wù),證實了方案的可行性。
關(guān)鍵詞: ROS;AGV;SLAM;路徑規(guī)劃;智慧物流
中圖分類號:TP18? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2023)01-0010-03
1 研究現(xiàn)狀
20世紀50年代,第一臺AGV智能搬運車(Automated Guided Vehicle,裝備有自動導(dǎo)航裝置,能夠沿規(guī)定的導(dǎo)航路徑行駛的運輸車)是由美國Barrett電子公司研發(fā)的[1],它的原理是在倉庫中規(guī)劃布置路線實現(xiàn)貨物運輸。到了20世紀60年代,AGV智能搬運車技術(shù)主要在歐洲得以推廣和發(fā)展,AGV也首次引入了電磁感應(yīng)技術(shù),但是仍無法解決AGV車行走范圍和軌跡受限的問題,并且維護成本高[2]。隨著技術(shù)的不斷發(fā)展,AGV搬運車開始裝備激光雷達,通過激光雷達進行定位[3],實現(xiàn)了無軌道運輸功能。
技術(shù)的發(fā)展使AGV智能搬運車的研發(fā)和應(yīng)用得到進一步的提升。隨著慣性技術(shù)的發(fā)展,AGV搬運車上開始安裝慣導(dǎo)元件和編碼器,通過硬件采集偏差信號,進行積分運算得到搬運車行駛的速度和角度信息,確定出搬運車的位置和方向[4],使得AGV搬運車的定位更為準確。但長時間使用編碼器會產(chǎn)生累計誤差造成定位精度下降。為解決精度的問題,隨著機器學習等新技術(shù)發(fā)展,通過視覺定位導(dǎo)航的方案也被提出使用[5]。由趨勢可見,采用多傳感器融合的方法是未來AGV搬運車發(fā)展的趨勢,發(fā)揮各傳感器的長處,實現(xiàn)更精確的定位[6]。隨著多傳感融合導(dǎo)航技術(shù)的快速發(fā)展及復(fù)雜化,誕生了機器人操作系統(tǒng)ROS,ROS的應(yīng)用使搬運車開發(fā)更為便捷[7]。隨著ROS版本更新,使得搬運車導(dǎo)航系統(tǒng)的時效性得到增強[8],較好地解決包括與下位機通信在內(nèi)的各系統(tǒng)間結(jié)合的問題,極大簡化平臺下的復(fù)雜任務(wù)創(chuàng)建與穩(wěn)定行為控制,在一定程度上保障AGV車在貨物搬運過程中的平穩(wěn)有序。
2 研究目標
本研究的最終目標是通過軟硬件層次的緊密配合,完成一套可以通過上位機遠程調(diào)度并可以自行感知交通信息的車輛運輸系統(tǒng),用于貨物運輸領(lǐng)域(如圖1所示)。
該研究的AGV智能搬運車系統(tǒng)的實現(xiàn)是以jeston nano為運算平臺、STM32單片機為運動控制平臺,配備了線性激光雷達、視覺攝像頭、imu慣導(dǎo)元件、編碼器等傳感器。該智能搬運車系統(tǒng)以ROS作為基礎(chǔ)框架,分為三個層次:運動控制層、ROS傳輸層、ROS決策層。在運動控制層中,通過底層單片機設(shè)計,實現(xiàn)無人智能搬運車的運動控制。在ROS傳輸層中,實現(xiàn)運算平臺與硬件、PC端應(yīng)用程序的數(shù)據(jù)傳輸,提供ROS決策層執(zhí)行所需數(shù)據(jù)。在ROS決策層中整合主流視覺算法完成AGV的視覺感知。
最終操縱員可以通過PC端的調(diào)度軟件,發(fā)送目標位置至搬運車,AGV智能搬運車能自主運行至目標位置。在車輛運行過程中實現(xiàn)交通信息識別、主動避障等環(huán)境感知功能。
3 主要研究內(nèi)容
3.1 運動控制層
運動控制層主要負責控制車輛的行為(例如前行、轉(zhuǎn)向、駐車等),并通過串口發(fā)送車體信息至運算平臺上的ROS傳輸層。
搬運車采用前輪轉(zhuǎn)向、后輪直流減速有刷電機差速控制的阿克曼運動方式,在運動控制層中采用STM32單片機完成底盤的運動控制。用A4950電機驅(qū)動模塊驅(qū)動電機,采用脈沖寬度調(diào)制控制,通過改變占空比,進而得到不同的電機平均速度,從而達到調(diào)速的目。通過差速算法控制后輪轉(zhuǎn)向電機和前輪舵機,實現(xiàn)車輛前行、轉(zhuǎn)向、駐車等運動功能。
Stm32作為驅(qū)動板,用USB-mini接口與運算平臺進行串口通信,接收其發(fā)出的控制指令,并從IMU和電機編碼器上獲取到的信息反饋給運算平臺。
3.2 ROS傳輸層
ROS傳輸層主要功能為數(shù)據(jù)傳輸和處理,可分為四部分,分別是ROS系統(tǒng)和底層單片機控制的數(shù)據(jù)通信,激光雷達、攝像頭等傳感器與ROS系統(tǒng)的數(shù)據(jù)通信,遠程調(diào)度軟件與ROS系統(tǒng)的數(shù)據(jù)通信以及ROS系統(tǒng)內(nèi)部的數(shù)據(jù)通信。
ROS和單片機的通信主要通過串口通信實現(xiàn),ROS集成的串口模塊收集從底盤傳輸?shù)淖笥逸唽崟r速度值及imu模塊測量的數(shù)據(jù),用航跡推演法將左右輪速度轉(zhuǎn)化為機器人的x軸方向速度和機器人的旋轉(zhuǎn)速度,然后發(fā)布/odom主題,好讓ROS的相應(yīng)package收到這個消息,進行機器人位置的估計。
傳感器與ROS通信部分,使用USB數(shù)據(jù)線與工控機相連,通過在ROS系統(tǒng)中建立 ydlidar 雷達串口軟連接接收激光雷達上傳的數(shù)據(jù)。
遠程調(diào)度軟件與ROS系統(tǒng)的通信主要在局域網(wǎng)內(nèi),通過UDP/IP進行軟件與ROS系統(tǒng)之間的數(shù)據(jù)傳輸,將目的地位置數(shù)據(jù)上傳至ROS系統(tǒng)中,提供路徑規(guī)劃所需數(shù)據(jù)。
視覺部分的通信主要為ROS內(nèi)部的通信。當攝像頭識別紅綠燈等信息后,傳輸對應(yīng)的字符串,對應(yīng)搬運車的前進或停止控制指令。
ROS系統(tǒng)將各傳感器傳來的數(shù)據(jù)交給決策層,為執(zhí)行決策層提供數(shù)據(jù),在決策層中進行數(shù)據(jù)融合處理,轉(zhuǎn)化為搬運車下一刻行駛的期望速度與轉(zhuǎn)向角度,然后通過串口傳給底層單片機,完成車輛的運動控制。
3.3 ROS決策層
ROS決策層主要功能為建立并執(zhí)行ROS功能包,決策層的執(zhí)行依賴于傳輸層傳輸?shù)臄?shù)據(jù)。以下為決策層所實現(xiàn)各部分的功能。
3.3.1 激光SLAM環(huán)境感知
SLAM(Simultaneous Localization And Mapping) ,即時定位與地圖構(gòu)建,用于車輛在環(huán)境中的自身定位及記錄環(huán)境中特征的位置。
當搬運車需要實現(xiàn)導(dǎo)航時,可以參考一張全局性質(zhì)的地圖,然后根據(jù)地圖來確定自身的位置、目的地位置,規(guī)劃一條大致的路線。通過SLAM可以建出一張全局性質(zhì)的地圖。ROS中SLAM的實現(xiàn)方案較多,在該項目中的搬運車采用了gmapping算法進行建圖。通過訂閱傳輸層中用于雷達、底盤與里程計之間的坐標變換消息以及雷達消息,執(zhí)行g(shù)mapping算法功能包,進而在ROS傳輸層中發(fā)布地圖數(shù)據(jù)柵格數(shù)據(jù)。
rviz是ROS系統(tǒng)中三維可視化平臺,能夠?qū)崿F(xiàn)ROS傳輸信息的圖形化顯示,如圖2。在gmapping發(fā)布柵格數(shù)據(jù)后,操縱員可通過rviz訂閱該數(shù)據(jù),從而實現(xiàn)SLAM環(huán)境感知的實時可視化監(jiān)測。
3.3.2 導(dǎo)航任務(wù)
導(dǎo)航任務(wù)基于SLAM建出的圖,使車輛以最短或者最快路徑到達目的地。它的實現(xiàn)涉及全局地圖、自身定位、路徑規(guī)劃、運動控制、環(huán)境感知五點內(nèi)容。導(dǎo)航任務(wù)整體框架如圖3所示。
全局地圖是指通過SLAM建出的地圖。自身定位就是推算搬運車在全局地圖里的位置,SLAM中也包含定位算法實現(xiàn)。搬運車按照規(guī)劃的路線運動,通過定位判斷搬運車的實際運動軌跡是否符合預(yù)期。在導(dǎo)航任務(wù)中采用ROS系統(tǒng)的amcl功能包,實現(xiàn)導(dǎo)航過
程中搬運車的定位。路徑規(guī)劃為自主導(dǎo)航的核心功能。方案采用ROS的導(dǎo)航功能包集navigation中提供的 move_base 功能包。在SLAM中建立好的地圖中指定導(dǎo)航的目標位置goal和方向后,move_base包根據(jù)搬運車傳輸層的傳感器信息,推算出的odometry信息,作出路徑規(guī)劃,輸出前進速度和轉(zhuǎn)向速度至運動控制層,控制機器人到達指定的目標位置。并且在搬運車運動過程中,連續(xù)反饋車體的自身姿態(tài)與目標點狀態(tài)信息。
3.3.3 面向交通信息的計算機視覺感知
在車輛運行過程中通過圖像處理識別紅綠燈、車道線的交通信息,并將識別信息發(fā)至傳輸層。
在ROS框架中創(chuàng)建基于opencv開發(fā)的視覺感知功能包,當攝像頭采集圖像經(jīng)過數(shù)據(jù)處理后,采用平臺提供的api接口,檢測出交通燈信息及車道線信息。
在檢測交通燈信息部分,首先需要通過二維碼定位交通燈區(qū)域,劃定交通燈ROI,色域轉(zhuǎn)換后通過閾值篩選,識別高亮的區(qū)域,其次通過面積篩選和開閉運算去除干擾點,得到亮燈部分的輪廓。最后通過輪廓中心點的相對ROI的位置判斷交通燈的顏色,如圖4所示。
在檢測車道線部分,首先通過對攝像機標定畸變矯正并進行透視變換得到車道線的鳥瞰圖,通過sobel算子對圖像邊緣特征進行提取,對邊緣特征的角點進行提取,最后對角點進行膨脹操作還原車道線大體形狀從而實現(xiàn)對車道線的識別,如圖5所示。
視覺識別后的結(jié)果將通過ROS系統(tǒng)傳送至傳輸層,轉(zhuǎn)換為車輛行駛速度及偏向角度,通過串口通信發(fā)至底層單片機,完成車體遇紅黃燈停止前行,綠燈前行,在車道線范圍內(nèi)行駛等感知反饋功能。
3.4 遠程調(diào)度層
遠程調(diào)度層主要為操作員提供便捷的方式遠程監(jiān)控車輛的運轉(zhuǎn)狀態(tài),便于車輛的調(diào)度與管理。
遠程調(diào)度層建立在上位機的Windows系統(tǒng),使用Visual Studio作為開發(fā)工具,基于MFC庫,開發(fā)應(yīng)用程序界面。通過UDP/IP協(xié)議socket編程完成搬運車傳輸層與應(yīng)用程序之間的數(shù)據(jù)通信、指令通信。操作員可從應(yīng)用程序連接搬運車,獲取搬運車的實時信息,并且通過應(yīng)用程序發(fā)送目標位置goal指引車輛到達指定地點,實現(xiàn)遠程與搬運車的交互功能,遠程調(diào)度應(yīng)用程序界面如圖6所示。
4 結(jié)束語
該文構(gòu)建一輛基于ROS和主動視覺感知的智能搬運車,以ROS作為基礎(chǔ)框架,采用多傳感器融合的方法,整合主流視覺算法完成AGV的視覺感知,并通過上位機遠程調(diào)度、底層單片機控制,實現(xiàn)無人智能搬運車的自主運行。該設(shè)計研發(fā)將應(yīng)用于智慧物流等產(chǎn)業(yè)發(fā)展方向,使貨物搬運行業(yè)向“現(xiàn)代化、智慧化、綠色化”的發(fā)展方向持續(xù)邁進。
參考文獻:
[1] 徐慶.基于嵌入式控制系統(tǒng)的AGV結(jié)構(gòu)設(shè)計及控制方法研究[D].南京:南京航空航天大學,2018.
[2] 張世清.自動化工廠的多AGV系統(tǒng)路徑規(guī)劃及調(diào)度機制研究[D].西安:西京學院,2021.
[3] 暴海寧,宋科,黎原,等.激光導(dǎo)引AGV車載控制系統(tǒng)結(jié)構(gòu)及其實現(xiàn)[J].起重運輸機械,2016(5):71-74.
[4] 胡海東,趙清杰.機器人的慣性/視覺組合定位方法[C]//2009年中國智能自動化會議論文集(第七分冊)[南京理工大學學報(增刊)].南京,2009:248-252.
[5] 儲江偉,郭克友,王榮本,李斌,馮炎.自動導(dǎo)向車導(dǎo)向技術(shù)分析與評價[J].起重運輸機械,2002(11):1-5.
[6] 張書亮.基于多傳感器融合的室內(nèi)移動機器人定位與導(dǎo)航研究[D].北京:中國科學院大學(中國科學院長春光學精密機械與物理研究所),2021.
[7] 朱建軍,王明園,張博文.基于ROS的輪式機器人建模方法與仿真研究[J].吉林化工學院學報,2021,38(3):61-65.
[8] Macenski S,Martín F,White R,et al.The marathon 2:a navigation system[C]// IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS).Las Vegas,NV,USA.IEEE,2020:2718-27
【通聯(lián)編輯:代影】