Main Content

replaceBody

Reemplazar cuerpo del robot

Descripción

ejemplo

replaceBody(robot,bodyname,newbody) reemplaza el cuerpo del modelo de robot por el nuevo cuerpo. Todas las propiedades del cuerpo se actualizan en consecuencia, excepto las propiedades Parent y Children. El resto del modelo de robot no se ve afectado.

Ejemplos

contraer todo

Para utilizar funciones dinámicas para calcular los par motores de articulación y las aceleraciones, especifique las propiedades dinámicas del objeto rigidBodyTree y rigidBody.

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

robot = rigidBodyTree('DataFormat','row');
body1 = rigidBody('body1');
body2 = rigidBody('body2');

Especifique articulaciones para acoplar a los cuerpos. Establezca la transformación fija de body2 a body1. Esta transformada es 1 m en la dirección x.

joint1 = rigidBodyJoint('joint1','revolute');
joint2 = rigidBodyJoint('joint2');
setFixedTransform(joint2,trvec2tform([1 0 0]))
body1.Joint = joint1;
body2.Joint = joint2;

Especifique las propiedades dinámicas de los dos cuerpos. Añada los cuerpos al modelo de robot. Para este ejemplo se proporcionan los valores básicos de una varilla (body1) con una masa esférica acoplada (body2).

body1.Mass = 2;
body1.CenterOfMass = [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,'base');
addBody(robot,body2,'body1');

Calcule la posición del centro de masa de todo el robot. Represente la posición en el robot. Mueva la vista al plano xy.

comPos = centerOfMass(robot);

show(robot);
hold on
plot(comPos(1),comPos(2),'or')
view(2)

{"String":"Figure contains an axes object. The axes object contains 6 objects of type patch, line. These objects represent base, body1, body2.","Tex":[],"LaTex":[]}

Cambie la masa del segundo cuerpo. Observe el cambio en el centro de masa.

body2.Mass = 20;
replaceBody(robot,'body2',body2)

comPos2 = centerOfMass(robot);
plot(comPos2(1),comPos2(2),'*g')
hold off

{"String":"Figure contains an axes object. The axes object contains 7 objects of type patch, line. These objects represent base, body1, body2.","Tex":[],"LaTex":[]}

Argumentos de entrada

contraer todo

Modelo de robot, especificado como un objeto rigidBodyTree. El cuerpo rígido se añade a este objeto y se acopla al cuerpo rígido especificado por bodyname.

Nombre del cuerpo, especificado como escalar de cadena o vector de caracteres. Este cuerpo debe formar parte del modelo de robot especificado en robot.

Tipos de datos: char | string

Cuerpo rígido, especificado como un objeto rigidBody.

Capacidades ampliadas

Historial de versiones

Introducido en R2016b