葛 旺,張連震,錢思屹,婁素琦
(1.南京航空航天大學工程訓練中心,江蘇南京 210016;2.南京航空航天大學電子信息工程學院,江蘇南京 210016;3.南京航空航天大學自動化學院,江蘇南京 210016;4.南京航空航天大學機電學院,江蘇南京 210016)
隨著社會和科技的發展,很多領域中人類的工作逐漸被智能機器取代,智能機器在實際工廠生產中,具有提高生產率和產品質量、降低生產成本等優勢[1]。而目前的工業生產加工環節中,物料的移動搬運占據了較多的生產成本和時間,很多地方仍然采用人工的方式,這些搬運工作既繁重又枯燥乏味。由于人為因素在工作中很容易出現錯誤,因此文中提出了一種智能物料搬運小車的設計方案,通過機械部分、電路和控制部分的設計,以及顏色識別、掃碼識別、場地定位等技術來組成具有室內定位、路徑規劃與自主行走功能的搬運小車。對工業物流中自動化和信息化的實現具有重要意義[2]。
如圖1 所示,小車的機械結構主要包括麥克納姆輪、三層的透明亞克力平板、舵機支架、減速電機支架以及夾持機械手爪。把第三層平板作為小車底盤,下方安裝4 個帶有霍爾編碼器的直流減速電機和具有全向移動特點的麥克納姆輪,構成基本的四輪小車移動單元。同時在底盤四周各安裝一組高精度的灰度傳感器,通過灰度傳感器實時檢測地面黑線進行計數和運算,實現實時定位功能[3]。在第二層亞克力平板上安裝有五自由度的機械臂,使用5 個大扭矩數字舵機帶動機械臂的運動,用來實現物料的抓取與放置。機械臂末端安放有Open MV 攝像頭,可以識別物料的顏色,保證抓取功能的準確性[4]。小車的側面安裝有一個二維碼掃碼模塊,該器件用于識別特定的二維碼,讀取搬運任務信息。同時第一層亞克力平板上放置了一塊如圖2所示的OLED顯示屏,用來顯示搬運任務信息,圖中R、G、B 分別代表紅色、綠色、藍色,表示小車第一個需要搬運的是紅色物料,第二個需要搬運的是綠色物料,第三個需要搬運的是藍色物料[5]。

圖1 物料搬運小車

圖2 OLED顯示屏
該控制系統硬件電路結構如圖3 所示,主要是由Arduino 主控模塊、電機驅動模塊、舵機驅動模塊以及Open MV 攝像頭、二維碼掃描模塊、灰度傳感器、OLED 顯示屏、直流減速電機、舵機等元器件組成。該系統選取mega2560 作為控制板,主要負責控制搬運小車的信息處理運算、移動控制、機械臂抓取控制等功能[6]。小車在行走過程中,通過4 組安裝在底盤四周的灰度傳感器實現空間范圍的位置識別,對地面十字形交叉的黑線進行精確檢測,在交叉路口進行計數與定位[7]。搬運任務信息儲存在二維碼中,因此需要使用二維碼識別模塊讀取信息,并且傳送到主控芯片中進行邏輯運算,以便判斷后輸出下一步的機器動作指令。搬運物料的顏色識別功能由Open MV 攝像頭來完成[8]。

圖3 控制系統硬件電路結構
整個系統通過一個12 V 的鋰電池進行供電,通過選擇輸出電流能力為3 A 的LM2596S 型號降壓芯片,把電源的12 V 電壓降低到穩定的5 V 和3 V,為mega2560 主控板、Open MV、掃碼模塊、灰度傳感器等各個傳感器供電。12 V 電源還需要直接向TB6612電機驅動模塊供電,再由該電機驅動模塊向底盤的4 個直流減速電機供電[9-10]。
系統主控MCU 部分采用了Arduino mega2560 單片機主控模塊作下位機控制器,如圖4所示。Arduino是一款開源的電子設計平臺,與其他主控硬件平臺例如STM32 系列與51 單片機系列等相比,具有價格低、開發編程語言簡單、功能齊全、資源豐富等優點,豐富的串口資源可以快速實現市面上各傳感器模塊的電路連接以及編程控制,適合學生群體快速地入門以及參與到項目的開發中去[11]。同時多項研究也證明了以Arduino 為核心,以傳感器模塊和各種電機等硬件為載體的電子設計的可行性,并且性能上也能滿足各類機器人豐富的功能需求,因此文中采用Arduino 作為小車系統的主控模塊[12]。

圖4 Arduino mega2560核心板
系統采用SEN1595 型號傳感器,如圖5 所示,安裝在底盤四周。傳感器在工作時由高亮白色聚光LED 作為發光源,接收管對反射回來的光線進行光強對比處理,反射光的強度差值越大則分辨效果越好。由于淺色的反射性強,黑色的反射性弱,光敏元件接收到不同強度的光時電阻會有明顯變化,從而影響電路的輸出電壓。此時,只需要根據工作時的場地和光線情況調節傳感器上的電阻器來調節基準電壓的閾值,傳感器將對比后的信號以數字輸出的方式反饋給主控模塊,再由主控模塊對返回的信號進行處理分析,判斷執行下一步程序。由于小車完成任務的運行場地布置為淺色地面,由縱橫交錯的黑色線條將場地等分為若干相同規格的小格,因此可以設計物料的存放區域與黑色線條對齊,利用黑色線條作為尋跡軌跡,通過計數的方式進行定位,判斷當前位置并計算出下一步需要到達的執行動作位置[13]。

圖5 灰度傳感器
搬運小車處于行走運動時,在行走方向的前后排傳感器用于實現穩定的巡線移動功能,沿線行走保證路線的準確性。此時,左右兩側的傳感器用于實現計數功能,每次經過一條黑線時傳感器接收到的信號會變化一次,方便了算法實現小車位置平面坐標系。如果在工業物料搬運現場中使用類似此布置的地面,再加以配合此套程序算法則可以實現智能而實用的搬運作業[14]。
采用的MH-ET LIVE Scanner v3.0 型號二維碼掃描識別模塊獲取任務信息,該模塊采用了針對條形碼、二維碼識別的專業圖像處理芯片,可以快速而準確地掃描解析出紙張、屏幕、瓶子等載體上的條碼信息,具有可以在復雜環境中穩定讀取條碼信息的超高性能。通過UART 接口與Arduino 單片機實現串口通信,搬運物料信息的二維碼如圖6 所示,二維碼掃描模塊通過識別二維碼上的信息,二維碼包含的信息內容如圖7 所示,其中內容“red,green,blue”回傳到單片機上與Open MV 攝像頭返回的顏色信息進行對比分析判斷,能識別出各種顏色的物料,進而完成搬運和運送功能。

圖6 搬運物料信息二維碼示例圖

圖7 二維碼信息內容
系統設計的搬運小車的任務對象是不同顏色的物料,根據二維碼上顏色的排列順序來決定不同顏色物料的搬運順序,因此需要運用到顏色識別技術。可以采用Open MV 攝像頭進行顏色識別,識別過程如圖8 所示。根據色光三原色的理論可以知道,各種顏色是由不同程度的紅、綠、藍三原色混合形成的。因此只要知道所構成顏色的三原色各自具體的值,就可以測量出待測物體的具體顏色。在Open MV 攝像頭中使用了3 個顏色濾波器來指定紅、綠、藍三原色通過,其他原色則被過濾無法通過[15]。經過白平衡調整后傳感器分別測得紅色、綠色、藍色的值。在這里搬運所用到的物料模型簡單地被設置為紅、綠、藍3 種顏色,即理論上對應的RGB 值應為紅(255,0,0)、綠(0,255,0)、藍(0,0,255),那么只需要在算法上進行簡單濾波之后判斷對比待測物料顏色的RGB 值,取R 值、G 值以及B 值的最大值即可認為是物料的實際顏色,從而完成識別功能,RGB 色彩空間圖如圖9 所示。

圖8 OpenMV識別圖

圖9 RGB色彩空間圖
智能物料搬運機器人的軟件控制系統采用基于C 語言開發的Arduino 語言編寫。程序已盡量使用模塊化設計以方便地實現調用各種不同的任務需求功能,例如行走路徑規劃控制模塊、機械臂動作模塊、二維碼識別任務、物料的顏色識別、地標灰度檢測等。在整個智能化的識別以及物料搬運過程中,機器人首先是通過識別特定位置屏幕上顯示的二維碼而領取物流搬運任務信息,再根據物料的顏色和搬運順序在任務規定的搬運路徑內運動,其中路徑的標準選擇方式有許多不同的排列組合,因此機器人就需要通過調試和優化代碼設計出最佳的運動狀態和行走路徑[16]。
軟件程序的設計是智能搬運小車控制系統設計的核心,具體操作流程如圖10 所示。程序設計流程分5 個步驟:1)實現巡線功能,保證行進路線和到達地點的準確性,貫穿搬運任務的全過程;2)掃描二維碼讀取任務信息,在到達指定二維碼區域,調用掃碼模塊實現信息的獲取。這是保證后期機械手精準抓取物料的前提;3)顏色識別,只有準確地識別物料的顏色,才能準確地放置到指定的相同顏色物料存放區域;4)機械手的控制,做到控制機械手既能準確抓到所需物料,又能抓牢,不允許出現掉落在搬運中途的情況發生,還要保證可以準確地放置到指定的區域;5)控制電機速度,它決定了小車的移動速度,在保證效率的同時又不能讓行進的速度太快,否則當小車到達停車地點時,灰度傳感器的信號反饋到單片機后,無法快速剎車而導致小車沖出范圍[17]。

圖10 軟件設計流程圖
進行小車整體功能測試時,首先將搬運小車移動至工作場地中指定的出發區域,將小車系統電源打開,在出發區域啟動并按照設定好的規劃路線前進,到達指定地點實現精準停車并開啟掃碼功能獲取任務信息,緊接著到達物料存放區域進行物料的顏色識別以及實現準確抓取,根據顏色傳感器返回到單片機的物料顏色信息來控制機械臂的抓取。隨后移動到物料放置區,如圖11 所示,把不同顏色的物料準確地放在對應目標區即完成全部任務,小車移動到結束區域,停止工作。

圖11 小車物料投放圖
在進行多次具體實驗后,可以總結得到物料搬運小車對物料進行投放的準確度在80%以上,整個搬運過程在3 min 以內,滿足搬運性能要求,運行過程穩定性較好。
在具體的算法實現中容易遇到的問題是開環控制直流減速電機時會因為車身負載、地面摩擦等環境因素造成的小車行走方向出現偏移的情況,為了保證小車行走方向的確定性,可以引入陀螺儀動態檢測運動時的角度偏移參數進行直流電機的閉環控制。
控制機械臂抓取和放置動作實際上是通過控制舵機來實現,然而舵機具有轉矩大、速度快等特點,因此實際控制中極其容易出現超調的情況,那么為了改善這種情況可以采用PID 調節的方式,在實際調試中需要不斷修正Kp、Ki和Kd參數。同時也不能直接給定一個參數進行直接變換,可以設計延遲函數進行短暫的緩沖,利用遞增參數的方式讓機械臂運動時更加平穩[18]。
文中順應智能物流分揀和自動化的時代潮流,設計研發了一款基于Arduino 單片機的智能物流搬運機器小車,可以在3 min 內完成指定物料從物料存放區到物料放置區的搬運工作任務,同時抓取和放置的準確率達到80%。提高了物流搬運行業的效率、精度并且降低人工成本。通過灰度傳感器以及四驅動全向輪結構,提高了物流搬運過程中的穩定性和靈活性;同時通過顏色識別和算法實現機械抓取裝置精準抓取物料。經過二維碼識別模塊和Open MV 攝像頭進行數據和任務信息的采集和傳輸,為機器人的實際應用提供了便利。