劉欣 丁殿磊
(大連理工大學(xué)機械工程學(xué)院,遼寧大連,116000)
基于示教再現(xiàn)實現(xiàn)機械臂路徑規(guī)劃的方法
劉欣 丁殿磊
(大連理工大學(xué)機械工程學(xué)院,遼寧大連,116000)
本文介紹一種基于示教再現(xiàn)方式實現(xiàn)機械臂路徑規(guī)劃的方法。內(nèi)容主要由三部分組成,以圖形用戶界面GUI為連接紐帶,用Arduino UNO實現(xiàn)數(shù)據(jù)信號采集和算法處理的功能,通過舵機控制板控制機械臂進(jìn)行運動操作。該方法將機械臂的初始位置和目標(biāo)位置之間劃分為一系列的單一動作,錄制每一個動作后都會采集相關(guān)數(shù)據(jù)信號,最后組合在一起,完成機械臂的路徑規(guī)劃。這種方法簡單易懂,實時性強,便于調(diào)節(jié)。
機器人,機械臂,路徑規(guī)劃,舵機
在電子技術(shù)、信息技術(shù)、控制技術(shù)不斷發(fā)展的今天,機器人與我們的生活息息相關(guān)。機械臂則是機器人技術(shù)領(lǐng)域中最廣泛的實際應(yīng)用,在工業(yè)制造、醫(yī)學(xué)治療、軍事等領(lǐng)域都有它們的身影。談到機械臂,就會涉及到路徑規(guī)劃,所謂路徑規(guī)劃是指給定移動機械手的初始位姿及機械手末端的目標(biāo)位姿,在移動機械手各廣義坐標(biāo)的工作范圍內(nèi)尋找一條無碰撞路徑[1]。本文以簡單的機械臂操作為例,通過示教再現(xiàn)的方法,結(jié)合GUI圖形用戶界面,研究其運動控制原理,實現(xiàn)對機械臂的路徑規(guī)劃功能。文章從總體方案、信號數(shù)據(jù)采集處理、圖形用戶界面和機械臂操作控制等方面進(jìn)行講解。
機械臂運動的關(guān)鍵是關(guān)節(jié),關(guān)節(jié)處最重要的部件為舵機。舵機的主體結(jié)構(gòu)主要有以下幾個部分:外殼、減速齒輪組、電機、電位器、控制電路。當(dāng)控制電路接收信號源的控制信號,就會驅(qū)動電機轉(zhuǎn)動;齒輪組將電機的轉(zhuǎn)速成大倍數(shù)縮小,同時將電機的輸出扭矩放大相應(yīng)的倍數(shù)后輸出;電位器和齒輪組的末級一起轉(zhuǎn)動,對舵機軸轉(zhuǎn)動的角度進(jìn)行測量;電路板檢測并根據(jù)電位器判斷舵機轉(zhuǎn)動角度,然后控制舵機轉(zhuǎn)動到目標(biāo)角度或保持在目標(biāo)角度。
舵機轉(zhuǎn)動的角度可以通過建立電位器兩端的電壓信號和舵機轉(zhuǎn)動角度的關(guān)系得出。將電位器兩端的電壓信號通過AD轉(zhuǎn)換為相應(yīng)的數(shù)字信號,再建立相應(yīng)的數(shù)字信號和PWM 信號值之間的函數(shù)關(guān)系(對機器人控制而言,一般通過單片機輸出 PWM 信號控制舵機)。這樣,在機械臂關(guān)節(jié)轉(zhuǎn)動時,相應(yīng)舵機產(chǎn)生的電壓信號借由單片機AD轉(zhuǎn)換,進(jìn)行函數(shù)關(guān)系處理后,可以得到控制其轉(zhuǎn)動相應(yīng)角度的PWM信號值,將此信號值發(fā)送到舵機控制板對機械臂進(jìn)行控制,機械臂就會轉(zhuǎn)動相應(yīng)的角度??傮w方案如圖1所示。
圖1 總體方案框圖
在本方案中,要選取多個角度值,具體方法是:通過單片機對舵機轉(zhuǎn)動相應(yīng)角度、電位器兩端引出的電壓值進(jìn)
行AD轉(zhuǎn)換,得到相應(yīng)的數(shù)值,和對應(yīng)的PWM信號值進(jìn)行函數(shù)關(guān)系處理,得到函數(shù)關(guān)系式。
此處選用Arduino UNO控制板完成這個工作。因為它是一款便捷靈活、方便上手的開源電子原型平臺[2],下載程序簡單方便,并且可以通過USB接口和PC連接(作為鍵盤和鼠標(biāo)的擴展),快速與其他互動軟件結(jié)合。該控制板包括:12通道數(shù)字輸入,6通道10bit模擬輸入通道;12通道數(shù)字輸出,和6通道PWM模擬輸出。其中,模擬口可以用來進(jìn)行AD轉(zhuǎn)換,對應(yīng)模擬電壓值為0-5V,轉(zhuǎn)換后的數(shù)字信號值為0-255。
2.1 舵機接線及標(biāo)定
如圖2所示,要測出舵機電位器兩端的電壓值,就要對舵機進(jìn)行改造,即將舵機電位器兩端(圖2黑色線圈部位)的電源線接出,并且連接到Arduino UNO模擬口上。
圖2 舵機接線位置
在使用前要對舵機進(jìn)行標(biāo)定,建立起舵機轉(zhuǎn)動角度和PWM值之間的關(guān)系,以及PWM信號值和舵機內(nèi)電位器兩端電壓值之間的關(guān)系。兩者結(jié)合得到角度和電壓值之間的關(guān)系,并可以對機械臂運動結(jié)果進(jìn)行驗證和確定。
2.2 對電壓信號取值的算法
在使用Arduino UNO進(jìn)行電壓信號讀取,將模擬信號轉(zhuǎn)變?yōu)閿?shù)字信號時,因為電壓信號不穩(wěn)定,讀取多個同一電壓值時并不相同,需要進(jìn)行算法處理。可選的方法有算術(shù)平均值法、歸一化加權(quán)平均值法等等[3-4]。考慮到算法消耗的時間(和后面GUI程序有關(guān))和數(shù)值的精確性,發(fā)現(xiàn)下述方法比較適合:
1)取一定數(shù)量的值,按大小進(jìn)行排序;
2)去掉一部分極大值和極小值;
3)將剩余的值求取平均值 。
2.3 函數(shù)關(guān)系的確定
選取多個角度值,通過Arduino UNO模擬口在單片機里讀取電位器兩端電壓值所對應(yīng)的數(shù)字信號值,進(jìn)行直線擬合[5],然后轉(zhuǎn)換為PWM值,并建立兩者之間的關(guān)系(電壓與PWM值)。
表1 舵機角度和PWM值關(guān)系
表2 舵機電位器兩端電壓值和PWM值關(guān)系
在對機械臂進(jìn)行示教操作時,使用GUI圖形交流用戶界面可以方便快捷地對機械臂進(jìn)行操作。
如圖3所示,在這個操作界面中,所實現(xiàn)的功能有:
1)作為紐帶連接舵機控制板和Arduino UNO,后者將示教時舵機電位器兩端的電壓值轉(zhuǎn)換為對應(yīng)的PWM值輸入到GUI界面中,然后舵機控制板通過讀取這些PWM信號值來控制機械臂重復(fù)示教時對機械臂設(shè)定的動作。
2)因為示教再現(xiàn)屬于開環(huán)控制,所以會有誤差產(chǎn)生,通過對GUI界面的設(shè)定,可以增加微調(diào)模塊來調(diào)節(jié),減小誤差,達(dá)到提高機械臂示教精度的目的。
3)通過GUI界面,還可以產(chǎn)生存儲PWM信號值的文件,將其寫成舵機控制板的指令形式,按順序排列,當(dāng)和其他接口相連時,利用軟件直接控制機械臂進(jìn)行運動,實
現(xiàn)提高自動化程度的目的。
在圖形用戶界面,用戶看到和操作的都是圖形對象,具有輕型、占用資源少、高便于移植、可配置等特點,并且可以直接進(jìn)行調(diào)節(jié),輸出舵機控制板控制舵機所需要的指令。
圖3 GUI界面
機械臂主要由連桿和關(guān)節(jié)組成,在傳統(tǒng)的控制操作中,都離不開運動學(xué)中的正解與逆解,通過這兩種方法進(jìn)行直角坐標(biāo)和關(guān)節(jié)坐標(biāo)兩者之間的轉(zhuǎn)換, 然后通過關(guān)節(jié)空間的軌跡規(guī)劃過程給出各個關(guān)節(jié)電機的進(jìn)給量,驅(qū)動連桿運動,完成既定的動作[6]。根據(jù)本文提出的辦法進(jìn)行實驗的各個模塊組成如圖4所示:
圖4 模塊組成
使用這種方法對機械臂進(jìn)行示教,不僅省卻大量的計算,在調(diào)試當(dāng)中還可以通過GUI界面對動作進(jìn)行誤差補償調(diào)節(jié),通過輸出帶有舵機控制指令的文件方便地和外部軟件連接,具有提高自動化程度的能力。
綜上所述,本文介紹了一種基于示教再現(xiàn)方式實現(xiàn)機械臂路徑規(guī)劃的方法。這種方法由舵機控制板、Arduino UNO板以及GUI操作界面構(gòu)成,通過建立控制舵機的PWM信號值和舵機電位器兩端電壓值的函數(shù)關(guān)系,使用示教再現(xiàn)方式完成機械臂的路徑規(guī)劃目的,簡單易懂,實時性強,便于調(diào)節(jié)。
[1] 李新春,趙冬斌,易建強,等.一種移動機械手分級協(xié)調(diào)路徑規(guī)劃方法[J].制造業(yè)自動化,2005(5):28-32.
[2] 蔡睿妍. Arduino的原理及應(yīng)用[J].電子設(shè)計工程,2012,20(16):155-157.
[3] 劉小寧,張洪政,李慶祥.不同方法計算的氣溫平均值差異分析[J].應(yīng)用氣象學(xué)報,2005,16(3):345-356.
[4] 龍宏波,葉曉慧,譚思煒.歸一化加權(quán)平均值算法在測量中的應(yīng)用[J].電光與控制,2010(12):68-70.
[5] 許海濤,高彩霞.直線擬合算法[J].數(shù)字社區(qū)&智能家居,2009,5(2):864-867.
[6] 彭圣明,裴海龍,王清陽.基于機械臂的運動學(xué)研究與應(yīng)用[J].機械設(shè)計與制造,2011(7):136-138.