主要内容

jointSpaceMotionModel

给定关节空间输入,建立刚体树运动模型

描述

jointSpaceMotionModel对象为机械臂机器人的闭环关节空间运动建模,指定为rigidBodyTree对象。运动模型行为由MotionType财产。

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

创建

描述

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

例子

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

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

属性

全部展开

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

误差动态的固有频率,指定为标量或n-元素向量,单位为Hzn非固定关节的数量是否与之相关rigidBodyTree对象中的RigidBodyTree财产。

依赖关系

要使用此属性,请设置MotionType财产“ComputedTorqueControl”“IndependentJointMotion”

二阶误差动力学的阻尼比,指定为标量或n-element实值向量,其中n非固定关节的数量是否与之相关rigidBodyTree对象中的RigidBodyTree财产。如果指定了标量,则DampingRatio成为一个n- value的元素向量年代,在那里年代指定的标量。

依赖关系

要使用此属性,请设置MotionType财产“ComputedTorqueControl”“IndependentJointMotion”

比例导数(PD)控制的比例增益,指定为标量或n——- - - - - -n矩阵,n非固定关节的数量是否与之相关rigidBodyTree对象中的RigidBodyTree财产。您必须设置MotionType财产“PDControl”.如果指定了标量,则Kp就变成了*眼(n),在那里年代指定的标量。

依赖关系

要使用此属性,请设置MotionType财产“PDControl”

PD控制的导数增益,指定为标量或n——- - - - - -n矩阵,n在非固定关节的数量rigidBodyTree对象中的RigidBodyTree财产。如果指定了标量,则Kp就变成了*眼(n),在那里年代指定的标量。

依赖关系

要使用此属性,请设置MotionType财产“PDControl”

运动类型,指定为定义对象建模的闭环关节空间行为的字符串标量或字符向量。选项有:

  • “ComputedTorqueControl”-补偿全身动态并分配错误动态中指定的NaturalFrequency而且DampingRatio属性。

  • “IndependentJointMotion”-将每个关节建模为独立的二阶系统,使用的误差动力学指定NaturalFrequency而且DampingRatio属性。

  • “PDControl”-在指定的关节上使用比例导数控制Kp而且Kd属性。

对象的功能

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

例子

全部折叠

此示例显示如何创建和使用jointSpaceMotionModel关节空间中的机械臂机器人。

创造机器人

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

设置模拟

设置时间跨度为1秒,时间步长为0.01秒。将初始状态设置为机器人,速度为零的home配置。

Tspan = 0:0.01:1;initialState = [homeConfiguration(robot);0 (7,1)];

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

targetState = [pi/4;π/ 3;π/ 2;-π/ 3;π/ 4;-π/ 4;3 *π/ 4;0 (7 - 1);0 (7,1)];

创建运动模型

用计算的转矩控制和误差动力学建模系统,误差动力学由5%超调的中等快阶跃响应定义。

motionModel = jointSpaceMotionModel(“RigidBodyTree”,机器人);updateErrorDynamicsFromStep (motionModel。3 . 05);

模拟机器人

使用模型的导数函数作为模型的输入数值求解器来模拟1秒内的行为。

[t, robostate] = ode45(@(t,state)derivative(motionModel,state,targetState),tspan,initialState);

绘制反应图

画出所有关节在其目标状态下的位置。在起始位置和目标位置之间位移较大的关节比位移较小的关节对目标的驱动速度更快。这导致了一个超调,但所有的关节都有相同的沉降时间。

图绘制(t, robotState (: 1: motionModel.NumJoints));持有所有;情节(t, targetState (1: motionModel.NumJoints) *(1、长度(t)),”——“);标题("关节位置(实)vs参考位置(虚线)");包含(“时间(s)”) ylabel (“位置(rad)”);

图中包含一个轴对象。标题为Joint Position (Solid) vs Reference(虚线)的坐标轴对象包含14个类型为line的对象。

参考文献

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

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

扩展功能

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

版本历史

R2019b引入