馬超+范光宇+張治軍+黃達(dá)+何群
摘要:該文主要對四自由度機械臂控制系統(tǒng)進(jìn)行了研究與設(shè)計,用于識別物體并抓取運輸。首先,該文先對機械臂的整體機械結(jié)構(gòu)進(jìn)行設(shè)計包括它的底座、軀干、以及機械爪等,然后選擇合適的軀干以及鉤爪的驅(qū)動方式,構(gòu)建出機械臂的機械結(jié)構(gòu)部分;然后,我們則對其運動方式進(jìn)行設(shè)計,包括電路控制板和驅(qū)動裝置的選擇,數(shù)據(jù)的接收以及發(fā)送方式,以及后期圖像接口的設(shè)計等;在軟件系統(tǒng)上選擇了可移植能力強大的OpenCV,其提供的視覺處理算法非常豐富強大:掃描圖像對齊、圖像去噪、物體分析等,從而加強控制軟件的可靠性和機器人運行過程的安全性。實驗表明,該機械臂控制系統(tǒng)采用OpenCV不僅具有很好的控制精度,還具有很好的穩(wěn)定性、準(zhǔn)確性,而且在很大程度上改善了定位精度。
關(guān)鍵詞:六自由度機械臂;OpenCV;伺服;制動
中圖分類號:TP302 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2016)33-0227-03
1 機械臂控制系統(tǒng)軟件設(shè)計
1.1 開發(fā)環(huán)境
本設(shè)計的開發(fā)環(huán)境是arduino。Arduino是一款完全開源的電子原型平臺,包含了arduino板和arduino IDE。由歐洲開發(fā)團(tuán)隊開發(fā),使用類似C語言的processing開發(fā)環(huán)境。Arduino可以自行設(shè)計或者購買已經(jīng)焊接好的板子,程序代碼寫在arduino IDE上,實現(xiàn)對arduino板子的控制。
1.2 國內(nèi)外研究現(xiàn)狀
作為近幾十年來發(fā)展起來的一種自動設(shè)備,機械臂可以通過編寫軟件程序來完成目標(biāo)任務(wù),它不僅大部分機械臂共同的機械有點,而且特別具有人的視覺以及判斷能力。在作業(yè)過程中,機械臂控制的準(zhǔn)確性和對環(huán)境的適應(yīng)性,已經(jīng)使其在各個領(lǐng)域有著廣闊的發(fā)展前景。高級類型的機械臂,可以執(zhí)行更復(fù)雜的操作。將機器臂運用于工業(yè)生產(chǎn)過程,除了可以提高生產(chǎn)率之外,還能夠減弱工人的勞動強度,使生產(chǎn)過程實現(xiàn)自動控制。因此機械臂在近幾年得到了愈來愈廣泛的應(yīng)用。
在國外,工業(yè)機器人的發(fā)展已經(jīng)較為成熟,涵蓋于各個行業(yè),已經(jīng)得到了非常廣泛的運用,而相比國內(nèi),我國基礎(chǔ)產(chǎn)業(yè)跟不上,機械設(shè)計的工藝也達(dá)不到一個極高的水平,而且部分設(shè)計不夠系統(tǒng)科學(xué),大多處于一個模仿的階段。以上原因?qū)е挛覈I(yè)機器人在國際上并不能達(dá)到一個較高的水準(zhǔn)。如今國內(nèi)企業(yè)需要革新自己的技術(shù),加強學(xué)習(xí)才能在國際市場上占有一席之地。
1.3 總體思路
1.3.1 機械臂軟件設(shè)計核心思路
攝像頭采集視頻圖像->利用OpenCV獲得圖像的一幀->對此幀圖像進(jìn)行濾波處理->將圖像序列幀由RGB模型轉(zhuǎn)為HSV模型->對得到的二值圖像進(jìn)行輪廓檢測->創(chuàng)建回調(diào)函數(shù)并對得到的三幅圖像進(jìn)行合并->創(chuàng)建滑動條窗口->將得到的圖像分為H,S,V三幅單通道圖像->在目標(biāo)體上繪制輪廓。
本文提到的OpenCV函數(shù)庫是一個開源的跨平臺的視覺圖像處理庫,利用此庫中提供的開源算法并加以邏輯上的改進(jìn)來提取攝像頭中幀圖像,再使用顏色閾值調(diào)節(jié)功能進(jìn)行顏色識別,再對結(jié)果進(jìn)行一系列的處理達(dá)到預(yù)期要求。
1.3.2 OpenCV簡介
OpenCV是一個基于開源發(fā)型的跨平臺計算機視覺庫,可以運行在眾多操作系統(tǒng)上,由一系列C函數(shù)和C++類構(gòu)成,輕量且高效,其提供的視覺處理算法非常豐富,被大量使用于眾多科學(xué)領(lǐng)域,衛(wèi)星地圖的圖像整合拼湊;醫(yī)學(xué)界病人器官圖像的去噪處理;安全系統(tǒng)中的物體動態(tài)監(jiān)測而預(yù)警;軍事行動中代替人眼而進(jìn)行眾多無人操作與活動,不光如此,在圖像處理能力外,還能對聲譜圖進(jìn)行識別操作從而進(jìn)行對聲音的識別。
1.4 單一模塊
1.4.1 顏色識別
顏色識別的首當(dāng)之事應(yīng)是正確選取顏色空間,常用的顏色空間有RGB、CMY、HSV、HIS等。本文采用RGB和HSV。
RGB(紅、綠、藍(lán))可以看成一個三維的坐標(biāo)系,一個坐標(biāo)點表示一種顏色。HSV是顏色空間模型。表示顏色的是Hue,與坐標(biāo)點不同,他使用有角度的圓形來表示相應(yīng)顏色,比坐標(biāo)點更加靈活。表示飽和度的是Saturation,飽和度越低,則顏色填充就越少,例如圓心處取值為0,那么顏色會非常的淡,從底部往上,圓的半徑r越來越大,那么顏色就會越來越深。表示顏色的亮度的是Value,同理,也是從圓錐底端到頂端的數(shù)值漸變,底部表示為黑色,而頂端表示為白色。在實際實驗環(huán)境中,RGB顏色經(jīng)測驗非常容易受到強光、弱光、陰影等其他因素的干擾。相比之下,HSV空間能更加穩(wěn)定的處理這些光照的變化從而能更好地反應(yīng)顏色本質(zhì)、傳達(dá)正確信息。
1.4.2 圖像獲取與處理
1.4.2.1 圖像獲取與預(yù)處理
利用體感周邊外設(shè)中強大的Kinect攝像頭(VideoCapture(…))獲取周圍環(huán)境圖像,讀取一張圖片或視頻中的一幀圖像,進(jìn)行兩次濾波后利用cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV)函數(shù)進(jìn)行RGB與HSV的轉(zhuǎn)換,再在HSV空間下對彩色圖像做直方圖均衡化。
高斯濾波函數(shù):cvSmooth(…CV—GAUSSIAN…)。真實圖像的鄰近點像素如果變化,不會十分明顯,因為真實圖像的像素點是緩慢遷移變化的,但是如果兩個像素點倏忽變化的話,便會有很大的像素差,就是我們說的噪點,這時候便要用到廣泛用于圖像處理的減噪的高斯濾波,他對整幅圖進(jìn)行加權(quán)平均,從而能夠減少噪聲卻又不失真(保留信號)。
中值濾波函數(shù):cvSmooth(…CV—MEDIAN…)。有時候圖像中會有孤立的噪聲點從而會形成較大差異,這樣會影響平均值也會產(chǎn)生較大噪音,所以便使用非線性平滑的中值濾波,他把圖像中的孤立的噪聲點用其領(lǐng)域中各個點值的中值代替從而有效的去噪并且能夠保護(hù)信號邊緣使之不模糊,其算法也十分簡單。
1.4.2.2 圖像細(xì)處理與生成
創(chuàng)建滑動條:返回所讀取的顏色參數(shù)闕值。本文設(shè)定了6個參數(shù):
[LowHue(色度下限值)HighHue(色度上限值)LowSaturation(飽和度下限值)HighSaturation(飽和度上限值)HighBrightness(亮度上限值)LowBrightness(亮度下限值)]
之后得到返回的參數(shù)闕值,便用于檢查圖像像素灰度是否在設(shè)置的范圍內(nèi)并且可以得到目標(biāo)顏色的色度、飽和度和亮度單通道圖像。
將得到的三個單通道圖像進(jìn)行按位與運算,這樣便能檢測其二值圖像,由于此時會出現(xiàn)噪聲,所以采用膨脹腐蝕的方法進(jìn)行圖像形態(tài)學(xué)處理,使得到的目標(biāo)體進(jìn)行最大的連通。
圖像生成:查找輪廓和繪制輪廓,輪廓正確勾勒,圖像便能正確顯示。利用OpenCV中對灰度圖像處理的Canny邊緣檢測法(cvCanny(…)),將試圖獨立的候選像素拼裝成輪廓,輪廓的形成是對這些像素運用滯后性闕值,Canny邊緣檢測算法是高斯函數(shù)的一階導(dǎo)數(shù),是對信噪比與定位精度之乘積的最優(yōu)化逼近算子。
Canny函數(shù)輸入輸出的都為灰度圖,在邊緣檢測完成后,利用“cvFindContours(…)”函數(shù)得到輸出的圖像的輪廓函數(shù)(在二值圖像中),檢測輪廓個數(shù),然后再用“cvDrawContours(…)”函數(shù)繪制檢測的輪廓。
2 機械臂控制系統(tǒng)硬件設(shè)計
2.1 自由度及關(guān)節(jié)
本機械手臂采用4個電機實現(xiàn)4自由度,進(jìn)行手臂的升降,轉(zhuǎn)動,抓取,移動等功能。
2.2 基座及連桿
2.2.1 基座
基座是機械手臂的支撐,起到穩(wěn)固的作用,為了使機械手臂更加的穩(wěn)定,增大其與表面的接觸面積,降低重心,提升其穩(wěn)定性能。同時,基座的剩余部分,可用于防止控制的單片機及其擴(kuò)展版,使空間充分利用。
2.3 機械手臂設(shè)計
機械手是機械行業(yè)中必不可少的一個部分,主要起到操作,轉(zhuǎn)移等功能。根據(jù)工件的不同,機械手的精度,重量,形狀,光滑程度等都會不一樣,以至于達(dá)到節(jié)省成本或準(zhǔn)確夾取工件等實際要求。一般機械手包括:1)靈巧手;2)吸附手;3)夾取手;4)專用操作器。本設(shè)計因?qū)崿F(xiàn)的主要功能是夾取物體并轉(zhuǎn)移,工件物體不確定,因此采用夾取手作為機械手臂的機械手進(jìn)行操作。
2.4 驅(qū)動方式
調(diào)用Servo實現(xiàn)對舵機的控制,定義多個舵機,控制多個舵機,具體內(nèi)容根據(jù)實際情況進(jìn)行調(diào)試。采用for語句,當(dāng)紅外或者視覺采集到數(shù)據(jù),給予反饋,實現(xiàn)舵機的停止或執(zhí)行下一步。舵機的轉(zhuǎn)動的角度通過脈沖寬度占空比實現(xiàn)。由于舵機牌子不同,舵機轉(zhuǎn)動的角度也會不同。
本機械手臂通過電機的扭矩進(jìn)行傳動。手臂的升降,轉(zhuǎn)動,抓取都是由能夠承受很大力的電機進(jìn)行完成。在機械手臂抓取物體時,盡量的平穩(wěn),并且力不能夠過大或者過輕,移動時活動空間大。
機械行業(yè)一般常用的驅(qū)動方式有液壓驅(qū)動,電機驅(qū)動和氣壓驅(qū)動三種方式,每種驅(qū)動方式各有優(yōu)劣。本設(shè)計機械手臂中,要求驅(qū)動時滿足一下條件:1)輸出功率適中,效率高;2)精準(zhǔn)度盡可能的高;3)便于維護(hù),調(diào)試;4)安全性高;5)成本低。
綜上所述,本設(shè)計采用電機驅(qū)動的方式對機械手臂進(jìn)行驅(qū)動。電機參數(shù)如表所示:
本機械手臂采用控制角度的方式控制手臂。在初始位確定的情況下,通過控制角度,實現(xiàn)電機的轉(zhuǎn)動,其優(yōu)點是,能夠精確控制位置,但是因為需要進(jìn)行初始位置,導(dǎo)致運行時間過長。本文設(shè)計方案傳動方式為舵機直接傳動,故不多作介紹。
3 結(jié)論
機械臂控制系統(tǒng)是當(dāng)今社會的一項非常重要的研究課題,盡管其發(fā)展已經(jīng)有了一段很長的歷史,但是其發(fā)展并不完全成熟。無論是學(xué)術(shù)界、工業(yè)還是在教育教學(xué)方面都一直在進(jìn)行著這方面的研究,距離成熟階段還要有一段時間。
本設(shè)計是基于OpenCV六自由度機械臂驅(qū)動系統(tǒng)的設(shè)計,以六自由度機械臂為控制對象,以arduino為開發(fā)環(huán)境,輔以有著豐富視覺處理算法的OpenCV軟件,并在此基礎(chǔ)上,采用先進(jìn)的控制理論,以正確的控制方法為指導(dǎo),進(jìn)行了系統(tǒng)的硬件設(shè)計。
在整個系統(tǒng)的設(shè)計中,硬件的設(shè)計是本論文研究的重點,芯片的選型是系統(tǒng)硬件設(shè)計的保證,并且輔以可靠性分析為指導(dǎo),保證了系統(tǒng)運行的可靠性和穩(wěn)定性。
從實驗結(jié)果中看出,我們設(shè)計制作的基于OpenCV的四自由度機械臂能夠和一些中小型機器人控制器的性能要求類似,在操作靈活度、控制精度、易操作性等方面都表現(xiàn)出優(yōu)秀的性能。然而,仍有一些不足之處需要進(jìn)一步的改進(jìn)。
1)機械臂的傳感器提升。作為機械臂的控制對象,其結(jié)構(gòu)、性能的優(yōu)劣成為了機械臂的重中之重、中流砥柱,為了實際運行效果的完美,我們機械臂的手爪部分應(yīng)加入壓力等傳感器,為控制的精準(zhǔn)提供、保證更為完整的信息。
2)完善機械臂自動控制算法。算法的優(yōu)良決定了機械臂是否能自動協(xié)調(diào)運行,特別在輸入?yún)?shù)和機械臂抓取后的運輸,需要更加優(yōu)化、靈活的算法,從而將計算出的控制參數(shù)變得更加精確和一體。
3)視覺的廣泛性運用。視覺不單單只作用與顏色的閾值識別,還包括如骨骼識別,輪廓識別等等,再后續(xù)的研究中,添入以上功能,可以使機械臂的作用范圍變得更加的廣泛。
鑒于上述情況,在以后的工作中,我們應(yīng)該不斷改進(jìn)、完善,以提高該機械臂系統(tǒng)的穩(wěn)定性以及可靠性。
參考文獻(xiàn):
[1] 方龍,陳丹,肖獻(xiàn)保.基于單片機的機械手臂控制系統(tǒng)設(shè)計[J].計算機與信息技術(shù),2012,8(8):89-90.
[2] 任美玲.機械臂的研究與進(jìn)展[J].出國與就業(yè),2012(2):84-85.
[3] 劉少麗.淺談工業(yè)機械手設(shè)計[J].工業(yè)自動化,2011,40(7):45-46.
[4] 毛星云.OpenCV3編程入門[M].電子工業(yè)出版社,2015.
[5] 程晨.自律型機器人制作入門[M].基于Arduino.北京航空航天大學(xué)出版社,2013.
[6] (美)Don.Wilcher.學(xué)ARDUINO玩轉(zhuǎn)電子制作[M].翁愷,譯.人民郵電出版社,2013.
[7] 孫駿榮,吳明展,盧聰勇.Arduino一試就上手[M].科學(xué)出版社,2013.
[8] (德)烏爾里?!し粕釥?簡明機械手冊[M].2版.楊放瓊,編.湖南科學(xué)技術(shù)出版社,2012.
[9] 陳明秋.機械制圖[M].武漢理工大學(xué)出版社,2009.
[10] 岡薩雷斯.數(shù)字圖像處理[M].電子工業(yè)出版社,2011.
[11] 侯賓,張文志,戴源成,等.基于OpenCV的目標(biāo)物體顏色及輪廓的識別方法[J].現(xiàn)代電子技術(shù),2014(24).