主要内容

externalForce

构成相对于基底的外力矩阵

描述

例子

fext= externalForce (机器人bodyname扳手构成外力矩阵,您可以将其用作inverseDynamicsforwardDynamics施加一个外力,扳手指定的体bodyname。的扳手输入被假定在基帧中。

例子

fext= externalForce (机器人bodyname扳手配置构成外力矩阵,假设扳手bodyname帧。配置。力矩阵fext是在基坐标系中给出的。

例子

全部折叠

计算给定的机器人构型在外加外力和重力作用下的关节加速度。将扳手施加在特定的物体上,并为整个机器人指定重力。

加载一个预定义的KUKA LBR机器人模型,该模型被指定为RigidBodyTree对象。

负载exampleRobots.matlbr

设置数据格式为“行”。对于所有的动力学计算,数据格式必须是其中之一“行”“列”

lbr。DataFormat =“行”

设置重力。默认情况下,重力被假设为零。

lbr。Gravity = [0 0 -9.81];

的主配置lbr机器人。

q = homeConfiguration(lbr);

指定代表机器人所经历的外力的扳手矢量。使用externalForce函数生成外力矩阵。指定机器人模型、经历扳手的末端执行器、扳手矢量和当前机器人配置。扳手是相对于“tool0”身体框架,这需要你指定机器人的配置,

扳手= [0 0 0.5 0 0 0.3];fext = externalForce(lbr,“tool0”,扳手,q);

计算由重力引起的联合加速度,外加施加于末端执行器的外力“tool0”lbr是它的主构型。关节速度和关节力矩假设为零(输入为空矢量[]).

qddot = forwardDynamics(lbr,q,[],[],fext);

使用externalForce函数生成用于刚体树模型的力矩阵。力矩阵是an-by-6矢量,对机器人上的每个关节都有一行,用于应用六元扳手。使用externalForce函数并指定末端执行器,以正确地将扳手分配到矩阵的正确行。你可以把多个力矩阵加在一起,对一个机器人施加多个力。

要计算对抗这些外力的关节力矩,请使用inverseDynamics函数。

加载一个预定义的KUKA LBR机器人模型,该模型被指定为RigidBodyTree对象。

负载exampleRobots.matlbr

设置数据格式为“行”。对于所有的动力学计算,数据格式必须是其中之一“行”“列”

lbr。DataFormat =“行”

设置重力性质来给出一个特定的重力加速度。

lbr。Gravity = [0 0 -9.81];

获取的主配置lbr

q = homeConfiguration(lbr);

施加外力link1。输入扳手矢量在基框中表示。

fext1 = externalForce(lbr,“link_1”,[0 0 0.0 0.1 0 0]);

在末端执行器上设置外力,tool0。的形式表示输入扳手矢量tool0框架。

fext2 = externalForce(lbr,“tool0”,[0 0 0.0 0.1 0 0],q);

计算平衡外力所需的关节力矩。要组合力,请将力矩阵相加。关节速度和加速度假设为零(输入为[]).

tau = inverseDynamics(lbr,q,[],[],fext1+fext2);

输入参数

全部折叠

机器人模型,指定为arigidBodyTree对象。使用externalForce函数,设置DataFormat属性“行”“列”

施加外力的物体名称,指定为字符串标量或字符向量。对象上的对象名称必须匹配机器人对象。

数据类型:字符|字符串

施加在物体上的力矩和力,用a表示[Tx Ty Tz Fx Fy Fz]向量。扳手的前三个元素对应周围的力矩xyz相互重合。最后三个元素是沿同一轴的线性力。除非你指定了机器人配置时,假定扳手相对于基架。

机器人配置,指定为机器人模型中所有非固定关节的位置向量。您可以使用homeConfiguration(机器人)randomConfiguration(机器人),或者通过指定你自己的关节位置。的向量形式配置,设置DataFormat属性。机器人要么“行”“列”

输出参数

全部折叠

外力矩阵,返回为n-乘6或6乘-n矩阵,n为机器人的速度数(自由度)。形状取决于DataFormat的属性机器人。的“行”数据格式使用n6矩阵。的“列”数据格式采用6-by-n

复合矩阵只列出与指定主体相关的位置上的非0的值。你可以把力矩阵加在一起,以指定作用在多个物体上的多个力。使用外力矩阵指定动力函数的外力inverseDynamicsforwardDynamics

更多关于

全部折叠

动态属性

方法的这些属性指定操作器机器人的各个主体的信息rigidBody对象:

  • 质量-刚体质量,单位为千克。

  • CenterOfMass-刚体的质心位置,指定为形式的矢量[x y z]。矢量描述刚体质心相对于刚体框架的位置,单位为米。的centerOfMass对象函数在计算机器人的质心时使用这些刚体属性值。

  • 惯性——刚体的惯量,用矢量的形式表示[Ixx Iyy Izz Iyz Ixz Ixy]。矢量是相对于物体框架的,单位是千克平方米。惯性张量是一个正定矩阵,形式如下:

    一个3 × 3矩阵。第一行包含Ixx、Ixy和Ixz。第二个包含Ixy, Iyy和Iyz。第三个包含Ixz, Iyz和Izz。

    的前三个元素惯性矢量是惯性矩,是惯性张量的对角线元素。最后三个元素是惯性的乘积,它们是惯性张量的非对角线元素。

对于整个机械手机器人模型的相关信息,请指定这些rigidBodyTree对象属性:

  • 重力-机器人经历的重力加速度,指定为[x y z]向量,单位是m/s2。默认情况下,没有重力加速度。

  • DataFormat-运动学和动力学函数的输入和输出数据格式,指定为“结构”“行”,或“列”

动力学方程

机械手刚体动力学由以下方程控制:

d d t ˙ = ˙ 1 C ˙ ˙ G J T F E x t + τ

也可写成:

¨ = C ˙ ˙ G J T F E x t + τ

地点:

  • -是基于当前机器人构型的关节空间质量矩阵。计算这个矩阵massMatrix对象的功能。

  • C ˙ -是科里奥利项,乘以 ˙ 计算速度积。用公式计算速度积velocityProduct对象的功能。

  • G -是所有关节在指定重力下保持其位置所需的重力力矩和力重力。计算重力力矩gravityTorque对象的功能。

  • J -为指定关节构型的几何雅可比矩阵。计算几何雅可比矩阵geometricJacobian对象的功能。

  • F E x t -是施加在刚体上的外力的矩阵。产生外力通过使用externalForce对象的功能。

  • τ -是直接作为矢量应用到每个关节的关节扭矩和力。

  • ˙ ¨ -分别为关节构型、关节速度和关节加速度,作为单独的向量。对于转动关节,请以弧度、弧度/秒和弧度/秒为单位指定值2,分别。对于移动关节,单位为米、米/秒和米/秒2

要直接计算动态,请使用forwardDynamics对象的功能。该函数计算上述输入的指定组合的关节加速度。

要实现某一组运动,请使用inverseDynamics对象的功能。该函数计算实现指定配置、速度、加速度和外力所需的关节扭矩。

参考文献

费瑟斯通,罗伊。刚体动力学算法。施普林格美国,2008年。中国科学院学报(自然科学版),doi:10.1007/978-1-4899-7560-7。

扩展功能

版本历史

在R2017a中引入