孫浩洋,曹 彥,卞科琪,魏翱翔,孔慶峰
(中國礦業(yè)大學徐海學院,江蘇 徐州 221000)
隨著科學技術(shù)的不斷進步,機器人正向著協(xié)作化、自動化、網(wǎng)絡(luò)化以及智能化方向發(fā)展,為保障機器人作用的精準高效,機器視覺技術(shù)成為持續(xù)關(guān)注的熱點,并得到廣泛應(yīng)用。傳統(tǒng)的物體分揀過程受物件特征的影響較大,導(dǎo)致搬運效果低,分揀錯誤率高。使用視覺技術(shù)的機器人能提高速度、增加信息量的貯備,并且能避免人工操作帶來的誤差,因此,機器視覺技術(shù)在分揀領(lǐng)域具有良好的應(yīng)用前景。本文主要研究基于九點標定算法分揀機器人的組成關(guān)鍵技術(shù)及其技術(shù)優(yōu)勢,針對抓取過程中出現(xiàn)的問題提出了可行性解決方案,為物流分揀機器人關(guān)鍵技術(shù)提供一些參考。
對于目標識別和機械臂分揀控制,分別采用機器視覺技術(shù)和關(guān)節(jié)型機械臂來完成任務(wù)。總體設(shè)計思路為:由OpenMV采集圖像信息,STM32接收到傳輸信號,將算法處理后的傳輸動作信號傳輸給舵機,6個舵機控制機械臂按照指令完成相應(yīng)的動作。
圖1所示為機械臂控制流程:機械臂主控板接收到夾取命令后,利用OpenMV識別目標物體,并將目標物體坐標經(jīng)過坐標轉(zhuǎn)換,進行九點標定,通過串口發(fā)送到機械臂控制板,機械臂控制板進行逆運動學解析,計算出每個舵機對應(yīng)的PWM值,完成目標物體的夾取。
圖1 機械臂控制流程圖
為了完成機械臂對目標物體的夾取和放置任務(wù),需要進行機械臂的運動學分析。機械臂運動學研究各關(guān)節(jié)運動與機械臂末端執(zhí)行器位姿之間的關(guān)系,主要包括正向運動學和逆向運動學。正運動學解析是已知機械臂各連桿參數(shù)及關(guān)節(jié)變量,解算出末端執(zhí)行器的姿態(tài)。逆運動學解析是已知末端執(zhí)行器的姿態(tài),求解要設(shè)置的關(guān)節(jié)可活動對象的參數(shù)[1]。
使用笛卡爾坐標系描述空間位置,使用右手坐標系,即繞z軸旋轉(zhuǎn)時,y軸在x軸的+90°方向,一般將物體的名稱寫在右下角,如坐標系{A}中點O的位置向量寫作ApO[2]。描述物體在坐標系中的位置,可以描述為坐標系之間的關(guān)系。二維變換如圖2所示,圖中描述了一個坐標系相對于另一個坐標系的關(guān)系。
圖2 二維坐標系變換
可以將坐標軸單位向量用參考坐標系表示定義一個2×2的矩陣:
空間三維朝向,按照圖2的方法,寫出旋轉(zhuǎn)矩陣R:
2.2.1 機械臂選型
機械臂按不同的結(jié)構(gòu)形式,可以分為直角坐標型機械臂、圓柱坐標型機械臂、球坐標型機械臂和多關(guān)節(jié)型機械臂[3]。本文選用的關(guān)節(jié)型機械臂如圖3所示,結(jié)構(gòu)最緊湊,具有更強的靈活性,而且價格相對較低。其中,云臺選用大扭力的1501舵機,末端執(zhí)行器選用的是LDX-335MG數(shù)字舵機,該舵機具有防堵轉(zhuǎn)功能,當堵轉(zhuǎn)時間超過4 min時,舵機停止工作,防止調(diào)試過程中因誤操作導(dǎo)致舵機損壞,6個舵機均為高精度的數(shù)字舵機。
圖3 六自由度機械臂
2.2.2 機械臂主控板設(shè)計
機械臂主控PCB實物如圖4所示,其工作任務(wù)主要是串口接收OpenMV目標識別發(fā)送的數(shù)據(jù)、并對目標物的坐標進行數(shù)據(jù)處理、逆運動學分析,并求解各個舵機所需要旋轉(zhuǎn)的角度和對應(yīng)的PWM值,驅(qū)動舵機快速準確地夾取目標物體、通過串口接收到放置信號將夾取的目標物體放置到規(guī)定位置。主控部分采用STM32F103C8T6系列單片機作為核心控制,此款單片機內(nèi)置資源豐富,可靠性高,同時還具有豐富的接口資源。
圖4 機械臂主控PCB實物圖
1)USART接口:實現(xiàn)板間通信。
2)AD采集接口:檢測采集電壓是否滿足需求。
3)普通I/O接口:點亮LED燈來顯示機械臂運行狀態(tài)。蜂鳴器電壓過低提醒。
4)定時器接口:分時控制6個機械臂。
手眼標定根據(jù)攝像頭與機器人的位置不同,分為Eye-to-Hand和Eye-in-Hand兩種方式。Eye-to-Hand關(guān)系的攝像頭安裝在固定位置,不隨機械臂的運動而改變位置,Eye-in-Hand關(guān)系的攝像頭安裝在機械臂末端執(zhí)行器上,機械臂運動攝像頭坐標系也隨之變化[4]。本文要識別靜態(tài)規(guī)則的幾何體,采用Eye-to-Hand系統(tǒng),攝像頭安裝在固定操作臺上,進行采集圖像信息,經(jīng)過圖像處理后進行目標物識別,確定相對于機械臂坐標下目標物的坐標,由STM32開發(fā)板發(fā)送控制信號,控制機械臂完成搬運任務(wù)。選取的標定的方法為九點標定法。
九點法手眼標定流程包括兩個部分,一部分是標定板中靶點在機器人坐標系下坐標的獲取,一部分是標定板中靶點像素坐標的獲取。攝像頭在放置好標定板后獲取一張標定板圖像,通過相應(yīng)的圖像處理,得到靶點的像素坐標。標定板上以機械臂底座中心為原點,繪制機械臂坐標系,靶點在機器人坐標系下的坐標,可以由標定板直接獲取[5]。具體流程如圖5所示,首先進行圖像讀取,然后計算中心點,同時獲得機械人坐標記錄,最后通過轉(zhuǎn)換矩陣計算得到參數(shù),完成標定。
圖5 標定流程
識別目標物體時OpenMV IDE如圖6所示,首先進行感光原件的初始化Sensor.reset(),選擇色彩模式sensor.RGB565,設(shè)置相機模塊的分辨率大小為320×240,防止顏色失真,關(guān)閉白平衡和自動增益。初始化串口4,與STM32進行串口通信。只需要傳輸待識別物坐標,直接輸出字符串即可。設(shè)置檢測色塊閾值,調(diào)用find_blobs()函數(shù),將所得到的坐標帶入手眼標定所得到的公式中,轉(zhuǎn)換為相對于機械臂坐標系的坐標,調(diào)用uart.write()函數(shù)進行數(shù)據(jù)傳輸。
圖6 目標物體時OpenMV IDE運行情況
分揀動作程序由追蹤和抓取兩部分組成。當系統(tǒng)接收到分揀指令時,工作區(qū)域?qū)⒈籓penMV檢測是否有物塊存在,初始檢測次序為紅、藍、綠。若要切換檢測次序,需要對單片機發(fā)出切換次序指令,或者對內(nèi)部檢測部分程序進行修改。如果物塊被檢測到,則可以進行追蹤動作,OpenMV會記錄物塊坐標發(fā)送給STM32,STM32接收后將其轉(zhuǎn)換成機械臂坐標發(fā)送給機械臂,機械臂根據(jù)坐標追蹤到物塊。當完成對物塊的追蹤后,則對物塊進行抓取。若在程序中設(shè)定了指定坐標,則在完成抓取后將物塊放置在相應(yīng)位置。相關(guān)流程如圖7所示。
圖7 程序流程圖
為了驗證分揀系統(tǒng)操作的效果,選取三種不同顏色的正方形物體放入系統(tǒng)的工作區(qū)域內(nèi),讓系統(tǒng)對不同顏色、位置的目標進行分揀操作,最終實現(xiàn)對系統(tǒng)分揀成功率和分揀精度的測試。具體測試過程如圖8所示。
圖8 系統(tǒng)測試過程
每次分別對3種不同顏色的物塊進行分揀并記錄測試數(shù)據(jù),測試結(jié)果如表1所示。
表1 測試數(shù)據(jù)
對表1的實驗結(jié)果進行對比和分析,發(fā)現(xiàn)在物塊顏色區(qū)分度明顯的環(huán)境下,采用九點標定法,具有更好的目標識別性。這是由于機器視覺算法與機械臂相結(jié)合,對物塊有更多的描述和刻畫,更好地實現(xiàn)對物塊的識別,達到預(yù)期目標。
以夾取紅色物塊為例,多次對物塊進行分揀操作,每次將物塊位置隨機放置并記錄測試數(shù)據(jù)。從中隨機抽取8組數(shù)據(jù),如表2所示。
表2 測試數(shù)據(jù)
對表2的數(shù)據(jù)進行分析,可以看出,基于九點標定法的機械臂抓取系統(tǒng),對任意放置在機械臂目標區(qū)域下的物體,能夠比較精確地獲取其坐標值,進而實現(xiàn)成功抓取。
本文采用九點標定法完成機械臂分揀系統(tǒng)的設(shè)計,該系統(tǒng)成功完成了數(shù)據(jù)檢測、目標追蹤和控制機械臂分揀等功能。經(jīng)測試,對任意放置在機械臂目標區(qū)域下的物體,能夠準確地獲得其坐標值,進而實現(xiàn)抓取功能,完成對目標的分揀,改善了因物體位置解算不準確,抓取錯誤的情況。系統(tǒng)調(diào)試方便,操作簡單,可移植性好,具有一定的實用價值。