基于ADAMS的机器人动力学分析及轨迹规划

2.1    串联机器人

在ADAMS中用连杆模拟机械臂,对两自由度的机械臂分别进行运动学分析、动力学分析及机械臂的轨迹规划。

2.1.1            运动学分析

下面是建立模型并对模型进行设置分析的详细过程。

(1)      启动ADAMS/View,在欢迎对话框中选择新建模型,模型取名为Robot_arm,并将单位设置为MMKS,然后单击OK。

(2)      打开坐标系窗口。按下F4键,或者单击菜单【View】→【Coordinate Window】后,打开坐标系窗口。当鼠标在图形区移动时,在坐标窗口中显示了当前鼠标所在位置的坐标值。

(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。

基于ADAMS的机器人动力学分析及轨迹规划

 

2.1 创建连杆设置

基于ADAMS的机器人动力学分析及轨迹规划

(6)添加约束。在关节1的左端与大地之间添加转动副,在关节1与关节2结合处添加转动副。单击工具栏中的旋转副按钮,并将创建旋转副的选项设置为2Bod-1Loc和Normal Grid,然后在图形区单击关节1和大地,之后需要选择一个作用点,将鼠标移动到关节1的Marker1处出现center信息时,按下鼠标左键后就可以创建旋转副,旋转副的轴垂直于工作栅格。然后用同样的方法创建关节1与关节2之间的旋转副。

 

(7)添加驱动。在运动副1(Joint1)和运动副2(Joint2)上分别添加旋转驱动。单击主工具栏的旋转驱动按钮,然后在选择上面创建的旋转副1,然后在图形区单击鼠标右键,在快捷菜单中中选择Modify,在编辑对话框中将驱动函数设置为40d*sin(time),如图2.6所示。用同样的方法在旋转副2上创建旋转驱动,并将驱动函数设置为15d*time*(-1)。

 

(8)运行仿真计算。单击主工具栏的仿真计算按钮,将仿真类型设置为Kinematic,仿真时间End Time设置为25,仿真步数Steps设置为500,然后单击运行按钮进行仿真计算。

(9)绘制运动轨迹。单击菜单【Review】→【Create Trace Spline】,然后选择关节2右端点Marker4,再选择关节1与大地的铰接点,鼠标移动到Joint1处,单击鼠标右键,在弹出对话框中选择ground,单击OK创建运动轨迹,如图2.7所示。

基于ADAMS的机器人动力学分析及轨迹规划

(10)结果后处理。按下键盘上的F8键,界面将从View模块直接进入到PostProcess模块,后处理模块界面如图2.8所示。

 

基于ADAMS的机器人动力学分析及轨迹规划

在后处理模块,通过菜单【View】→【Load Animation】可以载入动画。在仿真动画中可以播放两种动画,一种是在时间域内进行的运动学和动力学仿真计算动画;另一种是在频率域内的,播放通过现行化或者在震动模块中的计算模型的振型动画。单击播放按钮后开始播放动画,如果在播放同时按下记录按钮,在播放动画的同时也将动画保存到动画文件中,动画文件位于ADAMS的工作目录下。

在后处理模块中,通过菜单【View】→【Load Plot】,通过选择相应的选项,绘制出相应的结果曲线。如果2.9、2.10所示,分别绘制出机械臂末端点的速度曲线和加速度曲线。

基于ADAMS的机器人动力学分析及轨迹规划

2.1.2            动力学分析

(1)      创建机械臂模型。按照2.1.1节的(1)~(6)步创建同样的机械臂,并添加运动副约束。

(2)      添加驱动。与运动分析不同,动力学分析添加的驱动为单分量力矩。单击工具栏上的单分量力矩选项 ,将选项设置为Space Fixed、Normal to Grid和Constant,然后勾选Torque项并输入4000,然后在图形区单击关节1,再在其上单击任何一点。用同样的方法添加关节2的驱动,并将其值设置为-100,如图2.11所示。

 

2.11 添加单分量力矩

(3)运动学计算仿真。单击菜单【Simulate】→【Iteractive Controls】,打开交互式仿真控制对话框,在对话框中将仿真时间End Time设置为2,仿真步数Steps设置为500,仿真类型Type设置为Dynamic,单击仿真计算按钮,观看仿真动画,模型将在重力和驱动力矩作用下运动。

(4)绘制运动轨迹。单击菜单【Review】→【Create Trace Spline】,然后选择关节2右端点Marker4,再选择关节1与大地的铰接点,鼠标移动到Joint1处,单击鼠标右键,在弹出对话框中选择ground,单击OK创建运动轨迹,如图2.12所示。

 

 

 

 

 

 

 


2.12 机械臂末端运动轨迹

(5)结果后处理。在后处理模块,通过菜单【View】→【Load Animation】可以载入动画。单击播放按钮后开始播放动画,在播放同时按下记录按钮 ,将动画保存到动画文件中。

在后处理模块中,通过菜单【View】→【Load Plot】,通过选择相应的选项,绘制出相应的结果曲线。如果2.13、2.14所示,分别绘制出机械臂末端点的速度曲线和加速度曲线。

2.13 机械臂末端速度曲线

2.14 机械臂末端加速度曲线

 

2.1.3            轨迹规划

本例将建立在ADAMS/View中用Contros Toolkits建立控制系统,通过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 x1 y1             %命令文件

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

function q=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】→【Test Data】后,选中Create Splines,然后在File To Read输入框中单击鼠标右键,在弹出的快捷菜单中选择【Browse】在弹出的对话框中选择相应的文本文件,在Independent Column Index中输入1,表示默认第一列为时间,然后单击OK按钮创建了SPLINE。如图2.15所示。然后用同样的方法导入关节2的数据。

 

2.16 导入数据文件建立SPLINES

 

(3)      建立控制系统的输入环节。单击菜单【Build】→【Controls Toolkit】→【Standard Control Blocks】后,弹出创建控制环节工具包,在其中单击输入环节按钮,将Name输入框中的名称修改为.Control_PID.joint1_input,单击function输入框后的按钮,,弹出函数构造器,在其函数下拉表中选Spline项,然后单击Assist按钮,弹出函数辅助对话框,在First Independent Variable中输入1,然后在Spline Name中单击鼠标右键,在弹出快捷菜单中选择【Spline】→【Guesses】→【Spline1】,单击OK按钮,如图2.16所示,然后单击OK按钮。

 

2.16 建立输入环节

 

用同样的方法再建立输入环节,将名称改为.Control_PID.joint1.angl,在弹出的函数构造器中选择Displacement项,然后在其下面的函数列表中,单击Angle about z,单击Assist按钮,弹出函数辅助对话框,To Maker输入框中单击鼠标右键,在菜单中选择【Marker】→【Pick】项,然后单击与旋转副相关联的PART_2.MARKER_3,用同样方法为From Marker输入框市区旋转副相关联的ground.MARKER_4,单击OK按钮。

(4)      创建比较环节。单击控制环节工具包中的比较环节按钮 ,将Name输入框中的名字改为.Control_PID.sum1,在Input 1输入框中单击鼠标右键,在弹出的快捷菜单中选择【controls_input】→【Guesses】→【Joint1_input】,在Input 2输入框中单击鼠标右键,在弹出的快捷菜单中选择【controls_input】→【Guesses】→【Joint1_angl】,其他选项默认。用同样的方法建立关节2的比较环节.Control_PID.sum2。

(5)      创建PID环节。单击控制环节工具包中的PID按钮,在Input输入框中单击鼠标右键,在弹出的快捷菜单中选择【controls_sum】→【Guesses】→【sum_1】,在Input 2输入框中单击鼠标右键,在弹出的快捷菜单中选择【controls_input】→【Guesses】→【Joint1_angl】,其他选项默认,如图2.17所示。用同样的方法建立关节2的PID控制环节。

2.17 创建PID环节

 

(6)      将单分量力矩参数化。在图形区双击单分量力矩的图标,在弹出的编辑对话框中,单击Function输入框后的函数构造器按钮,在Getting Object Data下拉菜单中选择Measures,然后在输入框中单击鼠标右键,选择【Runtme_Measure】→【Guesses】→【pid_1】,然后在单击Insert Object 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 Trace Spline】,然后选择关节2右端点Marker4,再选择关节1与大地的铰接点,鼠标移动到Joint1处,单击鼠标右键,在弹出对话框中选择ground,单击OK创建运动轨迹,如图2.21所示。

基于ADAMS的机器人动力学分析及轨迹规划

 

2.21 机械臂末端轨迹

2.1.4            基于ADAMS和MATLAB的联合运动控制

现在以MATLAB作为外部控制程序,仍以2.1.3节中的轨迹规划为例,来说明ADAMS与MATLAB的联合控制过程。详细过程如下:

(1)      建立机械臂模型。按照2.1.1节(1)~(7)建立模型,并添加相应的运动副,然后在两个旋转副位置分别添加单分量力矩。

(2)      创建输入状态变量。单击菜单【Build】→【System Elements】→【State Variable】→【New】,弹出创建状态变量对话框。将Name输入框改成Torque1,单击OK按钮,如图2.22所示。用同样的方法创建输入状态变量Torque2。

 

2.22 创建输入状态变量

(3)将状态变量与模型相关联。在图形区双击力矩图标,打开对话框如图2.23所示,在Function中输入VARVAL(Torque1),单击OK按钮后将状态变量Torque1与单分量力矩关联起来,同样将另一个单分量力矩与状态变量关联起来。

 

2.23 状态变量与模型关联

(4)创建输出状态变量。单击菜单【Build】→【System Elements】→【State Variable】→【New】,弹出创建状态变量对话框,如图2.24所示。将Name输入框修改成spline1,然后用上节提到的方法将该状态变量与SPLINE1关联,单击OK。然后再建立状态变量angle1,然后在F(time…)=输入框中输入表达式AZ(MARKER_1, MARKER_6),单击OK。用同样的方法创建状态变量spline2和angle2。

 

2.24 创建输出状态变量

(5)指定状态变量为输入输出变量。单击菜单【Build】→【Controls Toolkit】→【Plant Input】/【Plant Output】后弹出相应的对话框,如图2.25所示,然后添加相应的输入输出变量即可完成定义。分别将Torque1、Torque2指定为输入变量,将spline1、spline2、angle1、angle2指定为输出变量。

 

2.25 指定输入/输出/变量

(6)导出控制参数。单击菜单【Controls】→【Plant Export】,弹出导出控制参数对话框,如图2.26所示。在File Prefix输入框中输入adams_matlab,在Plant Input输入框中用鼠标右键快捷菜单输入PINPUT_1,在Plant Output输入框中用鼠标右键快捷菜单输入POUTPUT_1,将Control Package选择为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,弹出书籍交换设置对话框,将Simulation Mode设置成continuous,Animation mode设置成interactive,其他默认,单击OK按钮。

(10)仿真设置和仿真计算。单击新窗口中的【Simulation】→【Simulation Parameters】,弹出仿真设置对话框,在Solver页中将Start time 设置成0,将Stop time 设置成6.28,其他默认,单击OK按钮。最后单击菜单【Simulation】→【Start】开始进行仿真计算。

(11)结果后处理。回到ADAMS/View,单击【File】→【Import】,在弹出的导入对话框中,将File Type设置成ADAMS/Solver Analysis(*.req,*.gra,*.res),在File To Read输入框中用鼠标右键浏览输入adams_matlab.res文件,然后通过处理模块绘制出spline1和angle曲线进行对比,然后在调节PID控制的增益系数,直到关节的输入与输出曲线重合,绘制运动轨迹。


猜你喜欢

转载自blog.csdn.net/weixin_39090239/article/details/80955010