王江龍,任紅衛(wèi),劉敏聰,吳東萍,寧靜渝,吳欣雨
(廣東石油化工學(xué)院 自動化學(xué)院,廣東 茂名 525000)
搬運(yùn)機(jī)器人得到了廣泛的認(rèn)可和應(yīng)用,并成為現(xiàn)代工業(yè)領(lǐng)域的重要組成部分,就現(xiàn)階段,德國KaKU公司的搬運(yùn)機(jī)器人技術(shù)最為成熟[1-3]。在多種不同類型的搬運(yùn)機(jī)器人生產(chǎn)方面,德國KuKA公司的生產(chǎn)水平居于世界前茅。在國內(nèi),朱穎等[4]設(shè)計了一款單目視覺智能分揀搬運(yùn)機(jī)器人,通過對攝像頭獲取的圖像進(jìn)行中值濾波、去除陰影、圖像分割等預(yù)處理,結(jié)合形狀和顏色特征對物料進(jìn)行識別。常浩等[5]設(shè)計了一款智能工業(yè)搬運(yùn)機(jī)器人,主要通過機(jī)械手臂控制和車底部的平衡系統(tǒng)來解決日常工業(yè)中叉車運(yùn)輸系統(tǒng)速度慢且不能實現(xiàn)多貨物的搬運(yùn)問題,降低了以往搬運(yùn)過程中工人意外事故發(fā)生率和物品的損壞率。鄭彩麗等[6]設(shè)計的智能搬運(yùn)機(jī)器人可以根據(jù)給定的任務(wù),適應(yīng)不同的地形,同時完成物料的抓取、搬運(yùn)以及將其擺放在特定位置等任務(wù)。盡管智能搬運(yùn)機(jī)器人領(lǐng)域的研究已經(jīng)取得了一定的進(jìn)展,但仍存在一些亟待解決的問題。首先,以擺放順序識別目標(biāo)物品的方案較少,這給自動化物品擺放和整理過程帶來了一定的困難。現(xiàn)有研究往往集中在物品的抓取和搬運(yùn)方面,對于物品的分類、識別和擺放順序規(guī)劃的研究相對不足。其次,機(jī)器人機(jī)身姿態(tài)校正功能不完善,這對機(jī)器人的穩(wěn)定性和準(zhǔn)確性造成了一定的影響。
基于此,本文設(shè)計了一種基于Arduino單片機(jī)的智能搬運(yùn)機(jī)器人,并驗證其在自主導(dǎo)航和物品運(yùn)輸方面的實用性和可靠性。結(jié)合視覺識別技術(shù),使機(jī)器人能夠準(zhǔn)確識別不同的目標(biāo)物品,并根據(jù)預(yù)設(shè)的擺放順序進(jìn)行合理的擺放和整理。同時,針對機(jī)器人機(jī)身姿態(tài)校正不完善的問題,改進(jìn)姿態(tài)感知和控制系統(tǒng),提高機(jī)器人的穩(wěn)定性和精確性,以適應(yīng)不同工作場景的需求。
控制系統(tǒng)主要由控制模塊、57步進(jìn)電機(jī)、電機(jī)驅(qū)動模塊、OpenMV視覺傳輸模塊、OLED顯示模塊、光敏巡線模塊等模塊組成,其總體結(jié)構(gòu)見圖1。
圖1 機(jī)器人控制系統(tǒng)
1)控制模塊。系統(tǒng)控制模塊采用Arduino Mega 2560單片機(jī)最小模塊,主要作用為對各模塊進(jìn)行通信與控制和控制機(jī)器人的運(yùn)行[7]。與其他Arduino板相比,Arduino Mega 2560具有更多的輸入/輸出引腳、更大的存儲器和更強(qiáng)大的處理能力,為復(fù)雜的運(yùn)算程序與多模塊通信提供了充足的硬件條件。
2)電機(jī)驅(qū)動模塊。選用DRV8825步進(jìn)電機(jī)驅(qū)動模塊來控制57步進(jìn)電機(jī),同時為了能讓機(jī)器人有更多運(yùn)動方向,在車輪方面機(jī)器人采用了麥克朗姆輪。DRV8825是一種常用的步進(jìn)電機(jī)驅(qū)動器,它是一種高性能、低成本的單片驅(qū)動器,能夠驅(qū)動雙極、四極和六極步進(jìn)電機(jī)。麥克納姆輪是一種機(jī)器人輪式布局結(jié)構(gòu),通常用于差動驅(qū)動的移動機(jī)器人中,可以實現(xiàn)全向移動,它的側(cè)輪可以旋轉(zhuǎn)從而改變機(jī)器人的方向和移動速度[8]。Arduino單片機(jī)的輸出端連接DRV8825驅(qū)動板的信號端,DRV8825驅(qū)動板的輸出端連接步進(jìn)電機(jī),步進(jìn)電機(jī)與驅(qū)動板的供電由電源模塊提供。機(jī)器人通過控制電機(jī)的旋轉(zhuǎn)方向和步數(shù)來控制機(jī)器人運(yùn)動狀態(tài)。
3)視覺識別模塊。在視覺識別方面,采用OpenMV視覺傳輸模塊來進(jìn)行二維碼識別與物料擺放順序識別,從而保證機(jī)器人能夠順利完成運(yùn)輸任務(wù)。在實際使用中,先對OpenMV與uart1進(jìn)行初始化,在機(jī)器人開始進(jìn)行相關(guān)的識別任務(wù)時,OpenMV根據(jù)事先燒錄進(jìn)的代碼對二維碼以及物料進(jìn)行識別并將相關(guān)的數(shù)據(jù)通過uart1傳輸?shù)紸rduino中,Arduino根據(jù)這些數(shù)據(jù)對接下來的抓取任務(wù)進(jìn)行順序規(guī)劃[9]。
4)陀螺儀模塊。選用 HWT101陀螺儀讀取機(jī)器人姿態(tài)角度。它采用MEMS技術(shù),可以精確測量三個方向上的角速度,具有高精度、高靈敏度、低功耗等特點。Arduino通過uart3串口接受陀螺儀所讀取的機(jī)器人角度數(shù)據(jù),并根據(jù)數(shù)據(jù)來對機(jī)器人車身姿態(tài)進(jìn)行糾偏。該模塊適用于機(jī)器人行駛軌跡校正的功能。
5)循跡模塊。選用光敏模塊對場地中黑線進(jìn)行識別。光敏模塊是一種基于光敏元件和信號處理電路的組合裝置,能夠?qū)⒐庑盘栟D(zhuǎn)化為電信號。具有靈敏度高、可靠性高、響應(yīng)速度快、易于使用的優(yōu)點,適用于機(jī)器人行駛路徑的識別。在機(jī)器人的四周分別安裝2個光敏模塊,并將這8個光敏模塊的輸出端與Arduino的信號端進(jìn)行連接,Arduino通過讀取各方向的黑線識別情況與次數(shù)來判斷此時機(jī)器人行駛的距離,從而進(jìn)行接下來的行動。
6)機(jī)械臂模塊。選用6個DS3120舵機(jī)與多個連接件組成六自由度機(jī)械臂,機(jī)械臂的爪子部分為自主3D打印設(shè)計,DS3120是一種數(shù)字式舵機(jī)[10]。它具有高精度、高速度、高扭矩等特點。該舵機(jī)工作電壓范圍為4.8~6.0 V,輸出扭矩為20 kg/cm,轉(zhuǎn)速為0.18 s/60°。此外,DS3120還具有防水性,適合在潮濕環(huán)境中使用。為了更方便地驅(qū)動多個舵機(jī),采用了16路舵機(jī)控制板來控制舵機(jī)的運(yùn)動,事先通過上位機(jī)將動作組錄入舵機(jī)控制板,在機(jī)器人到達(dá)指定位置后,Arduino通過uart2向舵機(jī)控制板發(fā)送調(diào)取指定動作組命令,舵機(jī)控制板收到指令后根據(jù)事先設(shè)置好的參數(shù)驅(qū)動多個舵機(jī)完成指定動作,從而使機(jī)械臂能完成物料抓取與擺放。
7)人機(jī)交互模塊。選用1.3寸OLED顯示屏模塊來顯示二維碼與物料的識別信息。OLED顯示屏模塊可以通過軟串口通信與Arduino進(jìn)行數(shù)據(jù)交換。在機(jī)器人的側(cè)邊通過銅柱和螺栓進(jìn)行安裝,以確保其穩(wěn)定性和安全性。該顯示屏模塊可以在機(jī)器人的運(yùn)行過程中實時顯示關(guān)鍵信息。通過這些信息,使用者可以更好地監(jiān)控機(jī)器人的運(yùn)行狀態(tài)并對此進(jìn)行調(diào)試。
用 C 語言編寫代碼,使用Arduino IDE編譯器編程。智能搬運(yùn)機(jī)器人控制系統(tǒng)上電后進(jìn)行初始化,初始化電機(jī)、定時器、HWI101陀螺儀、OpenMV、光敏模塊、串口。隨后進(jìn)入main 主函數(shù),循環(huán)執(zhí)行相關(guān)任務(wù),系統(tǒng)軟件流程見圖2。
圖2 系統(tǒng)軟件流程
機(jī)器人啟動后,首先使用OpenMV進(jìn)行視覺識別,識別到二維碼并將數(shù)據(jù)顯示在顯示器后,機(jī)器人前往原料區(qū),識別到物料順序后,將數(shù)據(jù)發(fā)送給Arduino控制器。然后根據(jù)二維碼與物料順序的數(shù)據(jù),將物料按照順序通過機(jī)械臂進(jìn)行抓取并且放在機(jī)器人物料臺上,將3種物料搬運(yùn)至放置區(qū)后,按照從原料區(qū)上層搬運(yùn)至物料臺的順序?qū)⒁寻岬轿锪吓_的物料搬運(yùn)至放置區(qū)對應(yīng)的顏色區(qū)域,將原料區(qū)的3種物料搬運(yùn)至放置區(qū)后,機(jī)器人回到返回區(qū)。當(dāng)機(jī)器人到達(dá)目標(biāo)位置后,完成任務(wù)。
物料運(yùn)輸機(jī)器人的機(jī)械結(jié)構(gòu)如圖3所示。機(jī)體主要由兩塊亞克力板、軸、驅(qū)動輪、步進(jìn)電機(jī)、功能模塊、電池等組成。4個步進(jìn)電機(jī)主軸分別穿過移動平臺的各側(cè)面并與麥克朗姆輪相連接,步進(jìn)電機(jī)通過連接件和螺絲與底板進(jìn)行連接;電池和功能模塊通過螺栓固定在移動平臺的內(nèi)部。兩塊亞克力板之間用螺絲與55 mm銅柱連接,底板放置Arduino主控板、電機(jī)驅(qū)動模塊、電源模塊,頂板放置機(jī)械臂、16路舵機(jī)控制板與物料臺,機(jī)械臂、16路舵機(jī)控制板,上述模塊通過螺栓固定在平臺上,物料臺通過10 mm銅柱與螺栓固定在平臺上。機(jī)械臂由6個舵機(jī)、舵機(jī)連接件、云臺、爪子組成,通過螺栓連接,在機(jī)械臂的中間位置放置OpenMV,通過自主3D打印設(shè)計的連接件進(jìn)行固定。
圖3 物料運(yùn)輸小車機(jī)械結(jié)構(gòu)設(shè)計
機(jī)器人在執(zhí)行運(yùn)輸任務(wù)過程中,要求其必須能準(zhǔn)確識別二維碼與物料信息,以及能夠精準(zhǔn)行駛到各個區(qū)域并執(zhí)行相關(guān)任務(wù)。為了更加直觀地對機(jī)器人各功能進(jìn)行測試與評估,制定了一系列的性能評判標(biāo)準(zhǔn),其機(jī)器人性能評判見表1,機(jī)械臂性能評判見表2。
表1 機(jī)器人性能評判
表2 機(jī)械臂性能評判
表3 環(huán)號及環(huán)尺寸與分?jǐn)?shù)對照
為了驗證機(jī)器人是否能夠順利完成所有任務(wù),我們特地搭建了一個測試場地,并對機(jī)器人進(jìn)行了連續(xù)8輪的測試,記錄下在這8輪內(nèi)機(jī)器人任務(wù)完成情況和放置物料的情況并打分,測試結(jié)果如表4、表5、表6所示。
表4 機(jī)器人測試情況
表5 機(jī)器臂物料放置得分
表6 機(jī)器人完成任務(wù)時間情況
由表4可看出,機(jī)器人能夠100%地完成所有任務(wù),其中在識別任務(wù)中識別所需時間均低于0.5 ms,在無人干預(yù)的情況下,二維碼識別的成功率為100%,物料識別的成功率為87%,二維碼與物料擺放順序的識別結(jié)果均未出錯。由表5可看出,在機(jī)械臂執(zhí)行物料抓放任務(wù)時,8次測試中機(jī)器人均能成功抓取全部物料,抓夾成功率為100%,而在物料放置方面,在滿分240分中機(jī)械臂物料放置實際總得分為224分,準(zhǔn)確率93.3%。
由表6可看出,機(jī)器人正常完成全部任務(wù)所需時間平均在72.3 s,在第5輪中機(jī)器人為保證行駛正常而不斷校正自身姿態(tài),從而導(dǎo)致最終完成時間較長,第7輪則是因環(huán)境光線導(dǎo)致識別耗時稍長,從而延長了最終完成時間。
綜上,機(jī)器人在大部分測試中表現(xiàn)出色,成功完成了所有任務(wù)。在少數(shù)測試中遇到了一些技術(shù)故障、錯誤或困難,但通過事先準(zhǔn)備好的校正程序,機(jī)器人成功克服問題并繼續(xù)進(jìn)行任務(wù)。這些測試結(jié)果為驗證機(jī)器人的正常運(yùn)行提供了有益的信息,同時也提供了改進(jìn)和優(yōu)化的方向,比如機(jī)器人在進(jìn)行識別工作時容易收到光線干擾,后續(xù)會改進(jìn)其識別算法,讓其不容易受環(huán)境因素的干擾。
智能搬運(yùn)機(jī)器人設(shè)計具有精度高、安全性高、節(jié)約人力成本等優(yōu)點,其關(guān)鍵技術(shù)在于循跡行駛與視覺識別方面。通過光敏模塊識別黑色循跡線的技術(shù),可在一定程度上讓機(jī)器人實時確定自身的所在方位,同時通過陀螺儀實時監(jiān)控自身姿態(tài),保證其行駛過程的穩(wěn)定性。而通過使用OpenMV識別技術(shù),能讓機(jī)器人自主獲取物料相關(guān)信息,使得自主性大大提高,節(jié)約了人力成本。