陳再師++劉任任
摘要:在機(jī)器人技術(shù)快速發(fā)展與持續(xù)完善的大環(huán)境下,工業(yè)機(jī)械手臂被廣泛運(yùn)用于工業(yè)領(lǐng)域中,其發(fā)展與應(yīng)用意義重大。該論文采用TQ210開發(fā)板作為系統(tǒng)的主控模塊,通過移植OpenCV視覺庫到主控板,實(shí)現(xiàn)智能機(jī)械手臂的構(gòu)建。在滿足一定環(huán)境的要求下,它可以完全智能地抓取限定工作臺(tái)面的物體。同時(shí),它也可通過實(shí)時(shí)抓幀,測量周圍物體的坐標(biāo)位置,調(diào)整自身參數(shù),實(shí)現(xiàn)其適應(yīng)、交互的智能特性。
關(guān)鍵詞:智能機(jī)械手臂;OpenCV視覺庫;嵌入式系統(tǒng);機(jī)器人控制
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)25-0118-02
1 引言
隨著工業(yè)4.0概念的推廣,在機(jī)器人技術(shù)快速發(fā)展與持續(xù)完善的大環(huán)境下,機(jī)械手臂現(xiàn)已廣泛地運(yùn)用于各工業(yè)領(lǐng)域中,其發(fā)展與應(yīng)用有著十分重要的意義。在國內(nèi),機(jī)器手臂的研究起始于上世紀(jì)七十年代,相比于西方發(fā)達(dá)國家,我國對機(jī)械手臂的研究起步較晚,技術(shù)也相對落后。由于機(jī)械手臂可以實(shí)現(xiàn)更快、更精確地抓舉物品、安裝零件,可以更高強(qiáng)度的連續(xù)工作,所以現(xiàn)在人們開始把更多的精力用在了機(jī)械手臂的研究和制造上,期望它能給人類帶來更多經(jīng)濟(jì)價(jià)值[1-4]。
現(xiàn)在所使用的機(jī)械手臂,大部分都是采用示教控制,即都是事先編好程序,使機(jī)械手臂按照一定的邏輯順序從一個(gè)位置運(yùn)動(dòng)到另一個(gè)位置,這種控制方法對于流水線工作是簡單有效的。但是當(dāng)運(yùn)動(dòng)環(huán)境發(fā)生變化的時(shí)候,機(jī)械手臂還是會(huì)按照原來的編程好的路徑運(yùn)動(dòng),往往不能達(dá)到期望的位置,這就缺少了運(yùn)動(dòng)自主性。所以機(jī)械手臂的運(yùn)動(dòng)原理和核心控制系統(tǒng)就成為了機(jī)械手臂能夠自由運(yùn)動(dòng),抓放的基礎(chǔ),而控制核心的基石便是機(jī)械手臂的驅(qū)動(dòng)技術(shù)的設(shè)計(jì)和研究。只有將機(jī)械手臂的運(yùn)動(dòng)系統(tǒng)的驅(qū)動(dòng)與機(jī)械手臂運(yùn)動(dòng)系統(tǒng)算法很好的融合,才可以隨時(shí)識別新的工作環(huán)境,動(dòng)態(tài)調(diào)整手臂的運(yùn)動(dòng)路徑,使得手臂能夠準(zhǔn)確定位目標(biāo)物體。但目前機(jī)械手臂的研究還不是特別成熟和完善,很多成果只是單方面的或是基于仿真條件下的,所以本論文以實(shí)際對象為背景,對機(jī)械手臂運(yùn)動(dòng)的研究具有一定的理論和現(xiàn)實(shí)意義。
2 總體設(shè)計(jì)
系統(tǒng)主要是用6個(gè)mg995伺服舵機(jī)+16路舵機(jī)控制板實(shí)現(xiàn)機(jī)器人手臂的硬件動(dòng)作部分;用TQ210+16路舵機(jī)控制板為核心實(shí)現(xiàn)機(jī)械手臂的控制部分;TQ210 +USB攝像頭實(shí)現(xiàn)信息采集處理部分[5-6]。
系統(tǒng)的硬件平臺(tái)主要由五部分組成:主控制板(TQ210)、USB攝像頭、運(yùn)動(dòng)控制單元,如圖1所示。其中,主控制板是TQ210開發(fā)板,它包含基S5PV210微處理器等硬件。運(yùn)動(dòng)控制單元為16路伺服舵機(jī)控制板和機(jī)械手臂,通過串口與主控制板相連實(shí)現(xiàn)機(jī)器人的動(dòng)作控制。
3 詳細(xì)設(shè)計(jì)
3.1機(jī)械手臂動(dòng)作系統(tǒng)的硬件連接
由于本機(jī)器手臂的動(dòng)作組是下載在舵機(jī)控制板中,因此主控制板可以根據(jù)所需的不同場景,發(fā)動(dòng)不同的動(dòng)作指令調(diào)取不同的動(dòng)作組,使機(jī)器人能夠做出相應(yīng)的動(dòng)作。具體方法如下:
(1)將舵機(jī)控制板的USB插針用跳線連接,通過miniUSB將控制板與PC相連。
(2)安裝驅(qū)動(dòng),通過Windows環(huán)境下載動(dòng)作組,雙擊安裝。
(3)安裝上位機(jī)軟件環(huán)境,上位機(jī)軟件需要有Microsoft.Net Framewoks2.0的支持。
(4)使用上位機(jī)軟件下載動(dòng)作。
下面以初始化動(dòng)作組為例:控制以下六個(gè)多級到預(yù)設(shè)位置#0 P800 #1 P1500 #2 P1800 #3 P1800 #4 P1800 #5 P1800。選擇動(dòng)作組0,單擊下載按鈕,此預(yù)設(shè)動(dòng)作組即被下載到舵機(jī)控制板256地址被自動(dòng)編號為0動(dòng)作組,下一個(gè)地址便是從498開始下載了。
舵機(jī)控制板與TQ210的串口TX1相連,+極連接VDD5V,-極連接GND,使用串口1為TQ210與舵機(jī)板的通信提供硬件基礎(chǔ),使用串口2為TQ210與Arduino通信提供基礎(chǔ),串口0作為pc的打印終端使用,具體如圖2所示。
3.2 主控制板的RS232通信方法
主控制板與舵機(jī)控制板以及Arduino拓展版的通信方法均是通過RS232方法實(shí)現(xiàn)信息傳輸。S5PV210可以方便地利用UART控制器(TQ210實(shí)驗(yàn)板的UART控制器為SP3232EEN)實(shí)現(xiàn)串口通訊功能。如圖3所示。
S5PV210屬于常規(guī)的電平轉(zhuǎn)換芯片,其作用在于:實(shí)現(xiàn)53C2440端的TTL電平和RS232串口協(xié)議標(biāo)準(zhǔn)規(guī)定的電平兩者之間的靈活切換。嵌入式Linux內(nèi)核在主控制板內(nèi)運(yùn)作的情況下,在重編譯移植的工作中將所支持的串口驅(qū)動(dòng)加入配置選項(xiàng)里面。其連接串口的方式可分成三種類型,其主控板里面的三線串口引腳中的RXD、TXD連接的分別是Arduino平臺(tái)中的引腳TXD、RXD,一般情況上,其他針角連接GND針腳,或干脆懸空。該系統(tǒng)內(nèi)串口0與/dev/ttys0相對應(yīng),串口1與/dev/ttys1相對應(yīng),串口2實(shí)現(xiàn)了系統(tǒng)指令和傳感信息兩者的傳輸,與之相應(yīng)的設(shè)備文件是/dev /ttyS2。TQ210的實(shí)驗(yàn)板有三個(gè)串口接口,其中只有串口0與SP3232相連,本系統(tǒng)就是用此串口0作為開發(fā)板與宿主機(jī)的串口終端鏈接,進(jìn)行控制;采用串口1與舵機(jī)控制板相連,組成是機(jī)械手臂動(dòng)作模塊,用以實(shí)現(xiàn)主機(jī)控制手臂動(dòng)作。
3.3 控制指令的編碼設(shè)計(jì)
機(jī)器人運(yùn)動(dòng)控制和內(nèi)部傳感器信息采集單元通過串口實(shí)現(xiàn)與上位機(jī)兩者之間的通訊。其控制指令集:#
具體釋義如下:
舵機(jī)控制板可以直接提取以上控制指令加以執(zhí)行。如:"#5 P1600 S750 ",表示移動(dòng)舵機(jī)號5到脈寬 1600us 速率為每秒移動(dòng)脈寬750微秒;"#5 P1600 #10 P750 T2500 ",表示移動(dòng)舵機(jī)號5 到脈寬1600us移動(dòng)舵機(jī)號10到脈寬750us使用時(shí)間為2500ms。
3.4 OpenCV圖像處理
OpenCV[7,8]調(diào)試開發(fā)是在Windows下通過vs2008完成的,項(xiàng)目集成在Linux下進(jìn)行,具體如下:
(1)Windows下安裝OpenCV主要使用cmake工具將源碼配置好,再使用vs2008打開工程編譯生成動(dòng)態(tài)鏈接庫。
C:\ OpenCV-2.1.0\VS-2008\include\OpenCV
C:\ OpenCV-2.1.0\VS-2008\lib
C:\ OpenCV-2.1.0\VS-2008\bin,三個(gè)目錄分別存放了OpenCV開發(fā)依賴的頭文件,動(dòng)態(tài)連接及可執(zhí)行文件。然后在配置vs2008就可以使用OpenCV開發(fā)了。
(2)Linux的安裝主要修改makefile,給ubuntu安裝OpenCV需要的依賴庫,
[sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev]和[libjpeg62-dev libtiff4-dev libswscale-dev libjasper-dev]。使用cmake生成makefile,然后編譯安裝就能生成OpenCV的庫文件。
OpenCV圖像處理過程具體如下:
(1)抓取一幀圖片并灰度處理。
(2)通過極值處理提取輪廓。
(3)判斷物體輪廓分布在哪片區(qū)域再返回轉(zhuǎn)向坐標(biāo)指令。
3.5 機(jī)械手臂根據(jù)物體位置確定動(dòng)作組
根據(jù)攝像頭和機(jī)械手臂建立的坐標(biāo)系,確定機(jī)械手臂的運(yùn)動(dòng)控制庫。根據(jù)OpenCV返回的物體位置,直接匹配運(yùn)動(dòng)控制庫,實(shí)現(xiàn)根據(jù)物體在坐標(biāo)系中的位置規(guī)劃機(jī)械手臂運(yùn)動(dòng)抓取物體的目的。
首先將串口指令封裝,void HandMove(int num,int degree,int time)函數(shù)用來控制伺服電機(jī)并適當(dāng)延時(shí),隨后根據(jù)物體位置調(diào)用運(yùn)動(dòng)控制庫,匹配動(dòng)作組啟動(dòng)機(jī)械手臂抓取物體。
物體以機(jī)械手臂基座的位置為圓心呈一定角度和距離,角度和距離根據(jù)OpenCV像素坐標(biāo)計(jì)算得出,物體坐標(biāo)封裝在結(jié)構(gòu)體struct Location變量goal中,直接通過函數(shù)計(jì)算得出。
distance = sqrt(goal.X*goal.X + goal.Y*goal.Y);
angle =180.0/3.14159*atan2(goal.X,goal.Y);
再通過HandMove(1,1500-angle*8,800);調(diào)整底座舵機(jī)直接轉(zhuǎn)向物體,匹配動(dòng)作組抓取物體。
好的機(jī)械手臂應(yīng)具備學(xué)習(xí)能力,我設(shè)計(jì)的這款機(jī)械手臂也不例外。當(dāng)機(jī)械手臂完成抓取物體之前的任務(wù)后,會(huì)提醒用戶是否啟動(dòng)學(xué)習(xí)模式,這時(shí)候用戶選擇學(xué)習(xí)即可通過圖形界面在線調(diào)整機(jī)械手臂,系統(tǒng)將自動(dòng)記錄更新后的運(yùn)動(dòng)數(shù)據(jù),系統(tǒng)下次將自動(dòng)調(diào)用新的動(dòng)作庫數(shù)據(jù)。
4 結(jié)論
本作品通過運(yùn)用嵌入式開發(fā)中的某些技術(shù),實(shí)現(xiàn)了機(jī)械手臂的智能化,具體總結(jié)如下:
(1)以TQ210開發(fā)板作為整個(gè)工作系統(tǒng)的控制主板,對各種數(shù)據(jù)信號進(jìn)行了相關(guān)處理。
(2)以O(shè)penCV作為視覺庫,實(shí)現(xiàn)了機(jī)械手臂對物體實(shí)施抓取動(dòng)作的路徑設(shè)計(jì)。
(3)在一定環(huán)境下,機(jī)械手臂可不接受外界控制完全自主執(zhí)行抓取動(dòng)作。
(4)能通過實(shí)時(shí)抓幀、測量周圍的物體的坐標(biāo)位置,調(diào)整自身參數(shù),以實(shí)現(xiàn)其適應(yīng)、交互的智能特性。
由于在時(shí)間和實(shí)驗(yàn)條件上的限制,在實(shí)驗(yàn)數(shù)據(jù)的采集、理論方法和實(shí)際控制等方面都存在一些不足之處,總結(jié)如下:
(1)機(jī)械手臂抓取目標(biāo)物體的路徑,不僅僅只能通過OpenCV進(jìn)行圖像處理得到,還可以通過建模,運(yùn)用智能優(yōu)化算法得到,如:蟻群算法、粒子群算法,禁忌搜索算法等。
(2)機(jī)械手臂自由度比較有限,抓取范圍和抓取物體都受到一定的限制,還不能360度地旋轉(zhuǎn)。
(3)運(yùn)動(dòng)控制庫建立比較欠缺,待完善。
參考文獻(xiàn):
[1] 高微,楊中平,趙榮飛,等.機(jī)械手臂結(jié)構(gòu)優(yōu)化設(shè)計(jì)[J].機(jī)械設(shè)計(jì)與制造,2006(1):13-15.
[2] 劉偉,齊曉慧.基于視覺的機(jī)械手臂自主抓物的實(shí)現(xiàn)[J].兵工自動(dòng)化,2008(12):79-80.
[3] Bicchi A, Tonietti G. Fast and "soft-arm" tactics [robot arm design]. IEEE Robotics & Amp Amp Automation Magazine, 2004, 11(2):22-33.
[4] Khan S G, Grafi M A. Humanoid Robot Arm Adaptive Control: Experimental Implementation. Journal of Applied Sciences, 2014, 14(19):2267-2275.
[5] 徐中林.基于Arduino平臺(tái)頻率、占空比測試儀器的制作[J].滄州師范學(xué)院學(xué)報(bào),2015(1):38-41.
[6] 劉澤良,胡日新.物聯(lián)網(wǎng)技術(shù)下基于Arduino的智能公交系統(tǒng)模型設(shè)計(jì)[J].實(shí)驗(yàn)技術(shù)與管理,2014(11):140-143.
[7] Bradski G. The OpenCV Library. Doctor Dobbs Journal, 2000, 25(11):384-386.
[8] 劉瑞禎.OpenCV教程[M].北京:北京航空航天大學(xué)出版社,2007.