李 鑫,王樹(shù)強(qiáng),李 猛,吳 磊,張?zhí)煲?/p>
(沈陽(yáng)化工大學(xué)機(jī)械與動(dòng)力工程學(xué)院,沈陽(yáng) 110142)
AGV是現(xiàn)代自動(dòng)化領(lǐng)域出現(xiàn)的一項(xiàng)高新技術(shù)。隨著物流倉(cāng)儲(chǔ)、智能汽車(chē)等行業(yè)的快速發(fā)展,AGV 技術(shù)便依托此類(lèi)行業(yè)快速發(fā)展,此技術(shù)的應(yīng)用大大提高了物流運(yùn)轉(zhuǎn)的效率。而目前AGV車(chē)的行走路徑大多依賴(lài)有預(yù)設(shè)的參照介質(zhì)進(jìn)行運(yùn)動(dòng),智能化程度較低,無(wú)法應(yīng)用在某些復(fù)雜的場(chǎng)景中,例如在具有可移動(dòng)障礙物的場(chǎng)景中,就無(wú)法有序工作。
相對(duì)于有預(yù)設(shè)參照介質(zhì)的導(dǎo)引技術(shù)的廣泛應(yīng)用,無(wú)預(yù)設(shè)參照介質(zhì)的SLAM 導(dǎo)引技術(shù)目前的市場(chǎng)規(guī)模還遠(yuǎn)遠(yuǎn)無(wú)法與之相比。應(yīng)用SLAM導(dǎo)引技術(shù)的AGV不但可以實(shí)現(xiàn)自主避障,還可以實(shí)現(xiàn)自主規(guī)劃路徑。按照不同的傳感器來(lái)劃分,SLAM 技術(shù)目前可分為兩種,一種是基于激光雷達(dá)的激光SLAM 技術(shù),另一種是基于視覺(jué)傳感器的視覺(jué)SLAM 技術(shù)[1]。激光SLAM 技術(shù)主要用于室內(nèi),視覺(jué)SLAM技術(shù)既可以用于室內(nèi),也可以用于室外,應(yīng)用場(chǎng)景更為豐富,但在一些暗處或者一些無(wú)紋理區(qū)域是無(wú)法進(jìn)行工作的。在精度方面,激光SLAM 技術(shù)構(gòu)建的地圖精度在某種程度要高于視覺(jué)SLAM,且可以直接用于定位導(dǎo)航。
通過(guò)對(duì)現(xiàn)有的AGV智能車(chē)進(jìn)行硬件與軟件方面的優(yōu)化,設(shè)計(jì)出了一種以激光SLAM 技術(shù)為主,視覺(jué)識(shí)別技術(shù)為輔的搬運(yùn)智能車(chē)。依托ROS 機(jī)器人操作系統(tǒng),通過(guò)多種硬件的相互配合,可使智能車(chē)完成SLAM 建圖、自主路徑規(guī)劃、導(dǎo)航避障與物體識(shí)別等功能。
圖1 智能車(chē)實(shí)物
(1)感知系統(tǒng)。智能車(chē)必須能夠感知周?chē)h(huán)境,包括通過(guò)傳感器獲取的障礙物、路標(biāo)、道路標(biāo)志等信息。這些傳感器可以包括激光雷達(dá)、攝像頭、慣性測(cè)量單元(IMU)等。
(2)運(yùn)動(dòng)控制系統(tǒng)?;诟兄到y(tǒng)獲取的環(huán)境信息,智能車(chē)必須能夠做出決策并控制自身的運(yùn)動(dòng)。例如,在自動(dòng)駕駛模式下,車(chē)輛需要確定車(chē)速、轉(zhuǎn)向、剎車(chē)等控制指令。
(3)建圖與定位。SLAM 算法用于將傳感器獲取的環(huán)境信息融合到一個(gè)全局地圖中,同時(shí)利用該地圖進(jìn)行定位。在智能車(chē)中,建圖與定位可以幫助車(chē)輛精確定位自身位置并規(guī)劃路徑[2]。
(4)視覺(jué)識(shí)別。視覺(jué)識(shí)別技術(shù)可以幫助智能車(chē)識(shí)別特定物品、交通標(biāo)志、行人、車(chē)輛等物體,并根據(jù)這些信息做出相應(yīng)的決策,如避讓行人等[3]。
圖2 程序流程
綜上所述,該智能車(chē)需要通過(guò)感知系統(tǒng)獲取環(huán)境信息,運(yùn)動(dòng)控制系統(tǒng)進(jìn)行決策和控制,SLAM 算法進(jìn)行建圖與定位,視覺(jué)識(shí)別技術(shù)進(jìn)行目標(biāo)識(shí)別和判斷。這些功能的協(xié)同工作,使智能車(chē)能夠?qū)崿F(xiàn)自主駕駛,并在行駛過(guò)程中能夠感知周?chē)h(huán)境并做出相應(yīng)的決策和控制。
根據(jù)物品的抬升和下降的任務(wù),設(shè)計(jì)出如圖3 所示的機(jī)械臂結(jié)構(gòu)。通過(guò)減速箱帶動(dòng)轉(zhuǎn)軸進(jìn)行旋轉(zhuǎn)使得前臂向前彎曲或向后伸直,后臂在前臂的帶動(dòng)下進(jìn)行前曲運(yùn)動(dòng)。
圖3 機(jī)械臂結(jié)構(gòu)示意圖
歐拉-伯努利梁理論公式用于計(jì)算梁在受力時(shí)的彎曲變形和應(yīng)力,即
式中:σ為梁上的彎曲應(yīng)力;M 為梁上的彎矩;y 為梁上某點(diǎn)到中性軸的距離;I為梁的截面慣性矩[4]。
應(yīng)變能密度公式為:
式中:u為應(yīng)變能密度;σ為應(yīng)力;ε為應(yīng)變。
彈性模量公式用于計(jì)算材料在彈性階段的剛度,即
式中:E為彈性模量;σ為應(yīng)力;ε為應(yīng)變。
由于載荷會(huì)在由機(jī)械臂構(gòu)建的框架內(nèi)移動(dòng),最后計(jì)算得到機(jī)械臂承受的最大載荷為6 kg[5]。
機(jī)械臂的驅(qū)動(dòng)力由馬達(dá)和減速箱組成,減速箱為三級(jí)減速,由3 個(gè)齒輪相互嚙合而成。馬達(dá)主體固定于底板下方,三級(jí)減速箱位于底板上方。此機(jī)構(gòu)可使前臂以較慢的速度進(jìn)行前屈,完成下降動(dòng)作。如圖4~5 所示。
圖4 減速箱結(jié)構(gòu)
圖5 機(jī)械抓手三維圖
該物體抓取系統(tǒng)由兩個(gè)舵機(jī)、螺旋裝置和一個(gè)金屬抓手組成,當(dāng)識(shí)別到相應(yīng)物品以后,通過(guò)機(jī)械臂的前屈使得金屬抓手到達(dá)相應(yīng)高度,然后通過(guò)螺旋裝置來(lái)前后移動(dòng)金屬抓手的位置,上方舵機(jī)調(diào)整抓手的方向,下方舵機(jī)通過(guò)嚙合機(jī)構(gòu)控制抓手的開(kāi)合,從而對(duì)相應(yīng)物體進(jìn)行抓取[6]。
主控采用的是英偉達(dá)的Jetson Nano。Jetson Nano 是一款基于NVIDIA Maxwell架構(gòu)的低功耗人工智能計(jì)算平臺(tái)。它的作用是用于接收深度相機(jī)拍攝的圖像和視頻以及激光雷達(dá)的信號(hào),并對(duì)其進(jìn)行分析。在內(nèi)存和存儲(chǔ)方面,它本身配備了4 GB LPDDR4 RAM和16 GB eMMC存儲(chǔ)器,由于需要運(yùn)行Ubuntu系統(tǒng)來(lái)控制智能車(chē),此系統(tǒng)會(huì)占用較大內(nèi)存空間,為滿(mǎn)足內(nèi)存需求,于是添加了64 GB SD卡來(lái)擴(kuò)展存儲(chǔ)空間,將鏡像系統(tǒng)燒錄在SD 卡中,同樣可以啟動(dòng)開(kāi)機(jī)大程序。在網(wǎng)絡(luò)和連接方面,由于該主控支持千兆以太網(wǎng)和WiFi,進(jìn)行系統(tǒng)調(diào)試時(shí)可直接將主板與局域網(wǎng)路由器通過(guò)網(wǎng)線(xiàn)連接或通過(guò)其自身構(gòu)建的局域網(wǎng)與終端連接。深度相機(jī)、激光雷擴(kuò)展板等其他硬件可通過(guò)主板上的USB 3.0、USB 2.0 等接口與主控連接[7]。如圖6 所示。
圖6 主控接口示意圖
該控制板是此智能車(chē)的驅(qū)動(dòng)控制器,也是一款STM32 核心開(kāi)發(fā)板。板載集成了STM32 核心控制單元、MPU9250 九軸姿態(tài)傳感器等重要配置,同時(shí)提供4 路編碼電機(jī)、4 路PWM舵機(jī)、串行總線(xiàn)舵機(jī)等外設(shè)接口。它可以支持Jetson Nano主控通信和供電。該控制板的特點(diǎn)為不需要額外編寫(xiě)外設(shè)的驅(qū)動(dòng)程序,只需要通過(guò)串口發(fā)送對(duì)應(yīng)控制命令就可以快速控制智能車(chē)上的外設(shè),既簡(jiǎn)單又高效[8]。如圖7 所示。
圖7 微處理器模塊電路
由于該智能車(chē)需要實(shí)現(xiàn)建圖、自動(dòng)避障以及路徑規(guī)劃等功能,于是在改智能車(chē)前端安裝了一個(gè)激光雷達(dá),型號(hào)為思嵐A1 激光雷達(dá),該雷達(dá)采用的測(cè)量方式為三角測(cè)距法,最小測(cè)量半徑為0.15 m,最大測(cè)量半徑可以達(dá)到12 m,并且采樣幀率可以達(dá)到8 kHz,借助ROS 操作系統(tǒng),可以完成SLAM 建圖、自動(dòng)避障、路徑自主規(guī)劃等功能。
當(dāng)光路系統(tǒng)中,激光入射光束與被測(cè)物體表面法線(xiàn)夾角小于90°時(shí),該入射方式即為斜射式。
如圖8 所示,激光發(fā)射的激光以與物體表面法線(xiàn)成一定角度入射到物體表面,反射(散射)光在B 處通過(guò)透鏡會(huì)聚成像,最后由感光單元收集。在每個(gè)測(cè)距過(guò)程中,激光雷達(dá)都會(huì)發(fā)射調(diào)制的紅外激光信號(hào)。激光信號(hào)照射目標(biāo)物體后產(chǎn)生的反射將被激光雷達(dá)的視覺(jué)采集系統(tǒng)接收,然后通過(guò)嵌入激光雷達(dá)中的DSP 處理器進(jìn)行實(shí)時(shí)計(jì)算,隨后將從通信接口輸出被照射目標(biāo)物體與激光雷達(dá)之間的距離值和當(dāng)前角度信息。在電機(jī)機(jī)構(gòu)的驅(qū)動(dòng)下,激光雷達(dá)的測(cè)距核心將順時(shí)針旋轉(zhuǎn),以實(shí)現(xiàn)對(duì)周?chē)h(huán)境的360°掃描測(cè)距檢測(cè)[9]。
圖8 雷達(dá)工作原理示意圖
為了識(shí)別并對(duì)物體應(yīng)用KCF追蹤技術(shù)進(jìn)行實(shí)時(shí)追蹤,該智能車(chē)配備了一臺(tái)深度相機(jī),同樣位于智能車(chē)的前端。深度相機(jī)的型號(hào)為Astra Pro,其深度范圍0.6 ~8 m,精度為1 m,深度處理芯片為MX400,基本可以滿(mǎn)足對(duì)物體的追蹤功能。并且,它還擁有ORB- SLAM2 建圖、Rtabmap三維建圖、Yolov4-tiny 物體識(shí)別功能,同時(shí),還可以支持自動(dòng)駕駛功能。
智能車(chē)的全方位運(yùn)動(dòng)依靠4 個(gè)減速電機(jī)與麥克納姆輪,通過(guò)編碼電機(jī)轉(zhuǎn)速的差異,配合麥克納姆輪實(shí)現(xiàn)全方位移動(dòng)[10]。同時(shí),為前輪增添懸掛系統(tǒng),可以保證4個(gè)輪子位于同一平面,電機(jī)采用的是520 編碼電機(jī)。圖9為電機(jī)驅(qū)動(dòng)電路。
圖9 電機(jī)驅(qū)動(dòng)電路
主控的操作系統(tǒng)采用的是Ubuntu操作系統(tǒng)。該智能車(chē)的系統(tǒng)配備了多個(gè)功能包,有Open CV及其相關(guān)功能,例如物體追蹤、顏色追蹤、物體識(shí)別(需事先導(dǎo)入訓(xùn)練模型)、激光雷達(dá)SLAM建圖以及導(dǎo)航避障等功能[11]。
通過(guò)智能車(chē)內(nèi)置的M.2無(wú)線(xiàn)網(wǎng)卡來(lái)創(chuàng)造出一個(gè)局域網(wǎng),終端連接該網(wǎng)絡(luò)以后可以通過(guò)VNC進(jìn)行遠(yuǎn)程控制該智能車(chē)。為了減輕智能車(chē)主板計(jì)算量,在相應(yīng)終端配置虛擬機(jī)。所用平臺(tái)為Workstation 16Pro,鏡像系統(tǒng)為Ubuntu18.04,根據(jù)智能車(chē)的IP地址來(lái)配置虛擬機(jī),即可實(shí)現(xiàn)多機(jī)通信[12]。
為了實(shí)現(xiàn)智能車(chē)對(duì)物體的實(shí)時(shí)追蹤功能,需要為智能車(chē)安裝相應(yīng)的功能包。其中常見(jiàn)物體追蹤算法有BOOSTING、MIL、KCF 和CSRT。雖然BOOSTING 算法已經(jīng)發(fā)展超過(guò)了10年,技術(shù)較為成熟,但由于其速度較慢、精度較差,所以不適合用在智能車(chē)這種需要及時(shí)作出反應(yīng)的設(shè)備上。MIL 算法缺點(diǎn)和BOOSTING 一樣,同樣也是速度較慢。KCF 和CSRT 算法相比,雖然在精度上不如后者,但其速度較快,應(yīng)用于智能車(chē)上,以便于應(yīng)對(duì)各種復(fù)雜情況,并及時(shí)做出反應(yīng)。通過(guò)對(duì)比幾種算法,最終選擇采用KCF物體追蹤算法[13]。
將帶有KCF算法的功能包下載到主控系統(tǒng)當(dāng)中,即可通過(guò)終端輸入代碼,直接開(kāi)啟KCF功能,此功能的開(kāi)啟需要深度相機(jī)進(jìn)行硬件支持。在確定物體實(shí)際坐標(biāo)以后,通過(guò)機(jī)械臂的前屈以及螺旋裝置,將金屬抓手送到物體正上方,通過(guò)Open CV來(lái)確定物體擺放的方向,然后通過(guò)舵機(jī)控制金屬抓手的方向以及開(kāi)合,完成對(duì)物體的抓取工作[14]。物體識(shí)別效果如圖10 所示。
圖10 物體識(shí)別效果
Gmapping算法是一種常見(jiàn)的基于過(guò)濾SLAM 框架的開(kāi)源SLAM 算法。它的優(yōu)點(diǎn)是可以實(shí)時(shí)繪制室內(nèi)地圖,在構(gòu)建小場(chǎng)景地圖時(shí)所需的計(jì)算量小且精度高。缺點(diǎn)是所需的粒子數(shù)隨著場(chǎng)景的增長(zhǎng)而增加。由于每個(gè)粒子都攜帶一幅地圖,因此構(gòu)建大型地圖所需的內(nèi)存和計(jì)算量將大大增加,并且沒(méi)有環(huán)回檢測(cè),因此,在回環(huán)閉合期間可能會(huì)發(fā)生地圖錯(cuò)位。雖然粒子數(shù)的增加可以使地圖最終閉合,但它不適合在大型場(chǎng)景中應(yīng)用,因?yàn)檫@會(huì)大大增加計(jì)算量和內(nèi)存[15]。
同樣,Gmapping算法在應(yīng)用過(guò)程中也是通過(guò)各個(gè)節(jié)點(diǎn)進(jìn)行話(huà)題消息的傳輸,如圖11 所示。
該功能以激光雷達(dá)為主要硬件基礎(chǔ),進(jìn)行障礙物檢測(cè),并進(jìn)行導(dǎo)航。首先需要開(kāi)啟Gmapping建圖功能來(lái)為場(chǎng)景繪制二維平面圖,隨后在虛擬機(jī)中開(kāi)啟ROS 系統(tǒng)內(nèi)置的rviz程序。通過(guò)rviz 工具可以實(shí)現(xiàn)單點(diǎn)導(dǎo)航以及多點(diǎn)導(dǎo)航等功能[16]。
(1)單點(diǎn)導(dǎo)航。使用rviz工具的2D Pose Estimate設(shè)置初始位姿,直到仿真中的小車(chē)位置,與實(shí)際小車(chē)的位置一致。然后點(diǎn)擊rviz工具的2D Nav Goal,選擇地圖上沒(méi)有障礙物的地方為目標(biāo)點(diǎn),松開(kāi)鼠標(biāo)即開(kāi)始導(dǎo)航,只能選擇一個(gè)目標(biāo)點(diǎn),到達(dá)即停止。
(2)多點(diǎn)導(dǎo)航。和單點(diǎn)導(dǎo)航第一步相同,先設(shè)置小車(chē)的初始位姿。然后點(diǎn)擊rviz工具的Publish Point,隨后在地圖上沒(méi)有障礙物的地方選擇目標(biāo)點(diǎn),松開(kāi)鼠標(biāo)即開(kāi)始導(dǎo)航,可再次點(diǎn)擊Publish Point,然后選點(diǎn),機(jī)器人就會(huì)點(diǎn)與點(diǎn)之間巡航[17]。導(dǎo)航避障功能效果如圖12 所示。
圖12 導(dǎo)航避障功能效果
在足夠?qū)挸ǖ氖覂?nèi),通過(guò)擺放雜物來(lái)模擬復(fù)雜的場(chǎng)景,測(cè)試其自動(dòng)路徑規(guī)劃、導(dǎo)航避障與物體追蹤功能。測(cè)試過(guò)程中不斷減小兩個(gè)障礙物之間的距離,同時(shí)在智能車(chē)運(yùn)動(dòng)過(guò)程中加入移動(dòng)障礙物,測(cè)試路徑規(guī)劃功能。如表1 所示,通過(guò)測(cè)試可知,隨著通道寬度不斷增加,系統(tǒng)路徑自動(dòng)規(guī)劃時(shí)間也在加長(zhǎng),當(dāng)寬度小于約0.6 m時(shí),智能車(chē)無(wú)法通過(guò)通道,這與激光雷達(dá)的參數(shù)有關(guān),隨著激光雷達(dá)精度的提高,智能車(chē)可以在更狹窄的通道中進(jìn)行自主路徑規(guī)劃。如果采用更高算力的主控,也可以縮短行進(jìn)時(shí)間。
表1 測(cè)試結(jié)果
測(cè)試發(fā)現(xiàn),在物體識(shí)別與抓取方面,該智能車(chē)有著良好的表現(xiàn),在多次測(cè)驗(yàn)中,都能夠正確地識(shí)別并抓取物品。實(shí)地測(cè)試效果如圖13 所示。
圖13 實(shí)地測(cè)試效果
本文介紹了一種基于Jetson Nano 的視覺(jué)識(shí)別搬運(yùn)智能車(chē),在原有的AGV基礎(chǔ)上,舍棄了巡線(xiàn)等功能,為其加入了SLAM建圖以及視覺(jué)識(shí)別等功能,通過(guò)SLAM 建圖功能,使得智能車(chē)不必受路徑上的參照標(biāo)識(shí)物所限制,可以縮短智能車(chē)的現(xiàn)場(chǎng)安裝調(diào)試時(shí)間[15]。在硬件結(jié)構(gòu)上,設(shè)計(jì)了一套機(jī)械臂系統(tǒng),該機(jī)械臂可進(jìn)行前屈運(yùn)動(dòng),可抓取小車(chē)前方0.5 m 內(nèi)的物體。在軟件方面,通過(guò)ROS機(jī)器人操作系統(tǒng),可實(shí)現(xiàn)KCF 物體追蹤、Gmapping建圖等算法,以及自動(dòng)路徑規(guī)劃等功能,可使智能車(chē)的應(yīng)用領(lǐng)域更加靈活多變。通過(guò)實(shí)地測(cè)試,該智能車(chē)能適應(yīng)多種復(fù)雜環(huán)境,同時(shí)初步掌握了該智能車(chē)正常工作的各項(xiàng)參數(shù)。