主要内容

taskSpaceMotionModel

给出任务空间参考输入,建立刚体树运动模型

描述

taskSpaceMotionModel对象对机械臂的闭环任务空间运动建模,指定为刚体树对象。运动模型行为由MotionType财产。

有关运动方程的更多细节,请参见任务空间运动模型

创建

描述

motionModel= taskSpaceMotionModel为默认的双关节机械手创建运动模型。

motionModel= taskSpaceMotionModel(“RigidBodyTree”,树)创建指定的运动模型rigidBodyTree对象。

例子

motionModel= taskSpaceMotionControlModel(名称,值)设置指定为名称-值对的其他属性。您可以以任意顺序指定多个属性。

属性

全部展开

刚体树型机器人,指定为rigidBodyTree定义机械手的惯性和运动特性的对象。

此属性定义将用作结束执行器的主体,并为其定义任务空间运动。属性中的主体名称必须对应于rigidBodyTree对象的RigidBodyTree财产。如果在不更新末端执行器的情况下更新刚体树,默认情况下,索引最高的刚体将成为末端执行器体。

PD控制的比例增益,指定为6 × 6矩阵。

比例导数(PD)控制的导数增益,指定为6 × 6矩阵。

接头阻尼常数,表示为n-element vector,其中n机器人模型中非固定关节的数量是否由RigidBodyTree财产。关节阻尼单位为N/(m/s)或N/(rad/s)对于移动关节和转动关节。

运动类型,指定为“PDControl”,它使用比例导数(PD)控制通过雅可比转置控制器映射到关节。控件基于指定的Kp而且Kd属性。

对象的功能

导数 机械臂模型状态的时间导数
updateErrorDynamicsFromStep 更新值NaturalFrequency而且DampingRatio给定所需的阶跃响应的属性

例子

全部折叠

此示例显示如何创建和使用taskSpaceMotionModel对象为任务空间中的机械臂。

创造机器人

机器人=装载机器人(“kinovaGen3”,“DataFormat”,“列”,“重力”,[0 0 -9.81]);

设置模拟

设置时间跨度为1秒,时间步长为0.02秒。将初始状态设置为机器人的主构型,速度为零。

Tspan = 0:02 . 1;initialState = [homeConfiguration(robot);zero (7,1)];

定义一个具有目标位置和零速度的参考状态。

refPose = trvec2tform([0.6 -.]1 0.5]);refVel = 0 (6,1);

创建运动模型

将行为建模为比例导数(PD)控制下的系统。

motionModel = taskSpaceMotionModel(“RigidBodyTree”,机器人,“EndEffectorName”,“EndEffector_Link”);

模拟机器人

使用刚性求解器模拟1秒内的行为,以更有效地捕获机器人动力学使用ode15s能够在具有高变化率的区域周围实现更高的精度。

[t,robotState] = ode15s(@(t,state)derivative(motionModel,state,refPose,refVel),tspan,initialState);

绘制反应图

绘制机器人的初始位置并用X标记目标。

图显示(机器人,initialState (1:7));持有所有plot3 (refPose(1、4)refPose(2、4),refPose(3、4),“x”,“MarkerSize”, 20)

通过将机器人绘制在5hz环路中观察其响应。

r = rateControl(5);i = 1:size(robotState,1) show(robot,robotState(i,1:7)',“PreservePlot”、假);等待(r);结束

{

参考文献

[1]克雷格,约翰J。机器人学导论:力学与控制.新泽西州上马鞍河:皮尔逊教育,2005年。

[2] Spong, Mark W., Seth Hutchinson和Mathukumalli Vidyasagar。机器人建模与控制.霍博肯,新泽西州:威利,2006年。

扩展功能

C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。

版本历史

R2019b引入