主要内容

执行安全使用机器人机械手轨迹跟踪控制块

这个例子展示了如何使用仿真软件®与机械手轨迹跟踪控制算法模块来实现安金宝app全的模拟机器人。

机器人系统工具箱™和Simscape多体™都需要运行这个例子。

介绍

这个示例提供了一个模型,实现了一个computed-torque控制器使用机械手关节位置和速度反馈算法模块。控制器接收从一个模拟机器人关节位置和速度信息(使用Simscape实现多体)和发送驱动转矩命令机器人沿着给定的关节轨迹。平面对象放置在前面的机器人的终端执行器机械臂将在执行轨迹时撞上它。没有任何额外的设置,转矩感到从碰撞的对象可以在机器人或对象造成损害。实现安全的轨迹跟踪,一个轨迹定标器是用来调整时间戳当分配所需的运动控制器。你可以调整一些参数和与机器人交互模式运行时,观察对模拟机器人的影响。

建立了机器人模型

这个示例使用的模型重新考虑索耶,七自由度机器人机械手。调用importrobot生成一个rigidBodyTree机器人模型描述存储在一个统一的描述格式(URDF)文件。设置DataFormat重力属性与Simscape一致。访问这个金宝app机器人模型的仿真软件模型仿真的工作空间。

索耶= importrobot (<年代p一个n年代tyle="color:#A020F0">“sawyer.urdf”);sawyer.removeBody (<年代p一个n年代tyle="color:#A020F0">“头”);索耶。DataFormat =<年代p一个n年代tyle="color:#A020F0">“列”;索耶。Gravity = [0, 0, -9.80665];

轨迹生成

首先,分配的开始时间和持续时间的轨迹。

tStart = 0.5;tDuration = 3;

接下来,指定初始和目标配置。q0处初始配置和吗第一季度是目标配置。

q0 = [0;-1.18;0;2.18;0;-1.0008;3.3161);q1 = 0 (7, 1);

下图显示了机器人可视化的初始配置和目标配置相关平面物体的位置。平面物体放置,这样机器人轨迹跟踪期间会发生碰撞。

在仿真软件模型金宝app,<一个href="//www.tatmou.com/kr/kr/help/robotics/ref/polynomialtrajectory.html" data-docid="robotics_ref#mw_59e05d0a-835f-4d56-85a6-ee509b10771a" class="a">多项式的轨迹块计算机器人的位置、速度和加速度轨迹上任何即时使用5次多项式。

金宝app仿真软件模型概述

接下来,打开仿真软件模型。金宝app上述变量生成已经存储在模型仿真软件工作区:金宝app

open_system (<年代p一个n年代tyle="color:#A020F0">“robotSafeTrajectoryTracking.slx”);

robotSafeTrajectoryTracking模型实现了一个计算力矩控制器与轨迹扩展安全轨迹跟踪。在这个模型中有三个主要的子系统:

  • 计算转矩控制器

  • 缩放和期望的运动轨迹

  • Simscape多体模型与简单的接触力学

在每个时间步,如果轨道伸缩开关,修改的时间戳是用来评估所需的关节位置、速度和加速度。然后,计算力矩控制器使用机械手块与rigidBodyTree模型跟踪所需的运动。派生的控制输入是送入索耶在Simscape多体模型,在平面对象包括与机器人互动。

构建计算转矩控制器

的机械手<年代p一个nclass="inlineequation"> n 非固定关节,系统动力学可以表示为:

( ) ¨ + C ( , ˙ ) ˙ + G ( ) = u

在哪里<年代p一个nclass="inlineequation"> ,<年代p一个nclass="inlineequation"> ˙ ,<年代p一个nclass="inlineequation"> ¨ ,<年代p一个nclass="inlineequation"> R n 位置、速度和加速度的广义坐标,<年代p一个nclass="inlineequation"> u R n 是控制输入(扭矩),<年代p一个nclass="inlineequation"> ( ) 关节空间质量矩阵,<年代p一个nclass="inlineequation"> C ( , ˙ ) ˙ 是速度的产品扭矩,<年代p一个nclass="inlineequation"> G ( ) 是重力力矩。追踪沿着期望关节轨迹与期望的位置<年代p一个nclass="inlineequation"> d 、速度<年代p一个nclass="inlineequation"> ˙ d 和加速度<年代p一个nclass="inlineequation"> ¨ d 计算力矩控制器计算获得给定配置所需的扭矩和速度,提供了机器人动力学变量<年代p一个nclass="inlineequation"> ( ) ,<年代p一个nclass="inlineequation"> C ( , ˙ ) ˙ ,<年代p一个nclass="inlineequation"> G ( ) 。在仿真金宝app软件中,这些变量可以很容易地使用机器人机械手块来自机器人系统工具箱设计以下计算力矩控制器:

u = ( ) ( ¨ d - - - - - - K d ˙ e - - - - - - K p e ) + C ( , ˙ ) ˙ + G ( )

在哪里<年代p一个nclass="inlineequation"> e = - - - - - - d 位置误差和吗<年代p一个nclass="inlineequation"> ˙ e = ˙ - - - - - - ˙ d 速度误差。该控制器的输入,系统动力学成为二阶颂歌:

¨ e + K d ˙ e + K p e = 0

通过选择<年代p一个nclass="inlineequation"> K d 和<年代p一个nclass="inlineequation"> K p 正确的跟踪误差<年代p一个nclass="inlineequation"> e 当时间趋于无穷时将收敛于零。

的<年代trong class="emphasis bold">计算转矩控制器子系统由三个机器人机械手模块:关节空间质量矩阵,速度的产品转矩,重力力矩。注意,相关的rigidBodyTree模型中,索耶被分配在这些块,配置和速度需要指定为列向量。

open_system (<年代p一个n年代tyle="color:#A020F0">“robotSafeTrajectoryTracking /计算力矩控制器”);

在<年代trong class="emphasis bold">计算转矩控制器,有两个可调参数(颜色块):

  • 获得Kp:比例增益修正机器人的配置

  • 获得Kd:微分增益修正机器人的配置

一种标准的方式来确定KpKd是计算为:

K p = ω n 2

K d = 2 ω n ξ

在哪里<年代p一个nclass="inlineequation"> ω n 和<年代p一个nclass="inlineequation"> ξ 是二阶的固有频率和阻尼比的颂歌。在这个例子中,默认值的KpKd导出设置固有频率和阻尼比吗<年代p一个nclass="inlineequation"> ω n = 1 0 和<年代p一个nclass="inlineequation"> ξ = 1 二阶颂歌临界阻尼系统。

轨道伸缩

在这个子系统主要有两块:

  • 轨道伸缩

  • 想要运动

轨道伸缩是主要的块部署安全轨迹跟踪。在每个时间步<年代p一个nclass="inlineequation"> t ,原来的计算时间戳<年代p一个nclass="inlineequation"> t = t - - - - - - 1 + Δ t 。然而,当机器人碰撞与一个意想不到的对象,从计划增加转矩和异常轨迹可以为机器人和破坏性的对象。轨迹扩展的主要思想是计算时间戳<年代p一个nclass="inlineequation"> t = t - - - - - - 1 + f 年代 ( d , ˙ d , ¨ d , τ e 一个 ) Δ t 通过引入<年代p一个nclass="inlineequation"> f 年代 ( d , ˙ d , ¨ d , τ e 一个 ) ( - - - - - - 1 , 1 ] ,这是一个函数所需的运动和测量扭矩<年代p一个nclass="inlineequation"> τ e 一个 。这个函数<年代p一个nclass="inlineequation"> f 年代 ( ) 控制机器人的运动速度和确定基于机器人感觉的干涉。如果测量扭矩大于预期,<年代p一个nclass="inlineequation"> f 年代 ( ) 减少使机器人减速,甚至向后移动,直到实现所需的扭矩。这些值的<年代p一个nclass="inlineequation"> f 年代 ( ) 对机器人的运动有以下影响:

  • f 年代 ( ) > 0 ,机器人前进(<年代p一个nclass="inlineequation"> f 年代 ( ) = 1 是正常速度)。

  • f 年代 ( ) = 0 ,机器人停止。

  • f 年代 ( ) < 0 ,机器人向后移动。

在<年代trong class="emphasis bold">轨道伸缩块,应估计外部扭矩<年代p一个nclass="inlineequation"> τ ˆ e x t = τ e 一个 - - - - - - τ ˆ 计算<年代p一个nclass="inlineequation"> f 年代 ( ) ,在那里<年代p一个nclass="inlineequation"> τ e 一个 从Simscape测量扭矩模型,<年代p一个nclass="inlineequation"> τ ˆ 预期的运动所需的扭矩在前面的时间戳。在外部扭矩观测器模型的部分,逆动力学块计算预期的减去测量转矩的转矩。期望转矩:<年代p一个nclass="inlineequation"> τ ˆ = ( d ) ( ¨ d ) + C ( d , ˙ d ) ˙ d + G ( d )

在<年代trong class="emphasis bold">想要运动区域,美联储轨迹扩展算法的输出作为输入<年代trong class="emphasis bold">多项式的轨迹块。这个块计算五次多项式轨迹的已知值q0处第一季度及其边界条件的零速度和加速度。它输出的位置、速度和加速度:<年代p一个nclass="inlineequation"> d ( t ) ,<年代p一个nclass="inlineequation"> ˙ d ( t ) ,<年代p一个nclass="inlineequation"> ¨ d ( t ) ,这是美联储的<年代trong class="emphasis bold">计算转矩控制器子系统。

Simscape机器人多体模型和简单的接触力学

Simscape多体机器人模型从相同的进口.urdf文件使用smimport,一组关节转矩的转矩作动器和传感器,关节的位置和速度。联系机制块模拟终端执行器之间的反应力和障碍一个球体和一架飞机,使用简单的线性弹簧阻尼模型。

注意:之间的联系机制是实现终端执行器和平面对象。因此,机器人手臂的其他部分仍可能通过障碍。

运行模型

索耶运行模型,观察的行为在机器人模拟器和与之交互。

首先,打开查看器通过点击左边的图标所示范围Simscape模型的块。显示信号范围包括关节力矩、反应接触力和终端执行器之间的平面物体,和所需的计算时间戳运动轨迹跟踪。

切换轨道伸缩切换到“关闭”。

使用下面的命令或点击<年代trong class="emphasis bold">运行开始仿真。

sim卡(<年代p一个n年代tyle="color:#A020F0">“robotSafeTrajectoryTracking.slx”,<年代p一个n年代tyle="color:#A020F0">“StopTime”,<年代p一个n年代tyle="color:#A020F0">“5”);

您应该看到臂碰撞与对象产生高转矩输入和一个巨大的反作用力。请注意在这种情况下,原来的使用时间戳。停止仿真之后。

现在,切换轨道伸缩开关<年代trong class="emphasis bold">在并重新运行模型。

注意到差异计算扭矩和降低碰撞后的反作用力。

在模拟运行时,调整滑块移动对象朝向或远离机器人。机器人应该对其位置的影响,但试图安全地执行轨迹。

总结

这个例子展示了如何使用机器人机械手在仿真软件设计一个计算力矩控制器,并与轨迹扩展和集成在Simscape多体动力学仿真来实现金宝app安全的轨迹跟踪。合成转矩、反应力和时间戳了轨迹扩展的能力来执行安全的轨迹跟踪。