APP下载

单足弹跳机器人联合仿真教学实践

2016-12-24李瑞史莹晶何笑隆

计算机教育 2016年8期

李瑞 史莹晶 何笑隆

摘要:提出通过ADAMS软件建立单足弹跳模型,搭建ADAMS与MATLAB的联合仿真平台,阐述通过在仿真中实时观察机器人的运动过程,并结合模型反馈回的数据曲线,学生可以完成单足模型的腿部摆角控制实验、能量补偿实验等。

关键词:机器人建模;联合仿真;摆角控制;能量补偿

0 引言

机器人技术在近二三十年里得到了迅速的发展,其应用范围也从工业制造领域扩展到了航空航天、军事侦察、医疗服务等领域。随着机器人工作环境的日益复杂,对于机器人运动灵活性的要求也越来越高。目前,机器人运动主要分为轮式、步行以及弹跳等方式,其中弹跳式运动所特有的突然性与爆发性,可以使机器人在面对突发状况时迅速地做出反应,躲避风险,正被越来越多的科研院校所关注。

目前,国内很多工科院校都把机器人学作为一门必修或选修的课程。然而,在传统的教学中,机器人学中的运动学、动力学建模部分涉及复杂的分析与运算。对于弹跳机器人,更包含着地相、腾空相、冲击过程等若干个阶段,建模十分复杂;此外,由于机器人设备价格昂贵,且对操作性以及场地要求较高,目前还很难做到让每个学生进行实际的机器人操作。随着虚拟样机技术的发展,在虚拟样机软件中建立用于仿真的模型,并与其他仿真软件相结合的联合仿真技术,对于机器人的研究与教学工作发挥着重要的作用。

1 联合仿真技术简介

ADAMS是一款对机械系统的运动学与动力学进行仿真与计算的软件。作为一款虚拟样机软件,ADAMS丰富的特性,使其成为目前世界上使用最多的机械系统仿真分析软件。这套软件可以对较为复杂的机械系统进行建模,并真实地反应实物的运动学、动力学等特性。然而,由于该软件自带的控制工具箱较为简易,因此只能满足比较简单的控制需求。

MATLAB作为专业的数学计算与仿真软件,借助其丰富的工具箱以及强大的控制系统的设计能力,可以搭建出复杂的控制系统。但在建立复杂运动系统的模型时,需要推导出系统中用于仿真的所有微分方程,导致工作量急剧增加,其中从分析模型到计算推导,任意一个环节出错都可能导致建模失败。

通过将ADAMS软件中建立的模型导入到MATLAB的Simulink环境中,可以弥补ADAMS软件难以对模型进行较为复杂控制系统设计的缺陷,同时也避免了在MATLAB下建模的难度与时间长的弊端。二者的结合弥补了各自的缺陷,极大地提高了建模的效率,并使得仿真的结果更加趋近于实物。因此基于ADAMS和MATLAB的联合仿真技术在航空航天、机械制造、机器人等领域都得到了广泛的应用。

2 机器人联合仿真平台搭建

弹簧负载倒立摆模型(SLIP)是用来研究机器人弹跳运动的经典模型,整个模型由一个有质量的身体以及与髋关节相连的轻质弹簧腿组成。位于髋关节处有一转动自由度,使得弹簧腿可以调整着地角度,以实现整个弹跳过程。由于联合仿真平台的搭建是本教学实践的一部分,只有了解平台的搭建过程,才可以在仿真平台上开展实验,并及时修改实验过程中出现的错误。因而,首先介绍联合仿真平台的搭建过程,如图1所示。

2.1 建立单足机器人的ADAMS模型

首先介绍如何针对弹簧负载倒立摆模型,在ADAMS环境下搭建弹跳模型运动仿真平台。

(1)添加构件。弹簧负载倒立摆模型主要由身体和弹簧腿两部分组成,其中身体质心等效在髋关节,因此在建模时可以用有质量的球体代替。

在ADAMS环境下,选取有质量信息的几何实体(Solids)模块,选择球体(Sphere)用来模拟身体质心,设置其半径为5.0cm,并拖动到图形区。在创建新构件时,系统会在球体的球心处创建一个质心坐标系(cm)和局部坐标系(Marker点),其中质心坐标系用于计算构件的质量信息,而局部坐标系用于确定球体的位置和方向。由于在ADAMS中新添加的构件根据大小以及密度自动计算质量,需手动修改其质量,改为4.5kg。

创建新构件圆柱体(cylinder),连接在球体正下方,作为弹簧腿刚性部分,设置半径为2.0cm,长度为20.0cm,并修改其质量为0.5kg。在圆柱体正下面50cm处添加新构件球体,用以代替足端,设置其半径为2.0cm,并修改其材质为Wood。在圆柱体与轻质球之间连接弹簧阻尼器,其长度为500mm,刚度系数设置为2N/mm,阻尼系数采用默认值。

(2)添加约束。已建立的模型由多个构件组成,各个构件之间通常存在某些约束关系,即一个构件限制另一个构件的运动,两个构件之间的约束关系通常称之为运动副。弹簧负载倒立摆模型有两个自由度,一个是髋关节处腿部的转动自由度,一个是弹簧腿轴向的自由度。因此需要在球体质心位置(即髋关节)定义旋转副约束,如图2(a);而为了约束弹簧在运动时只在轴向伸缩,需要在弹簧与圆柱体连接处定义滑动副约束,如图2(b)。

(3)定义地面及接触力。当两个构件的表面之间发生接触时,两个构件就会在接触的位置产生接触力。

对于弹簧质量模型,由于要研究其在地面上的弹跳运动,因此需要定义地面及其接触力、摩擦力等以模拟真实地面情况。

首先选择零件库中的立方体(Box)作为地面,设置长、高、深分别为1000cm、5cm、20cm,修改材质为Wood,并调整位置,使上表面与x轴重合,且关于z轴对称。添加固定关节(FixedJoint),使其与大地固连。在Force工具条中,点击Create Contact按钮,设置足部球体与地面的接触类型为Solid to Solid,计算接触力的方法采用冲击函数法(Impact),其中的参数采用默认值。在摩擦力选项中,选择Coulomb(库仑法),并设置静态摩擦系数为0.3,动摩擦系数为0.1。

最终在ADAMS环境下建立的模型如图3所示。

2.2 ADAMS模型导出到MATLAB环境

(1)定义输入输出。ADAMS与MATLAB之间的数据交换是通过状态变量实现的,在定义输入输出以前,需要将相应的状态变量定义好。在本模型中,需要输入的变量为髋关节转矩;输出变量为腿部着地角度、身体质心的前向速度与高度、足底与地面接触力等。

创建力矩的状态变量并命名为.SLIP.Torque,在髋关节的转动关节处添加单分量力矩,并修改其函数为VARVAL(.SLIP.Torque),使模型中的状态变量(Torque)与单分量力矩相关联。

创建着地角度、质心高度、速度及接触力的状态变量,分别命名为angle、Height、Velocity、Contact。着地角度函数为AZ(MARKER_11,MARKER_12),即位于圆柱腿上的坐标MARKER 11相对于身体上的坐标MARKER 12关于z轴旋转的角度。同理,分别用DY、VX和CONTACT函数定义高度、速度以及接触力的状态变量。

设置完状态变量后,分别指定状态变量Torque为输入变量,Angle、Contact、Height、Velocity为输出变量。

(2)导出控制参数。在创建完控制输入与控制输出后,选择Control菜单的Plant Export选项,分别将之前定义的输入输出变量加载到列表中,将Target Software选择为MATLAB,Analysis Type类型选择为non linear。

通过以上设置,在ADAMS工作目录中,将生成Controls_Plant.m,Controls_Plant.cmd,Controls_Plant.adm 3个文件。启动MATLAB,将MATLAB工作目录指向ADAMS的工作目录。在命令窗口中输入Controls Plant,即执行Controls Plant.m文件,此时在MATLAB的工作空间中将导人ADAMS模型信息,如图4(a);接着输入命令adams_sys,该命令是ADAMS与MATLAB的接口命令,由此可以生成如下模型,如图4(b)。

其中,S-Function表示ADAMS模型的非线性模型,State-Space表示线性化模型,而adams sub为我们仿真需要的模型,包含了之前定义的输入与输出变量。至此,ADAMS模型在MATLAB中的仿真模型生成完毕,可以在Simulink环境下对其进行仿真实验。

由于在联合仿真平台的搭建过程中,涉及的细节很多,而且容易出错,因而,对参与教学实践的学生首先分组,采用组长负责制,逐层推进,保证每个学生均可独立完成平台搭建。

3 仿真平台的实验

针对搭建的单足弹跳机器人仿真平台,可引导学生进行相关控制器的学习与设计。目前学生已经在此平台基础上,进行了单足机器人腿部摆角实验、着地角度与前向速度关系实验,以及弹簧腿能量补偿实验等。

3.1 模型腿部摆角实验

对于单足机器人的弹跳运动研究,首先需要解决的就是腿部摆动角度的控制。通过将模型的身体固定,利用髋关节转矩控制腿部的转动角度,学生设计了PID控制器。给定幅值为30°,周期为ls的方波信号,实现了腿部角度跟踪任务,如图5所示。

3.2 着地角度与前向速度关系实验

在腿部摆角实验的基础上,学生又对着地角度与前向弹跳速度的关系进行了研究与实验。在弹跳机器人即将从腾空相进入着地相时,需要调整腿部着地角度,以使机器人的脚趾落在合适的位置。通过控制模型腿部摆角来影响落地点的位置,机器人或保持原有速度,或加快弹跳速度,或降低弹跳速度。当模型的着地速度与离地速度相同时,此时脚趾落地点的位置称为中性点。学生在学习理解中性点的概念后,分析落地点相对于中性点的3种不同位置对于弹跳速度的影响,并在仿真平台中进行验证。

对于弹跳运动相对于中性点对称的情形,研究人员总结出用于计算弹簧质量模型前向速度的公式,通过计算可得,在前向速度为1.5m/s时,稳定运动的着地角度约为13.6°,如图6所示。

此外,学生又分别增大和减小腿部着地角度,观察模型着地点落在中性点近端和远端时对模型前向速度的影响。

在实际着地角度小于期望角度时,模型的矢量平面将发生偏转,此过程离地时的角度将增大,整个模型做加速运动,如图7所示。

与加速过程相反,该状态下着地角度大于期望角度,从而导致模型离地角度减小,随着前向速度的不断减小,模型最终失稳,甚至出现反向跳跃的过程,如图8所示。

3.3 SLIP模型能量补偿实验

在忽略能量损耗的情况下,只要确定了在期望速度下的着地角度,SLIP模型便能够实现稳定的周期跳跃运动。然而,在实际的运动过程中,由于落地碰撞以及摩擦等原因,导致系统能量不断损耗,因此需对模型在每个周期损耗的能量进行补偿。

针对这一问题,学生采用为弹簧滑动关节处加一外力用以压缩弹簧,以达到补偿能量的目的。鉴于此,学生对已建立的ADAMS模型增加了输入变量F,增加了输出变量弹簧压缩量Spring Length,以及模型质心竖直方向速度Velocity On Y。

基本的弹跳状态可以分成着地相和腾空相,在此基础上,学生将模型的运动状态进行了细分,建立有限状态机的控制逻辑。通过检测模型质心在竖直方向的速度以及与地面接触力,来判断模型当前所处的状态,并分别在不同状态下进行不同的控制,如图9所示。

能量损耗很大一部分原因是由模型冲击地面造成的,随着数次落地弹起的过程,弹簧在着地期间的压缩量越来越小。通过观察模型在自由状态下落地前后两个周期质心的高度差,可以求得一次落地时的能量损耗,进而计算得到每次着地期间所需的补偿力。通过有限状态机判断当前模型运动所处的状态,并在触底事件发生时进行能量补偿,最终实现模型的周期弹跳运动,运动曲线示意图如图10所示。

4 结语

通过本教学实践,学生掌握基于ADAMS与MATLAB的联合平台的搭建方法,系统地实践了机器人动力学建模方法。基于ADAMS与MATLAB的联合仿真平台,使得学生在仿真时不仅可以得到仿真曲线,更可以实时观察模型的运动过程,这种教学实践方法提高了学生的学习自主性与科研热情。

(编辑:郭田珍)