Me gustaría preguntar cuál sería un flujo de trabajo apropiado para resolver un problema de optimización de trayectoria que tiene en cuenta las interacciones de contacto entre diferentes cuerpos en un MBP en Drake. Problemas como los que se abordan en este de papel . Intenté usar la clase DirectCollocation pero aparentemente no considera las fuerzas de contacto como variables de optimización. ¿Hay alguna forma de incorporarlos al programa matemático generado por DirectCollocation? Gracias.

2
Abdullah Nazir 3 mar. 2021 a las 15:30

1 respuesta

La mejor respuesta

Hay varias cosas a considerar cuando planifica a través del contacto

  1. Las variables de decisión ya no son solo el estado / control, sino que deben incluir las fuerzas de contacto.
  2. Las restricciones no son solo la restricción dinámica x [n + 1] = f (x [n], u [n]), sino que x [n + 1] = f (x [n], u [n], λ [ n]) donde λ es la fuerza de contacto, y también la restricción de complementariedad 0≤ λ ⊥ ϕ (q) ≥ 0
  3. En lugar de utilizar la colocación directa (que asume que la trayectoria del estado es una spline cúbica por partes), el artículo de Michael usa solo la integración de Euler hacia atrás, que asume una interpolación lineal por partes.

Entonces necesitaría las siguientes características:

  1. Agregue las fuerzas de contacto como variables de decisión.
  2. Agregue las restricciones de complementariedad.
  3. Utilice la integración de Euler hacia atrás en lugar de DirectCollocationConstraint.

Desafortunadamente, Drake aún no tiene una implementación que haga esto. La coincidencia más cercana dentro de Drake está en esta carpeta, y es el punto de partida. podría ser el StaticEquilibriumProblem. Esta clase tiene la característica 1 y parte de la característica 2 (tiene la restricción de complementariedad, pero solo la restricción de equilibrio estático en lugar de la restricción dinámica), pero no tiene la característica 3 (el paso de Euler hacia atrás).

1
Dharman 4 mar. 2021 a las 06:24