基于ADAMS的機(jī)器人動(dòng)力學(xué)分析及軌跡規(guī)劃

2.1.1           運(yùn)動(dòng)學(xué)分析

下面是建立模型并對(duì)模型進(jìn)行設(shè)置分析的詳細(xì)過(guò)程。

(1)     啟動(dòng)ADAMS/View,在歡迎對(duì)話框中選擇新建模型,模型取名為Robot_arm,并將單位設(shè)置為MMKS,然后單擊OK。

(2)     打開坐標(biāo)系窗口。按下F4鍵,或者單擊菜單【View】→【CoordinateWindow】后,打開坐標(biāo)系窗口。當(dāng)鼠標(biāo)在圖形區(qū)移動(dòng)時(shí),在坐標(biāo)窗口中顯示了當(dāng)前鼠標(biāo)所在位置的坐標(biāo)值。

(3)     創(chuàng)建機(jī)械臂關(guān)節(jié)1(連桿)。單擊連桿按鈕,勾選連桿的長(zhǎng)、寬、深選項(xiàng),分別將其設(shè)置為300mm、40mm、10mm,如圖2.1所示。在圖形區(qū)單擊鼠標(biāo)左鍵,然后將連桿拖至水平位置時(shí),在單擊鼠標(biāo)左鍵。

(4)     在連桿的右端打孔。在幾何建模工具欄單擊打孔按鈕,將半徑Radius設(shè)置為10mm,深度設(shè)置為10mm,如圖2.2所示。然后在圖形區(qū)模型附近單擊鼠標(biāo)左鍵,在與XY平面垂直的表面上單擊鼠標(biāo)左鍵。然后修改孔的位置,在孔附近單擊鼠標(biāo)右鍵,選擇【HOLE_1】→【Modify】,在彈出的對(duì)話框中,將Center的坐標(biāo)值設(shè)置成(300,0.0,5.0),如圖2.3所示。

(5)         用(3)的方法在關(guān)節(jié)1右端孔中心處創(chuàng)建關(guān)節(jié)2,如圖2.4所示。然后再將關(guān)節(jié)2向內(nèi)側(cè)平移10mm。

QQ圖片20160107093421.png

 

2.1 創(chuàng)建連桿設(shè)置

QQ圖片20160107093501.png

(6)添加約束。在關(guān)節(jié)1的左端與大地之間添加轉(zhuǎn)動(dòng)副,在關(guān)節(jié)1與關(guān)節(jié)2結(jié)合處添加轉(zhuǎn)動(dòng)副。單擊工具欄中的旋轉(zhuǎn)副按鈕,并將創(chuàng)建旋轉(zhuǎn)副的選項(xiàng)設(shè)置為2Bod-1Loc和NormalGrid,然后在圖形區(qū)單擊關(guān)節(jié)1和大地,之后需要選擇一個(gè)作用點(diǎn),將鼠標(biāo)移動(dòng)到關(guān)節(jié)1的Marker1處出現(xiàn)center信息時(shí),按下鼠標(biāo)左鍵后就可以創(chuàng)建旋轉(zhuǎn)副,旋轉(zhuǎn)副的軸垂直于工作柵格。然后用同樣的方法創(chuàng)建關(guān)節(jié)1與關(guān)節(jié)2之間的旋轉(zhuǎn)副。

 

(7)添加驅(qū)動(dòng)。在運(yùn)動(dòng)副1(Joint1)和運(yùn)動(dòng)副2(Joint2)上分別添加旋轉(zhuǎn)驅(qū)動(dòng)。單擊主工具欄的旋轉(zhuǎn)驅(qū)動(dòng)按鈕,然后在選擇上面創(chuàng)建的旋轉(zhuǎn)副1,然后在圖形區(qū)單擊鼠標(biāo)右鍵,在快捷菜單中中選擇Modify,在編輯對(duì)話框中將驅(qū)動(dòng)函數(shù)設(shè)置為40d*sin(time),如圖2.6所示。用同樣的方法在旋轉(zhuǎn)副2上創(chuàng)建旋轉(zhuǎn)驅(qū)動(dòng),并將驅(qū)動(dòng)函數(shù)設(shè)置為15d*time*(-1)。

 

(8)運(yùn)行仿真計(jì)算。單擊主工具欄的仿真計(jì)算按鈕,將仿真類型設(shè)置為Kinematic,仿真時(shí)間EndTime設(shè)置為25,仿真步數(shù)Steps設(shè)置為500,然后單擊運(yùn)行按鈕進(jìn)行仿真計(jì)算。

(9)繪制運(yùn)動(dòng)軌跡。單擊菜單【Review】→【Create TraceSpline】,然后選擇關(guān)節(jié)2右端點(diǎn)Marker4,再選擇關(guān)節(jié)1與大地的鉸接點(diǎn),鼠標(biāo)移動(dòng)到Joint1處,單擊鼠標(biāo)右鍵,在彈出對(duì)話框中選擇ground,單擊OK創(chuàng)建運(yùn)動(dòng)軌跡,如圖2.7所示。

QQ圖片20160107093530.png

(10)結(jié)果后處理。按下鍵盤上的F8鍵,界面將從View模塊直接進(jìn)入到PostProcess模塊,后處理模塊界面如圖2.8所示。

 

QQ圖片20160107093558.png

在后處理模塊,通過(guò)菜單【View】→【LoadAnimation】可以載入動(dòng)畫。在仿真動(dòng)畫中可以播放兩種動(dòng)畫,一種是在時(shí)間域內(nèi)進(jìn)行的運(yùn)動(dòng)學(xué)和動(dòng)力學(xué)仿真計(jì)算動(dòng)畫;另一種是在頻率域內(nèi)的,播放通過(guò)現(xiàn)行化或者在震動(dòng)模塊中的計(jì)算模型的振型動(dòng)畫。單擊播放按鈕后開始播放動(dòng)畫,如果在播放同時(shí)按下記錄按鈕,在播放動(dòng)畫的同時(shí)也將動(dòng)畫保存到動(dòng)畫文件中,動(dòng)畫文件位于ADAMS的工作目錄下。

在后處理模塊中,通過(guò)菜單【View】→【LoadPlot】,通過(guò)選擇相應(yīng)的選項(xiàng),繪制出相應(yīng)的結(jié)果曲線。如果2.9、2.10所示,分別繪制出機(jī)械臂末端點(diǎn)的速度曲線和加速度曲線。

005TO6d7gy6OY6HHrFl07&690.png

2.1.2           動(dòng)力學(xué)分析

(1)     創(chuàng)建機(jī)械臂模型。按照2.1.1節(jié)的(1)~(6)步創(chuàng)建同樣的機(jī)械臂,并添加運(yùn)動(dòng)副約束。

(2)     添加驅(qū)動(dòng)。與運(yùn)動(dòng)分析不同,動(dòng)力學(xué)分析添加的驅(qū)動(dòng)為單分量力矩。單擊工具欄上的單分量力矩選項(xiàng) ,將選項(xiàng)設(shè)置為SpaceFixed、Normal toGrid和Constant,然后勾選Torque項(xiàng)并輸入4000,然后在圖形區(qū)單擊關(guān)節(jié)1,再在其上單擊任何一點(diǎn)。用同樣的方法添加關(guān)節(jié)2的驅(qū)動(dòng),并將其值設(shè)置為-100,如圖2.11所示。

 

2.11 添加單分量力矩

(3)運(yùn)動(dòng)學(xué)計(jì)算仿真。單擊菜單【Simulate】→【IteractiveControls】,打開交互式仿真控制對(duì)話框,在對(duì)話框中將仿真時(shí)間EndTime設(shè)置為2,仿真步數(shù)Steps設(shè)置為500,仿真類型Type設(shè)置為Dynamic,單擊仿真計(jì)算按鈕,觀看仿真動(dòng)畫,模型將在重力和驅(qū)動(dòng)力矩作用下運(yùn)動(dòng)。

(4)繪制運(yùn)動(dòng)軌跡。單擊菜單【Review】→【Create TraceSpline】,然后選擇關(guān)節(jié)2右端點(diǎn)Marker4,再選擇關(guān)節(jié)1與大地的鉸接點(diǎn),鼠標(biāo)移動(dòng)到Joint1處,單擊鼠標(biāo)右鍵,在彈出對(duì)話框中選擇ground,單擊OK創(chuàng)建運(yùn)動(dòng)軌跡,如圖2.12所示。

2.12 機(jī)械臂末端運(yùn)動(dòng)軌跡

(5)結(jié)果后處理。在后處理模塊,通過(guò)菜單【View】→【LoadAnimation】可以載入動(dòng)畫。單擊播放按鈕后開始播放動(dòng)畫,在播放同時(shí)按下記錄按鈕 ,將動(dòng)畫保存到動(dòng)畫文件中。

在后處理模塊中,通過(guò)菜單【View】→【LoadPlot】,通過(guò)選擇相應(yīng)的選項(xiàng),繪制出相應(yīng)的結(jié)果曲線。如果2.13、2.14所示,分別繪制出機(jī)械臂末端點(diǎn)的速度曲線和加速度曲線。

2.13 機(jī)械臂末端速度曲線

2.14 機(jī)械臂末端加速度曲線

 

2.1.3           軌跡規(guī)劃

本例將建立在ADAMS/View中用ControsToolkits建立控制系統(tǒng),通過(guò)PID環(huán)節(jié)進(jìn)行控制,控制對(duì)象是作用在每個(gè)關(guān)節(jié)單分量力矩,使機(jī)械臂的末端運(yùn)動(dòng)軌跡為圓。

因?yàn)殛P(guān)節(jié)1的一端與大地(Ground)原點(diǎn)鉸接,因此將圓的方程設(shè)為(x-550)2+y2=502,用參數(shù)形式表示就是x=550+50*cos(t),y=50*sin(t),要使關(guān)節(jié)2的末端運(yùn)動(dòng)軌跡按指定的軌跡運(yùn)動(dòng),這時(shí)需要通過(guò)軌跡方程計(jì)算出兩個(gè)關(guān)節(jié)的關(guān)節(jié)變量,然后將這兩個(gè)關(guān)節(jié)變量作為控制系統(tǒng)模型的關(guān)節(jié)輸入。用MATLAB編程,計(jì)算兩關(guān)節(jié)變量,用到的函數(shù)是求解非線性方程組的函數(shù)fsolve,設(shè)1 , 2分別為關(guān)節(jié)1和關(guān)節(jié)2的角位移, 1, 2為兩關(guān)節(jié)的長(zhǎng)度,非線性方程組為 ,MATLAB程序計(jì)算代碼如下:

global x1y1            %命令文件

t=0: pi/200:2*pi;

x=550+50*cos(t);

y=50*sin(t);

temp=[0,0]';

for n=1:401

   x1=x(n);

   y1=y(n);

Q=fsolve('myfunfun',temp,optimset('Display','off'));

temp=Q;

q1(n)=Q(1);

q2(n)=Q(2);

end

functionq=myfunfun(p)         %調(diào)用的函數(shù)文件

global x1 y1

qq1=p(1);

qq2=p(2);

q(1)=300*cos(qq1)+300*cos(qq1+qq2)-x1;

q(2)=300*sin(qq1)+300*sin(qq1+qq2)-y1;

計(jì)算完成后,矩陣q1里面保存的是關(guān)節(jié)1的角位移,矩陣q2里面保存的是關(guān)節(jié)2的角位移,然后再將這兩個(gè)關(guān)節(jié)變量以SPLINE的形式輸入到ADAMS中,作為模型的關(guān)節(jié)輸入。

建立控制系統(tǒng)具體步驟如下:

(1)     建立機(jī)械臂的模型,在兩個(gè)關(guān)節(jié)處分別添加單分量力矩,然后將數(shù)值設(shè)為0。

(2)     將MATLAB計(jì)算出的數(shù)據(jù)以Spline形式導(dǎo)入ADAMS。建立文本文檔保存在ADAMS工作目錄下,文檔中的存有兩列數(shù)據(jù):第一列為時(shí)間,第二列為q1矩陣。單擊菜單【File】→【Import】→【TestData】后,選中Create Splines,然后在File ToRead輸入框中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【Browse】在彈出的對(duì)話框中選擇相應(yīng)的文本文件,在IndependentColumnIndex中輸入1,表示默認(rèn)第一列為時(shí)間,然后單擊OK按鈕創(chuàng)建了SPLINE。如圖2.15所示。然后用同樣的方法導(dǎo)入關(guān)節(jié)2的數(shù)據(jù)。

 

2.16 導(dǎo)入數(shù)據(jù)文件建立SPLINES

 

(3)     建立控制系統(tǒng)的輸入環(huán)節(jié)。單擊菜單【Build】→【Controls Toolkit】→【Standard ControlBlocks】后,彈出創(chuàng)建控制環(huán)節(jié)工具包,在其中單擊輸入環(huán)節(jié)按鈕,將Name輸入框中的名稱修改為.Control_PID.joint1_input,單擊function輸入框后的按鈕,,彈出函數(shù)構(gòu)造器,在其函數(shù)下拉表中選Spline項(xiàng),然后單擊Assist按鈕,彈出函數(shù)輔助對(duì)話框,在FirstIndependent Variable中輸入1,然后在SplineName中單擊鼠標(biāo)右鍵,在彈出快捷菜單中選擇【Spline】→【Guesses】→【Spline1】,單擊OK按鈕,如圖2.16所示,然后單擊OK按鈕。

 

2.16 建立輸入環(huán)節(jié)

 

用同樣的方法再建立輸入環(huán)節(jié),將名稱改為.Control_PID.joint1.angl,在彈出的函數(shù)構(gòu)造器中選擇Displacement項(xiàng),然后在其下面的函數(shù)列表中,單擊Angleabout z,單擊Assist按鈕,彈出函數(shù)輔助對(duì)話框,ToMaker輸入框中單擊鼠標(biāo)右鍵,在菜單中選擇【Marker】→【Pick】項(xiàng),然后單擊與旋轉(zhuǎn)副相關(guān)聯(lián)的PART_2.MARKER_3,用同樣方法為FromMarker輸入框市區(qū)旋轉(zhuǎn)副相關(guān)聯(lián)的ground.MARKER_4,單擊OK按鈕。

(4)     創(chuàng)建比較環(huán)節(jié)。單擊控制環(huán)節(jié)工具包中的比較環(huán)節(jié)按鈕 ,將Name輸入框中的名字改為.Control_PID.sum1,在Input1輸入框中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【controls_input】→【Guesses】→【Joint1_input】,在Input2輸入框中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【controls_input】→【Guesses】→【Joint1_angl】,其他選項(xiàng)默認(rèn)。用同樣的方法建立關(guān)節(jié)2的比較環(huán)節(jié).Control_PID.sum2。

(5)     創(chuàng)建PID環(huán)節(jié)。單擊控制環(huán)節(jié)工具包中的PID按鈕,在Input輸入框中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【controls_sum】→【Guesses】→【sum_1】,在Input2輸入框中單擊鼠標(biāo)右鍵,在彈出的快捷菜單中選擇【controls_input】→【Guesses】→【Joint1_angl】,其他選項(xiàng)默認(rèn),如圖2.17所示。用同樣的方法建立關(guān)節(jié)2的PID控制環(huán)節(jié)。

2.17 創(chuàng)建PID環(huán)節(jié)

 

(6)     將單分量力矩參數(shù)化。在圖形區(qū)雙擊單分量力矩的圖標(biāo),在彈出的編輯對(duì)話框中,單擊Function輸入框后的函數(shù)構(gòu)造器按鈕,在GettingObjectData下拉菜單中選擇Measures,然后在輸入框中單擊鼠標(biāo)右鍵,選擇【Runtme_Measure】→【Guesses】→【pid_1】,然后在單擊InsertObject Name按鈕,單擊OK,如圖2.18所示。用同樣的方法將關(guān)節(jié)2的單分量力矩與pid_2相關(guān)聯(lián)。

2.18 PID環(huán)節(jié)的輸出與單分量力矩相關(guān)聯(lián)

 

(7)     PID控制環(huán)節(jié)的參數(shù)調(diào)節(jié)。單擊F8進(jìn)入后處理模塊中,在后處理模塊中將關(guān)節(jié)1與關(guān)節(jié)2的輸入角位移和輸出角位移進(jìn)行比較,然后修改PID環(huán)節(jié)的參數(shù),直至兩條曲線重合為止,如圖2.19,2.20所示。

2.19 關(guān)節(jié)1的位移調(diào)節(jié)曲線

 

2.20 關(guān)節(jié)2的位移調(diào)節(jié)曲線

(8)繪制運(yùn)動(dòng)軌跡。單擊菜單【Review】→【Create TraceSpline】,然后選擇關(guān)節(jié)2右端點(diǎn)Marker4,再選擇關(guān)節(jié)1與大地的鉸接點(diǎn),鼠標(biāo)移動(dòng)到Joint1處,單擊鼠標(biāo)右鍵,在彈出對(duì)話框中選擇ground,單擊OK創(chuàng)建運(yùn)動(dòng)軌跡,如圖2.21所示。

005TO6d7gy6OY6Q17IZ79&690.png

 

2.21 機(jī)械臂末端軌跡

2.1.4           基于ADAMS和MATLAB的聯(lián)合運(yùn)動(dòng)控制

現(xiàn)在以MATLAB作為外部控制程序,仍以2.1.3節(jié)中的軌跡規(guī)劃為例,來(lái)說(shuō)明ADAMS與MATLAB的聯(lián)合控制過(guò)程。詳細(xì)過(guò)程如下:

(1)     建立機(jī)械臂模型。按照2.1.1節(jié)(1)~(7)建立模型,并添加相應(yīng)的運(yùn)動(dòng)副,然后在兩個(gè)旋轉(zhuǎn)副位置分別添加單分量力矩。

(2)     創(chuàng)建輸入狀態(tài)變量。單擊菜單【Build】→【System Elements】→【StateVariable】→【New】,彈出創(chuàng)建狀態(tài)變量對(duì)話框。將Name輸入框改成Torque1,單擊OK按鈕,如圖2.22所示。用同樣的方法創(chuàng)建輸入狀態(tài)變量Torque2。

 

2.22 創(chuàng)建輸入狀態(tài)變量

(3)將狀態(tài)變量與模型相關(guān)聯(lián)。在圖形區(qū)雙擊力矩圖標(biāo),打開對(duì)話框如圖2.23所示,在Function中輸入VARVAL(Torque1),單擊OK按鈕后將狀態(tài)變量Torque1與單分量力矩關(guān)聯(lián)起來(lái),同樣將另一個(gè)單分量力矩與狀態(tài)變量關(guān)聯(lián)起來(lái)。

 

2.23 狀態(tài)變量與模型關(guān)聯(lián)

(4)創(chuàng)建輸出狀態(tài)變量。單擊菜單【Build】→【System Elements】→【StateVariable】→【New】,彈出創(chuàng)建狀態(tài)變量對(duì)話框,如圖2.24所示。將Name輸入框修改成spline1,然后用上節(jié)提到的方法將該狀態(tài)變量與SPLINE1關(guān)聯(lián),單擊OK。然后再建立狀態(tài)變量angle1,然后在F(time…)=輸入框中輸入表達(dá)式AZ(MARKER_1,MARKER_6),單擊OK。用同樣的方法創(chuàng)建狀態(tài)變量spline2和angle2。

 

2.24 創(chuàng)建輸出狀態(tài)變量

(5)指定狀態(tài)變量為輸入輸出變量。單擊菜單【Build】→【ControlsToolkit】→【Plant Input】/【PlantOutput】后彈出相應(yīng)的對(duì)話框,如圖2.25所示,然后添加相應(yīng)的輸入輸出變量即可完成定義。分別將Torque1、Torque2指定為輸入變量,將spline1、spline2、angle1、angle2指定為輸出變量。

 

2.25 指定輸入/輸出/變量

(6)導(dǎo)出控制參數(shù)。單擊菜單【Controls】→【PlantExport】,彈出導(dǎo)出控制參數(shù)對(duì)話框,如圖2.26所示。在File Prefix輸入框中輸入adams_matlab,在PlantInput輸入框中用鼠標(biāo)右鍵快捷菜單輸入PINPUT_1,在PlantOutput輸入框中用鼠標(biāo)右鍵快捷菜單輸入POUTPUT_1,將ControlPackage選擇為MATLAB,其他為默認(rèn),單擊OK按鈕后,在ADAMS工作目錄中生成adams_matlab.m、adams_matlab.cmd、adams_matlab.adm這3個(gè)文件。

 

2.26 導(dǎo)出控制參數(shù)對(duì)話框

(7)啟動(dòng)MATLAB,將MATLAB的工作目錄指向ADAMS的工作目錄。在MATLAB命令窗口中輸入adams_matlab,然后輸入命令adams_sys,該命令是ADAMS與MATLAB的接口命令。彈出了一個(gè)新的窗口,該窗口是MATLAB/Simlink選擇窗口,窗口中包含的內(nèi)容如圖2.27所示。

 

2.27 MATLAB/Simlink窗口

(8)建立控制方案。在MATLAB/Simlink選擇窗口中,單擊菜單【File】→【New】→【Model】,彈出了新窗口,將新窗口存盤為adams_matlab.mdl,將adams_sub方框拖到adams_matlab.mdl中,然后在窗口中添加相應(yīng)的環(huán)節(jié),組成控制系統(tǒng),如圖2.28所示。

 

 

2.28 控制方案

(9)設(shè)置MATLAB于ADAMS之間的數(shù)據(jù)交換參數(shù)。在adams_matlab.mdl窗口中雙擊adams_sub方框,在彈出的新窗口中雙擊MSCSoftware,彈出書籍交換設(shè)置對(duì)話框,將SimulationMode設(shè)置成continuous,Animation mode設(shè)置成interactive,其他默認(rèn),單擊OK按鈕。

(10)仿真設(shè)置和仿真計(jì)算。單擊新窗口中的【Simulation】→【SimulationParameters】,彈出仿真設(shè)置對(duì)話框,在Solver頁(yè)中將Start time 設(shè)置成0,將Stop time設(shè)置成6.28,其他默認(rèn),單擊OK按鈕。最后單擊菜單【Simulation】→【Start】開始進(jìn)行仿真計(jì)算。

(11)結(jié)果后處理。回到ADAMS/View,單擊【File】→【Import】,在彈出的導(dǎo)入對(duì)話框中,將FileType設(shè)置成ADAMS/Solver Analysis(*.req,*.gra,*.res),在File ToRead輸入框中用鼠標(biāo)右鍵瀏覽輸入adams_matlab.res文件,然后通過(guò)處理模塊繪制出spline1和angle曲線進(jìn)行對(duì)比,然后在調(diào)節(jié)PID控制的增益系數(shù),直到關(guān)節(jié)的輸入與輸出曲線重合,繪制運(yùn)動(dòng)軌跡。


登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

3
4
5