蔣靈龍,鄒禮斌,胡 薦
(重慶交通大學機電與車輛工程學院,重慶400074)
隨著電商的飛速發展,對物流的需求也隨之擴大,分揀作為物流中重要的一環,人工分揀的成本、速度、及準確率的不足已很明顯。根據2020年中國的智能分揀行業研究報告,智能化的分揀設備能有效應對人工分揀所面臨的挑戰,成為快遞企業提升競爭力的剛性需求。自動分揀設備能在快遞分揀環節有效節省人力成本,提升分揀速度。
本設計是一款以STM32和磁性編碼器的自動分揀小車原型,可運用到快遞分揀、產品歸類等多種場景,還可運用到工廠端,自主到達倉庫獲取所需的零部件并運送到指定位置,實現由“人到物”到“物到人”的轉變。
本系統選用STM32作為主控芯片,L298N作為動力驅動芯片,霍爾碼盤為磁性編碼器、陀螺儀模塊、攝像頭、電源模塊等組成。系統的總體結構如圖1所示。

圖1 系統結構圖
電源經過不同等級調壓為整個系統供電,在用戶輸入分揀物品或分揀順序后,控制器通過獲取陀螺儀和霍爾碼盤的數據利用驅動模塊驅動電機帶動機器人經過程序指定的路徑到達分揀目的地,再利用超聲波測距獲得精確的位置信息,結合光電開關,讓機器人精確定位,然后控制機械臂動作,讓其上面搭載OPENMV攝像頭模塊對物品進行識別,并把其放入機器小車自帶臨時倉庫內,然后移動到下一位置,進行下一物品的分揀。完成分揀后自行到達指定倉庫位置將臨時倉庫內的貨物放入其中。
本設計使用STM32系列的F103RCT6作為主控,它是一款以CORTEX-M3為內核的32位微處理器,具有高性能、低成本、低功耗的優點。豐富的接口以及標準的庫函數使得開發過程方便快捷。
OPENMV是一個可編程的攝像頭,搭載STM32芯片,使用MicroPython語言進行編程,對圖進行分析。有良好的開源環境,能較為方便地調用并用于簡單的圖像分析。本設計讓其通過串口與主控芯片進行通信,在接收到主控芯片的開始識別信號后進行識別,再將識別到的信息通過串口返回到主控芯片中。
本設計采用主流的L298N電機驅動設計模塊,該模塊有兩個使能輸入端,兩組邏輯輸入端,兩個輸出口,將輸出口與小車兩側的電機相連。給使能端施加PWM波可以控制輸出電壓的大小,可以實現電機的調速;兩組邏輯控制端輸入不同的邏輯組合就可以控制輸出電壓的方向,實現電機的正反轉。
霍爾碼盤是一種旋轉盤式磁性編碼器,其原理同光電編碼器類似,使用磁性碼盤替代帶槽光電碼盤,磁性碼盤上帶有間隔排列的磁極,兩個霍爾元件位于碼盤兩側,相較于光電編碼器,磁性編碼器有著在灰塵較多的環境能穩定工作的優點。多磁極碼盤安裝在電機的軸上,隨著電機軸轉動,在旋轉時霍爾元件可以獲得A,B兩路正交脈沖,相位相差90°,通過放大電路讓STM32單片機的定時器通道捕獲,其波形如圖2所示。

圖2 碼盤產生的正交脈波

表1 周期內時序
根據圖2的波形圖可以得到不同旋轉方向時的時序(見表1所列),STM32高速捕捉A,B相脈沖信號,每次捕獲到A,B相的脈沖后,將其電平與上一次捕獲得到的電平進行比較,將其與對應旋轉方向的時序對比后就可得到此時電機的旋轉方向。
本設計中使用HWT101姿態陀螺儀來獲得機器人姿態信息,內置核心算法與卡爾曼濾波技術,靜態精度0.05°、動態精度0.1°。模塊內部集成了姿態解算器,配合動態卡爾曼濾波算法,能夠在動態環境下準確輸出模塊的當前姿態,姿態測量精度靜態0.05°,動態0.1°,穩定性較好。陀螺儀通過串口的方式將姿態信息傳送給主控芯片,主控芯片對姿態信息進行分析,并做出相應的調整,實現對小車姿態的閉環控制。
為保證小車能運動得穩定且快速,底盤采用四輪橡膠鋁合金支架結構,兩側搭載大扭矩減速直流電機。4個舵機作為機械臂的關節,中間通過連桿連接,機械臂前端帶有爪子,由一個舵機控制開合,底部安裝在小車底盤上,可以360°旋轉。將近距離光電開關安裝在爪子的前端,以便抓取更加準確,將OPENMV安裝在爪子的后方,并與爪子在一條中垂線上。兩個超聲波傳感器分別安裝在小車底盤的前端和后端。帶分隔的倉庫固定在底盤支架上方。經試驗小車在小于20°的坡度上行駛穩定。
小車在出發前對分揀目標進行設置,設置完成后就自主沿著設計好的路徑向倉庫出發,如果路徑上有障礙物能夠自主停止。在到達倉庫位后對工件進行識別,為目標工件就抓取到小車的倉庫中,不是目標工件就移動到下一工件為進行下一次識別,直到所有工件都識別完,然后小車移動到存放目標倉庫的位置將車內目標工件放入其中,最后回到起點,本次分揀完成,等待下一個分揀任務。
STM32通過兩路PWM控制兩側輪子的轉速,小車在運動過程中,由于每個輪子摩擦不相同,即使對兩側輪子上的電機相同的電壓,也會導致小車不能沿直線前進。STM32通過讀取陀螺儀的的姿態角度值,將小車當前姿態角度與設定角度的差作為誤差,兩路PWM輸出作為被調整量,引入增量式PID算法,實現閉環控制。將PID的參數調整好后,小車運動過程中不斷讀取角度值,并實時調整PWM輸出,在行進方向偏移后能夠快速恢復。小車在行進過程中通過超聲波模塊實時監測小車與前后的物體的距離,當檢測到行進方向的物體與其超出安全距離后進行制動,實現避障功能。
自主定位主要借助于陀螺儀獲得方向信息,磁性編碼器獲取距離信息?;魻柎a盤產生的兩相正交波通過單片機的輸入捕獲通道進行判斷。定義一數據用于計數,開始時計數值為0,判斷為正向旋轉脈沖計數值加一,反向脈沖則減一,用圓周角π除以碼盤旋轉一周的脈沖數n即可得每個脈沖所對應電機旋轉的角度α,用α乘以車輪的外徑R即可得到每個脈沖對應的理論前進距離。如果當前計數值為N,利用式(1)即可計算出小車當前前進的距離,從而實現無標識定位。另外在一個較短的時間內用這段時間的L之差除以這段時間可得到當前的速度。

對目標形狀判斷可以根據形狀的邊、角、以及與外圓等各種特征進行判斷,調用OPENMV內置的算法函數進行組合就可以完成識別功能,例如要尋找畫面內的圓形圖形可以調用find_circles函數找到畫面內的圓形;要對正方形進行判斷則可調用色塊占所在矩形的占空比函數density來判斷,經實驗正方形的占比都大于0.8;對于三角形同樣可用占比的方法進行判斷。要對顏色和形狀同時識別則需要進行一個簡單的邏輯嵌套。對于其他非單一色彩的平面和立體則使用基于模板匹配的NCC算法:將目標的灰度圖保存在OPENMV內,使用算法在攝像頭畫面內尋找與其相似度較高的部分。
二維碼的讀取是將獲取到的圖像再二值化處理后,經過一系列算法得到一個二進制的序列,將序列糾錯后轉化得到數據信息,關于其識別的相關研究已較為成熟,這里就不再贅述。
OPENMV在接收到STM32傳來的識別指令后,對畫面內物體進行識別,若畫面內沒有目標則給STM32返回一個代表無的指令,若有則實時返回目標的中心坐標。STM32在收到目標的坐標后,控制機械臂以讓爪子正對目標,然后接近到,收到光電接近開關信號后抓取。
經試驗,本設計以STM32為核心的各個模塊工作正常,能運用自身傳感器自主定位,準確快速地到達預先設定的位置,OPENMV對不同形狀和顏色工件進行識別正確率高,對二維碼掃描的有效率高,機械臂抓取靈活,完成多個工件分揀后并將目標工件運送到指定位置,完成任務后能自動回到出發位置。受限于OPENMV像素和運算能力的限制,小車識別物體的種類和準確度有待提高。小車的行進路徑固定在程序中,在自動規劃和快速更改路徑方面還有待研究。