基于ADAMS的機器人動力學分析及軌跡規劃

2.1.1           運動學分析

下面是建立模型并對模型進行設置分析的詳細過程。

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

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

(3)     創建機械臂關節1(連桿)。單擊連桿按鈕,勾選連桿的長、寬、深選項,分別將其設置為300mm、40mm、10mm,如圖2.1所示。在圖形區單擊鼠標左鍵,然后將連桿拖至水平位置時,在單擊鼠標左鍵。

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

(5)         用(3)的方法在關節1右端孔中心處創建關節2,如圖2.4所示。然后再將關節2向內側平移10mm。

QQ圖片20160107093421.png

 

2.1 創建連桿設置

QQ圖片20160107093501.png

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

 

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

 

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

(9)繪制運動軌跡。單擊菜單【Review】→【Create TraceSpline】,然后選擇關節2右端點Marker4,再選擇關節1與大地的鉸接點,鼠標移動到Joint1處,單擊鼠標右鍵,在彈出對話框中選擇ground,單擊OK創建運動軌跡,如圖2.7所示。

QQ圖片20160107093530.png

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

 

QQ圖片20160107093558.png

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

在后處理模塊中,通過菜單【View】→【LoadPlot】,通過選擇相應的選項,繪制出相應的結果曲線。如果2.9、2.10所示,分別繪制出機械臂末端點的速度曲線和加速度曲線。

005TO6d7gy6OY6HHrFl07&690.png

2.1.2           動力學分析

(1)     創建機械臂模型。按照2.1.1節的(1)~(6)步創建同樣的機械臂,并添加運動副約束。

(2)     添加驅動。與運動分析不同,動力學分析添加的驅動為單分量力矩。單擊工具欄上的單分量力矩選項 ,將選項設置為SpaceFixed、Normal toGrid和Constant,然后勾選Torque項并輸入4000,然后在圖形區單擊關節1,再在其上單擊任何一點。用同樣的方法添加關節2的驅動,并將其值設置為-100,如圖2.11所示。

 

2.11 添加單分量力矩

(3)運動學計算仿真。單擊菜單【Simulate】→【IteractiveControls】,打開交互式仿真控制對話框,在對話框中將仿真時間EndTime設置為2,仿真步數Steps設置為500,仿真類型Type設置為Dynamic,單擊仿真計算按鈕,觀看仿真動畫,模型將在重力和驅動力矩作用下運動。

(4)繪制運動軌跡。單擊菜單【Review】→【Create TraceSpline】,然后選擇關節2右端點Marker4,再選擇關節1與大地的鉸接點,鼠標移動到Joint1處,單擊鼠標右鍵,在彈出對話框中選擇ground,單擊OK創建運動軌跡,如圖2.12所示。

2.12 機械臂末端運動軌跡

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

在后處理模塊中,通過菜單【View】→【LoadPlot】,通過選擇相應的選項,繪制出相應的結果曲線。如果2.13、2.14所示,分別繪制出機械臂末端點的速度曲線和加速度曲線。

2.13 機械臂末端速度曲線

2.14 機械臂末端加速度曲線

 

2.1.3           軌跡規劃

本例將建立在ADAMS/View中用ControsToolkits建立控制系統,通過PID環節進行控制,控制對象是作用在每個關節單分量力矩,使機械臂的末端運動軌跡為圓。

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

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)         %調用的函數文件

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;

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

建立控制系統具體步驟如下:

(1)     建立機械臂的模型,在兩個關節處分別添加單分量力矩,然后將數值設為0。

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

 

2.16 導入數據文件建立SPLINES

 

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

 

2.16 建立輸入環節

 

用同樣的方法再建立輸入環節,將名稱改為.Control_PID.joint1.angl,在彈出的函數構造器中選擇Displacement項,然后在其下面的函數列表中,單擊Angleabout z,單擊Assist按鈕,彈出函數輔助對話框,ToMaker輸入框中單擊鼠標右鍵,在菜單中選擇【Marker】→【Pick】項,然后單擊與旋轉副相關聯的PART_2.MARKER_3,用同樣方法為FromMarker輸入框市區旋轉副相關聯的ground.MARKER_4,單擊OK按鈕。

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

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

2.17 創建PID環節

 

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

2.18 PID環節的輸出與單分量力矩相關聯

 

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

2.19 關節1的位移調節曲線

 

2.20 關節2的位移調節曲線

(8)繪制運動軌跡。單擊菜單【Review】→【Create TraceSpline】,然后選擇關節2右端點Marker4,再選擇關節1與大地的鉸接點,鼠標移動到Joint1處,單擊鼠標右鍵,在彈出對話框中選擇ground,單擊OK創建運動軌跡,如圖2.21所示。

005TO6d7gy6OY6Q17IZ79&690.png

 

2.21 機械臂末端軌跡

2.1.4           基于ADAMS和MATLAB的聯合運動控制

現在以MATLAB作為外部控制程序,仍以2.1.3節中的軌跡規劃為例,來說明ADAMS與MATLAB的聯合控制過程。詳細過程如下:

(1)     建立機械臂模型。按照2.1.1節(1)~(7)建立模型,并添加相應的運動副,然后在兩個旋轉副位置分別添加單分量力矩。

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

 

2.22 創建輸入狀態變量

(3)將狀態變量與模型相關聯。在圖形區雙擊力矩圖標,打開對話框如圖2.23所示,在Function中輸入VARVAL(Torque1),單擊OK按鈕后將狀態變量Torque1與單分量力矩關聯起來,同樣將另一個單分量力矩與狀態變量關聯起來。

 

2.23 狀態變量與模型關聯

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

 

2.24 創建輸出狀態變量

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

 

2.25 指定輸入/輸出/變量

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

 

2.26 導出控制參數對話框

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

 

2.27 MATLAB/Simlink窗口

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

 

 

2.28 控制方案

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

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

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


登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

3
4
5