Main Content

La traducción de esta página aún no se ha actualizado a la versión más reciente. Haga clic aquí para ver la última versión en inglés.

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, giratorias 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 giratorias) 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 al marco del cuerpo principal. Cuando JointToParentTransform es una matriz de identidad, el marco del cuerpo principal y el de la articulación coinciden.

  • ChildToJointTransform define la posición de la articulación del cuerpo secundario respecto al marco del cuerpo secundario. Cuando ChildToJointTransform es una matriz de identidad, el marco 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
Cada elemento del arreglo es una estructura que contiene el nombre y la posición de una de las articulaciones del robot.
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

|

Temas relacionados