六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划
本篇目錄
- 一、軌跡規(guī)劃概述
- 二、關(guān)節(jié)空間規(guī)劃
- 1. 點(diǎn)對(duì)點(diǎn)規(guī)劃
- 2. 多節(jié)點(diǎn)規(guī)劃
- 示例程序
- 三、笛卡爾空間規(guī)劃
- 1. 速度規(guī)劃
- 2. 位置規(guī)劃
- 3. 姿態(tài)插補(bǔ)
- 4. 基于幾何解法的一種簡(jiǎn)化位置規(guī)劃方法
- 5.兩種規(guī)劃的Matlab程序
- 四、小結(jié)
一、軌跡規(guī)劃概述
對(duì)機(jī)器人進(jìn)行軌跡規(guī)劃的主要任務(wù)是,根據(jù)機(jī)器人的工作環(huán)境和工作任務(wù)要求,求得一系列機(jī)器人末端位姿變換的時(shí)間序列,使得機(jī)器人末端可以正確地從初始姿態(tài)沿著期望的軌跡運(yùn)動(dòng)到終止位姿,完成工作任務(wù),。對(duì)于六自由度的機(jī)器人來(lái)說(shuō),軌跡規(guī)劃要解決的關(guān)鍵問(wèn)題是將末端位姿的變換轉(zhuǎn)變?yōu)榱鶄€(gè)關(guān)節(jié)變量的變換,這也是其與移動(dòng)機(jī)器人軌跡規(guī)劃的不同之處。
進(jìn)行軌跡規(guī)劃的方法有兩種:一種是在關(guān)節(jié)空間進(jìn)行規(guī)劃,另一種是在笛卡爾空間,即直角坐標(biāo)空間進(jìn)行規(guī)劃。
(1)關(guān)節(jié)空間規(guī)劃是通過(guò)確定各個(gè)關(guān)節(jié)轉(zhuǎn)角變化序列,從而規(guī)劃?rùn)C(jī)械臂末端的空間運(yùn)動(dòng)軌跡。其優(yōu)點(diǎn)是只用對(duì)六個(gè)關(guān)節(jié)變量分別進(jìn)行規(guī)劃,計(jì)算簡(jiǎn)單,但不能精確地控制機(jī)械臂末端的位姿變化。
(2)笛卡爾空間規(guī)劃就是對(duì)機(jī)械臂末端的位姿變化直接進(jìn)行規(guī)劃,在得到機(jī)械臂末端在某一時(shí)刻的位姿后,利用逆運(yùn)動(dòng)學(xué)方程直接求出此刻各個(gè)關(guān)節(jié)轉(zhuǎn)角變量的值。其優(yōu)點(diǎn)是機(jī)械臂末端的軌跡易于觀察,可以更精確控制地控制末端軌跡,同時(shí)避免末端執(zhí)行器與空間障礙物發(fā)生碰撞。但缺點(diǎn)是需要進(jìn)行大量的逆運(yùn)動(dòng)學(xué)計(jì)算,并且需要選取大量的中間插值點(diǎn)以得到精確的末端軌跡,控制過(guò)程復(fù)雜。
二、關(guān)節(jié)空間規(guī)劃
機(jī)器人關(guān)節(jié)空間規(guī)劃一般分為點(diǎn)對(duì)點(diǎn)規(guī)劃和多節(jié)點(diǎn)規(guī)劃。
1. 點(diǎn)對(duì)點(diǎn)規(guī)劃
當(dāng)給定起始點(diǎn)和終止點(diǎn)的約束條件,需要求出連接兩點(diǎn)的軌跡時(shí),這樣的問(wèn)題稱(chēng)為點(diǎn)對(duì)點(diǎn)軌跡規(guī)劃。常用的點(diǎn)對(duì)點(diǎn)軌跡規(guī)劃方法有三次多項(xiàng)式規(guī)劃,五次多項(xiàng)式規(guī)劃等。這里采用五次多項(xiàng)式進(jìn)行規(guī)劃,其一般形式為:
六個(gè)未知數(shù)需要給定六個(gè)約束條件,分別為起點(diǎn)和終點(diǎn)的角位移,角速度和角加速度。約束條件的方程為:
求解方程組,得到六個(gè)未知數(shù),其中T=(te-ts)。
將參數(shù)代入到五次多項(xiàng)式中,得到所求軌跡。
2. 多節(jié)點(diǎn)規(guī)劃
當(dāng)給定除起點(diǎn)和終點(diǎn)外,若干個(gè)中間點(diǎn)的約束條件,需要求出經(jīng)過(guò)所有點(diǎn)的軌跡時(shí),這樣的問(wèn)題稱(chēng)為多節(jié)點(diǎn)軌跡規(guī)劃。進(jìn)行多節(jié)點(diǎn)規(guī)劃時(shí),可以將多節(jié)點(diǎn)分段,每段有兩個(gè)節(jié)點(diǎn),對(duì)每段分別進(jìn)行點(diǎn)對(duì)點(diǎn)規(guī)劃。即多節(jié)點(diǎn)規(guī)劃可以看作多段點(diǎn)對(duì)點(diǎn)規(guī)劃的組合。
為了保證機(jī)器人平穩(wěn)運(yùn)行,在多節(jié)點(diǎn)規(guī)劃時(shí),一種有效的方法是使中間連接點(diǎn)處的角位移,角速度和角加速度相同。在這種情況下依然可以采用五次多項(xiàng)式規(guī)劃。只需要給出每個(gè)節(jié)點(diǎn)處的角位移,角速度和角加速度條件,按照上一節(jié)中的方法,求出每段軌跡的六個(gè)參數(shù),代入軌跡方程中,即可得到所求軌跡。
示例程序
這里對(duì)六個(gè)關(guān)節(jié)角進(jìn)行多節(jié)點(diǎn)規(guī)劃,一共給定四個(gè)節(jié)點(diǎn)的角度,角速度和角加速度條件,其中一段的規(guī)劃程序如下:
for i=1:3 %每一段規(guī)劃的時(shí)間T=t_array(i+1)-t_array(i);a10=q1_array(i);a11=v_array(i);a21=a_array(i)/2;a31=(20*q1_array(i+1)-20*q1_array(i)-(8*v_array(i+1)+12*v_array(i))*T-(3*a_array(i)-a_array(i+1))*T^2)/(2*T^3);a41=(30*q1_array(i)-30*q1_array(i+1)+(14*v_array(i+1)+16*v_array(i))*T+(3*a_array(i)-2*a_array(i+1))*T^2)/(2*T^4);a51=(12*q1_array(i+1)-12*q1_array(i)-(6*v_array(i+1)+6*v_array(i))*T-(a_array(i)-a_array(i+1))*T^2)/(2*T^5);%計(jì)算五次多項(xiàng)式系數(shù) ti=t_array(i):0.01:t_array(i+1);qi=a10+a11*(ti-t_array(i))+a21*(ti-t_array(i)).^2+a31*(ti-t_array(i)).^3+a41*(ti-t_array(i)).^4+a51*(ti-t_array(i)).^5;vi=a11+2*a21*(ti-t_array(i))+3*a31*(ti-t_array(i)).^2+4*a41*(ti-t_array(i)).^3+5*a51*(ti-t_array(i)).^4;ai=2*a21+6*a31*(ti-t_array(i))+12*a41*(ti-t_array(i)).^2+20*a51*(ti-t_array(i)).^3;t=[t,ti(2:end)];q=[q,qi(2:end)];v1=[v1,vi(2:end)];a1=[a1,ai(2:end)]; end角度規(guī)劃結(jié)果如圖所示
完整的示例代碼如下所示:
四節(jié)點(diǎn)五次多項(xiàng)式規(guī)劃完成代碼。
三、笛卡爾空間規(guī)劃
在進(jìn)行機(jī)器人笛卡爾空間軌跡規(guī)劃時(shí),一般的方法為:
(1)根據(jù)機(jī)械臂末端起點(diǎn)和終點(diǎn)的軌跡,確定一條從起點(diǎn)到終點(diǎn)的路徑。
(2)確定插補(bǔ)點(diǎn)的個(gè)數(shù),進(jìn)而確定路徑上的若干中間點(diǎn)。
(3)由一系列的機(jī)械臂末端坐標(biāo)進(jìn)行逆運(yùn)動(dòng)學(xué)計(jì)算,求解出六個(gè)關(guān)節(jié)轉(zhuǎn)角的變化情況。
這種方法稱(chēng)為數(shù)值解法。
主要涉及到三個(gè)方面的規(guī)劃:
1. 速度規(guī)劃
由力學(xué)原理可知,機(jī)器人在運(yùn)動(dòng)過(guò)程中如果出現(xiàn)加速度突變的情況,會(huì)產(chǎn)生機(jī)械沖擊,導(dǎo)致機(jī)器人關(guān)節(jié)磨損。因此在進(jìn)行軌跡規(guī)劃時(shí),首先需要對(duì)各關(guān)節(jié)進(jìn)行速度規(guī)劃,保證運(yùn)行過(guò)程中加速度連續(xù)變化。
S曲線是適用于此種情況的速度曲線,整段曲線由拋物線和直線段組成,對(duì)應(yīng)的加速度曲線連續(xù)。S曲線一般有三段,五段和七段S曲線三種,七段S曲線包括七個(gè)階段,其在滿(mǎn)足加速度連續(xù)的基礎(chǔ)上,還有兩端加速度恒定的過(guò)程,運(yùn)動(dòng)更加平穩(wěn)。七段S曲線的計(jì)算方法采用分類(lèi)討論法,示意曲線為:
除了S曲線外,也可以使用多項(xiàng)式曲線等等。
2. 位置規(guī)劃
位置規(guī)劃指對(duì)機(jī)械臂末端的軌跡進(jìn)行規(guī)劃,一般采用直線插補(bǔ)和圓弧插補(bǔ)以及這兩種的組合進(jìn)行規(guī)劃。
(1)直線插補(bǔ)
目的是使機(jī)械臂末端的軌跡為一段直線,具體步驟非常簡(jiǎn)單:只需將起點(diǎn)與終點(diǎn)直線連接,然后根據(jù)所需的精度確定插補(bǔ)點(diǎn)的個(gè)數(shù),最后確定每一個(gè)插補(bǔ)點(diǎn)的坐標(biāo)即可。
(2)圓弧插補(bǔ)
由于空間中的圓弧軌跡插補(bǔ)比較復(fù)雜,因此可以采用這樣的步驟:
1)首先根據(jù)起點(diǎn)終點(diǎn)與圓心確定一個(gè)新的平面;
2)接著以建立的平面為基準(zhǔn),建立一個(gè)新的坐標(biāo)系;
3)確定新坐標(biāo)系與末端坐標(biāo)系之間的轉(zhuǎn)換關(guān)系;
4)在新坐標(biāo)系里完成平面圓弧插補(bǔ),確定每個(gè)插補(bǔ)點(diǎn)的坐標(biāo);
5)根據(jù)坐標(biāo)轉(zhuǎn)化關(guān)系,得到末端坐標(biāo)下的三維插補(bǔ)點(diǎn)坐標(biāo)。
直線插補(bǔ)和圓弧插補(bǔ)的運(yùn)動(dòng)示意圖如下:
3. 姿態(tài)插補(bǔ)
在機(jī)器人運(yùn)行過(guò)程中,有些場(chǎng)景的末端姿態(tài)不發(fā)生變化,如打磨等,但在執(zhí)行較復(fù)雜的工作時(shí),末端姿態(tài)在運(yùn)動(dòng)過(guò)程中也會(huì)變化,如復(fù)雜的焊接過(guò)程等等。姿態(tài)規(guī)劃的任務(wù)時(shí),根據(jù)機(jī)械臂末端起始點(diǎn)和終止點(diǎn)的姿態(tài),規(guī)劃出合理的姿態(tài)變化過(guò)程,以滿(mǎn)足特定的約束條件(如避障,工作任務(wù)約束等)。
規(guī)劃時(shí),一種方法是采用四元數(shù)進(jìn)行規(guī)劃,具體方法我當(dāng)時(shí)沒(méi)有具體研究,有需要的小伙伴可以自行探索。
4. 基于幾何解法的一種簡(jiǎn)化位置規(guī)劃方法
前文介紹的位置插補(bǔ)規(guī)劃方法原理簡(jiǎn)單,但缺點(diǎn)是需要進(jìn)行大量的逆運(yùn)動(dòng)學(xué)計(jì)算。這里根據(jù)機(jī)器人運(yùn)動(dòng)過(guò)程的特殊性,提出了一種幾何求解法,對(duì)問(wèn)題求解進(jìn)行了簡(jiǎn)化。
(1)首先討論平面內(nèi)的豎直運(yùn)動(dòng)過(guò)程:
由正運(yùn)動(dòng)學(xué)分析可知,關(guān)節(jié)轉(zhuǎn)角θ1只與機(jī)械臂末端的橫縱坐標(biāo)有關(guān),因此在豎直運(yùn)動(dòng)過(guò)程中θ1保持不變。另外,在運(yùn)動(dòng)過(guò)程中,末端的姿態(tài)保持不變,由機(jī)器人關(guān)節(jié)的結(jié)構(gòu)可知,關(guān)節(jié)轉(zhuǎn)角θ4與θ6為定值。經(jīng)過(guò)以上分析,豎直方向的運(yùn)動(dòng)只需研究剩下的三個(gè)關(guān)節(jié)轉(zhuǎn)角的變化,這三個(gè)轉(zhuǎn)角的相對(duì)關(guān)系如上圖所示。
圖中定義了兩個(gè)角度α1,α2及一個(gè)長(zhǎng)度l,當(dāng)起始點(diǎn)和終止點(diǎn)給定時(shí),l為定值。他們與關(guān)節(jié)轉(zhuǎn)角θ2,θ3,θ5的關(guān)系如下式所示:
得到以上關(guān)系后,進(jìn)行規(guī)劃時(shí),只需對(duì)起點(diǎn)和終點(diǎn)的末端坐標(biāo)進(jìn)行兩次逆運(yùn)動(dòng)學(xué)計(jì)算,得到其中一個(gè)關(guān)節(jié)角的起點(diǎn)和終點(diǎn)坐標(biāo),接著對(duì)其進(jìn)行插補(bǔ),得到中間插補(bǔ)點(diǎn)的角度,最后根據(jù)關(guān)節(jié)角之間的關(guān)系,得到其他關(guān)節(jié)角的一系列角度。
最后得到的桿件仿真圖如下:
(2)平面內(nèi)的水平直線運(yùn)動(dòng)
圖中定義了一個(gè)高度差?h,當(dāng)軌跡起始點(diǎn)和終止點(diǎn)給定,式中?h為定值。同樣的,運(yùn)動(dòng)過(guò)程中,關(guān)節(jié)角的關(guān)系為:
通過(guò)計(jì)算得到的桿件仿真圖如下:
將這兩種運(yùn)動(dòng)與關(guān)節(jié)1的運(yùn)動(dòng)組合,就可以形成不同的末端軌跡,以實(shí)現(xiàn)簡(jiǎn)單運(yùn)動(dòng)情況下的位置規(guī)劃。
具體的代碼如下所示:
基于簡(jiǎn)化幾何解法的位置規(guī)劃,包括水平直線運(yùn)動(dòng)和豎直直線運(yùn)動(dòng)
5.兩種規(guī)劃的Matlab程序
Matlab提供了jtraj和ctraj兩種函數(shù),分別用于笛卡爾空間以及關(guān)節(jié)空間的軌跡規(guī)劃。兩者的使用格式分別為:
(1)關(guān)節(jié)空間規(guī)劃
給定q1,q2分別為起始點(diǎn)和終止點(diǎn)的關(guān)節(jié)角,50為插補(bǔ)點(diǎn)個(gè)數(shù)。得到的q,qd,qdd,分別為關(guān)節(jié)角度,角速度以及角加速度系列。
(2)笛卡爾空間規(guī)劃
給定p1,p2為起始點(diǎn)和終止點(diǎn)的四乘四位姿矩陣,step為插補(bǔ)點(diǎn)個(gè)數(shù),得到的Tc為一系列中間姿態(tài)矩陣。
這里利用兩個(gè)函數(shù),進(jìn)行一個(gè)簡(jiǎn)單的規(guī)劃示例:
四、小結(jié)
本篇介紹了六軸機(jī)器人關(guān)節(jié)空間以及笛卡爾空間軌跡規(guī)劃的簡(jiǎn)單方法,并給出了一種幾何解法,以簡(jiǎn)化規(guī)劃過(guò)程,并提供了簡(jiǎn)單的Matlab軌跡規(guī)劃函數(shù)介紹。
總結(jié)
以上是生活随笔為你收集整理的六自由度机器人(机械臂)运动学建模及运动规划系列(四)——轨迹规划的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: telerik grid ajax,Te
- 下一篇: 外贸客户开发的新方式—领英精灵