前言:想要寫出一篇引人入勝的文章?我們特意為您整理了機(jī)械臂控制與仿真體系范文,希望能給你帶來靈感和參考,敬請閱讀。
1引言
在以往的仿真與控制項目中,人們主要通過兩種方式進(jìn)行設(shè)計,一種是采用傳統(tǒng)的編程語言進(jìn)行設(shè)計,如VB、VC++等;另一種是通過在三維建模軟件上進(jìn)行二次開發(fā)來實現(xiàn),如Auto-CAD、UG等。前者在驅(qū)動控制方面的實現(xiàn)較為容易,但在仿真設(shè)計上過于繁瑣,后者則與之相反。LabVIEW不僅具有優(yōu)秀的軟件開發(fā)環(huán)境,也是功能強(qiáng)大的自動化測試工具?;贚abVIEW的機(jī)械臂控制與仿真系統(tǒng)利用三維圖形顯示控件構(gòu)建機(jī)械臂的仿真顯示平臺,使用NIUSB_6211數(shù)據(jù)采集卡和74HC138N為機(jī)械臂提供控制信號,可快速實現(xiàn)對機(jī)械臂的仿真與控制,縮短開發(fā)周期。此外,本系統(tǒng)還通過軟件編程解決了仿真模型與實際機(jī)械臂的同步問題,實現(xiàn)了舵機(jī)的平滑轉(zhuǎn)動功能。同時,拓展了NIUSB_6211數(shù)據(jù)采集卡的用途。
2系統(tǒng)體系結(jié)構(gòu)
本系統(tǒng)包括仿真程序、控制模塊和執(zhí)行終端三個部分。其中仿真程序先從電子表格文件(.xls)中讀取模型數(shù)據(jù)完成靜態(tài)模型的建立,再根據(jù)用戶的操作信息對機(jī)械臂的運動學(xué)方程進(jìn)行求解,最終實現(xiàn)對機(jī)械臂的動態(tài)仿真;控制模塊主要負(fù)責(zé)將用戶的操作信息轉(zhuǎn)換成控制所需的電信號,并通過控制電路將控制信號傳給系統(tǒng)的執(zhí)行終端(五自由度的機(jī)械臂)。如圖1所示:
3系統(tǒng)簡介
3.1仿真程序
本項目利用LabVIEW提供的三維參數(shù)曲面圖形顯示控件構(gòu)建機(jī)械臂的三維仿真顯示平臺。靜態(tài)建模時,先在X-Z平面內(nèi)繪制出機(jī)械臂各桿件的平面圖形,構(gòu)建一個包含各桿件平面坐標(biāo)的數(shù)組(xi,0,zi),根據(jù)各桿件的尺寸比例將其沿Y方向平移yi后可得到一新的數(shù)組(xi,yi,zi)(此時,若將這兩個數(shù)組傳給三維參數(shù)曲面函數(shù)可繪制出一個沒有端面的空腔模型);再利用“翻轉(zhuǎn)數(shù)組函數(shù)”對上述兩個數(shù)組進(jìn)行翻轉(zhuǎn)操作后即可得到各桿件的封閉立體模型。本項目中作者通過設(shè)計“二維轉(zhuǎn)三維.vi”(程序框圖如圖2)實現(xiàn)了上述功能,并將轉(zhuǎn)換得到的立體模型數(shù)據(jù)存入電子表格。最后,根據(jù)機(jī)械臂各部分的位置關(guān)系,將各桿件的立體模型坐標(biāo)數(shù)據(jù)在坐標(biāo)系中進(jìn)行適當(dāng)平移后傳給三維參數(shù)曲面函數(shù)完成對機(jī)械臂的靜態(tài)模型建立(參見圖4)。實現(xiàn)動態(tài)仿真時,需要先對機(jī)械臂各桿件的運動學(xué)方程進(jìn)行求解,得到各桿件的齊次變換矩陣。如式(1):式中:ROT(z,θ)是實現(xiàn)使仿真模型繞Z軸旋轉(zhuǎn)的齊次變換矩陣,也叫作旋轉(zhuǎn)算子;θ是各關(guān)節(jié)的旋轉(zhuǎn)角度(規(guī)定逆時針旋轉(zhuǎn)時為正);c和s分別表示和。本項目中為了方便程序編寫將上述旋轉(zhuǎn)算子逆推一步,得到形如式(2)的旋轉(zhuǎn)算子:其中x1、y1、z1是起始位置坐標(biāo),x2、y2、z2是目標(biāo)位置坐標(biāo)。得到各桿件的旋轉(zhuǎn)算子之后,還需要解決各部件運動時發(fā)生分離的問題,本項目中作者通過“平移連接.vi”使后一桿件的坐標(biāo)系始終以前一桿件的末端坐標(biāo)為原點,使問題得到了解決。表1給出了機(jī)械臂各桿件的運動情況和對應(yīng)的旋轉(zhuǎn)算子組合:
3.2控制程序與控制電路
本項目利用NIUSB_6211數(shù)據(jù)采集卡作為機(jī)械臂的控制單元,拓展了數(shù)據(jù)采集卡的應(yīng)用領(lǐng)域。由于NIUSB_6211數(shù)據(jù)采集卡只有四路數(shù)字輸出端口,不能同時為五個舵機(jī)提供控制信號,因此作者使用74HC138N譯碼器,來實現(xiàn)對數(shù)據(jù)采集卡I/O口數(shù)目的擴(kuò)展。具體過程為:先由控制程序?qū)IUSB_6211數(shù)據(jù)采集卡的端口p1.3、p1.2、p1.1定義為數(shù)字輸出,將p1.0定義為時鐘輸出(即輸出PWM信號);再把74HC138N的3個輸入端C、B、A與數(shù)據(jù)采集卡的p1.3、p1.2、p1.1相連(實現(xiàn)對舵機(jī)的選擇),使能端G1與p1.0相連(控制舵機(jī)轉(zhuǎn)動角度),接地端GND和兩個低使能端(~G2A,~G2B)都接到數(shù)據(jù)采集卡的GND上。這樣只需三路數(shù)字輸出和一路時鐘輸出就可以實現(xiàn)對8(23)個舵機(jī)的選擇與控制。圖3是控制電路的原理圖:
3.3執(zhí)行終端
本項目中采用一個五自由度機(jī)械臂作為系統(tǒng)的執(zhí)行終端。使用前作者先對機(jī)械臂初始工作位置進(jìn)行了定義,測定了舵機(jī)實際工作脈沖(PWM)的范圍,確定了PWM值從小到大變化時對應(yīng)機(jī)械臂的轉(zhuǎn)動方向。
4同步與平滑轉(zhuǎn)動的實現(xiàn)
4.1仿真模型與實際機(jī)械臂同步
本系統(tǒng)的執(zhí)行終端沒有安裝向計算機(jī)回傳數(shù)據(jù)的傳感器,為了使仿真模型與實際機(jī)械臂同步運行,作者通過軟件編程來實現(xiàn)同步。基本原理是:使控制指令(機(jī)械臂轉(zhuǎn)動的角度值)同時被仿真程序和控制程序執(zhí)行,并在新指令到來時進(jìn)行判斷;若當(dāng)前控制指令已經(jīng)被仿真程序和控制程序執(zhí)行完畢,則傳入新指令,否則進(jìn)行等待,直到當(dāng)前指令被執(zhí)行完畢。
4.2舵機(jī)平滑轉(zhuǎn)動
根據(jù)舵機(jī)的工作特點可知,PWM值與舵機(jī)軸的位置一一對應(yīng),用戶輸入一個值后,舵機(jī)將瞬間轉(zhuǎn)到該位置;顯然,如果用戶輸入的前后兩個值相差很大,舵機(jī)將在瞬間轉(zhuǎn)過一個很大的角度,這對機(jī)械臂來說是相當(dāng)危險的。解決的方法是:控制程序?qū)τ脩糨斎氲那昂髢蓚€值進(jìn)行比較,若當(dāng)前值比前一值大,則在前一值上+0.01,一直加到與當(dāng)前值相等;若當(dāng)前值比前一值小,則在前一值上-0.01,一直減到與當(dāng)前值相等。這樣,舵機(jī)的轉(zhuǎn)速將近似為0.056rad/s(1°/50ms),從而使機(jī)械臂能夠平滑轉(zhuǎn)動。
5人機(jī)接口
本系統(tǒng)為用戶提供兩種輸入控制指令的方式:一種是直接通過鼠標(biāo)點擊前面板上的表盤實現(xiàn)控制指令的輸入;另一種是通過鍵盤實現(xiàn)控制指令的輸入。其中鍵盤操作說明如下:小鍵盤上的01234數(shù)字鍵用于指定欲工作舵機(jī)的編號,WSAD鍵用于控制舵機(jī)的旋轉(zhuǎn)角度,并規(guī)定按下“A或S”時舵機(jī)逆時針旋轉(zhuǎn);按下“D或W”時舵機(jī)順時針旋轉(zhuǎn)。如果按下的鍵不在上述情況中,則會在操作提示文本框里顯示“按鍵錯誤”字樣。圖4為機(jī)械臂仿真與控制系統(tǒng)的前面板:
6總結(jié)
本文介紹了一種基于LabVIEW的機(jī)械臂控制與仿真系統(tǒng),通過LabVIEW的三維圖形顯示控件對機(jī)械臂進(jìn)行仿真顯示,利用NIUSB_6211數(shù)據(jù)采集卡為機(jī)械臂提供控制信號,通過軟件編程解決了軟硬件同步、舵機(jī)平滑轉(zhuǎn)動及NIUSB_6211數(shù)據(jù)采集卡端口數(shù)目等問題。仿真結(jié)果表明:仿真模型可真實模擬機(jī)械臂的實際動作,如手指的開合、旋轉(zhuǎn),大小臂的俯仰及整體繞Z軸的旋轉(zhuǎn);控制結(jié)果表明:控制系統(tǒng)能夠根據(jù)用戶的輸入實現(xiàn)對目標(biāo)點的精確定位,并能控制機(jī)械臂對目標(biāo)物進(jìn)行抓取和放置。本文作者創(chuàng)新點:利用LabVIEW實現(xiàn)了對機(jī)械臂的仿真與控制;通過軟件編程解決了軟硬件同步、舵機(jī)平滑轉(zhuǎn)等問題;擴(kuò)展了NIUSB_6211數(shù)據(jù)采集卡的應(yīng)用領(lǐng)域。