Agregar un actuador o fuerza a un modelo de cuerpo rígido articulado (piedra de plumas)

9

Estoy trabajando en un proyecto en el que necesito modelar un sistema que se compone esencialmente de una serie de juntas de rótula unidas a una base, que a su vez está unida a una junta prismática (riel).

Leí los Algoritmos de Dinámica del Cuerpo Rígido de Roy Featherstone de principio a fin, y también leí la sección de Dinámica del Manual de Robótica Springer (también escrito por Featherstone).

Me tomó mucho tiempo acostumbrarme a usar su notación "vector espacial" y "matriz espacial", pero después de volver a crear toda su notación a mano como ejercicio, resulta ser una buena manera de concatenar 3x3 y Matrices y vectores 3x1 en matrices y vectores 6x6 y 6x1. Las matemáticas que inventa para realizar operaciones pueden ser un poco tediosas de leer, ya que secuestra alguna notación estándar, pero en general todo es muy compacto, muy fácil de implementar en MATLAB.

Mi problema es este: ¿cómo agrego actuadores al modelo? Camina a través de la configuración explícita de las definiciones conjuntas, definiciones de enlaces, etc., pero cuando se trata de actuadores o fuerzas aplicadas, dice algo como "¡Solo agrega un aquí y Bob es tu tío!" - No se discute en absoluto. En el Manual de robótica , sugiere introducir una aceleración falsa en la base fija para agregar el término de fuerza gravitacional, pero no muestra cómo agregarlo en coordenadas locales ni menciona cómo agregar la entrada del actuador.τuna

Cualquier ayuda sería muy apreciada. He considerado comenzar de nuevo con un libro diferente, pero va a ser un gran gasto de mi tiempo volver a aclimatarme a un conjunto diferente de notación. Me gustaría seguir adelante con esto, pero siento que estoy a unos centímetros de la línea de meta.

Chuck
fuente

Respuestas:

3

Fuerzas Actuadores

Lo entiendo bien: tiene un modelo teórico de un sistema rígido multicuerpo y desea realizar cálculos de dinámica de cuerpo rígido. Ha implementado el modelo y ahora le gustaría calcular cómo se comporta el modelo cuando lo maneja un actuador.

Sin embargo, ¿qué es un actuador para usted? ¿Es simplemente una fuerza que actúa en esa articulación? ¿Es un modelo de motor DC? ¿Es un controlador PID?

Los algoritmos de dinámica en el libro se describen en términos de posiciones generalizadas , velocidades generalizadas , velocidades generalizadas y fuerzas generalizadas . Si tiene una unión prismática cuya traducción se describe por entonces la fuerza lineal en esa unión se describe por . Si tiene una junta giratoria (bisagra) cuya rotación se describe mediante entonces representa un par en esa junta.qq˙q¨τqyoτyoqjτj

Depende de su comprensión de un actuador cómo se calcula . Si simplemente desea aplicar fuerzas o pares, coloque los valores en los valores correspondientes de . Una vez que tenga eso, sirven como entrada para los algoritmos de dinámica de avance para calcular la respuesta del sistema a las fuerzas aplicadas.ττ

τunaτuna

Aceleración gravitacional:

Featherstone aplica la aceleración gravitacional en la base y le permite propagarse por los algoritmos a través del árbol. Esto se hace en el RNEA, Tabla 5.1 en la línea

una0 0=-unasol .

En lugar de hacerlo, también puedes modificar la línea

Fyosi=yoyounayo+vyo×yoyovyo

a

Fyosi=yoyo(unayo-yoX0 0unasol)+vyo×yoyovyo

para aplicar los efectos gravitacionales individualmente en cada cuerpo. Esto introduce cálculos adicionales y no veo ningún beneficio al hacerlo.

Álgebra espacial vs. Concatenación de vectores tridimensionales

El álgebra espacial no es solo la concatenación de vectores tridimensionales. El primero expresa movimientos rígidos del cuerpo en un marco de coordenadas fijo, mientras que el segundo se expresa en puntos que se mueven con el cuerpo. Como resultado, las aceleraciones espaciales son las derivadas del tiempo de las velocidades espaciales. En la notación clásica que usa dos ecuaciones tridimensionales, este no es el caso (Sección 2.11 del libro de Featherstone):

Si un cuerpo tiene una velocidad angular constante entonces todos los puntos en ese cuerpo que no están en el eje de rotación tienen una aceleración hacia el eje de rotación (centro de rotación en el caso plano). En Álgebra espacial, este cuerpo tiene una aceleración espacial cero independiente del marco en el que se expresa la aceleración .ω

La velocidad espacial describe la velocidad lineal y angular del punto del cuerpo que actualmente coincide con el origen del marco de referencia (fijo). Si ese marco se expresa en el centro de masa y se orienta con el marco de referencia global, entonces parece ser una simple concatenación de velocidad lineal y angular en 3D, sin embargo, este es solo el caso para esta elección específica de marco de referencia. Expresado en un marco diferente, obtienes valores diferentes, pero aún representa la misma velocidad espacial.

La aceleración espacial describe el flujo de la velocidad lineal y angular del punto que coincide con el origen. "Flujo" aquí significa cómo las cantidades de vectores (velocidad lineal y angular) cambian con el tiempo.

Martin Felis
fuente
He estado trabajando duro para implementar este algoritmo, pero he tratado de ser lo más metódico posible en el camino, asegurando que incluso los aspectos más básicos funcionen exactamente como se esperaba cada vez. Con ese fin, he configurado una serie de experimentos en los que puedo calcular la solución exacta para poder comparar la solución simulada.
Chuck
El último aspecto en el que he estado trabajando ha sido la articulación esférica: obtener la representación y las aceleraciones del cuaternión. Para este experimento intento simular un péndulo de Foucault modelando la tierra y colocando un péndulo con una junta esférica en la superficie. Al hacerlo, mi base fija es el centro de la tierra, alrededor del cual gira la Tierra. Luego, desde el centro giratorio de la Tierra, puedo rotar hacia arriba / abajo a cualquier latitud, traducir a la superficie, donde coloco el péndulo de la articulación esférica.
Chuck
Necesitaba una forma de agregar gravedad porque no podía simplemente ponerlo en el eje z en mi base fija; esto haría que la gravedad funcionara correctamente solo en el Polo Norte. Esencialmente, no me importan las fuerzas debajo de la superficie de la tierra, solo me importa la precesión del péndulo.
Chuck
He hecho una pregunta relacionada sobre cómo debo manejar las articulaciones fijas.
Chuck
2

Si no se ha encontrado con la Biblioteca de Dinámica del Cuerpo Rígido (RBDL), es posible que desee ver cómo lo implementan y / o comunicarse con el autor Martin Felis.

Barrett Ames
fuente
Barrett, encontré el RBDL hace algunas semanas y, aunque a veces iba y venía tratando de obtener información, está escrito en C ++ con métodos que dificultan el seguimiento del código. Por ejemplo, hay una línea en el código cinemático que lee G.block(0,q_index,6,1) = base_to_body.apply(model.X_base[j].inverse().apply(model.S[j]));. Entonces, ¿qué hace la función apply? Bueno, tengo que ir al archivo de encabezado para cualquier clase base_to_body, pero ¿es una articulación o un cuerpo? Además, cosas como model.base[j].inverse().apply(model.S[j])tampoco son especialmente claras.
Chuck
Lo que no significa que no haya sido útil en ocasiones, pero para mí obtener comprensión del RBDL requiere mucho esfuerzo.
Chuck
Bienvenido a la robótica Barrett Ames, gracias por su respuesta, pero preferimos que las respuestas sean autónomas siempre que sea posible. Los enlaces tienden a pudrirse, por lo que las respuestas que dependen de un enlace pueden volverse inútiles si el enlace al contenido se pudre. Si agrega más contexto desde el enlace, es más probable que las personas encuentren útil su respuesta.
Mark Booth