3.1 ADAMS软件基本模块介绍
ADAMS软件最常用的模块有前处理模块ADAMS/View、CAD接口模块ADAMS/Exchange、后处理模块ADAMS/PostProcessor、求解器模块ADAMS/Solver、控制模块ADAMS/Controls等。
3.1.1 前处理模块 ADAMS/View模块是使用ADAMS软件建立机械系统功能化数字样机的可视化前处理环境,如图3.1所示,可以很方便地采用人机交互的方式建立模型中的相关对象,如定义运动部件、定义部件之间的约束关系或力的连接关系、施加强制驱动或外部载荷激励。 ADAMS/View模块支持多窗口显示,每个窗口显示不同的视图或结果;具有模型校验工具,有助于快速查找模型中存在的明显的建模问题;具有多种文件输入输出功能,如模型及仿真结果文件、几何外形文件、试验数据、表格输出等;能输出为有限元分析、物理试验及疲劳分析等直接使用的文件;通过把试验结果导入ADAMS/View模块,实现试验与仿真结果的综合比对,完成虚拟样机的置信度检验。 ADAMS/View模块提供快速建立参数化模型的能力,便于改进设计;具有方便、实用的试验研究策略:单变量、多变量试验设计研究及优化分析功能;提供二次开发功能,可以重新定制界面,包括功能操作区、菜单、图标等,便于实现设计流程自动化或满足用户的个性化需求,以提高仿真效率。

图3.1 前处理模块ADAMS/View界面
3.1.2 CAD接口模块
ADAMS/Exchange模块为ADAMS软件与其他CAD/CAM/CAE软件之间的几何数据交换提供了工业标准的接口。通过ADAMS/ Exchange模块,用户可以将标准格式的几何模型进行数据传输,标准格式包括IGES、UTEP、DWG/DXF、Parasolid 等。无论用户是用网格、面还是实体等几何图形来表示所设计的机构,都能够通过ADAMS/ Exchange模块很容易地实现该几何图形在CAD软件与ADAMS软件之间的数据传输。 当用户将其他CAD/CAE/CAM软件中的模型传输到ADAMS软件中时,只要在ADAMS软件界面下从File下拉菜单中选择Import命令,打开File Import对话框,如图3.2所示,引导用户方便地完成这个操作。
图3.2 CAD接口模块ADAMS/Exchange
3.1.3 后处理模块
ADAMS/PostProcessor模块是显示ADAMS软件仿真结果的可视化图形界面,界面除了主窗口外,还有一个树形目录窗口、一个属性编辑窗口和一个数据选取窗口,如图3.3所示。后处理的结果既可以显示为动画,也可以显示为数据曲线(对于振动分析结果,可以显示3D数据曲线),还可以显示报告文档。主窗口可同时显示仿真的结果动画,以及数据曲线,可方便地叠加显示多次仿真的结果,以便比较。可以一个页面显示一个数据曲线,也可以在同一页面内显示最多六个分窗口的数据曲线。
相关页面的设置及数据曲线的设置都可以保存起来,于新的分析结果,可以使用已保存的后处理配置文件(“. plt”文件),快速地完成数据的后处理过程,既有利于节省时间,也有利于报告格式的标准化。ADAMS/PostProcessor 模块既可以在ADAMS/View模块环境中运行也可独立运行,并且独立运行时能加快软件启动速度,同时节约系统资源。
图3.3 后处理模块ADAMS/PostProcessor
3.1.4 求解器模块
ADAMS/Solver模块是ADAMS的来解器,包括稳定可靠的 Fortran来解器和功能更为强大丰富的C求解器。该模块既可以集成在ADAMS前处理极块下使用,也可以从外配且接调用;既可以进行交互方式的解算过程,也可以进行批处理方式的解算过程。求解器导入模型后自动校验模型,再进行初始条件分析,然后进行后续的各种解算过程。
ADAMS/Solver模块借助空间笛卡儿坐标系及欧拉角描述空间刚体的运动状态,使用欧拉-拉格朗日方程自动形成系统的运动学或动力学方程;采用牛顿—拉夫森迭代算法求解模型,包含多种显式、隐式积分算法,如刚性积分方法( Gear's和Modified Gear's)、非刚性积分方法(Runge-Kutta 和ABAM)、固定步长方法(ConUTant_ BDF) 以及二阶HHT和NewMark等积分方法;具有多种积分修正方法,如3阶指数法、稳定2阶指数法和稳定1阶指数法;支持柔性体-刚性体、柔性体—柔性体接触碰撞的计算;支持原生几何外形,如球、椭球体、四柱体、长方体等直接进行碰撞载荷的计算,借助简单几何形状特征尺寸的优势,采用侦测接触碰撞的分析方法进行渗入体积和接触碰撞力的计算,以提高计算的精度并减少计算时间。
ADAMS/Solver模块能进行静力学、准静力学、运动学和非线性瞬态动力学的求解,并支持用户自定义的Fortran或C子程序。
3.1.5 控制模块
一个完整的系统必然是机械系统与控制系统的有机结合,ADAMS/ Controls模块可以将控制系统与机械系统集成在一起进行联合仿真, 实现一体化仿真,如图3.4所示。主要的集成方式有两种:一 种是将ADAMS软件建立的机械系统模型集成到控制系统仿真环境中,组成完整的机—电—液耦合系统模型进行联合仿真;另一种方式是将控制软件中建立的控制系统导入到ADAMS模型中,利用ADAMS软件的求解器进行仿真分析。常见的控制软件有Matlab/Simulink、Easy 5等。
ADAMS/ Controls模块能够让机构和控制两个系统共享模型信息, 把机构的控制问题同时包含在分析中,建立完整的机电系统模型。一方面,可以使控制工程师获得与实际工况相符的机构运动规律;另一方面,利用整合的虚拟样机对机械系统和控制系统进行反复的联合测试,直到获得满意的设计效果。
图3.4 控制模块ADAMS/Controls
本教材假定读者具有一定的ADAMS的入门知识,所以并不会详细介绍ADAMS的所有基本操作,只讲解与本书相关的单连杆机器人、两连杆机器人、拟人臂机器人的建模、与MATLAB交互的Control模块的操作等,如果读者完全没有ADAMS的使用经验,可以参考本章后面的相关书目。
3.2 单连杆机器人ADAMS建模
3.2.1 问题描述
建立一个单连杆机器人机构模型,由基座和连杆构成,连杆长度为1m,厚50mm,其他尺寸如图3.5所示,密度为1000kg/m3。在基座与大地之间建立固定副,基座和连杆处建立一个旋转副,重力加速度沿Y轴负方向,为了输出控制模型与MATLAB交互仿真,创建状态变量,可以输出连杆的转角、角速度和角加速度,以及接受外部施加的力矩。
图3.5 单连杆机器人模型
3.2.2 启动ADAMS软件并设置工作环境
启动ADAMS/View→New Model,设置好模型名称、重力方向:沿y负方向、单位制和工作目录,点击OK进入工作界面,如图3.6所示。点击ADAMS菜单栏上的Settings→View Background color...,取消渐变色Gradient,并选择白色背景。点击菜单栏上的Settings→Working Grid...,在Set Orientation...下拉框中选择“Global XZ”,将工作网格改成X-Z平面。
图3.6 ADAMS软件工作环境
3.2.3 模型导入
虽然ADAMS具备一定的建模能力,但功能受限,一般需要在专业的CAD软件(如Solidworks、UG、PROE等)中创建机器人各部件的模型,并以其初始位形装配好,保存成推荐的Parasolid格式(扩展名.x_t),建模时尽量使各关节轴线方向与期望的全局坐标系方向一致,如果不一致后续还需要进行旋转等操作调整。点击ADAMS菜单栏File→Import...,从File Type下拉框中选择Parasolid(.xmt_txt, .x_t, .xmt_bin, .x_b),双击File To Read的空白文本框,选择CAD环境导出的机器人模型,双击Model Name的空白文本框,选择.SingleLink_Control,点击OK,如图3.7所示。
图3.7 单连杆机器人模型导入
可以在左侧模型导航树,选择对象鼠标右键单击→Info,查看导入模型的位姿(Location&Orientation)、密度(Density)、质量(Calculated Mass)、体积(Calculated Volume)、惯量张量(Mass Inertia Tensor)等,如图3.8所示。如果导入的模型存在诸如单位制与设置的单位制不匹配等错误,可以从这些数据中看出。
图3.8 查看导入模型信息
3.2.4 创建固定副旋转副
选择工具栏→Connector→Create a Fix Joint,构建方式为2 Bodies-1 Location,方向为Normal to Grid,分别单击base(1st Body)和ground(2nd Body),并选择base模型的下部角点,即可在基座与大地之间创建固定副,如图3.9所示。
图3.9 创建固定副
选择工具栏→Connector→Create a Revolute Joint,构建方式为2 Bodies-1 Location,方向为Pick Geometry Feature,分别单击Link1(1st Body)和base(2nd Body),选择base模型圆孔中心作为旋转副轴线的位置,沿Z方向拖动鼠标,当某一特征的箭头方向与全局坐标系的Z轴一致时单击鼠标左键确定,确定旋转副的轴线方向,从而在基座与连杆之间创建旋转副,如图3.10所示。
图3.10 创建旋转副
由于固定副和旋转副的创建,系统自动创建了MARKER_1、MARKER_2、MARKER_3和MARKER_4四个标记点,其中MARKER_1和MARKER_4位于base模型下,MARKER_2位于ground模型下,MARKER_3位于Link1模型下,MARKER_3和MARKER_4用于后面创建系统状态变量。如果MARKER的位置(Location)或方向(Orientation)不正确,可以在左侧模型导航树中找到该MARKER双击,在弹出的对话框中进行修改。在ADAMS中,默认使用ZXZ欧拉角来描述方向,也就是先绕Z轴旋转,再绕X轴旋转,最后再绕Z轴旋转,如图3.11所示。
图3.11 MARKER位置和方向修正
3.2.5 创建系统状态变量
为了与MATLAB/SIMULINK进行交互,需要在ADAMS中创建系统状态变量,主要是输出旋转副的实时转角、角速度、角加速度,以及接受MATLAB/SIMULINK输出的控制力矩。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为.SingleLink_Control.THETA1,定义方式为实时表达式(Run-Time Expression),在“F(time,...)=”文本框中输入“AZ(MARKER_3, MARKER_4)180/PI”,用于观测从MARKER_4到MARKER_3沿Z轴的转角,由于默认返回值的单位是弧度,这里通过180/PI将其转换为角度。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为.SingleLink_Control.dTHETA1,定义方式为实时表达式(Run-Time Expression),在“F(time,...)=”文本框中输入“WZ(MARKER_3, MARKER_4)180/PI”,用于观测从MARKER_4到MARKER_3沿Z轴的角速度,由于默认返回值的单位是弧度/秒,这里通过180/PI将其转换为°/秒。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为.SingleLink_Control.ddTHETA1,定义方式为实时表达式(Run-Time Expression),在“F(time,...)=”文本框中输入“WDTZ(MARKER_3, MARKER_4)180/PI”,用于观测从 MARKER_4到MARKER_3沿Z轴的角加速度,由于默认返回值的单位是弧度/秒2,这里通过180/PI将其转换为°/秒2。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为.SingleLink_Control.T1,定义方式为实时表达式(Run-Time Expression),由于该变量用于接收外部输入的实时变量,所以在“F(time,...)=”文本框中保持0不变。
创建的四个系统状态变量如图3.12所示。
图3.12 创建系统状态变量
3.2.6 创建输出/输入对象
需要创建与5中的状态变量对应的输出/输入对象。选择工具栏→Elements→Create an Adams plant output,Plant Output Name设置为“.SingleLink_Control.POUTPUT_THETA1”,Variable Name设置为“THETA1”,也可以双击文本框从数据库导航树中选取,从而创建THETA1对应的输出对象。同样的方法可以创建dTHETA1和ddTHETA1对应的输出对象。选择工具栏→Elements→Create an Adams plant input,Plant Output Name设置为“.SingleLink_Control.PINPUT_T1”,Variable Name设置为“T1”,创建T1对应的输入对象,如图3.13。
图3.13 创建输出/输入对象
3.2.7 创建关节转矩
最后还需要创建一个作用在Link1上的转矩,该转矩的大小由外部第三方软件(MATLAB等)输入对象关联的变量T1实时确定。选择工具栏→Forces→Create a Torque(Single-Component) Applied Force,实时方向(Run-time Direction)选择为Two Bodies,在视图区先单击选择Link1作为作用(Action)对象,再选择base作为反作用(Reaction)对象,分别选择Link1上特征一点和base上特征一点作为作用点,创建一个转矩,如图3.14所示。从左侧树形模型导航栏可以发现,Link1模型下多了一个MARKER_5(也可能是其他编号,读者可自己对应自己的模型编号),base模型下多了一个MARKER_6,由于这两个MARKER的位置和方位并不正确,因此转矩的方向也不正确,需要对这两个MARKER进行修正,分别双击MARKER_5和MARKER_6,将其如图3.15所示。
图3.14 创建关节转矩
图3.15 确定转矩方向的MARKER位置和方向修正
最后还需将状态变量.SingleLink_Control.T1与转矩的大小关联起来,双击左侧模型导航栏中刚创建的转矩对象,在弹出的转矩修正对话框中,保持其他参数不变,将Function改为“VARVAL(.SingleLink_Control.T1)”,如图3.16所示,其中VARVAL()是ADAMS的内置函数,表示返回括号内变量的值。
图3.16 转矩大小与状态变量的关联
3.2.8 导出控制对象
这一步将最终导出一个表征单连杆机器人的控制对象,该对象可以在MATLAB中打开,结合其他控制环节,可以构建完整的控制模型。选择工具栏→Plugins→Controls,单击Load the Controls Plug-in,加载控制模块插件,并选择Plant Export,在弹出的对话框中,从From Pinput中选择T1作为Input Single(s),从From Poutput中选择THETA1、dTHETA1和ddTHETA1作为Output Single(s),目标软件(Target Software)设置为MATLAB,分析类型(Analysis Type)设置为non_linear,ADAMS求解器语言(Adams Solver Choice)设置为FORTRAN,点击OK即可在工作目录输出控制对象,如图3.17所示。
图3.17 导出控制对象
查看工作目录可以看到,输出的文件有4个,如图3.18所示。以“.adm”为后缀的文件是ADMAS/Solver模型语言文件,包含了模型中拓扑结构信息,如Marker点、运动副、力、各种变量等。以“.cmd”为后缀的文件是由ADMAS/View命令格式编写的模型文件,包含所有的拓扑结构信息(包括所有几何信息)、模型仿真信息。以“.xmt_txt”为后缀的文件是Parasolid模型几何文件,包含了模型详细的几何特征信息(点、线、面、体等)。
图3.18 控制模块导出的文件
以“.m”为后缀的文件则是输出到MATLAB运行的文件,双击Controls_Plant_1.m文件,文件自动由MATLAB打开,单击MATLAB工具栏上的运行,可以得到,在命令行窗口中输出了模块作动器(actuators)信息,也就是输入转矩T1,以及传感器(sensors,也就是输出的转角THETA1、角速度dTHETA1和角加速度ddTHETA1),如图3.19所示。
图3.19 Controls_Plant_1.m文件的运行
在命令行窗口键入adams_sys,MATLAB/Simulink会生成一个名为adams_sys_.slx的模型文件并自动打开,如图3.20所示。该模型中包含三个模块,分别采用了三种方法描述ADAMS导出的控制对象:S-Function、State-Space和adams_sub。S-Function是以S函数的方式描述控制对象;adams_sub是子模型的形式,本质上与S-Function相同,只是增加了输入输出端口,使用起来更加方便,本书中使用的模型就是adams_sub,如图3.21所示,可根据需要在文本上双击,将其改为合适的名称;State-Space是控制对象的状态空间模型。
图3.20 adams_sys_.slx模型文件
图3.21 adams_sub子模型
双击adams_sub,在子模型中再双击MSC.Software,对话框中是关于ADAMS控制对象的参数,如求解器类型、进程间选项、动画模式、仿真模式、通信间隔等,如图3.22所示。求解器类型一般选择控制对象导出时选择的语言。进程间选项一般选择PIPE(管道式)。动画模式分为批处理(batch)和交互式(interactive),批处理模式在仿真时并不显示ADAMS软件界面,求解器在后台运行,仿真速度较快;交互式则会实时显示ADAMS界面及机构的运行画面,相对而言仿真速度要慢。仿真模式分为离散型和连续型,取决于用户选择的控制系统的类型。通信间隔是ADMAS与MATLAB/SIMULINK通信、交换数据的时间间隔,单位为秒,间隔越短数据交换越频繁,仿真速度越慢,但精度越高。
图3.22 adams_sub子模型设置
3.3 两连杆机器人建模
3.3.1 问题描述
与上例中的单连杆机器人类似,建立一个两连杆机器人机构模型,由基座和两个连杆构成,每个连杆长度均为1m,如图3.23所示,密度为1000kg/m3。在基座与大地之间建立固定副,基座和第一个连杆处、两连杆之间建立旋转副,为了输出控制模型与MATLAB交互仿真,创建状态变量,可以输出两个连杆的转角、角速度和角加速度,以及接受外部施加在关节上的转矩。由于本模型在机器人静力学仿真时用到,所以在第二个连杆的末端施加一方向沿负Y轴的负载力。有了上一例的帮助,本例的操作过程尽量简略,不再对一些具体的设置过程详细说明。启动软件、工作环境设置、模型导入、创建固定副旋转副的操作方法与上例中相同,且比较简单,这里不再赘述。
图3.23 两连杆机器人结构
3.3.2 创建负载力
经过前几个步骤后,建立的模型如图所示。总模型的名称为.TwoLinks_Control,此时,固定副、两个旋转副已建立完毕,如图3.24所示。
图3.24 两连杆机器人模型图
选择工具栏→Forces→Create a Force(Single-Component) Applied Force,实时方向选为Space-Fixed,构建方法选择Pick Feature。首先选择Link2,再选择Link2末端圆孔中心处某一特征,再移动鼠标至下方某一位置后单击鼠标,生成负载力,并将其名称改为Load。此时,会在Link2模型和ground下分别生成一个MARKER点,这两个MARKER点的位置和方向可能不正确,在模型树中分别双击该两个MARKER点,将其位置和方向参数修改为如图3.25所示。
图3.25 创建负载力
3.3.3 创建系统状态变量
创建系统状态变量的方法与上例相同,只是此时需要创建连杆1和连杆2的转角、角速度、角加速度、转矩等8个变量。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为THETA1,定义方式为实时表达式(Run-Time Expression),在F(time,...)=文本框中输入“AZ(MARKER_3, MARKER_4)180/PI”。同样的方法可以创建THETA2,只是表达式中的两个MARKER不同(就是创建Link1和Link2之间旋转副时系统自动创建的MARKER)。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为dTHETA1,定义方式为实时表达式(Run-Time Expression),在F(time,...)=文本框中输入“WZ(MARKER_3, MARKER_4, MARKER_3)180/PI”,这里第2个MARKER_3是相对旋转轴,如果省略则相对于全局坐标系(本例可以省略,因为局部坐标系的方位与全局坐标系相同,有些例子则不能省略)。同样的方法可以创建dTHETA2,只是表达式中的MARKER不同。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为ddTHETA1,定义方式为实时表达式(Run-Time Expression),在F(time,...)=文本框中输入“WDTZ(MARKER_3, MARKER_4)180/PI”。同样的方法可以创建ddTHETA2,只是表达式中的两个MARKER不同。
选择工具栏→Elements→Create a State Variable defined by an Algebraic Equation,名称设置为T1,定义方式为实时表达式(Run-Time Expression),在F(time,...)=文本框中保持0不变。同样的方法可以创建T2。
创建的系统状态变量如图3.26所示。
图3.26 创建系统状态变量
3.3.4 创建输出/输入对象
选择工具栏→Elements→Create an Adams plant output,Plant Output Name设置为“.TwoLinks_Control.POUTPUT_THETA1”,Variable Name设置为“THETA1”,创建THETA1对应的输出对象。同样的方法可以创建dTHETA1、ddTHETA1、THETA2、dTHETA2和ddTHETA2对应的输出对象。选择工具栏→Elements→Create an Adams plant input,Plant Output Name设置为“.TwoLinks_Control.PINPUT_T1”,Variable Name设置为“T1”,创建T1对应的输入对象,如图3.27所示。同样的方法可以创建T2对应的输入对象。
图3.27 创建输出/输入对象
3.3.5 创建转矩
最后需要创建分别作用在Link1和Link2上的转矩,这两个转矩的大小由外部第三方软件(MATLAB等)输入对象关联的变量T1和T2实时确定。创建的方法与上例相同,名称改为Torque1和Torque2,如图3.28所示。注意由于用户在鼠标选取时的随机性,系统自动生成的4个MARKER(两对)的位置和方位并不正确,因此两转矩的方向也不正确,需要对这4个MARKER进行修正(两两相同),将其如图3.29所示。
图3.28 创建转矩
图3.29 确定转矩方向的MARKER位置和方向修正
最后还需将状态变量.TwoLinks_Control.T1、.TwoLinks_Control.T2与创建的两个转矩的大小关联起来。分别双击左侧模型导航栏中刚创建的转矩对象,在弹出的转矩修正对话框中,保持其他参数不变,将Function改为“VARVAL(.TwoLinks_Control.T1)”和“VARVAL(.TwoLinks_Control.T2)”,如图3.30所示。
图3.30 两转矩大小与两状态变量的关联
3.3.6 导出控制对象
最终导出表征两连杆机器人的控制对象,选择工具栏→Plugins→Controls,单击Load the Controls Plug-in,加载控制模块插件,并选择Plant Export,在弹出的对话框中,从From Pinput中选择T1和T2作为Input Single(s),从From Poutput中选择THETA1、THETA2、dTHETA1、dTHETA2、ddTHETA1和ddTHETA2作为Output Single(s),目标软件(Target Software)设置为MATLAB,分析类型(Analysis Type)设置为non_linear,ADAMS求解器语言(Adams Solver Choice)设置为FORTRAN,点击OK即可在工作目录输出控制对象,如图3.31所示。
图3.31 导出控制对象
得到控制模型后的使用方法与上例相同,这里不再赘述。
3.4 拟人臂机器人建模
3.4.1 问题描述
拟人臂机器人是一个3轴机器人,由基座、腰部、大臂和小臂构成。该机器人有三个关节:腰关节、大臂关节、小臂关节,各构件大体尺寸如图3.32所示,密度为1000kg/m3。重力加速度方向沿Z轴负方向。输出机器人的控制模型可与MATLAB交互仿真,创建状态变量,可以输出变量包括所有关节的转角、角速度,输入变量为施加在各关节上的转矩(不再导出角加速度)。本例不再显示操作过程,只对一些重要过程的建模结果加以展示。
图3.32 拟人臂机器人结构
3.4.2 最终模型
经过前几个步骤后,建立的模型如图3.32所示。总模型的名称为.Robot_Humanoid_arm,此时,基座与大地之间的固定副、三个旋转副以及关节转矩已建立完毕。
图3.32 拟人臂机器人Adams最终模型
3.4.3 创建系统状态变量和输入/输出对象
创建系统状态变量的方法与上例相同,此时需要创建腰关节、大臂关节和小臂的转角、角速度、转矩等9个变量,如图3.33(a)所示。然后为每个变量创建对应的输入或输出对象,如图3.33(b)所示。
图3.33 创建系统状态变量和输入/输出对象
3.4.4 导出控制对象
最终导出的表征拟人臂杆机器人的控制对象如图3.34所示。
图3.34 导出控制对象
得到控制模型后的使用方法与上例相同,这里不再赘述。
3.5 球坐标机器人(RRP)建模
3.5.1 问题描述
球坐标机器人由两个旋转关节和一个滑动关节构成,各构件大体尺寸如图3.35所示,密度为1000kg/m3。重力加速度方向沿Z轴负方向。输出机器人的控制模型可与MATLAB交互仿真,创建状态变量,输出包括所有两个旋转关节的转角、角速度,滑动关节的位移、速度,输入变量为施加在各关节上的转矩和力(由于第10章习题10.2用到了本模型,我们还将两个旋转关节的转角和滑动关节的位移作为输入变量,同时给每个关节添加驱动,使ADAMS可以直接读入Simulink生成的轨迹指令)。本例与拟人臂机器人的建模过程基本相同,唯一的区别是球坐标机器人第3个关节是滑动关节,施加在该关节上的是力而不是力矩,所以与前面相同的操作将不再赘述,只对一些重要过程的建模结果加以展示。
图3.35 球坐标机器人
3.5.2 最终模型
经过前几个步骤后,建立的模型如图3.36所示。此时,基座与大地之间的固定副、两个旋转副、一个滑动副,以及两个关节转矩和一个关节力已建立完毕。
图3.36 球坐标机器人Adams最终模型
3.5.3 创建系统状态变量和输入/输出对象
创建系统状态变量的方法与上例相同,如图3.37(a)所示,然后为每个变量创建对应的输入或输出对象,如图3.37(b)所示。其中,变量DISP3为滑动关节的线位移,其表达式为DZ( MARKER_7, MARKER_8, MARKER_7),变量VELO3为滑动关节的线速度,其表达式为VZ( MARKER_7, MARKER_8, MARKER_7),这里的第3个参数不可省略,如图3.38所示。
图3.37 创建系统状态变量和输入/输出对象
图3.38 创建系统状态变量和输入/输出对象
3.5.4 创建关节驱动
为了使关节可以直接按照读入的在Simulink中生成的轨迹指令运动,给每个旋转关节和滑动关节添加驱动,如图3.39所示。两个旋转关节驱动(以JOINT2为例)的函数表达式为:1dVARVAL(.RRPROBOT.THETA1_input),滑动关节驱动的函数表达式为:VARVAL(.RRPROBOT.DISP3_input),如图3.40所示。
图3.39 创建旋转关节和滑动关节驱动
图3.40 旋转关节和滑动关节驱动函数表达式设置
3.5.5 导出控制对象
最终导出的球坐标机器人的控制对象如图3.41所示。
图3.41 导出控制对象
得到控制模型后的使用方法与上例相同,这里不再赘述。
(有需要Adams源文件的可以私信联系)