林立雨 陳泓池 肖穎旗 王 欣
大連理工大學(xué) 大連 116024
起重機(jī)不僅在核電、風(fēng)電、石油化工的大型吊裝中被使用,也在物流倉儲的中小型搬運(yùn)中發(fā)揮著重要作用。在當(dāng)前自動化、智能化發(fā)展的時(shí)代背景下,市場對起重機(jī)的智能化需求在逐步提升。眾多學(xué)者與企業(yè)不斷地致力于起重機(jī)的自動化與智能化的研究與實(shí)施,目前較容易實(shí)現(xiàn)及需求較大的多是小型物料搬運(yùn)起重機(jī)。林健全等[1]設(shè)計(jì)了一款小車,使用紅外傳感器和激光模塊進(jìn)行循跡和定位,通過Openmv攝像頭來讀取信息和識別物料能夠完成小型貨物的識別與搬運(yùn)任務(wù)。姚思嘉等[2]設(shè)計(jì)的STM32室內(nèi)搬運(yùn)機(jī)器人通過攝像頭、光電開關(guān)、編碼器和傳感器實(shí)現(xiàn)自主定位、避障、自動搬運(yùn)物品等功能。張譯等[3]研究的智能搬運(yùn)機(jī)器人通過紅外線、超聲波等傳感器獲取外界信息,使用履帶式行走機(jī)構(gòu)和高自由度機(jī)械臂可以實(shí)現(xiàn)避障、循跡、定距抓取等任務(wù)。妥志良等[4]基于STM32單片機(jī)的四驅(qū)智能搬運(yùn)小車,運(yùn)用光電管傳感器配合二維碼識別模塊進(jìn)行路徑規(guī)劃,通過Openmv完成物料識別,控制機(jī)械手對物料的抓取、搬運(yùn)和重新擺放等功能。上述研究都是通過傳感器實(shí)時(shí)進(jìn)行路徑循跡,適用于路徑變化的作業(yè)情況,增加了小車的復(fù)雜度。對于既定路線的作業(yè),可以通過少量的傳感器與算法結(jié)合來實(shí)現(xiàn),這使得小車更為簡便而實(shí)用。
為此,本文從教學(xué)實(shí)踐角度,研制開發(fā)了一款基于既定路線、可實(shí)現(xiàn)反復(fù)搬運(yùn)的小型智能起重機(jī),以STM32為控制處理器,應(yīng)用Openmv視覺識別模塊,識別貨物標(biāo)識符上的顏色與形狀,進(jìn)行順序分揀,并自動抓取和提升貨物。通過PID控制起重機(jī)運(yùn)行速度與方向,按既定路線將貨物從卸貨區(qū)無障礙地搬運(yùn)到存放區(qū)。
本起重機(jī)主要用于倉儲中的小型物料搬運(yùn),整體為框架結(jié)構(gòu),如圖1所示。便于攜帶一定數(shù)量的物料一起運(yùn)行??蚣茼敹藶榫匦危?個(gè)角連接有垂直支腿。為保證矩形及與支腿間的結(jié)構(gòu)穩(wěn)定性,在各桿件間連接的直角上均連接有角碼,提高局部的剛性。
圖1 智能搬運(yùn)起重機(jī)
為完成對貨物的搬運(yùn)需求,設(shè)置了起升機(jī)構(gòu)、抓取機(jī)構(gòu)和行走機(jī)構(gòu)。起升機(jī)構(gòu)固定在框架結(jié)構(gòu)上平面,采用齒輪齒條傳動方式實(shí)現(xiàn)貨物的升降。起升機(jī)構(gòu)的底端連接有抓取機(jī)構(gòu),抓取機(jī)構(gòu)(如圖2所示)通過舵機(jī)實(shí)現(xiàn)對貨物提袋的抓取與松開。行走機(jī)構(gòu)采用麥克納姆輪(以下簡稱麥輪),分別布置在框架的4個(gè)支腿末端。4個(gè)麥輪形式采用O形布置方式,如圖3所示,可實(shí)現(xiàn)任意轉(zhuǎn)向??紤]到地面存在不平整和起重機(jī)的安裝誤差,在支腿末端與麥輪之間增加彈簧及固定裝置,通過彈簧作用使得4個(gè)麥輪始終著地,如圖4所示。
圖2 抓取機(jī)構(gòu)
圖3 麥輪O形布置方式
圖4 麥輪旁的彈簧裝置
起重機(jī)控制系統(tǒng)主要實(shí)現(xiàn)對抓取機(jī)構(gòu)、起升機(jī)構(gòu)和行走機(jī)構(gòu)的運(yùn)動控制,同時(shí)還需識別貨物標(biāo)識符的顏色與形狀。為此,選取廣泛應(yīng)用的STM32單片機(jī)作為處理器,采用不同通信方式連接各機(jī)構(gòu)及視覺識別模塊。控制系統(tǒng)組成如圖5所示。
圖5 控制系統(tǒng)組成
為實(shí)現(xiàn)精準(zhǔn)定位、準(zhǔn)確的路線運(yùn)行及標(biāo)識符的識別,對行走機(jī)構(gòu)的PID控制算法、坐標(biāo)控制算法和視覺識別算法進(jìn)行研究。
目前常用的小車路徑識別控制算法包括比例積分差分算法(Proportion Integral Differential,PID)、線性二次型調(diào)節(jié)器算法 (linear quadratic regulator,LQR)、模型預(yù)測控制算 (Model Predictive Control,MPC)等[4]。其中,以PID算法應(yīng)用最為廣泛。該算法模型簡單、參數(shù)少,可使小車控制具有很好的魯棒性,且對非正常狀態(tài)的反應(yīng)非常靈敏。根據(jù)Matlab simulink模塊[5]建立了PID仿真控制模型,如圖6所示。通過調(diào)整比例、積分和微分參數(shù),實(shí)現(xiàn)運(yùn)行速度的快速平穩(wěn)。圖7為PID參數(shù)調(diào)整后的仿真波形圖,此波形圖對應(yīng)的比例、積分和微分參數(shù)分別為70.0,0.2和0.4,運(yùn)算周期Ts=0.001 s,積分項(xiàng)的系數(shù)ki=0.2/Ts=200??梢钥闯?,曲線在0.13 s的短時(shí)間內(nèi)趨于設(shè)定值,表明了參數(shù)設(shè)置的合理性。
圖6 Simulink仿真模型
圖7 PID仿真后的波形圖
PID算法的部分代碼為
為準(zhǔn)確得知起重機(jī)的運(yùn)行位置,通過電動機(jī)增量編碼器,確定起重機(jī)的位置坐標(biāo)??紤]起重機(jī)在行走過程會因慣性不能立即止步的情況,在進(jìn)行定位、轉(zhuǎn)向時(shí),需要將預(yù)定的麥輪轉(zhuǎn)數(shù)進(jìn)行一定的減少處理,并實(shí)時(shí)與增量編碼器獲取的麥輪轉(zhuǎn)數(shù)進(jìn)行對比。經(jīng)調(diào)試,行走機(jī)構(gòu)在橫向運(yùn)行時(shí)需減少1個(gè)轉(zhuǎn)數(shù),在縱向運(yùn)行時(shí)需減少2個(gè)轉(zhuǎn)數(shù)。以橫向運(yùn)行為例的坐標(biāo)控制算法流程如圖8所示。
圖8 橫向運(yùn)行時(shí)的坐標(biāo)控制算法流程
OpenMV是一款在STM32控制器上集成了攝像頭,并支持Python的機(jī)器視覺模塊。借助Python的圖像識別算法庫函數(shù),可以進(jìn)行顏色識別從而實(shí)現(xiàn)循跡、避障等功能,通過 I/O端口對機(jī)器系統(tǒng)進(jìn)行控制,可以將采集到的信號通過串口送給其他控制器[6]。
本算法中,顏色的識別可以使用已封裝的 find_blobs()函數(shù),形狀識別可以使用已封裝的 find_circles()、find_rects()函數(shù),來識別圓形和矩形。但其他形狀的識別需要自己編寫算法。例如對三角形的識別,本文采用色塊占空比法進(jìn)行識別,即根據(jù)三角形與矩形和圓形的對比,結(jié)合顏色識別,對相應(yīng)色塊,做最小外接矩形,然后根據(jù)色塊的面積與外接矩形面積的比值,來判別其形狀。當(dāng)比值介于0.45與0.55之間時(shí)可判斷是三角形。具體的算法代碼為:
根據(jù)此算法,獲得的識別效果如圖9所示,可以看出,算法能夠準(zhǔn)確識別出三角形,并用十字進(jìn)行標(biāo)識。同時(shí)根據(jù)封裝的函數(shù)識別出的方形和圓形圖案,用邊界線進(jìn)行標(biāo)識。
圖9 識別效果圖
根據(jù)上述設(shè)計(jì),本文研制了如圖10所示的智能搬運(yùn)起重機(jī)實(shí)物,其框架結(jié)構(gòu)高為425 mm,長與寬分別為790 mm和450 mm,每個(gè)起升機(jī)構(gòu)選用GW4058型的無刷電動機(jī),功率為30 W,扭矩可達(dá)到3 500 N·mm。每個(gè)抓取機(jī)構(gòu)選用TD-8120型舵機(jī)作為動力源,扭矩可達(dá)到1 980 N·mm。行走機(jī)構(gòu)中各麥輪直徑為100 mm,選用M2006型電動機(jī),功率為44 W。為驗(yàn)證起重機(jī)搬運(yùn)的可行性,設(shè)置了如圖11所示的搬運(yùn)場景,搬運(yùn)的物體為3個(gè)各1 kg的矩形箱子。
圖10 起重機(jī)實(shí)物
圖11 實(shí)驗(yàn)場地示意圖
起重機(jī)首先站立在圖中的起始點(diǎn)處,然后自行到取物區(qū),對貨物的標(biāo)識進(jìn)行顏色與形狀的識別,通過算法依據(jù)堆碼區(qū)的要求順序抓取多個(gè)相應(yīng)顏色和形狀的貨物(本起重機(jī)實(shí)物設(shè)置了3個(gè)抓取機(jī)構(gòu)和起升機(jī)構(gòu)),并將貨物提升到一定高度。然后按圖中弧形既定路線,避開障礙,搬運(yùn)貨物到堆碼區(qū),根據(jù)顏色與形狀要求將貨物放到指定的位置。隨后再按既定路線自行到取物區(qū),將余下的貨物依次搬運(yùn)到堆碼區(qū)。在搬運(yùn)過程中,運(yùn)用了前述的PID控制算法和坐標(biāo)控制算法,實(shí)現(xiàn)起重機(jī)的定位與路線的運(yùn)行。在運(yùn)行過程中,仍存在一定的偏差,通過反復(fù)調(diào)整PID參數(shù),采取分段方式確定了相對合理的PID參數(shù),最終實(shí)現(xiàn)偏差的減小,滿足運(yùn)行路線的要求。起重機(jī)在抓取貨物、運(yùn)送貨物截圖如圖12所示。通過此場景實(shí)際的搬運(yùn),可以看出本起重機(jī)運(yùn)行的可行性和控制算法的有效性。
圖12 起重機(jī)自行識別、取貨與放貨實(shí)驗(yàn)
本文設(shè)計(jì)的智能搬運(yùn)起重機(jī),基于STM32處理器,結(jié)合視覺識別模塊實(shí)現(xiàn)貨物的快速識別、抓取、搬運(yùn)。對行走機(jī)構(gòu)的PID控制算法、運(yùn)動位置的坐標(biāo)控制算法和視覺識別算法進(jìn)行了研究。通過實(shí)物場景的運(yùn)行,驗(yàn)證了起重機(jī)運(yùn)行的可行性和算法的有效性。