内容发布更新时间 : 2024/11/14 12:56:50星期一 下面是文章的全部内容请认真阅读。
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)222
+y=50,用参数形式表示就是x=550+50*cos(t),y=50*sin(t),要使关节2的末端运动轨迹按指定的轨迹运动,这时需要通过轨迹方程计算出两个关节的关节变量,然后将这两个关节变量作为控制系统模型的关节输入。用MATLAB编程,计算两关节变量,用到的函数是求解非线性方程组的函数fsolve,设?1 ,?2分别为关节1和关节2的角位移,l1,l2为两关节的长度,非线性方程组为
?x?l1*cos(?1)?l2*cos(?2),MATLAB程序计算代码如下: ??y?l1*sin(?1)?l2*sin(?2)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,单击
,,弹出函数构造器,在其函数下拉表中选Spline项,
function输入框后的按钮
然后单击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相关联。