摘要:為了減少機(jī)械臂在產(chǎn)品分類、抓取過程中的執(zhí)行時間,降低定位誤差,以提高生產(chǎn)效率。針對傳統(tǒng)機(jī)器人僅能執(zhí)行預(yù)定義軌跡任務(wù)的局限性,本文提出一種結(jié)合視覺識別系統(tǒng)的機(jī)械臂抓取方案。該方案中的視覺識別系統(tǒng)可同時檢測待抓取目標(biāo)的顏色和形狀屬性,并采用模板匹配法對目標(biāo)物體進(jìn)行輪廓匹配;而執(zhí)行抓取任務(wù)的執(zhí)行裝置采用六軸機(jī)械臂xArm;最后,使用眼在手上(Eye-in-Hand)視覺-機(jī)械臂方案實現(xiàn)對多個物體的識別與抓取,并根據(jù)設(shè)定規(guī)則進(jìn)行碼垛,測試結(jié)果驗證了所提方案的有效性和魯棒性。
01
引言
? 近年來,隨著人類對工業(yè)現(xiàn)代化生產(chǎn)、深海探險、太空探索、環(huán)境監(jiān)測、遠(yuǎn)程醫(yī)療、智能家居等領(lǐng)域的深入研究,以及應(yīng)用需求的多樣化。
高速、靈活的多自由度機(jī)械臂如同人類手臂,在生產(chǎn)、生活中逐漸扮演重要角色,機(jī)械臂控制技術(shù)向智能化發(fā)展也已經(jīng)成為必然趨勢。
此外,視覺是人類觀察與感知周圍環(huán)境的重要手段。據(jù)統(tǒng)計,在人類接受的信息中,通過肉眼觀測獲取信息的占比高達(dá)75%,這充分表明人體視覺功能的重要性。 將機(jī)器視覺技術(shù)與機(jī)械臂控制相結(jié)合,可解決機(jī)械臂需要自動判別和在一定自主性的工作任務(wù)時顯得捉襟見肘的問題,以及機(jī)械臂在復(fù)雜工作環(huán)境和工作任務(wù)中靈活性不足的問題,從本質(zhì)上提高機(jī)械臂的自主能力和智能程度,增強(qiáng)了機(jī)械臂的適應(yīng)性和實用性。 為此,本文提出了一種基于機(jī)器視覺的機(jī)械臂智能抓取系統(tǒng):采用視覺傳感器代替人眼來做測量與判別的技術(shù),利用計算機(jī)模擬人的識別標(biāo)準(zhǔn),去分析理解圖像,并尋找目標(biāo)物體和目標(biāo)地點,在明確工作目標(biāo)后向機(jī)械臂發(fā)出相應(yīng)分析結(jié)果,并控制機(jī)械臂完成自主抓取任務(wù)。
02
智能抓取系統(tǒng)構(gòu)成
? 2.1 ? 硬件系統(tǒng)
如圖2.1所示,智能抓取系統(tǒng)硬件設(shè)備主要是由計算機(jī)、機(jī)械臂系統(tǒng),以及固定于機(jī)械臂末端的視覺系統(tǒng)(眼在手上[Eye-in-Hand])和末端執(zhí)行器四部分組成。 相對于眼在手外(Eye-to-Hand)的安裝方式,采用眼在手上(Eye-in-Hand)安裝方式,智能抓取系統(tǒng)的視場可以隨著機(jī)械臂的運(yùn)動而發(fā)生變化,可增加視覺識別的范圍。 智能抓取系統(tǒng)在執(zhí)行抓取任務(wù)過程中,視覺系統(tǒng)識別到抓取目標(biāo)的位姿后,將數(shù)據(jù)傳遞給計算機(jī)進(jìn)行處理(坐標(biāo)變換等),最后由機(jī)械臂系統(tǒng)實現(xiàn)對目標(biāo)物體的抓取、擺放。?? ? ? ? ? ? ? ? ? ? ? ? ? ??
圖 2.1 智能抓取系統(tǒng)組成
機(jī)械臂系統(tǒng)由控制器、六軸機(jī)械臂和末端執(zhí)行器(吸盤)組成。機(jī)械臂所能完成的任務(wù)隨自身結(jié)構(gòu)差異而有較大區(qū)別,故本次實驗采用xArm 6軸機(jī)械臂(工作空間足夠大),可滿足本次抓取任務(wù)要求。此外,機(jī)械臂可識別控制器指令,實現(xiàn)機(jī)械臂的運(yùn)動規(guī)劃以及末端執(zhí)行器(吸盤)的開關(guān)。 視覺系統(tǒng)采用Intel RealSense D415視覺傳感器,以實現(xiàn)圖像采集和識別定位功能。Realsense D415是Intel在2018年推出的一款深度相機(jī),其擁有大約70度的視場和200萬像素成像器,相比于其他擁有同樣特質(zhì)的攝像頭,D415具有重量輕、精度高、易校準(zhǔn)、成本低的優(yōu)點。
2.2 ? 軟件框架
智能抓取系統(tǒng)軟件框架主要基于機(jī)器人操作系統(tǒng)ROS。
ROS是一個適用于機(jī)器人開發(fā)的開源元操作系統(tǒng),主要在Linux環(huán)境下工作。它集成了大量的工具、庫、協(xié)議,提供了操作系統(tǒng)應(yīng)有的服務(wù),包括硬件抽象,底層設(shè)備控制,進(jìn)程間消息傳遞,以及包管理,極大降低了機(jī)器人的開發(fā)門檻。本文使用ROS作為操作智能抓取系統(tǒng)的基礎(chǔ)軟件平臺,并將操作過程中所有的步驟串起來,如圖2.2所示。
圖 2.2?智能抓取系統(tǒng)軟件框架
視覺系統(tǒng)部分:目標(biāo)識別與定位功能采用計算機(jī)視覺庫OpenCV開發(fā)(OpenCV是一個跨平臺計算機(jī)視覺和機(jī)器學(xué)習(xí)軟件庫,可以運(yùn)行在Linux等多操作系統(tǒng)上,具有輕量、高效等優(yōu)點。)本項目在Linux系統(tǒng)下基于ROS平臺采用OpenCV進(jìn)行目標(biāo)物體識別、定位(下一章節(jié)展開介紹)。
機(jī)械臂控制系統(tǒng):機(jī)械臂運(yùn)動規(guī)劃過程中,所有節(jié)點之間的通信通過專用的ROS話題完成。要控制機(jī)械臂對目標(biāo)的抓取,需要運(yùn)行逆運(yùn)動學(xué)算法節(jié)點,讀取到末端執(zhí)行器應(yīng)到達(dá)的位姿,并計算所需關(guān)節(jié)角度位置,上述控制信息在單獨(dú)的話題中發(fā)布,由控制器讀取后實現(xiàn)機(jī)械臂的運(yùn)動。(有關(guān)機(jī)械臂正、逆運(yùn)動學(xué)的相關(guān)理論知識具體詳情可見Zippen-Huang/RobotTechCooker github倉庫RobotTechBook分支的《機(jī)器人學(xué)導(dǎo)論》第三章、第四章,后續(xù)也會安排機(jī)械臂的運(yùn)動學(xué)模型分析)。
綜上,視覺系統(tǒng)在識別、定位到目標(biāo)物體后通過發(fā)布話題服務(wù)實現(xiàn)機(jī)械臂的抓取、擺放等運(yùn)動規(guī)劃任務(wù)。
03
圖像識別與定位分析
? 對于基于機(jī)器視覺的機(jī)械臂抓取系統(tǒng)而言,其首要任務(wù)是能夠準(zhǔn)確的識別與定位目標(biāo)物塊,這是影響最終抓取成功率的重要因素。 為了精確獲取目標(biāo)在三維空間中的坐標(biāo),目標(biāo)物體識別與定位的主要過程如圖 3.1所示,接下來做詳細(xì)分析。
圖 3.1 識別定位流程
3.1 ? 圖像預(yù)處理
因為環(huán)境背景復(fù)雜性,采集到的圖像中會存在較多的無關(guān)干擾信息,這會對圖像的處理和識別造成一定程度的影響,圖像預(yù)處理可以有效地濾除圖像中的干擾信息,突顯出識別所需的圖像特征信息。
故,設(shè)計圖像預(yù)處理算法對Intel RealSense D415采集到的圖像進(jìn)行預(yù)處理,能夠有效地突出環(huán)境背景下目標(biāo)物體待檢測特征參數(shù)、降低目標(biāo)識別算法復(fù)雜度,以提高識別檢測效率。
3.1.1 圖像灰度化
圖像灰度化簡單描述就是將彩色的圖像轉(zhuǎn)化為灰度圖像,減少通道帶來的非必要特征,數(shù)據(jù)降維,處理更高效,因此圖像灰度化有益于提取目標(biāo)物體特征和分割目標(biāo)圖像,而被廣泛用于機(jī)器視覺領(lǐng)域。
3.1.2 圖像濾波
濾波的主要目的是盡可能保證圖像原始細(xì)節(jié)的前提下抑制圖中的干擾噪聲,其效果將對接下來的圖像處理產(chǎn)生直接的影響,因此選擇一個合適的濾波方法至關(guān)重要。
常用的圖像濾波方法有:中值濾波、高斯濾波、KNN濾波、最大均勻性平滑濾波等。在目標(biāo)檢測應(yīng)用中對圖像進(jìn)行降噪處理的方法被廣泛使用的有中值濾波、均值濾波以及高斯濾波三種方法: 其中,中值濾波是一種非線性的濾波方法,該方法的中心思想就是通過某像素點特定領(lǐng)域內(nèi)的中值去代替該像素的原始點,從而使圖像的處理效果更加平滑。 均值濾波是經(jīng)典線性濾波方法的代表,該方法的中心思想就是將圖像中某一個點的像素值用這個點的灰度值和與其相鄰像素點灰度值的平均值來代替。均值濾波往往帶來圖像質(zhì)量變差的問題,圖像選取的鄰域越大,噪聲消除的效果也就越差。高斯濾波通俗點說就是像素點的值通過其自身及周圍的點加權(quán)平均所得到新的像素點。該方法在消除高斯噪聲方面有很好的表現(xiàn)。 通過比較發(fā)現(xiàn)均值濾波后的圖像盡管能很好的保留物體信息特征,但是邊緣信息被弱化,不利于后續(xù)的目標(biāo)物體輪廓檢測;而高斯濾波方法雖然能夠抑制高斯噪聲,但是過于平滑,導(dǎo)致濾波后的圖像信息缺失嚴(yán)重,圖片較為模糊;在實驗環(huán)境椒鹽噪聲濃度較大的條件下,使用中值濾波后的圖像效果最好,有效地抑制了圖像的噪聲干擾,同時避免了圖像邊緣信息的缺失。
3.1.3 閾值分割
圖像分割是依據(jù)某種準(zhǔn)則將圖像分割成不同區(qū)域再選取目標(biāo)區(qū)域的過程。常用的圖像分割方法有三種:基于區(qū)域的分割、基于閾值的分割和基于特定理論的分割。
基于實驗室環(huán)境環(huán)境噪音、燈光亮度等影響因素下,經(jīng)過灰度化和圖像濾波等處理之后,目標(biāo)物體與背景圖像灰度值有較大差異,因此可以選用閾值法進(jìn)行分割圖像,能更簡單有效地分割出物體。圖像預(yù)處理中常見的閾值分割算法有以下幾種: OTSU分割法:OTSU分割法又稱為最大類間方差法,實現(xiàn)思想是利用目標(biāo)圖像與背景的二值化特性差異將兩者區(qū)別開。OSTU法通過自適應(yīng)方法計算目標(biāo)與背景間的最大類間方差,從而確定最佳閾值。 最小誤差法:最小誤差法屬于一種基于貝葉斯最小誤差分類算法的自適應(yīng)閾值分割法。其核心思想是根據(jù)背景和目標(biāo)對象的像素占圖像總像素比例,計算其混合概率密度并確定分割閾值,然后再計算出目標(biāo)對象與背景之間像素點的錯誤分類概率,當(dāng)概率結(jié)果最小時,即可得到此時的閾值就是最佳閾值。 迭代閾值法:迭代閾值法是根據(jù)原始圖像的灰度直方圖尋找一個近似最佳閾值T,將圖像分成兩個部分,分別求取兩個部分的平均灰度值Ta和Tb,把兩個值的平均值作為新的閾值T1,繼續(xù)重復(fù)以上步驟,直到Ta和Tb穩(wěn)定位置,此時的T1即為最佳分割閾值。
本項目分別采用了迭代閾值法、最小誤差法和OTSU分割法,發(fā)現(xiàn)使用OTSU分割法的效果更好,與背景成功分離并且輪廓干凈清晰沒有噪點,實驗結(jié)果如?圖 3.2所示。
圖 3.2 樣本分析結(jié)果圖
3.2 ? 特征提取
通過圖像預(yù)處理只能獲取所有目標(biāo)物體的二值化圖像,要實現(xiàn)目標(biāo)物體的識別和定位,還需要進(jìn)一步獲取每一個目標(biāo)物體的顏色特征以及幾何中心像素坐標(biāo)。因此還需要進(jìn)行HSV閾值分割、輪廓提取、模板匹配等算法來完成特征提取操作。
3.2.1 HSV顏色分割
在本次項目中,通過顏色特征就可以對目標(biāo)物體進(jìn)行初步識別分類。相較于常見的RGB顏色空間反映出物體具體顏色信息的不直觀性,HSV (Hue:色調(diào), Saturation:飽和度, Value:亮度)顏色空間是一種面向視覺感知的視覺顏色模型,具有更好的辨識度,故本次實驗采用HSV顏色分割算法對目標(biāo)物體的顏色進(jìn)行分割。
3.2.2 輪廓提取
為了獲取每一個目標(biāo)物體的幾何中心像素坐標(biāo),加之在本次任務(wù)中,由于二值化后目標(biāo)物體的形狀特征都是規(guī)則的幾何形狀,故利用OpenCV視覺開發(fā)庫自帶的輪廓檢測函數(shù)(cv2.findContours()函數(shù))即可實現(xiàn)對圖像預(yù)處理后的目標(biāo)圖像進(jìn)行輪廓和像素坐標(biāo)提取。為了看到更直觀的效果,將其顯示在原始圖像上,如圖 3.3所示,圖像顯示的是在HSV顏色分割操作得到紅色目標(biāo)物體后對圖像內(nèi)的所有紅色目標(biāo)物體進(jìn)行了輪廓提取。?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
圖3.3 輪廓提取
3.2.3模板匹配
通過上述操作后,視覺系統(tǒng)雖然得到了每一個目標(biāo)物體的中心像素坐標(biāo),但抓取系統(tǒng)依舊無法區(qū)別開每一個目標(biāo)物體之間的特征。因此,利用OpenCV視覺庫的輪廓識別函數(shù)找到輪廓后,還需要采用模板匹配算法對預(yù)處理后的目標(biāo)進(jìn)一步進(jìn)行匹配。
模板匹配算法的基本原理是提供一個基本模板進(jìn)行比較,在源圖像中找到相似的模板。匹配的過程是將數(shù)據(jù)集中源圖像通過索引與庫中模板(預(yù)先對不同形狀的目標(biāo)物體進(jìn)行拍照,經(jīng)過二值化處理后作為模板庫。)依次進(jìn)行比較,在匹配過程中將模板與圖像比較計算結(jié)果存儲在矩陣中,通過評分模型給出模板在數(shù)據(jù)集中估計的最佳位置。
本項目要抓取目標(biāo)的形狀特征明顯,采用模板匹配法具有較好的識別效果?;谳喞卣鞯哪0迤ヅ湫Ч鐖D3.4所示。
圖 3.4 模板匹配效果
3.3 ?
目標(biāo)定位
基于前面步驟的處理結(jié)果,要得到目標(biāo)在世界坐標(biāo)下的位姿,需要進(jìn)行坐標(biāo)轉(zhuǎn)換。該過程中會涉及到以下四個坐標(biāo)系:世界坐標(biāo)系、相機(jī)坐標(biāo)系、圖像坐標(biāo)系、像素坐標(biāo)系。世界坐標(biāo)系和相機(jī)坐標(biāo)的轉(zhuǎn)換屬于剛體變換(旋轉(zhuǎn)、平移);相機(jī)坐標(biāo)系和圖像坐標(biāo)系利用相似三角原理實現(xiàn)坐標(biāo)變換;圖像坐標(biāo)系和像素坐標(biāo)系利用一組線性變換公式即可得到,故通過上述一系列操作就可以得到像素坐標(biāo)系到世界坐標(biāo)系的轉(zhuǎn)換。 然而,一個物體與相機(jī)的相對位置關(guān)系和這個物體與機(jī)械臂之間的關(guān)系是不一樣的,所以在相機(jī)確定了物體的位置之后,還要把此時的位置轉(zhuǎn)換成相對于機(jī)械臂的位置。這個位置就是由手眼標(biāo)定得出。故手眼標(biāo)定的實質(zhì)就是建立相機(jī)坐標(biāo)系與機(jī)械臂坐標(biāo)系的映射關(guān)系。 同時,為確定三維空間中物體表面某點的幾何位置與其在二維平面圖像中對應(yīng)點之間的相互關(guān)系,必須建立相機(jī)成像的幾何模型,這些幾何模型參數(shù)就是相機(jī)參數(shù)(內(nèi)參、畸變參數(shù))。在大多數(shù)條件下,這些參數(shù)必須通過實驗與計算才能得到,這個求解參數(shù)的過程就稱之為相機(jī)標(biāo)定(或攝像機(jī)標(biāo)定)。 上述通過相機(jī)標(biāo)定得到了三維空間中物體表面某點的幾何位置與其在二維平面圖像中對應(yīng)點之間的相互關(guān)系,同時前文借助OpenCV視覺庫的cv2.findContours()函數(shù)不但能找到目標(biāo)物體的輪廓,還能得到二維圖像上目標(biāo)輪廓的中心像素坐標(biāo),再結(jié)合手眼標(biāo)定得到相機(jī)坐標(biāo)系與機(jī)械臂坐標(biāo)系的映射關(guān)系,此時我們就可以通過矩陣變換實現(xiàn)依次將目標(biāo)物體從像素坐標(biāo)系到圖像坐標(biāo),再到相機(jī)坐標(biāo),最后到世界坐標(biāo)(機(jī)械臂坐標(biāo))的轉(zhuǎn)換,從而得到目標(biāo)物體在機(jī)械臂坐標(biāo)系下的空間位置。實現(xiàn)目標(biāo)定位后,利用運(yùn)動控制節(jié)點即可實現(xiàn)機(jī)械臂對目標(biāo)物體的抓?。ㄒ粴夂浅蓗)。
04
識別抓取實驗
4.1 ? 環(huán)境搭建
本項目采用ROS2GO作為開發(fā)平臺,內(nèi)置Ubuntu 18.04,ROS Melodic環(huán)境,即插即用。
圖 4.1 128G內(nèi)存ROS2GO開箱圖片
(1)創(chuàng)建工作空間并配置機(jī)械臂環(huán)境(xArm六軸機(jī)械臂)
圖 4.2 創(chuàng)建工作空間?
圖 4.3 配置機(jī)械臂的工作環(huán)境
(2)配置攝像頭環(huán)境(D415)
圖 4.4 配置深度相機(jī)的工作環(huán)境
4.2 ? 抓取測試
1)啟動機(jī)械臂xArm6 service server節(jié)點,輸入:
$??? roslaunch xarm_bringup xarm6_server.launch robot_ip:= IP地址將機(jī)器臂與我們的電腦進(jìn)行連接。 2)機(jī)械臂使能,輸入:
$????rosservice?call?/?xarm?/?motion_ctrl?8?1
當(dāng)每個關(guān)節(jié)使能時,就會聽到伺服電機(jī)啟動的聲音。
3)依次設(shè)置正確的機(jī)械臂模式(0:POSE)和狀態(tài)(0:READY),輸入:
$?rosservice?call?/?xarm?/?set_state?0 $?rosservice?call?/?xarm?/?set_mode?0
4)將機(jī)械臂運(yùn)動到指定位置做好抓取準(zhǔn)備。輸入:
$?rosservice?call?/?xarm?/?move_line?[x,x,x,3.14,0,0]?x?x?0?0
5)啟動深度相機(jī)。輸入:
$???roslaunch?realsense2_camera?rs_camera.launch打開深度相機(jī)。 6)用Python調(diào)用抓取代碼,實現(xiàn)機(jī)械臂的自動識別和目標(biāo)抓取。
系統(tǒng)抓取測試啟動腳本如圖 4.5所示。
圖4.5啟動抓取腳本
利用上述方法搭建實驗平臺并進(jìn)行驗證:對桌面上三種形狀(長方體、圓柱體、正方體),三種顏色(紅、綠、藍(lán))共9個物體進(jìn)行抓取,并按照相同形狀進(jìn)行碼垛。
圖 4.6是機(jī)械臂完成第一次抓取任務(wù)的過程。圖 4.6(a)為機(jī)械臂抓取初始狀態(tài)示意圖,此時機(jī)械臂只是使能但未運(yùn)動;圖 4.6(b)是機(jī)械臂運(yùn)動到抓取姿態(tài),方便深度相機(jī)拍到清晰的畫面;圖 4.6(c)是機(jī)械臂識別紅色長方體后進(jìn)行抓取操作;圖 4.6(d)是機(jī)械臂完成抓取并放到預(yù)設(shè)的碼垛區(qū)。
圖 4.6 抓取流程(實際視頻如下)
05結(jié)論及展望
本項目基于實驗室環(huán)境設(shè)計了一種采用視覺引導(dǎo)使機(jī)械臂完成自主抓取的系統(tǒng),對智能抓取系統(tǒng)的軟硬件、目標(biāo)識別與定位等相關(guān)技術(shù)進(jìn)行了分析、研究以及實驗測試,給出了一套較為完整的解決方案,可有效解決傳統(tǒng)的機(jī)械臂抓取系統(tǒng)所存在的適應(yīng)環(huán)境能力差、開發(fā)及使用難度較大等問題。
尤其是,在算法處理方面采用了模板匹配法,實驗結(jié)果表明基于機(jī)器視覺的機(jī)械臂抓取系統(tǒng)能夠滿足在實驗室環(huán)境下自主抓取的要求。
編輯:黃飛
評論
查看更多