¿Por qué los quadrocopters calculan las rutas mínimas de snap (jounce)?

¡Buena pregunta! Antes de considerar por qué queremos minimizarlo, consideremos si incluso necesita ser continuo.

Dada una curva a través de [x, y, z, yaw] que queremos seguir, podemos calcular la fuerza y ​​el par necesarios para mover el cuadrotor a lo largo de él. Hacerlo requiere tomar la cuarta derivada de esta curva. Un boceto de esta prueba es:

1) El quadrotor puede crear una fuerza neta a lo largo de la dirección de sus hélices. Esta fuerza neta tiene que mover el quad a lo largo de la curva, por lo tanto, la orientación del quad debe ser tangente a la curva. Además, las hélices crean una fuerza neta, por lo que calcular esta aceleración nos permite establecer nuestras velocidades acumulativas del motor.

2) El quadrotor puede crear un torque alrededor de los 3 ejes mundiales. Por lo tanto, el torque del quad necesita cambiar la orientación del quad a medida que se mueve a lo largo de la curva. Conocer el par también nos permite calcular las velocidades del motor (ver el documento de Kumar para más detalles)

3) Para calcular una fuerza neta (F = ma), podemos escribir la aceleración como la segunda derivada de la posición F = m (dx ^ 2 / d ^ 2t). Observe que tomamos la segunda derivada de posición para obtener la aceleración neta del quad.

4) Para calcular el par necesario para cambiar la orientación del quad a lo largo de la curva, tomamos la segunda derivada de la orientación del quad. Esto se define por la dirección de aceleración, por lo que tomamos la segunda derivada de la aceleración, que es la cuarta derivada de la posición. Este es el complemento. (Disculpas por ser handwavey, Quora es un lugar terrible para escribir matemáticas)

Entonces, el torque está directamente relacionado con la cuarta derivada de la posición: el snap. Cualquier discontinuidad en el momento requeriría un par infinito, por lo que queremos que sea suave. Esta es también la derivada más alta que tomamos para calcular los controles del motor a lo largo de una trayectoria, por lo que tener derivaciones más altas suaves no afecta directamente nuestros comandos del motor.

Ahora, ¿por qué minimizamos el snap, que es casi lo mismo que minimizar el torque? (No lo es, ya que el snap no tiene en cuenta el momento de inercia de un vehículo, que podría ser no uniforme). Minimizar el ajuste nos dará la curva que requiere la menor reorientación de nuestro quad a lo largo de él, y garantizará la suavidad para que podamos calcular las velocidades del motor.

Además de eso, su papel se vuelve un poco manual. Afirman que esto es similar a cómo los humanos parecen minimizar el tirón. Esto parece un poco infundado!

Lo más importante: queremos tener curvas suaves para ajustar, y queremos minimizar las fuerzas y los pares, que se relacionan con la segunda y cuarta derivadas de la curva. Podría hacer un mejor trabajo formulando una trayectoria como “fuerzas mínimas y pares a lo largo de la trayectoria”, que se vería similar a su papel. Hablando en términos prácticos, sus resultados son muy parecidos a lo que haría un enfoque de este tipo.

Ciertamente no soy un experto en robótica, pero he pasado el último año investigando métodos de síntesis de trayectoria para cuadrotorsores. También tuve la oportunidad recientemente de conversar sobre este tema con Vijay Kumar, quien originalmente propuso trayectorias mínimas de ajuste para los cuadrotors en su artículo de ICRA 2011 con Daniel Mellinger. Entonces ofreceré mi perspectiva.

Cuando le pregunté a Vijay Kumar por qué minimizó el snap y no alguna otra cantidad, su respuesta fue algo como:

Nos gustaría diseñar trayectorias eficientes, por lo que lo que realmente nos importa es minimizar el esfuerzo de control, pero lo hacemos indirectamente minimizando el ajuste.

Tenga en cuenta que estoy parafraseando la respuesta verbal de Kumar a mi pregunta lo mejor que pueda.

La respuesta verbal de Kumar es similar a la justificación dada en su documento ICRA 2011 (como ya señaló Michael Koval en esta pregunta de Quora):

“En nuestro sistema, dado que las entradas … aparecen como funciones de la cuarta derivada de las posiciones, generamos trayectorias que minimizan la integral del cuadrado de la norma del snap …”

Para ser claros, soy un gran admirador de este artículo. Pero siempre pensé que esta justificación para minimizar el snap era débil. Es cierto que las entradas de control para cuadrotorsores pueden escribirse como funciones de derivadas de trayectoria. Pero eso ciertamente no implica que minimizar cualquiera de estos derivados de trayectoria minimizará las entradas de control.

Aquí hay un ejemplo tonto de dibujos animados para ilustrar el punto. Considere la función [matemáticas] y = (\ log x) ^ 2 [/ matemáticas]. Si quiero minimizar [math] y [/ math], debo establecer [math] x = 1 [/ math], que establecerá [math] \ log x = 0 [/ math]. No llego a esta solución minimizando [matemática] x [/ matemática] o minimizando [matemática] \ log x [/ matemática], aunque [matemática] y [/ matemática] es claramente una función de [matemática] x [/ math], y [math] y [/ math] también es claramente una función de [math] \ log x [/ math].

De hecho, las entradas de control para cuadrotorsores son funciones bastante complicadas de derivadas de trayectoria. Si escribe las ecuaciones de movimiento para los cuadrotorsores, notará que el cálculo de las entradas de control a partir de derivadas de trayectoria implica la normalización de vectores, la inversión de funciones trigonométricas y las matrices de pseudoinversión. Basado en la complejidad de estos cálculos, no es obvio para mí que minimizar cualquier derivada de trayectoria en particular minimizará el esfuerzo de control.

(Anotar las ecuaciones de movimiento para los cuadrotors también revela por qué no es necesariamente fácil minimizar directamente el esfuerzo de control. Mellinger y Kumar usan una representación polinómica por partes para las trayectorias. Esta representación tiene varias propiedades deseables, pero no es fácil minimizar el esfuerzo de control en esta representación. Esto se debe a que el esfuerzo de control a lo largo de una trayectoria es una función no convexa de los coeficientes polinómicos utilizados para representar la trayectoria).

Dado que este problema es directamente relevante para mi propio trabajo, quería comprender mejor los efectos de minimizar las diferentes derivadas de trayectoria. Entonces hice un experimento. Primero, construí una trayectoria espiral sintética con una velocidad constante, y tracé las señales de control requeridas para que un quadrotor siguiera la trayectoria. Aquí está la trayectoria en espiral, y las señales de control resultantes para la hélice 0 en función del tiempo:


A continuación, configuré un grupo de puntos de referencia espaciados uniformemente a lo largo de la espiral. Sinteticé trayectorias polinómicas continuas C4 que conectan los puntos de referencia y tracé las señales de control resultantes como se indicó anteriormente. Para sintetizar las trayectorias, experimenté minimizando diferentes derivados polinomiales. También experimenté con el uso de polinomios de diferentes grados. Aquí están las señales de control resultantes para la hélice 0 como funciones del tiempo:


Tenga en cuenta que la escala vertical varía en cada subtrama.

Este experimento muestra que ciertamente no tiene que minimizar la cuarta derivada de una trayectoria polinómica de séptimo grado, como lo proponen Mellinger y Kumar. Si quisieras, también podrías minimizar la 5a derivada de un polinomio de noveno grado. Sin embargo, hacerlo no te compraría mucho en términos de minimizar el esfuerzo de control. De hecho, minimizar la cuarta derivada de una trayectoria polinómica de séptimo grado parece ser la forma más simple de producir señales de control suaves y razonablemente limitadas para cuadrotorsores cuando se utiliza una representación de trayectoria polinómica compacta.

More Interesting

¿Cuándo combino algoritmos genéticos con redes neuronales?

¿Cuáles son los mejores proyectos en tiempo real sobre regresión en el dominio del aprendizaje automático?

Cómo conectarme con otras personas para trabajar en IA, ML y PNL para ampliar aún más mis habilidades

¿En qué se diferencia un ingeniero de software de aprendizaje automático con más de 3 años de experiencia de un doctorado sin experiencia en ML para resolver problemas a escala de Google? ¿Qué ventajas tiene la persona con experiencia? ¿Qué diferencias en el resultado podemos esperar?

¿Cómo cambiarán las relaciones con el surgimiento de robots e IA con capacidad sexual?

¿Alguna "cosa" artificialmente inteligente se ha vuelto consciente de sí misma?

¿Cuáles son algunos videojuegos / sims con notable aparición de IA?

¿Cuáles son algunas cosas que creemos que son ciertas para las redes neuronales pero que aún no podemos probar?

A partir de abril de 2017, ¿a qué distancia están los mejores chatbots de la IA en la película 'Her'?

¿Cómo usan las redes sociales la inteligencia artificial?

¿La IA es capaz de una conciencia autónoma sin programación? ¿Puede un sistema arrancar su propia programación para autorregularse y ser sabiamente equivalente a una conciencia formadora de vida?

¿Cuáles son algunas películas geniales de IA o malas de robots como Terminator 2?

¿Por qué los árboles de decisión pueden manejar datos no balanceados para la clasificación?

¿Cómo afecta la inteligencia del juez humano al resultado de la prueba de Turing?

¿Cómo sería una prueba de fallas para una IA de computadora?