本示例向您展示了如何使用Simulink®和Robotics Sys金宝apptem Toolbox™机械手算法块来实现Simscape™Multibody™中运行的模拟机器人的安全轨迹跟踪控制。
机器人系统工具箱和Simscape多体都需要运行这个示例。
在此示例中,您将运行一种模型,该模型实现具有使用操纵器算法块的接合位置和速度反馈的计算扭矩控制器。控制器从模拟机器人接收联合位置和速度信息(使用Simscape Multibody实现),并发送扭矩命令以沿着给定的关节轨迹驱动机器人。平面物体放置在机器人的前面,使得当执行轨迹跟踪控制时,机器人臂的末端执行器将与其碰撞。如果没有任何额外的设置,则由于与物体碰撞而导致的扭矩可能会导致机器人或物体损坏。为了实现安全的轨迹跟踪,构建轨迹缩放块以在将所需的运动分配给控制器时调整时间戳。您可以调整一些参数并在模型运行时与机器人交互,并观察对模拟机器人的影响。
本例使用了Rethink Sawyer的模型,这是一个7自由度的机器人操作器。调用importrobot
生成一个刚性小组细胞
从存储在统一机器人描述格式(URDF)文件中的描述中的模型。设定dataformat.
和重力
属性与simscape一致。
Sawyer = ImportRobot(“sawyer.urdf”);sawyer.removeBody ( “头”);Sawyer.DataFormat = '柱子';sawyer.gravity = [0,0,-9.80665];
首先,指定轨迹的开始时间和持续时间。
tstart = 0.5;tduration = 3;
接下来,分配初始配置和目标配置。Q0
是初始配置和Q1
是目标配置。
Q0 = [0;-1.18;0;2.18;0;-1.0008;3.3161];Q1 =零(7,1);
下图显示了与平面对象的位置相关的初始配置和目标配置的机器人可视化。放置平面对象,使得机器人在轨迹跟踪期间将碰撞到它。
在Simuli金宝appnk模型中,a
接下来,打开Simulink模金宝app型。上面生成的变量已经存储在Simulink Model工作空间中:金宝app
open_system ('robotsafetrableatorytracking.slx');
这robotsafeTrableatorytracking.
模型实现了具有用于安全轨迹跟踪的轨迹缩放的计算扭矩控制器。此模型中有三个主要子系统:
计算转矩控制器
轨迹缩放和期望运动
Simscape多体模型与简单的接触力学
在每个时间步长上,如果轨迹缩放开关打开,则使用修改后的时间戳来评估期望的关节位置、速度和加速度。然后,计算的力矩控制器使用与RigidBodyTree
模型跟踪所需的运动。导出的控制输入被馈送到Simscape Multibody中的Sawyer模型(其中包括与机器人交互的平面对象)。
对于一个操纵者
在哪里
在哪里
通过选择
这关节空间质量矩阵那
速度产品扭矩, 和
重力扭矩.注意,关联的
刚性小组细胞
模型,索耶
,分配在所有这些块中,并且需要将配置和速度作为列向量插入。
open_system ('RobotSafeTrojectoryTracking / Computed Torque Controller');
在计算的扭矩控制器内部,有两个可调参数(由彩色块表示):
获得Kp
:修正机器人配置时的比例增益
获得Kd
:修正机器人配置时的导数增益
一种标准的方法来确定Kp
和Kd
是计算它们为:
在哪里Kp
和Kd
设固有频率和阻尼比为
在这个子系统中有两个主要模块:
轨迹缩放
想要运动
轨迹缩放是本例中为安全轨迹跟踪而部署的主要块。在每一个时间步
,机器人向前移动(
,机器人停了下来。
,机器人向后移动。
在里面逆动力学块计算从测量扭矩中减去的预期扭矩。预期扭矩是:
在里面
Simscape多体机器人模型从同一模型导入.urdf.
文件使用小运动
,添加了一组扭矩致动器和用于关节扭矩,关节位置和速度的传感器。添加如下所示的接触机构块以模拟末端执行器和障碍物之间的反作用力作为球体和平面,其中使用简单的线性弹簧阻尼模型。
笔记:接触机构只在末端执行器与平面物体之间实现。因此,机器人手臂的其他部分仍可能通过障碍物。
在机器人模拟器中运行模型,观察Sawyer的行为并与之交互。
首先,单击SimsceeD模型块左侧下显示的范围图标,打开查看器。它显示包括联合扭矩,末端执行器和平面物体之间的反应接触力的信号,以及计算轨迹跟踪的所需运动的时间戳。
将轨迹缩放开关切换到“关闭”。
使用以下命令或Simulink中的“Run”按钮来启动模拟。金宝app
SIM('robotsafetrableatorytracking.slx'那 '停止'那 “5”);
你应该看到手臂与物体碰撞产生高扭矩输入和大反作用力。注意,在这种情况下使用的是原始的时间戳。之后停止模拟。
现在,将轨迹缩放开关切换到“开”并重新运行模型。
SIM('robotsafetrableatorytracking.slx'那 '停止'那 “5”);
注意在碰撞后计算的扭矩和减小的反作用力的差异。
虽然模拟正在运行,调整滑块以将物体移向或远离机器人。机器人应该在其位置反应,同时仍然试图安全地执行轨迹。
此示例显示了如何在Simulink中使用机器人机械手块来设计计算的扭矩控制器,并将其与Simsceum Cultibody中金宝app的轨迹缩放和动态模拟集成,以实现安全的轨迹跟踪。所得到的扭矩,反作用力和时间戳还证明了用于执行安全轨迹跟踪的轨迹缩放的能力。