Modelo de robot de árbol de cuerpo rígido
El modelo de árbol de cuerpo rígido es una representación de una estructura robótica. Puede utilizarlo para representar robots tales como manipuladores u otro tipo de árboles cinemáticos. Utilice los objetos rigidBodyTree
para crear estos modelos.
Un árbol de cuerpo rígido está compuesto por cuerpos rígidos (rigidBody
) que se acoplan mediante articulaciones (rigidBodyJoint
). Cada cuerpo rígido tiene una articulación que define cómo se mueve ese cuerpo respecto a su elemento principal en el árbol. Especifique la transformación de un cuerpo al siguiente configurando la transformación fija de cada articulación (setFixedTransform
).
Puede añadir, reemplazar o eliminar cuerpos del modelo de árbol de cuerpo rígido. También puede reemplazar articulaciones en cuerpos específicos. El objeto rigidBodyTree
mantiene las relaciones y actualiza las propiedades del objeto rigidBody
para reflejar esta relación. También puede obtener transformaciones entre diferentes marcos de cuerpo utilizando getTransform
.
Componentes del árbol de cuerpo rígido
Base
Todos los árboles de cuerpo rígido tienen una base. La base define el marco de coordenadas del mundo real y es el primer punto de acoplamiento para un cuerpo rígido. La base no se puede modificar, a excepción de la propiedad Name
. Puede hacerlo modificando la propiedad BaseName
del árbol de cuerpo rígido.
Cuerpo rígido
El cuerpo rígido es el componente básico del modelo de árbol de cuerpo rígido y se crea utilizando rigidBody
. Un cuerpo rígido, también denominado "enlace", representa un cuerpo sólido que no se puede deformar. La distancia entre dos puntos cualesquiera de un mismo cuerpo rígido permanece constante.
Cuando se añaden a un árbol de cuerpo rígido con varios cuerpos, los cuerpos rígidos tienen cuerpos principales o secundarios asociados a ellos (propiedades Parent
o Children
). El elemento principal es el cuerpo al que está acoplado este cuerpo rígido, que puede ser la base del robot. Los elementos secundarios son todos los cuerpos acoplados a este cuerpo situado luego de la base del árbol de cuerpo rígido.
Cada cuerpo rígido tiene un marco de coordenadas asociado a él y contiene un objeto rigidBodyJoint
.
Articulación
Cada cuerpo rígido tiene una articulación que define el movimiento de ese cuerpo rígido en relación con su elemento principal. Se trata del punto de acoplamiento que conecta dos cuerpos rígidos en un modelo de robot. Para representar un único cuerpo físico con varias articulaciones o diferentes ejes de movimiento, use varios objetos rigidBody
.
El objeto rigidBodyJoint
admite articulaciones fijas, rotativas y prismáticas.
Dependiendo del tipo al que pertenezcan, estas articulaciones permiten los siguientes movimientos:
'fixed'
: sin movimiento. El cuerpo está conectado rígidamente al elemento principal.'revolute'
: solo movimientos rotativos. El cuerpo rota alrededor de esta articulación respecto al elemento principal. Los límites de posición definen la posición angular mínima y máxima en radianes en torno al eje de movimiento.'prismatic'
: solo movimientos de traslación. El cuerpo se mueve de forma lineal respecto al elemento principal a lo largo del eje de movimiento.
Cada articulación tiene un eje de movimiento definido por la propiedad JointAxis
. El eje de la articulación es un vector de unidad en 3D que define el eje de rotación (articulaciones rotativas) o el eje de traslación (articulaciones prismáticas). La propiedad HomePosition
define la posición inicial de esa articulación específica, que es un punto dentro de los límites de posición. Use homeConfiguration
para devolver la configuración inicial del robot, que es el conjunto de todas las posiciones iniciales de las articulaciones del modelo.
Las articulaciones tienen también propiedades que definen la transformación fija entre marcos de coordenadas de cuerpos principales y secundarios. Estas propiedades solo se pueden configurar con el método setFixedTransform
. Dependiendo del método de entrada de los parámetros de transformación, las propiedades JointToParentTransform
o ChildToJointTransform
se configuran utilizando este método. La otra propiedad se establece en la matriz de identidad. Las siguientes imágenes muestran el significado de las diferentes propiedades.
JointToParentTransform
define la posición de la articulación del cuerpo secundario respecto a la estructura del cuerpo principal. CuandoJointToParentTransform
es una matriz de identidad, la estructura del cuerpo principal y el de la articulación coinciden.ChildToJointTransform
define la posición de la articulación del cuerpo secundario respecto a la estructura del cuerpo secundario. CuandoChildToJointTransform
es una matriz de identidad, la estructura del cuerpo secundario y el de la articulación coinciden.
Nota
Las posiciones reales de la articulación no forman parte de este objeto Joint
. El modelo de robot no tiene estado. Hay una transformación intermedia entre los marcos de las articulaciones del elemento principal y del secundario que define la posición de la articulación a lo largo del eje de movimiento. Esta transformación se define en la configuración del robot. Consulte Configuraciones de robot.
Configuraciones de robot
Cuando termine de ensamblar el robot y de definir las transformaciones entre los diferentes cuerpos, podrá crear configuraciones de robot. Una configuración define todas las posiciones de las articulaciones del robot por sus nombres de articulación.
Use homeConfiguration
para obtener la propiedad HomePosition
de cada articulación y crear la configuración inicial.
Las configuraciones de robot se proporcionan como un arreglo de estructuras.
config = homeConfiguration(robot)
config = 1×6 struct array with fields: JointName JointPosition
config(1)
ans = struct with fields: JointName: 'jnt1' JointPosition: 0
También puede generar una configuración aleatoria que respete todos los límites de las articulaciones usando randomConfiguration
.
Use configuraciones de robot cuando desee representar un robot en una figura usando show
. También puede obtener la transformación entre dos marcos de cuerpo con una configuración específica utilizando getTransform
.
Para obtener la configuración de robot con una pose de efector final especificada, use inverseKinematics
. Este algoritmo resuelve los ángulos de articulación necesarios para lograr una pose específica en el cuerpo rígido especificado.
Consulte también
rigidBodyTree
| inverseKinematics