第5章 simscape机械臂仿真教程

5.3 UR5关节力矩控制轨迹仿真

5.3.1 simscape概述与环境配置

Simscape是simulink下集成的一个仿实物建模工具箱,可用于包括传动机构、流体、电力电子、多刚体等物理建模,这里我们可以使用多刚体库进行机器人的建模仿真,从而实现从三维实体建模到机器人运动和受力特性的快速设计分析,加快机器人系统原型的设计。

比如下图就是arm文件夹下机械手臂的模型例子example_robot.slx,通过一些模块的相连组成一个模型,直接点击运行就可以模拟手臂关节按正弦轨迹进行运动。

图5-4 simscape机械臂示例模型

下面我们将帮助用户如何建立自己的模型,并进行仿真测试。

安装过程:

这里我们使用SolidWorks进行机器人三维实体建模,然后通过安装其中的Simscape Multibody Link插件输出能够在simulink生成模型的相关文件,这些文件包括模型装配和刚体物理属性文件***.xml和多个包含刚体几何特征信息文件.STEP。其中matlab就是根据***.xml生成模型的,而.STEP文件能够让模型运行的时候在simulink自带的三维视景窗口观察机器人运动动画。

首先我们可以从matlab官网上下载与matlab版本(这里以2016b举例)对应的插件smlink.r2016b.win64.zip安装包和安装函数install_addon.m,注意下载完之后,压缩包不需要解压。然后打开matlab,并将工作目录切换到这两个文件所在目录。接着,在命令行输入窗口直接输入如下“install_addon('smlink.r2016b.win64.zip')”,即通过调用安装函数install_addon.m,回车即可开始安装。

等待一会就可以完成了matlab端的插件安装,之后再在命令行窗口输入“smlink_linksw”,完成SolidWorks端的安装。完成之后,再输入“regmatlabserver”,将当前版本的matlab作为服务端,这样在SolidWorks调用插件导出文件的时候才能识别文件应用的matlab版本。

如果我们之前没有安装SolidWorks的话,先安装它,然后打开,这里以SolidWorks2010为例,介绍导出文件的过程。首先通常情况下,每次重启SolidWorks都没选上插件选项,为此需要我们手动勾选,如下图所示:

图5-5 solidworks设置simscape multibody link插件

之后在菜单栏便出现了导出按钮:

图5-6 solidworks中 simscape multibody link按钮位置

5.3.2 simscape建立UR5模型

对UR5机器人进行三维建模,保存为UR5.step。以solidworks2010载入UR5.step文件,设置好关节约束的情况如下图,图5-7的配合设置中,6个同心代表6个关节轴线,6个重合代表各连杆位置依次相连。

随后设置‘simscape multibody link’插件(方法见图5-5),再输出*****.xml文件(操作见图5-7),等待一会生成的文件如图5-8.

图5-7 solidworks中生成simscape模型
图5-8 UR8机器人simscape模型文件

将图5-8文件复制到任意需要的路径下,然后将matlab工作目录切换至相同路径下,如图5-9,在命令窗口运行robot = smimport('UR5_1.xml'),会自动生成脚本robot_6_dof_DataFile以及simulink模型UR5_1。

图5-9 matlab中自动生成UR5机器人的simscape模型

将UR5_1模型的仿真时间更改为0秒,直接运行,结果见图5-10。在弹出的窗口中,右侧直接显示机器人三维模型,左侧树状图显示相关刚体部件(即各连杆)和运动副。在动画窗口按住鼠标滚轮拖动可以进行三维实体旋转,也可前后滚动滚轮进行放大缩小。工具上也有各个视图按钮可以选择,底下也有各个播放按钮和播放快慢按钮。

图5-10 UR5机器人仿真可视化窗口

(1)刚体颜色修改

UR5机器人的simscape模型如图5-11,每个刚体之间均已转动副连接,每个转动副和刚体的输入输出信号都是坐标系。

图5-11 UR5机器人simscape模型简单介绍

每个刚体都单独设置为一个子系统,内部如图5-12所示,子系统的输入输出都是坐标系接口,我们定义左侧F1为起始坐标系,右侧F为末端坐标系。从图5-12中可以看出起始坐标系F1和参考坐标系ReferenceFrame是直接相连的,代表两个坐标系相同。Solid模块用来存储刚体信息的,它在参考坐标系里定义,所以和它直接相连。末端坐标系F相对于参考坐标系有偏移和旋转,所以增加一个坐标系转换模块。

图5-12 刚体子系统

刚体模块需要输入的信息包括几何图形、质量惯量、显示特性等,这些在模型生成的时候就已经自动填入,当然也可以根据需要进行修改,比如修改刚体的颜色,以便区分各个连杆,双击‘solid’如下图设置颜色。

图5-13 刚体参数(颜色)设置

(2)全局重力设置

在图5-11中左侧双击‘扳手’图框,设置全局重力大小和方向,一般而言默认设置方向与三维模型的世界坐标系设定有关。

(3)关节设置

双击转动副‘Revolute1’,参数设置界面如下:

图5-14关节参数设置

State Targets ->Specify Position Target定义的是关节的初始偏转角度。

  1. Internal Mechanicals 可以在关节处添加弹簧Spring和阻尼器damping元件,如此可以储能和消能。Equilibrium是弹簧的零位角度,即没有弹力时候的角度。
  2. Actuation是控制输入,可以选择力矩Torque输入或者角度Motion输入。值得注意的是,这两个选项的设置是关联的。当选择力矩输入时,运动选项必须设置为自动计算;而当选择角度输入是,力矩选项设置为自动计算,即两者是互斥的。选择力矩输入时通过作为动力学仿真,选择角度输入时为运动仿真,如下图所示。
图5-15 力矩仿真模式设置
图5-16 运动仿真模式设置

基于图5-16的关节驱动设置,输入关节空间角度,可以进行协作机器人的运动仿真,进行正运动学的可视化仿真、逆运动学算法的验证、轨迹规划的直观仿真等。

  1. Sensing可以选择输出关节的运动的信息,包括角度、角速度、角加速度和作动器力矩等。值得注意的是,当控制输入为角度输入时,角速度、角加速度和作动器力矩都是没有值的,即关节理想成瞬间到达指定角度。
  2. Composite Force/Torque Sensing 可以选择输出关节约束力、力矩和合力、合力矩,它们都是3元向量。通常关节的旋转轴都是沿着参考坐标系的Z轴方向,所以对于单轴转动关节来说,约束力矩的Z轴分量为零,因为它可以自由转动。而合力矩的Z轴分量等于控制力矩输入。值得注意的是,当选择角度输入时,由于没有角速度和角加速度信息,所以合力矩的Z轴值不包含科式/离心力矩和惯性力矩,通常只有重力项力矩。

设定好之后,我们可以模块的会多出对应的接口,

由于接口是物理信号,所以如果我们想要控制它也需要输入物理信号,数字信号和物理信号之间点的转换可以通过PS模块进行转换。

图5-17 simscape物理信号PS与数字信号转换模块

另外,控制输入需要离散值输入,所以我们可以加入一个零阶保持器模块,并设置采样周期,从而将连续信号转换成离散信号。

(4)观测末端位姿

如果我们观察两个坐标系之间的转换关系,比如观察连杆末端到基坐标(或者世界坐标)的位姿,那么可以使用Transform Sensor模块进行测量,并选择关心的信息进行输出。

图5-18 simscape坐标变换传感器模块
图5-19 simscape坐标变换传感器输出参数设置

5.3.3 关节力矩下的跟踪轨迹仿真

(1)仿真模型和结果

在simulink生成UR5机器人物理模型的基础上(见图5-11的模型UR5_1),设置关节驱动模式为力矩仿真,运动状态自动计算(操作见图5-15),添加各关节的摩擦力,以及勾选关节参数设置窗口Sensing下的位置与速度(操作见图5-14),对控制器进行建模,以预设关节位置和速度以及UR5物理模型关节传感器反馈的关节位置和速度作为输入,生成控制力矩,以期实现预设关节空间轨迹的跟踪。图5-20为最终的模型和仿真结果。

图5-20 UR5力矩跟踪轨迹的物理仿真模型和结果

在图5-20中,可以发现,示波器6为控制器给机器人物理对象的关节力矩输入,每个关节力矩均有不同程度的噪声,从力矩大小上来看,关节2,3的力矩大小远大于其它关节,这是串联机械臂本身的机构以及后续刚体相对该关节的转动惯量和重力项力矩较大所导致;示波器8为关节空间的轨迹,6个关节一致。示波器3为UR5机器人物理模型的轨迹跟踪结果,可以看出0.5s后,跟踪效果基本与预设轨迹一致,而且时刻0时,物理模型关节角度就与预设值的[0 0 0 0 0 0]’有一定的偏差(如图5-21),从而造成了关节轨迹在初始时间段0-0.5s的跟踪误差较大;示波器9为物理模型关节的速度。

图5-21 UR5力矩跟踪0时刻的位置偏差

Simulink中物理窗口UR机器人运动视频见图5-22。动画效果以及图5-20的关节仿真的轨迹可以看到第2s,12s时刻存在抖动,控制效果不佳,可以调节控制器的相关参数值甚至更改控制器,获得更好地轨迹跟踪控制效果。

图5-22 UR5力矩跟踪轨迹的动画(双击观看,暂略)

(2)控制器设置

模型UR5_dynamic的控制器其实并未考虑动力学方程,只是基于位置环P与速度环PI控制输出转动副的力矩,见图5-23,此时物理仿真的效果也能跟踪预设轨迹。

图5-23 位置环与速度环生成控制力矩

在模型UR5_dynamic的基础上,考虑动力学方程,在控制力矩前添加前馈力矩,以加大动态响应和轨迹跟踪精度,在这里前馈力矩先设为公式(5-2)中的重力项力矩,该力矩是关节角度向量的函数,模型UR5_dynamic_feedforward和轨迹跟踪仿真结果如图5-24所示,示波器1为重力项力矩图,其中关节2,3的重力项力矩明显远大于其它关节,且随位置的变换而变化;示波器3中的关节轨迹变化不明显,第2s,12s的关节依然有抖动现象,可以继续尝试调节控制器中的相关参数值,或者添加更完整的力矩前馈成分。

图5-24 重力项力矩前馈控制仿真

(3)仿真操作

1)预备操作:matlab与solidworks环境配置与模型生成,见5.3.1节。安装文件如下图,在文件夹simscape_robot_sim下

2)运动学仿真:打开simscape_robot_sim下的UR5_2模型,如图5-25,设置关节角度数值,图示为[0 0 90° 0 90° 0],点击仿真,结果如图5-26.

图5-25 UR5机器人运动学模型
图5-26 UR5机器人[0 0 90° 0 90° 0]正向运动学位姿

UR5_2模型调用逆运动学算法模块,可以验证逆运动学算法的正确性,以及复现课程4中的相关轨迹模型

3)动力学力矩仿真:

1.先运行simscape_robot_sim下的robot_6_dof_initial脚本,生成动力学模型中的摩擦力模型参数、转动副最大力矩等参数。

2.打开UR5_dynamic或者UR5_dynamic_feedforward模型,点击仿真按钮开始仿真,最后观察Mechanics Explorer窗口动画。

3.其它轨迹跟踪仿真,替换UR5_dynamic或者UR5_dynamic_feedforward模型中的轨迹生成部分,生成其它的轨迹。

4.控制器修改,可反复调试修改相关参数,仿真观察轨迹跟踪情况。

5.力矩前馈以及控制方案修改。