主要内容

rigidBodyTree

Cree un robot con structura de árbol

Descripcion

rigidBodyTreeEs una representación de la conectividad de cuerpos rígidos con articulaciones。利用操纵器模型解析实例robóticos en MATLAB®.机器人规范模型descripción统一机器人(URDF),应用importrobotPara important el modelo de robot。

Un modelo de árbol de cuerpo rígido está compuesto por cuerpos rígidos como对象rigidBody.Cada cuerpo rígido tiene un objtorigidBodyJointRelacionado que定义cómo se puede mover相对于su cuerpo principal。UtilicesetFixedTransformPara definir la transformación fija entre el Marco de una articulación y el Marco de uno de los cuerpos adyacentes。Puede añadir, reemplazar o eliminar cuerpos rígidos del modelo utilizando los métodos de la claseRigidBodyTree

También es可能的计算器las dinámicas de机器人。特别是赎罪券质量CenterOfMassy惯性rigidBody机器人模型。Puede计算器dinámicas直接和反向与外部资源和计算悬臂de dinámica一个部分,las entradas de las articulaciones和los movientos de las articulaciones del robot。Para usar las funciones relacionadas con las dinámicas,建立一个美好的世界DataFormat“行”o“列”

在机器人模型中árbol在cuerpo rígido, también在机器人模型中计算的方法ángulos在机器人模型中计算的方法robóticos在机器人模型中计算的方法robóticos cinemática相反。especfique el modelo de árbol de cuerpo rígido utilzandoinverseKinematicsogeneralizedInverseKinematics

El metodo显示Admite la visualización de mallas de cuerpo。Las mallas se especifican como archivos.stlY se pueden añadir a cuerpos rígidos个人效用addVisual.Por otro lado, de forma predeterminada, la funciónimportrobotCarga todos los archivos.stl可访问que están especificados en su modelo de robot URDF。

Creacion

Descripcion

比如

机器人= rigidBodyTreeCrea UN objects de robot con structura de árbol。Añádale cuerpos rígidos utilitzandoaddBody

机器人= rigidBodyTree(“MaxNumBodies”,N,“DataFormat DataFormat)特别联合国límite高级para número cuerpos permitidos en el robot al general código。También debe specispeciar la propyadadDataFormatComo UN par nombre-valor。

Propiedades

expandir待办事项

这是一个单独的演讲。

Número de cuerpos del modelo de robot (sin incluir la base), devuelto como un número entero。

这是一个单独的演讲。

cuerpos表rígidos在机器人模型中,在机器人模型中,在机器人模型中,在机器人模型中。使用物品清单RigidBodyEspecíficos en el modelo。También puede llamar agetBodyPara obtener UN cuerpo por subnombre。

这是一个单独的演讲。

cuerpos Nombres de cuerpos rígidos, delueltos como un arreglo de celdas de vectors de caracteres。

机器人的基础,机器人的基础,机器人的基础。

Aceleración重力实验机器人,特别是矢量[x y z]在第二大道上。Cada element se corresponde con la aceleración del marco base del robot en esa dirección。

entra datos /salida de funciones格式cinemáticas y dinámicas,特别说明“结构”“行”o“列”.Para utilitzar funciones dinámicas, debe utilitzar“行”o“列”

Funciones del客体

addBody Añadir un cuerpo机器人
addSubtree Añadir un subárbol al机器人
centerOfMass posición masa y jacobianas中心
checkCollision 检查机器人是否发生碰撞
复制 机器人模型的副本
externalForce 关于基底的外部力量的组成部分
forwardDynamics Aceleración操操操操和操操操articulación
geometricJacobian Jacobianas geométricas para构型机器人
gravityTorque articulación que compensan la gravedad
getBody 我不知道你是谁,你是谁
getTransform 在马科斯·德·库尔波的转变中心
homeConfiguration Obtener la configuración初代机器人
inverseDynamics 关于articulación关于行动决定的要求
massMatrix 关节的空间之母
randomConfiguration Generar una configuración de robot aleatoria
removeBody 机器人机器人
replaceBody Reemplazar cuerpo del robot
replaceJoint 更换身体上的关节
显示 最完美的机器人模型
showdetails Mostrar información del modelo de robot
子树 从机器人模型创建子树
velocityProduct articulación取消诱因和速度的动力
writeAsFunction 创建rigidBodyTree代码生成函数

包括

反待办事项

Añada un cuerpo rígido y la correspondent articulación a un árbol de cuerpo rígido。卡达反对igidBody联合国持续反对rigidBodyJointY debe añadirse a rigidBodyTreemedianteaddBody

Cree un árbol de cuerpo rígido。

rbtree = rigidBodyTree;

Cree un cuerpo rígido con un nombre único。

body1 = rigidBody(“b1”);

Cree una articulación giratoria。形式上的预先决定,客体igidBodyTiene una articulación fija。Sustituya la articulación asignando un反对rigidBodyJoint新的上帝保佑界面。联合

jnt1 = rigidBodyJoint(“jnt1”“转动”);界面。联合=jnt1;

Añada el cuerpo rígido al árbol。特别古尔坡的名字está acoplando el cuerpo rígido。我们的基础,我们的基础árbol。

basename = rbtree.BaseName;basename addBody (rbtree界面)

UtiliceshowdetailsEn el árbol para confirmar que el cuerpo rígido y la articulación se han añadido correctamente。

showdetails (rbtree)
-------------------- 机器人:身体(1)Idx的身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 b1 jnt1转动基(0 ) --------------------

Utilice los parámetros Denavit-Hartenberg (DH) del机器人Puma560®para conir un机器人。Los cuerpos rígidos se añaden de uno en uno con la transformación de元素主要的和次要的具体的客体articulación。

Los parámetros DH definen la geometría del robot en términos de cómo se acopla cada cuerpo rígido a suelemento principal。Para facilitarlo,配置parámetros del Puma560机器人[1].机器人美洲狮是机械手。洛杉矶parámetros DH儿子的亲属亲属在前面的母亲,通信和联系的德拉articulación前面。

Dhparams = [0 pi/2 0 0;0.4318 00 0 0.0203 -pi/2 0.15005 0;0 /2 0.4318 0;0 - /2 0 0;0 0 0 0];

Cree un objto de árbol de cuerpo rígido para conconir el robot。

robot = rigidBodyTree;

Cree el primer cuerpo rígido y añádalo al机器人。Para añadir un cuerpo rígido:

  1. Cree un异议rigidBodyY asígnele UN nombre único。

  2. Cree un异议rigidBodyJointY asígnele UN nombre único。

  3. UtilicesetFixedTransformpara speciciar la transformación de cuerpo a cuerpo con parámetros DH。El último elemento de los parámetros DH,θ, se ignora porque el ángulo depend de la posición de articulación。

  4. Llame一addBodyPara acoplar la primera articulación del cuerpo al Marco基地del机器人。

body1 = rigidBody(“界面”);jnt1 = rigidBodyJoint(“jnt1”“转动”);setFixedTransform (jnt1 dhparams (1:)“dh”);界面。联合=jnt1; addBody(robot,body1,“基地”

Cree añada otros cuerpos rígidos al机器人。特别是前面的那块石头addBody帕拉acoplarlo。转换之门相对于坐标之门articulación前面。

body2 = rigidBody(“body2”);jnt2 = rigidBodyJoint(“jnt2”“转动”);body3 = rigidBody(“body3”);jnt3 = rigidBodyJoint(“jnt3”“转动”);body4 = rigidBody(“body4”);jnt4 = rigidBodyJoint(“jnt4”“转动”);body5 = rigidBody(“body5”);jnt5 = rigidBodyJoint(“jnt5”“转动”);body6 = rigidBody(“body6”);jnt6 = rigidBodyJoint(“jnt6”“转动”);: setFixedTransform (jnt2 dhparams (2),“dh”);: setFixedTransform (jnt3 dhparams (3),“dh”);: setFixedTransform (jnt4 dhparams (4),“dh”);: setFixedTransform (jnt5 dhparams (5),“dh”);: setFixedTransform (jnt6 dhparams (6),“dh”);body2。联合=jnt2; body3.Joint = jnt3; body4.Joint = jnt4; body5.Joint = jnt5; body6.Joint = jnt6; addBody(robot,body2,“界面”) addBody (body3的机器人“body2”) addBody (body4的机器人“body3”) addBody (body5的机器人“body4”) addBody (body6的机器人“body5”

验证机器人是否有正确的解释funciónshowdetailso显示showdetailsenumera todos los cuerpos en la ventana de comandos de MATLAB®。显示确定的机器人configuración(形式上预先确定的,非正式的)。美洲大羊驼Modifican los límites de eje y ocultan las etiquetas de eje。

showdetails(机器人)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 body1 jnt1转动基地(0)body2 (2) 2 body2 jnt2转动界面(1)body3 (3) 3 body3 jnt3转动body2 (2) body4 (4) 4 body4 jnt4转动body3 (3) body5 (5) 5 body5 jnt5转动body4 (4) body6 (6) 6 body6 jnt6转动body5 (5 ) --------------------
显示(机器人);轴([-0.5,0.5,-0.5,0.5,-0.5,0.5])轴

{“字符串”:“”,“它”:[],“乳胶”:[]}

Referencias

[1]科克,p.i.y b.阿姆斯壮-埃卢弗里。“PUMA 560机器人模型参数的一致性搜索”。1994年IEEE机器人与自动化国际会议论文集, IEEE计算。Soc。出版社,1994年,págs。1608 - 13所示。DOI.org (Crossref), doi: 10.1109 / ROBOT.1994.351360。

真正的cambios en unobjectorigidBodyTreeexistente。Puede obtener articaciones, cuerpos y subárboles de reemplazo en el árbol de cuerpo rígido。

货物搬运机器人,物品搬运rigidBodyTree

负载exampleRobots.mat

机器人美洲狮con的可视化细节showdetails

showdetails (puma1)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 (3) 3 L3 jnt3转动L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5 ) --------------------

奥登加与库尔波específico对救济视察员。El único element ento secundario del cuerpoL3Es el cuerpoL4.También puede copiar un cuerpo específico。

body3 = getBody(puma1,“L3”);childBody = body3。孩子{1}
名称:'L4'关节:[1x1 rigidBodyJoint]质量:1 CenterOfMass:[0 0 0]惯性:[1 1 1 0 0 0]父:[1x1 rigidBody]子:{[1x1 rigidBody]}视觉效果:{}碰撞:{}
body3Copy = copy(body3);

重新安置la articulación en el cuerpoL3.Debe crear un客体联合新实用主义replaceJointPara asegurar que la geometría在后面的部分没有结果。Llame一setFixedTransform必要的定义,转换,转换,和,使用,公式,矩阵identificación,预先确定。

newJoint = rigidBodyJoint(“移动”);replaceJoint (puma1“L3”, newJoint);showdetails (puma1)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 3 L3棱镜(3)固定L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5 ) --------------------

Elimine un cuerpo entero y obtenga el subárbol resultante conremoveBody.cuerpo eliminate se incluye en El subárbol。

subtree = removeBody(puma1,“L4”
subtree = rigidBodyTree with properties: NumBodies: 3 Bodies: {[1x1 rigidBody] [1x1 rigidBody] [1x1 rigidBody]} Base: [1x1 rigidBody] BodyNames: {'L4' 'L5' 'L6'} BaseName: 'L3' Gravity: [0 0 0] DataFormat: 'struct'

eliine el cuerpoL3modificado。Añada el cuerpoL3Copiado原al cuerpoL2, seguido del subárbol devuelto。我的机器人模型,我的错误。Consulte la comparación detallada medianteshowdetails

removeBody (puma1“L3”);addBody (puma1 body3Copy,“外语”) addSubtree (puma1“L3”子树)showdetails (puma1)
-------------------- 机器人:身体(6)Idx身体名称联合名称联合类型父母名字(Idx)孩子的名字(s ) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1转动基地(0)L2 (2) 2 L2 jnt2转动L1 (1) L3 (3) 3 L3 jnt3转动L2 (2) L4 (4) 4, jnt4转动L3(3)一两百(5)5 L5 jnt5转动L4(4) 16种(6)6 16种jnt6转动L5 (5 ) --------------------

辅助功能dinámicas辅助计算程序articulación加速程序,特别辅助程序dinámicas客体rigidBodyTreeyrigidBody

Cree un modelo de árbol de cuerpo rígido。Cree dos cuerpos rígidos para acoplar a este árbol。

机器人= rigidBodyTree(“DataFormat”“行”);body1 = rigidBody(“界面”);body2 = rigidBody(“body2”);

特别是关节对鹰嘴和鹰嘴。Establezca la transformación fija debody2一个界面.Esta transformada es 1 m en la direcciónx

joint1 = rigidBodyJoint(“joint1”“转动”);joint2 = rigidBodyJoint(“joint2”);setFixedTransform(joint2,trvec2tform([1 0 0]))Joint = joint1;body2。联合=joint2;

特别的仁慈dinámicas上帝的仁慈。Añada机器人模型库。Para e ejemplo se proporcionan los valores básicos de una varilla (界面) con una masa esférica acoplada (body2).

界面。质量=2;界面。C在terOfMass = [0.5 0 0]; body1.Inertia = [0.001 0.67 0.67 0 0 0]; body2.Mass = 1; body2.CenterOfMass = [0 0 0]; body2.Inertia = 0.0001*[4 4 4 0 0 0]; addBody(robot,body1,“基地”);addBody (body2的机器人“界面”);

计算器la posición del centro de masa de todo机器人。代表la posición en el机器人。天空的未来xy

comPos = centerOfMass(机器人);显示(机器人);持有精神精神情节((1),(2),”或“)视图(2)

{

Cambie la masa del segundo cuerpo。观察马萨中心的cambio。

body2。质量=20; replaceBody(robot,“body2”,body2) comPos2 = centerOfMass(机器人);情节(comPos2 (1) comPos2 (2),“* g”)举行

{

计算,加速,接合,结果,para una determinada configuración,机器人,外部,和,坟墓。这是一个真正的坟墓机器人。

库卡LBR预先定义机器人模型货物,特殊物品RigidBodyTree

负载exampleRobots.matlbr

配置el formato de datos en“行”.数据的格式“行”o“列”Para todos los cálculos de dinámica。

lbr。DataFormat =“行”

坟墓已成定局。“形式上的预先决定”,“故我必死”。

lbr。Gravity = [0 0 -9.81];

Obtenga la configuración初始para机器人lbr

q = homeConfiguration(lbr);

特别的矢量,代表了机器人的外部实验。使用la funciónexternalForce外部财富之母的总指挥。特别是机器人模型,最终实验的效应,矢量机器人和configuración实际机器人。扳手Se da con relación al Marco del cuerpo“tool0”, que requiere que especfique la configuración del robot,

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

计算,加速,关节,结果,和,坟墓,和,外部影响,最终的影响“tool0”cuandolbrEstá en su configuración inicial。Las velocidades y los par motor de articulación se asumen como cero (se introduction como un vector vacío,[]).

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

使用la funcióninverseDynamicsPara calcular los par motor de articulación必需品Para mantener estática una configuración de机器人混凝土。También特别的速度和加速的关节和外部的速度和速度。

库卡LBR预先定义机器人模型货物,特殊物品RigidBodyTree

负载exampleRobots.matlbr

配置el formato de datos en“行”.数据的格式“行”o“列”Para todos los cálculos de dinámica。

lbr。DataFormat =“行”

上帝保佑你重力Para generar una aceleración重力混凝土。

lbr。Gravity = [0 0 -9.81];

Genere una configuración aleatoria paralbr

q = randomConfiguration(lbr);

计算公式articulación必要的paralbr, para mantener estática esa configuración。

tau = inverseDynamics(lbr,q);

使用la funciónexternalForce对一般矩阵的资金和应用一个联合国模型árbol de cuerpo rígido。一个矩阵,一个向量Por 6 que tiene una fila para cada articulación机器人para aplicar una llave de seis elements。使用la funciónexternalForce特别影响者,最后,para, ignar, adecuadamente, la fila, correcta, de la matriz。Puede añadir múltiples矩阵fuerza a la vez para aplicar múltiples fuerzas a un robot。

计算方式articulación与外部经济状况相反,使用方式funcióninverseDynamics

库卡LBR预先定义机器人模型货物,特殊物品RigidBodyTree

负载exampleRobots.matlbr

配置el formato de datos en“行”.数据的格式“行”o“列”Para todos los cálculos de dinámica。

lbr。DataFormat =“行”

上帝保佑你重力Para generar una aceleración重力混凝土。

lbr。Gravity = [0 0 -9.81];

Obtenga la configuración非正式paralbr

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);

动力计算articulación外部经济平衡的必要性。Para combinar las fuerzas, añada las matrices de fuerza juntas。拉斯的加速,和拉斯的关节速度,和阿斯的接合[]).

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

普埃德进口机器人que tienen档案.stlrelacionados con el archivo de formato de descripción de robot uniificado (URDF) para description las geometrías visuales del robot。Cada cuerpo rígido tiene especificada una geometría视觉个体。脂肪酸的importrobot分析el档案URDF机器人模型para obtener el modelo de robot y las geometrías视觉。La función asume que La geometría visual y La geometría de colisión del robot son iguales y asiigna las geometrías visuales como geometrías de colisión de los cuerpos通讯员。

使用la función显示Para mostrar la geometría视觉y de colisión机器人模型在una figura。A continuación,世界海洋系统模型的相互精算对海洋系统组成的检查和海洋系统的相互精算botón第二阶段对可见性的交替。

导入unmodelo de robot como un档案URDF。Las ubicaciones de los archivos.stlse deben speciificcorrectamente eneste URDF。Para añadir otros archivos.stlA cuerpos rígidos individuales, consulteaddVisual

机器人= importrobot(“iiwa14.urdf”);

视觉机器人与模型视觉通讯员。Haga clic在检查的过程中。Haga clic con el botón secundario en los cuerpos para alternar la visibility de cada geometría visual。

表演(机器人,“视觉效果”“上”“碰撞”“关闭”);

{

视觉机器人con las geometrías de colisión记者。Haga clic在检查的过程中。Haga clic con el botón第二轮在中间的cuerpos para alternar la可见性de cada geometría de colisión。

表演(机器人,“视觉效果”“关闭”“碰撞”“上”);

{

Más acerca de

expandir待办事项

Referencias

[1]克雷格,约翰J。机器人学导论:力学与控制.马萨诸塞州雷丁:Addison-Wesley, 1989年。

[2]西西里亚诺,布鲁诺,洛伦佐·夏维奇科,路易吉·维拉尼和朱塞佩·奥里奥罗。机器人:建模、规划与控制。伦敦:施普林格,2009。

Capacidades ampliadas

历史版本

介绍en R2016b

expandir待办事项