王曉明,宋 吉,鄭繼新,龐浩帥
(蘭州理工大學(xué) 電氣工程與信息工程學(xué)院,甘肅 蘭州 730050)
目前所研究的機(jī)械臂運(yùn)動(dòng)軌跡分為兩個(gè)部分:第一個(gè)稱為路徑規(guī)劃,規(guī)劃需要人工根據(jù)作業(yè)任務(wù)和環(huán)境設(shè)定機(jī)器人的工作路徑,示教記錄之后機(jī)器人重復(fù)執(zhí)行規(guī)劃的路徑。但是示教再現(xiàn)無法根據(jù)環(huán)境因素實(shí)時(shí)規(guī)劃出機(jī)器人路徑。另一個(gè)稱為軌跡規(guī)劃,軌跡規(guī)劃加入時(shí)間序列信息對(duì)機(jī)器人的速度和加速度進(jìn)行規(guī)劃,以滿足光滑性以及速度可控性等要求,控制各關(guān)節(jié)在相同時(shí)間內(nèi)運(yùn)動(dòng)綜合作用到末端執(zhí)行器,使執(zhí)行器按工作要求最優(yōu)執(zhí)行任務(wù)[1]。
關(guān)節(jié)空間軌跡規(guī)劃對(duì)運(yùn)動(dòng)路徑的描述是將關(guān)節(jié)變量表示為時(shí)間的函數(shù),對(duì)關(guān)節(jié)空間中如何利用受控參數(shù)規(guī)劃?rùn)C(jī)器人的運(yùn)動(dòng)進(jìn)行研究。設(shè)置路徑點(diǎn)處的位置和姿態(tài)參數(shù),轉(zhuǎn)化為對(duì)各關(guān)節(jié)角度的控制要求,不必考慮笛卡爾空間中兩路徑點(diǎn)間軌跡的形狀[2]。得到的關(guān)節(jié)軌跡在滿足不同的約束條件下,可釆用不同類型的插值運(yùn)算來實(shí)現(xiàn)軌跡規(guī)劃[3]。對(duì)于得到的關(guān)節(jié)軌跡函數(shù)都要求關(guān)節(jié)變量在極值范圍內(nèi),各關(guān)節(jié)位移、速度、加速度和各關(guān)節(jié)角的插值點(diǎn)處連續(xù),使機(jī)器人各關(guān)節(jié)運(yùn)動(dòng)平穩(wěn),減小振動(dòng),提高工作質(zhì)量,延長(zhǎng)使用壽命[4]。B樣條曲線具有很強(qiáng)的局部支撐性、關(guān)節(jié)角位移變化率較小等優(yōu)點(diǎn)并且可以多次擴(kuò)張,不存在瞬時(shí)變化等問題。假如需要對(duì)規(guī)劃好的某個(gè)關(guān)節(jié)的某一段軌跡需要調(diào)整,只調(diào)整B樣條曲線所控制的這段軌跡的一個(gè)控制點(diǎn)即可,不需要對(duì)整個(gè)關(guān)節(jié)軌跡作調(diào)整,在很大程度上降低了后續(xù)遺傳算法尋優(yōu)的難度[5]。
為了進(jìn)一步說明改進(jìn)的三次B樣條曲線擬合算法所取得的效果,針對(duì)同一序列的型值點(diǎn),分別用傳統(tǒng)的B樣條曲線插值算法、擬合算法和改進(jìn)后的B樣條曲線擬合算法實(shí)現(xiàn)這些型值點(diǎn)的處理[6]。以拋物線y=(x-4)2為例,在[0,8]區(qū)間上均勻生成9個(gè)原始型值點(diǎn)。三種方法處理誤差結(jié)果分別為0.083,0.178,0.042,可以看出改進(jìn)B樣條擬合曲線誤差較低。
為了進(jìn)一步說明改進(jìn)的三次B樣條曲線對(duì)機(jī)器人軌跡進(jìn)行規(guī)劃的可行性,以PUMA 560工業(yè)機(jī)器人為研究對(duì)象,在機(jī)器人關(guān)節(jié)空間中利用改進(jìn)的三次B樣條曲線對(duì)機(jī)器人各個(gè)關(guān)節(jié)進(jìn)行軌跡規(guī)劃。設(shè)初始角加速度為0.2°/s2。仿真過程中所運(yùn)用的機(jī)器人關(guān)節(jié)點(diǎn)信息如表1所示。
表1 各關(guān)節(jié)角度值 (°)
根據(jù)改進(jìn)的三次B樣條曲線,利用MATLAB軟件樣條工具箱中相關(guān)函數(shù)進(jìn)行編程,對(duì)給定的各個(gè)關(guān)節(jié)角度進(jìn)行擬合得到機(jī)器人運(yùn)動(dòng)軌跡[7]。假設(shè)路徑點(diǎn)之間的時(shí)間間隔為4 s,得到各個(gè)關(guān)節(jié)軌跡函數(shù),θi(t)表示第i個(gè)關(guān)節(jié)的軌跡,將其前三個(gè)關(guān)節(jié)表示為分段多項(xiàng)式的形式如下
(1)
(2)
(3)
基于以上計(jì)算知,在MATLAB軟件中利用改進(jìn)的三次B樣條曲線進(jìn)行機(jī)器人關(guān)節(jié)軌跡規(guī)劃的推導(dǎo)以及計(jì)算是可行的,規(guī)劃出的各段軌跡函數(shù)均可以用三次多項(xiàng)式的形式表示,在各個(gè)插值點(diǎn)處軌跡均連續(xù)。B樣條曲線規(guī)劃出的軌跡既能滿足機(jī)器人關(guān)節(jié)運(yùn)動(dòng)軌跡連續(xù)平滑、末端執(zhí)行器運(yùn)動(dòng)平穩(wěn)的要求,又能夠快速準(zhǔn)確的完成軌跡規(guī)劃。
要想在關(guān)節(jié)空間中規(guī)劃各個(gè)關(guān)節(jié)的運(yùn)動(dòng)軌跡,應(yīng)先在笛卡爾空間中進(jìn)行機(jī)器人路徑點(diǎn)的規(guī)劃,然后通過機(jī)器人逆運(yùn)動(dòng)學(xué)求解各個(gè)關(guān)節(jié)節(jié)點(diǎn)的信息[8],各個(gè)關(guān)節(jié)依次形成各自的運(yùn)動(dòng)軌跡,最終再將各個(gè)關(guān)節(jié)軌跡綜合投射到笛卡爾空間中就得到了機(jī)器人末端的運(yùn)行軌跡[9]。再者,機(jī)器人不但要達(dá)到預(yù)定的目標(biāo)點(diǎn)外,還要在預(yù)定軌跡的一定約束范圍內(nèi)運(yùn)動(dòng)。因此機(jī)器人末端軌跡的建立是關(guān)鍵的一步。在MATLAB軟件的Robotics Toolbox工具箱[5]中進(jìn)行PUMA 560機(jī)器人建模。如圖1所示。
圖1 PUMA 560機(jī)器人模型
通過在MATLAB軟件中編寫程序做出了從起點(diǎn)P0=[0.078 -0.138 0.345]到終點(diǎn)P1=[-0.075 -0.144 0.308]的笛卡爾空間軌跡曲線如圖2所示。
圖2 末端執(zhí)行器運(yùn)動(dòng)軌跡
利用上一節(jié)所建立的機(jī)器人模型,運(yùn)用改進(jìn)后的三次B樣條曲線進(jìn)行關(guān)節(jié)空間中機(jī)器人關(guān)節(jié)插值編程,編寫MATLAB程序采用改進(jìn)后的三次B樣條函數(shù)擬合的方法可以得到機(jī)器人運(yùn)動(dòng)過程中各關(guān)節(jié)位置、速度和加速度的曲線圖。機(jī)器人6個(gè)關(guān)節(jié)的仿真分別如圖3所示。
圖3 6個(gè)關(guān)節(jié)位移、速度和加速度變化曲線
圖3每個(gè)關(guān)節(jié)中的三條曲線可以看出,在機(jī)器人整個(gè)運(yùn)動(dòng)過程中,各關(guān)節(jié)速度、加速度和加加速度均滿足運(yùn)動(dòng)學(xué)約束條件,各關(guān)節(jié)角位移曲線連續(xù)平穩(wěn),同時(shí)具有較好的光滑性,幾乎沒有波動(dòng)。各關(guān)節(jié)的角速度連續(xù)平滑且無突變,角加速度連續(xù)。機(jī)器人關(guān)節(jié)位移變化率較小不會(huì)產(chǎn)生抖動(dòng)現(xiàn)象,所以運(yùn)動(dòng)過程平穩(wěn)無大的沖擊和振動(dòng),使關(guān)節(jié)處零部件間的磨損降低,延長(zhǎng)了機(jī)器人的使用壽命,經(jīng)過改進(jìn)的三次B樣條曲線規(guī)劃的機(jī)器人關(guān)節(jié)軌跡均經(jīng)過了中間軌跡點(diǎn),有效地提高了三次B樣條曲線的擬合精度,從而提高了機(jī)器人運(yùn)行的精度,保證了機(jī)器人在實(shí)際應(yīng)用場(chǎng)合的高精度性。
對(duì)機(jī)器人關(guān)節(jié)空間軌跡規(guī)劃的多種方法進(jìn)行了比較,重點(diǎn)對(duì)三次B樣條曲線規(guī)劃算法進(jìn)行改進(jìn),并成功地將其運(yùn)用到了機(jī)器人軌跡規(guī)劃研究上,提高了機(jī)器人運(yùn)動(dòng)的精度。最后在MATLAB軟件中建立了機(jī)器人模型,并對(duì)其進(jìn)行了軌跡規(guī)劃仿真,仿真結(jié)果表明:改進(jìn)的三次B樣條曲線軌跡規(guī)劃方法,在相同運(yùn)動(dòng)學(xué)約束條件下能夠得到更好的規(guī)劃結(jié)果,所改進(jìn)的算法具有一定的實(shí)際工程應(yīng)用價(jià)值。