工程案例机器人Adams虚拟实验详细步骤.docx
《工程案例机器人Adams虚拟实验详细步骤.docx》由会员分享,可在线阅读,更多相关《工程案例机器人Adams虚拟实验详细步骤.docx(26页珍藏版)》请在冰豆网上搜索。
![工程案例机器人Adams虚拟实验详细步骤.docx](https://file1.bdocx.com/fileroot1/2023-6/23/2e860710-1ab2-49ea-9289-f56aea23a039/2e860710-1ab2-49ea-9289-f56aea23a0391.gif)
工程案例机器人Adams虚拟实验详细步骤
一.ADAMS软件简介
虚拟样机仿真分析软件ADAMS(AutomaticDynamicAnalysisofMechanicalSystems)是对机械系统的运动学与动力学进行仿真的商用软件,由美国MDI(MechnicalDynamicsInc.)开发,在经历了12个版本后,被美国MSC公司收购。
ADAMS集建模、计算和后处理于一体,ADAMS有许多个模块组成,基本模块是View模块和Postprocess模块,通常的机械系统都可以用这两个模块来完成,另外在ADAMS中还针对专业领域而单独开发的一些专用模块和嵌入模块,例如专业模块包括汽车模块ADAMS/Car、发动机模块ADAMS/Engine、火车模块ADAMS/Rail、飞机模块ADAMS/Aircraft等;嵌入模块如振动模块ADAMS/Vibration、耐久性模块ADAMS/Durability、液压模块ADAMS/Hydraulic、控制模块ADAMS/Control和柔性体模块ADAMS/AutoFlex等[3]。
1.1ADAMS软件概述
ADAMS是以计算多体系统动力学(ComputationalDynamicsofMultibodySystems)为基础,包含多个专业模块和专业领域的虚拟样机开发系统软件,利用它可以建立复杂机械系统的运动学和动力学模型,其模型可以是刚体的,也可以是柔性体,以及刚柔混合体模型。
如果在产品的概念设计阶段就采取ADAMS进行辅助分析,就可以在建造真实的物理样机之前,对产品进行各种性能测试,达到缩短开发周期、降低开发成本的目的。
ADAMS,即机械系统动力学自动分析(AutomaticDynamicAnalysisofMechanicalSystems)该软件是美国MDI公司(MechnicalDynamicsInc.)开发的虚拟样机分析软件。
目前,ADAMS已经被全世界各行各业的数百家主要制造商采用。
根据1999年机械系统动态分析软件国际市场份额的统计资料,ADAMS软件销售总额近八千万美元、占据了51%的份额。
ADAMS软件使用交互式图形环境和零件库、约束库、力库,创建完全参数化的机械系统几何模型,其求解器采用多刚体系统动力学理论中的拉格朗日方程方法,建立系统动力学方程,对虚拟机械系统进行静力学、运动学和动力学分析,输出位移、速度、加速度和反作用力曲线。
ADAMS软件的仿真可用于预测机械系统的性能、运动范围、碰撞检测、峰值载荷以及计算有限元的输入载荷等。
ADAMS一方面是虚拟样机分析的应用软件,用户可以运用该软件非常方便地对虚拟机械系统进行静力学、运动学和动力学分析。
另一方面,又是虚拟样机分析开发工具,其开放性的程序结构和多种接口,可以成为特殊行业用户进行特殊类型虚拟样机分析的二次开发工具平台。
ADAMS软件有两种操作系统的版本:
UNIX版和WindowsNT/2000版。
1.2用户界面模块(ADAMS/View)
ADAMS/View是ADAMS系列产品的核心模块之一,采用以用户为中心的交互式图形环境,将图标操作,菜单操作,鼠标点击操作与交互式图形建模,仿真计算,动画显示,优化设计,X-Y曲线图处理,结果分析和数据打印等功能集成在一起。
ADAMS/View采用简单的分层方式完成建模工作。
采用Parasolid内核进行实体建模,并提供了丰富的零件几何图形库,约束库和力/力矩库,并且支持布尔运算,支持FORTRAN/77和FORTRAN/90中的函数。
除此之外,还提供了丰富的位移函数,速度函数,加速度函数,接触函数,样条函数,力/力矩函数,合力/力矩函数,数据元函数,若干用户子程序函数以及常量和变量等[3]。
自9.0版后,ADAMS/View采用用户熟悉的Motif界面(UNIX系统)和Windows界面(NT系统),从而大大提高了快速建模能力。
在ADAMS/View中,用户利用TABLEEDITOR,可像用EXCEL一样方便地编辑模型数据,同时还提供了PLOTBROWSER和FUNCTIONBUILDER工具包。
DS(设计研究),DOE(实验设计)及OPTIMIZE(优化)功能可使用户方便地进行优化工作。
ADAMS/View有自己的高级编程语言,支持命令行输入命令和C++语言,有丰富的宏命令以及快捷方便的图标,菜单和对话框创建和修改工具包,而且具有在线帮助功能。
ADAMS/View模块界面如图1.1所示。
图1.1ADAMS/View界面
ADAMS/View新版采用了改进的动画/曲线图窗口,能够在同一窗口内可以同步显示模型的动画和曲线图;具有丰富的二维碰撞副,用户可以对具有摩擦的点-曲线,圆-曲线,平面-曲线,以及曲线-曲线,实体-实体等碰撞副自动定义接触力;具有实用的Parasolid输入/输出功能,可以输入CAD中生成的Parasolid文件,也可以把单个构件,或整个模型,或在某一指定的仿真时刻的模型输出到一个Parasolid文件中;具有新型数据库图形显示功能,能够在同一图形窗口内显示模型的拓扑结构,选择某一构件或约束(运动副或力)后显示与此项相关的全部数据;具有快速绘图功能,绘图速度是原版本的20倍以上;采用合理的数据库导向器,可以在一次作业中利用一个名称过滤器修改同一名称中多个对象的属性,便于修改某一个数据库对象的名称及其说明内容;具有精确的几何定位功能,可以在创建模型的过程中输入对象的坐标,精确地控制对象的位置;多种平台上采用统一的用户界面,提供合理的软件文档;支持WindowsNT平台的快速图形加速卡,确保ADAMS/View的用户可以利用高性能OpenGL图形卡来提高软件的性能;命令行可以自动记录各种操作命令,进行自动检查。
1.3求解器模块(ADAMS/Solver)
ADAMS/Solver是ADAMS系列产品的核心模块之一,是ADAMS产品系列中处于心脏地位的仿真器。
该软件自动形成机械系统模型的动力学方程,提供静力学,运动学和动力学的解算结果。
ADAMS/Solver有各种建模和求解选项,以便精确有效地解决各种工程应用问题。
ADAMS/Solver可以对刚体和弹性体进行仿真研究。
为了进行有限元分析和控制系统研究,用户除要求软件输出位移,速度,加速度和力外,还可要求模块输出用户自己定义的数据。
用户可以通过运动副,运动激励,高副接触,用户定义的子程序等添加不同的约束。
用户同时可求解运动副之间的作用力和反作用力,或施加单点外力。
ADAMS/Solver新版中对校正功能进行了改进,使得积分器能够根据模型的复杂程度自动调整参数,仿真计算速度提高了30%;采用新的S12型积分器(StabilizedIndex2intergrator),能够同时求解运动方程组的位移和速度,显著增强积分器的鲁棒性,提高复杂系统的解算速度;采用适用于柔性单元(梁,衬套,力场,弹簧-阻尼器)的新算法,可提高S12型积分器的求解精度和鲁棒性;可以将样条数据存储成独立文件使之管理更加方便,并且spline语句适用于各种样条数据文件,样条数据文件子程序还支持用户定义的数据格式;具有丰富的约束摩擦特性功能,在Translational,Revolute,Hooks,Cylindrical,Spherical,Universal等约束中可定义各种摩擦特性。
1.4后处理模块(ADAMS/PostProcessor)
MDI公司开发的后处理模块ADAMS/Postprocessor,用来处理仿真结果数据,显示仿真动画等。
既可以在ADAMS/View环境中运行,也可脱离该环境独立运行。
后处理的操作界面如图1.2所示。
ADAMS/PostProcessor的主要特点是:
采用快速高质量的动画显示,便于从可视化角度深入理解设计方案的有效性;使用树状搜索结构,层次清晰,并可快速检索对象;具有丰富的数据作图,数据处理及文件输出功能;具有灵活多变的窗口风格,支持多窗口画面分割显示及多页面存储;多视窗动画与曲线结果同步显示,并可录制成电影文件;具有完备的曲线数据统计功能:
如均值,均方根,极值,斜率等;具有丰富的数据处理功能,能够进行曲线的代数运算反向,偏置,缩放,
图1.2ADAMS/PostProcessor界面
编辑和生成Bode图等;为光滑消隐的柔体动画提供了更优的内存管理模式;强化了曲线编辑工具栏功能;能支持模态形状动画,模态形状动画可记录的标准图形文件格式有:
*.gif,*.jpg,*.bmp,*.xpm,*.avi等;在日期,分析名称,页数等方面增加了图表动画功能;可进行几何属性的细节的动态演示。
ADAMS/PostProcessor的主要功能是为观察模型的运动提供了所需的环境,用户可以向前,向后播放动画,随时中断播放动画,而且可以选择最佳观察视角,从而使用户更容易地完成模型排错任务;为了验证ADAMS仿真分析结果数据的有效性,可以输入测试数据,并测试数据与仿真结果数据进行绘图比较,还可对数据结果进行数学运算,对输出进行统计分析;用户可以对多个模拟结果进行图解比较,选择合理的设计方案;可以帮助用户再现ADAMS中的仿真分析结果数据,以提高设计报告的质量;可以改变图表的形式,也可以添加标题和注释;可以载入实体动画,从而加强仿真分析结果数据的表达效果;还可以实现在播放三维动画的同时,显示曲线的数据位置,从而可以观察运动与参数变化的对应关系。
1.5控制模块(ADAMS/Controls)
ADAMS/Controls是ADAMS软件包中的一个集成可选模块。
在ADAMS/Controls中,设计师既可以通过简单的继电器,逻辑与非门,阻尼线圈等建立简单的控制机构,也可利用通用控制系统软件(如MATLAB,MATRIX,EASY5)建立的控制系统框图,建立包括控制系统,液压系统,气动系统和运动机械系统的仿真模型。
在仿真计算过程中,ADAMS采取两种工作方式:
其一,机械系统采用ADAMS解算器,控制系统采用控制软件解算器,二者之间通过状态方程进行联系;其二,利用控制软件书写描述控制系统的控制框图,然后将控制框图提交给ADAMS,应用ADAMS解算器进行包括控制系统在内的复杂机械系统虚拟样机的同步仿真计算。
这样的机械-控制系统的联合仿真分析过程可以用于许多领域,例如汽车自动防抱死系统(ABS),主动悬架,飞机起落架助动器,卫星姿态控制等。
联合仿真计算可以是线性的,也可以是非线性的。
使用ADAMS/Controls的前提是需要ADAMS与控制系统软件同时安装在相同的工作平台上。
二.典型机器人虚拟实验
2.1串联机器人
在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。
2.2孔设置
2.1创建连杆设置
2.3修改孔位置对话框
2.4关节模型
(6)添加约束。
在关节1的左端与大地之间添加转动副,在关节1与关节2结合处添加转动副。
单击工具栏中的旋转副按钮,并将创建旋转副的选项设置为2Bod-1Loc和NormalGrid,然后在图形区单击关节1和大地,之后需要选择一个作用点,将鼠标移动到关节1的Marker1处出现center信息时,按下鼠标左键后就可以创建旋转副,旋转副的轴垂直于工作栅格。
然后用同样的方法创建关节1与关节2之间的旋转副,如图2.5所示。
2.5创建旋转副
(7)添加驱动。
在运动副1(Joint1)和运动副2(Joint2)上分别添加旋转驱动。
单击主工具栏的旋转驱动按钮
,然后在选择上面创建的旋转副1,然后在图形区单击鼠标右键,在快捷菜单中中选择Modify,在编辑对话框中将驱动函数设置为40d*sin(time),如图2.6所示。
用同样的方法在旋转副2上创建旋转驱动,并将驱动函数设置为15d*time*(-1)。
2.6旋转驱动设置
(8)运行仿真计算。
单击主工具栏的仿真计算按钮,将仿真类型设置为Kinematic,仿真时间EndTime设置为25,仿真步数Steps设置为500,然后单击运行按钮进行仿真计算。
(9)绘制运动轨迹。
单击菜单【Review】→【CreateTraceSpline】,然后选择关节2右端点Marker4,再选择关节1与大地的铰接点,鼠标移动到Joint1处,单击鼠标右键,在弹出对话框中选择ground,单击OK创建运动轨迹,如图2.7所示。
2.7末端运动轨迹
(10)结果后处理。
按下键盘上的F8键,界面将从View模块直接进入到PostProcess模块,后处理模块界面如图2.8所示。
2.8后处理模块界面
在后处理模块,通过菜单【View】→【LoadAnimation】可以载入动画。
在仿真动画中可以播放两种动画,一种是在时间域内进行的运动学和动力学仿真计算动画;另一种是在频率域内的,播放通过现行化或者在震动模块中的计算模型的振型动画。
单击播放按钮后开始播放动画,如果在播放同时按下记录按钮
,在播放动画的同时也将动画保存到动画文件中,动画文件位于ADAMS的工作目录下。
在后处理模块中,通过菜单【View】→【LoadPlot】,通过选择相应的选项,绘制出相应的结果曲线。
如果2.9、2.10所示,分别绘制出机械臂末端点的速度曲线和加速度曲线。
2.9机械臂末端速度曲线
2.10机械臂末端加速度曲线
2.1.2动力学分析
(1)创建机械臂模型。
按照2.1.1节的
(1)~(6)步创建同样的机械臂,并添加运动副约束。
(2)
添加驱动。
与运动分析不同,动力学分析添加的驱动为单分量力矩。
单击工具栏上的单分量力矩选项
,将选项设置为SpaceFixed、NormaltoGrid和Constant,然后勾选Torque项并输入4000,然后在图形区单击关节1,再在其上单击任何一点。
用同样的方法添加关节2的驱动,并将其值设置为-100,如图2.11所示。
2.11添加单分量力矩
(3)运动学计算仿真。
单击菜单【Simulate】→【IteractiveControls】,打开交互式仿真控制对话框,在对话框中将仿真时间EndTime设置为2,仿真步数Steps设置为500,仿真类型Type设置为Dynamic,单击仿真计算按钮,观看仿真动画,模型将在重力和驱动力矩作用下运动。
(4)绘制运动轨迹。
单击菜单【Review】→【CreateTraceSpline】,然后选择关节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程序计算代码如下:
globalx1y1%命令文件
t=0:
pi/200:
2*pi;
x=550+50*cos(t);
y=50*sin(t);
temp=[0,0]';
forn=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)%调用的函数文件
globalx1y1
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】后,选中CreateSplines,然后在FileToRead输入框中单击鼠标右键,在弹出的快捷菜单中选择【Browse】在弹出的对话框中选择相应的文本文件,在IndependentColumnIndex中输入1,表示默认第一列为时间,然后单击OK按钮创建了SPLINE。
如图2.15所示。
然后用同样的方法导入关节2的数据。
2.16导入数据文件建立SPLINES
(3)
建立控制系统的输入环节。
单击菜单【Build】→【ControlsToolkit】→【StandardControlBlocks】后,弹出创建控制环节工具包,在其中单击输入环节按钮
,将Name输入框中的名称修改为.Control_PID.joint1_input,单击function输入框后的按钮
,,弹出函数构造器,在其函数下拉表中选Spline项,然后单击Assist按钮,弹出函数辅助对话框,在FirstIndependentVariable中输入1,然后在SplineName中单击鼠标右键,在弹出快捷菜单中选择【Spline】→【Guesses】→【Spline1】,单击OK按钮,如图2.16所示,然后单击OK按钮。
2.16建立输入环节
用同样的方法再建立输入环节,将名称改为.Control_PID.joint1.angl,在弹出的函数构造器中选择Displacement项,然后在其下面的函数列表中,单击Angleaboutz,单击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】,然后在单击InsertObjectName按钮,单击OK,如图2.18所示。
用同样的方法将关节2的单分量力矩与pid_2相关联。
2.18PID环节的输出与单分量力矩相关联
(7)PID控制环节的参数调节。
单击F8进入后处理模块中,在后处理模块中将关节1与关节2的输入角位移和输出角位移进行比较,然后修改PID环节的参数,直至两条曲线重合为止,如图2.19,2.20所示。
2.19关节1的位移调节曲线
2.20关节2的位移调节曲线
(8)绘制运动轨迹。
单击菜单【Review】→【CreateTraceSpline】,然后选择关节2右端点Marker4,再选择关节1与大地的铰接点,鼠标移动到Joint1处,单击鼠标右键,在弹出对话框中选择ground,单击OK创建运动轨迹,如图2.21所示。
2.21机械臂末端轨迹
2.1.4基于ADAMS和MATLAB的联合运动控制
现在以MATLAB作为外部控制程序,仍以2.1.3节中的轨迹规划为例,来说明ADAMS与MATLAB的联合控制过程。
详细过程如下:
(1)建立机械臂模型。
按照2.1.1节
(1)~(7)建立模型,并添加相应的运动副,然后在两个旋转副位置分别添加单分量力矩。
(2)创建输入状态变量。
单击菜单【Build】→【SystemElements】→【StateVariable】→【New】,弹出创建状态变量对话框。
将Name输入框改成T