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.
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.
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.
fuente
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ónapply
? Bueno, tengo que ir al archivo de encabezado para cualquier clasebase_to_body
, pero ¿es una articulación o un cuerpo? Además, cosas comomodel.base[j].inverse().apply(model.S[j])
tampoco son especialmente claras.