Restricciones de igualdad: rígidas frente a elásticas
Si los términos de igualdad corresponden a tareas más flexibles que pueden relajarse en caso de inconsistencia, ElastiQP admite igualdades elásticas mediante pares de restricciones de desigualdad elástica opuestas, con los correspondientes términos de penalización.
Las igualdades elásticas se representan mediante dos desigualdades opuestas que pueden incumplirse a cambio de un coste penalizado.
En general, esta estructura debe reservarse para los casos en que las igualdades puedan ser flexibles, debido al coste adicional de añadir dos desigualdades por cada igualdad.
Evaluación
A modo de comparación, ElastiQP se evaluó frente a tres solucionadores líderes para problemas pequeños y densos: DAQP, PIQP y ProxQP, además de qpax, que implementa un modo elástico condensado eficiente similar al de ElastiQP.
Asimismo, para evaluar correctamente qué familia de solucionadores se adapta mejor a los problemas de control robótico elástico, se comparó el método de conjunto activo de ElastiQP con variantes elásticas de PDAL e IPM. Estas variantes se describen con más detalle en el apéndice.
Todos los resultados se registraron en un portátil con una CPU Intel Core Ultra 7 258V. Los solucionadores en C++ se compilaron con GCC 13.3 y la optimización -O3. La compilación con -march=native suele proporcionar una mejora de rendimiento adicional en problemas de mayor escala, por lo que las cifras comunicadas son conservadoras.
El texto proporcionado no especifica la mejora de rendimiento reportada con -march=native.
qpax es una biblioteca exclusivamente de JAX/Python. Sus valores reflejan el rendimiento de la CPU con compilación JIT, utilizando una versión reciente de JAX, la 0.11.0, y doble precisión.
Lazos de control factibles
ElastiQP demuestra un rendimiento extraordinariamente rápido, del orden de los microsegundos, tanto en dominios factibles como infactibles; incluso las resoluciones en frío de los problemas infactibles más difíciles, hum-wbc, se mantienen holgadamente por debajo del objetivo de 1 ms necesario para un control a 1 kHz.
El arranque en caliente proporciona de forma fiable una mejora adicional de entre 2 y 4 veces en problemas de mayor escala, lo que convierte a ElastiQP en el método siempre factible más fiable para realizar resoluciones de alta frecuencia en problemas de control exigentes.
En un escenario estrictamente factible, DAQP es el método más rápido para resolver estos problemas, seguido de cerca por ElastiQP. Los métodos de conjunto activo, como DAQP y ElastiQP, rinden especialmente bien en este contexto, tanto con arranque en frío como en caliente: relativamente pocas restricciones están activas en el óptimo, lo que permite arranques en frío rápidos, y el conjunto activo se mantiene relativamente estable entre pasos temporales, lo que permite arranques en caliente rápidos.
El procesamiento adicional necesario para la elasticidad solo cuesta unos pocos microsegundos en estas escalas de problema, un intercambio aceptable a cambio de la fiabilidad de un método siempre factible. Las variantes PDAL, ProxQP y ElastiQP-PDAL también muestran un buen rendimiento con arranque en caliente, pero quedan por detrás de las variantes de conjunto activo, especialmente en problemas de menor escala.
En comparación con la forma expandida con variables de holgura de DAQP, la condensación de ElastiQP proporciona una mejora superior a 40 veces. En las variantes PDAL e IPM de ElastiQP, la condensación mejora el rendimiento 10 y 20 veces, respectivamente. Esta diferencia aumenta hasta superar las 250 veces con PDAL en arranque en frío.
ElastiQP también es entre 30 y 80 veces más rápido que qpax, la principal referencia de condensación elástica.
Lazos de control infactibles
En el escenario infactible, ElastiQP supera ampliamente a todos los solucionadores y estrategias alternativas para plantear el problema relajado.
Como era de esperar, los solucionadores estándar con restricciones rígidas —DAQP, PIQP, ProxQP y la formulación rígida de qpax— no consiguen resolver un problema infactible. Informar de la infactibilidad puede llevar, en ocasiones, un tiempo peligrosamente largo.
Consideremos un controlador con arranque en caliente que utilice ProxQP: si un solo paso temporal resultara momentáneamente infactible, podría tardar más de 93 milisegundos en informar de la infactibilidad y gestionar la situación, frente al presupuesto nominal de 1 milisegundo.
El segundo mejor solucionador después de ElastiQP en este escenario es el backend disperso de ProxQP, que resuelve la forma expandida con variables de holgura, pero solo cuando se utiliza con arranque en caliente. Aun así, este método no es lo bastante rápido para garantizar un control fiable a 1 kHz en problemas de escala humanoide y es aproximadamente entre 20 y 40 veces más lento que ElastiQP.
Las otras alternativas, ProxQP-slack y PIQP-slack, quedan todavía más rezagadas en velocidad.
Preguntas frecuentes
¿Qué es ElastiQP? ElastiQP es un solucionador de programación cuadrática siempre factible para el control robótico con restricciones.
¿Cómo gestiona ElastiQP las restricciones de igualdad flexibles? Representa las igualdades elásticas mediante pares de restricciones de desigualdad elástica opuestas, con los correspondientes términos de penalización.
¿Cómo afecta el arranque en caliente al rendimiento de ElastiQP? El arranque en caliente proporciona una mejora adicional de entre 2 y 4 veces en problemas de mayor escala.
¿Por qué resulta útil ElastiQP en problemas de control infactibles? Mantiene resoluciones de control rápidas y factibles cuando las alternativas con restricciones rígidas fallan o tardan demasiado en informar de la infactibilidad.
