replaceJoint
Reemplazar articulación en cuerpo
Descripción
replaceJoint(
reemplaza la articulación en el cuerpo especificado en el modelo de robot si el cuerpo es una parte del modelo de robot. Este método es la única manera de cambiar articulaciones en un modelo de robot. No puede asignar directamente la propiedad robot
,bodyname
,joint
)Joint
a un cuerpo rígido.
Ejemplos
Modificar un modelo de árbol de cuerpo rígido
Realice cambios en un objeto rigidBodyTree
existente. Puede obtener articulaciones, cuerpos y subárboles de reemplazo en el árbol de cuerpo rígido.
Cargue robots de ejemplo como objetos rigidBodyTree
.
load exampleRobots.mat
Visualice los detalles del robot Puma con showdetails
.
showdetails(puma1)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1 revolute base(0) L2(2) 2 L2 jnt2 revolute L1(1) L3(3) 3 L3 jnt3 revolute L2(2) L4(4) 4 L4 jnt4 revolute L3(3) L5(5) 5 L5 jnt5 revolute L4(4) L6(6) 6 L6 jnt6 revolute L5(5) --------------------
Obtenga un cuerpo específico para inspeccionar las propiedades. El único elemento secundario del cuerpo L3
es el cuerpo L4
. También puede copiar un cuerpo específico.
body3 = getBody(puma1,'L3');
childBody = body3.Children{1}
childBody = rigidBody with properties: Name: 'L4' Joint: [1x1 rigidBodyJoint] Mass: 1 CenterOfMass: [0 0 0] Inertia: [1 1 1 0 0 0] Parent: [1x1 rigidBody] Children: {[1x1 rigidBody]} Visuals: {} Collisions: {}
body3Copy = copy(body3);
Reemplace la articulación en el cuerpo L3
. Debe crear un objeto Joint
nuevo y utilizar replaceJoint
para asegurar que la geometría en la parte posterior del cuerpo no resulte afectada. Llame a setFixedTransform
si es necesario para definir una transformada entre los cuerpos en lugar de utilizar las matrices de identificación predeterminadas.
newJoint = rigidBodyJoint('prismatic'); replaceJoint(puma1,'L3',newJoint); showdetails(puma1)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1 revolute base(0) L2(2) 2 L2 jnt2 revolute L1(1) L3(3) 3 L3 prismatic fixed L2(2) L4(4) 4 L4 jnt4 revolute L3(3) L5(5) 5 L5 jnt5 revolute L4(4) L6(6) 6 L6 jnt6 revolute L5(5) --------------------
Elimine un cuerpo entero y obtenga el subárbol resultante con removeBody
. El cuerpo eliminado 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'
Elimine el cuerpo L3
modificado. Añada el cuerpo L3
copiado original al cuerpo L2
, seguido del subárbol devuelto. El modelo de robot sigue siendo el mismo. Consulte la comparación detallada mediante showdetails
.
removeBody(puma1,'L3'); addBody(puma1,body3Copy,'L2') addSubtree(puma1,'L3',subtree) showdetails(puma1)
-------------------- Robot: (6 bodies) Idx Body Name Joint Name Joint Type Parent Name(Idx) Children Name(s) --- --------- ---------- ---------- ---------------- ---------------- 1 L1 jnt1 revolute base(0) L2(2) 2 L2 jnt2 revolute L1(1) L3(3) 3 L3 jnt3 revolute L2(2) L4(4) 4 L4 jnt4 revolute L3(3) L5(5) 5 L5 jnt5 revolute L4(4) L6(6) 6 L6 jnt6 revolute L5(5) --------------------
Argumentos de entrada
robot
— Modelo de robot
objeto rigidBodyTree
Modelo de robot, especificado como un objeto rigidBodyTree
.
bodyname
— Nombre del cuerpo
escalar de cadena | vector de caracteres
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
joint
— Articulación de sustitución
objeto rigidBodyJoint
Articulación de sustitución, especificada como un objeto rigidBodyJoint
.
Capacidades ampliadas
Generación de código C/C++
Genere código C y C++ mediante MATLAB® Coder™.
Notas y limitaciones de uso:
Cuando cree el objeto rigidBodyTree
, utilice la sintaxis que especifica MaxNumBodies
como el límite superior para añadir cuerpos al modelo de robot. También debe especificar la propiedad DataFormat
como un par nombre-valor. Por ejemplo:
robot = rigidBodyTree("MaxNumBodies",15,"DataFormat","row")
Para minimizar el uso de datos, restrinja el límite superior a un número aproximado al número de cuerpos previsto del modelo. Todos los formatos de datos son compatibles con la generación de código. Para usar las funciones de dinámica, el formato de datos debe configurarse en "row"
o "column"
.
Las funciones show
y showdetails
no son compatibles con la generación de código.
Historial de versiones
Introducido en R2016b
Consulte también
Abrir ejemplo
Tiene una versión modificada de este ejemplo. ¿Desea abrir este ejemplo con sus modificaciones?
Comando de MATLAB
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)