- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
Esta es Control Toolbox, una biblioteca C++ eficiente para control, estimación, optimización y planificación de movimiento en robótica.
Enlace a la wiki, inicio rápido.
Encuentre la documentación detallada aquí.
Esta es ADRL Control Toolbox ("CT"), una biblioteca C++ de código abierto para modelado, control, estimación, optimización de trayectorias y control predictivo de modelos eficientes. El CT es aplicable a una amplia clase de sistemas dinámicos, pero presenta herramientas de modelado adicionales especialmente diseñadas para robótica. Esta página describe su concepto general, sus principales componentes y destaca ejemplos de aplicaciones seleccionados.
La biblioteca contiene varias herramientas para diseñar y evaluar controladores, modelar sistemas dinámicos y resolver problemas de control óptimo. El CT fue diseñado teniendo en cuenta las siguientes características:
Sistemas y dinámica :
Optimización de trayectoria, control óptimo y control predictivo del modelo (no lineal) :
Actuación :
Modelado de robots, cinemática y dinámica de cuerpos rígidos :
Diferenciación automática :
Control Toolbox se ha utilizado para tareas de control de hardware y simulación en robots voladores, caminantes y terrestres.
En ct_ros hay disponibles ejemplos de optimización un poco más complejos, incluida la optimización de la marcha para un cuadrúpedo.
Una tarea común para los investigadores y profesionales tanto en la comunidad de control como en la de robótica es modelar sistemas, implementar ecuaciones de movimiento y diseñar controladores, estimadores, algoritmos de planificación, etc. basados en modelos. Tarde o temprano, uno se enfrenta a cuestiones de implementación eficiente. , calcular información derivada, formular funciones de costos y restricciones o ejecutar controladores en forma de control predictivo de modelo.
Control Toolbox está diseñado específicamente para estas tareas. Está escrito completamente en C++ y tiene un fuerte enfoque en código altamente eficiente que se puede ejecutar en línea (en bucle) en robots u otro hardware accionado. Una contribución importante del CT son sus implementaciones de algoritmos de control óptimo, que abarcan desde implementaciones de referencia LQR simples hasta control predictivo de modelo restringido. El CT admite la diferenciación automática (Auto-Diff) y permite generar código derivado para funciones escalares y vectoriales arbitrarias. Diseñamos la caja de herramientas teniendo en cuenta la usabilidad, permitiendo a los usuarios aplicar conceptos avanzados como el control predictivo de modelos no lineales (NMPC) o el control numérico óptimo fácilmente y con el mínimo esfuerzo. Si bien proporcionamos una interfaz para un software de modelado de robots compatible con Auto-Diff de última generación, todos los demás módulos son independientes de un marco de modelado particular, lo que permite que el código interactúe con el código o las bibliotecas C/C++ existentes.
El CT se ha utilizado con éxito en una variedad de proyectos diferentes, incluido un gran número de experimentos de hardware, demostraciones y publicaciones académicas. Ejemplos de aplicaciones de hardware son la optimización de trayectoria en línea para evitar colisiones cite giftthaler2017autodiff, la optimización de trayectoria para cuadrúpedos cite neunert:2017:manipuladores móviles y ral cite giftthaler2017ficient así como NMPC en robots terrestres cite neunert2017mpc y vehículos aéreos no tripulados cite neunert16hexrotor. El proyecto se originó a partir de una investigación realizada en el Agile & Dexterous Robotics Lab de ETH Zurich, pero se amplía continuamente para cubrir más campos de aplicaciones y algoritmos.
El software es uno de los componentes clave de los sistemas robóticos y se está realizando un gran esfuerzo para crear herramientas de software y bibliotecas para la robótica. Sin embargo, cuando se trata de control y especialmente de control numérico óptimo, no hay muchas herramientas de código abierto disponibles que sean fáciles de usar para un desarrollo rápido y lo suficientemente eficientes para su uso en línea. Si bien existen cajas de herramientas maduras para el control numérico óptimo y la optimización de trayectoria, son herramientas independientes altamente especializadas que no brindan suficiente flexibilidad para otras aplicaciones. Aquí es donde interviene el CT. El CT ha sido diseñado desde cero para proporcionar las herramientas necesarias para un rápido desarrollo y evaluación de métodos de control, al mismo tiempo que se optimiza para lograr una eficiencia que permita la operación en línea. Si bien el énfasis está en el control, las herramientas proporcionadas también se pueden utilizar para aplicaciones de simulación, estimación u optimización.
A diferencia de otros software robóticos, CT no es una aplicación integrada rígida, sino que puede verse literalmente como una caja de herramientas: ofrece una variedad de herramientas que pueden usarse y combinarse para resolver una tarea en cuestión. Si bien la facilidad de uso ha sido un criterio importante durante el diseño y se proporcionan ejemplos de aplicación, el uso de CT aún requiere conocimientos de programación y control. Sin embargo, libera a los usuarios de implementar métodos estándar que requieren una experiencia profunda con álgebra lineal o métodos numéricos. Además, al utilizar definiciones y tipos comunes, se proporciona una integración perfecta entre diferentes componentes, como sistemas, controladores o integradores, lo que permite la creación rápida de prototipos.
El objetivo principal de CT es la eficiencia, por lo que está completamente implementado en C++. Dado que CT está diseñado como una caja de herramientas en lugar de una aplicación integrada, intentamos brindar la máxima flexibilidad a los usuarios. Por lo tanto, no está vinculado a un middleware específico como ROS y las dependencias se mantienen al mínimo. Las dos dependencias esenciales para CT son Eigen y Kindr (que se basa en Eigen). Esta dependencia de Eigen es intencional ya que Eigen es un estándar de facto para álgebra lineal en C++, ya que proporciona implementaciones altamente eficientes de operaciones matriciales estándar, así como métodos de álgebra lineal más avanzados. Kindr es una biblioteca cinemática de solo encabezado que se basa en ella y proporciona tipos de datos para diferentes representaciones de rotación, como cuaterniones, ángulos de Euler o matrices de rotación.
Control Toolbox consta de tres módulos principales. El módulo Core ( ct_core
), el módulo Optimal Control ( ct_optcon
) y el módulo Rigid Body Dynamics ( ct_rbd
). Existe una jerarquía clara entre los módulos. Eso significa que los módulos dependen unos de otros en este orden; por ejemplo, puede utilizar el módulo principal sin el módulo optcon o rbd.
ct_core
) proporciona definiciones de tipos generales y herramientas matemáticas. Por ejemplo, contiene la mayoría de las definiciones de tipos de datos, definiciones de sistemas y controladores, así como funciones básicas como integradores numéricos para ecuaciones diferenciales.ct_optcon
) se basa en el módulo principal y agrega infraestructura para definir y resolver problemas de control óptimo. Contiene la funcionalidad para definir funciones de costos, restricciones, motores de solución y un contenedor MPC general.ct_rbd
) proporciona herramientas para modelar sistemas e interfaces de Rigid Body Dynamics con los tipos de datos ct_core
y ct_optcon
. Para pruebas y ejemplos, también proporcionamos el módulo de modelos ( ct_models
), que contiene varios modelos de robots, incluido un cuadrúpedo, un brazo robótico, un cuadrotor normal y un cuadrotor con carga suspendida.
Los cuatro módulos principales diferentes se detallan a continuación.
Para comenzar con la caja de herramientas de control, cree la documentación del repositorio con doxygen y siga el tutorial "Introducción".
Este software se desarrolló en el Laboratorio de Robótica Agile & Dexterous de ETH Zurich, Suiza, entre 2014 y 2018. Durante ese tiempo, el desarrollo fue posible gracias al apoyo financiero de la Fundación Nacional Suiza para la Ciencia (SNF) a través de un premio de cátedra SNF para Jonas. Buchli y los Centros Nacionales de Competencia en Investigación (NCCR) en Robótica y Fabricación Digital.
Control Toolbox se publica bajo la licencia de cláusula BSD-2. Consulte LICENCIA.txt y AVISO.txt
@article{adrlCT,
title={The control toolbox — An open-source C++ library for robotics, optimal and model predictive control},
author={Markus Giftthaler and Michael Neunert and Markus St{"a}uble and Jonas Buchli},
journal={2018 IEEE International Conference on Simulation, Modeling, and Programming for Autonomous Robots (SIMPAR)},
year={2018},
pages={123-129}
}
Las versiones anteriores hasta la v2.3 están alojadas en bitbucket; se pueden encontrar en https://bitbucket.org/adrlab/ct/wiki/Home
Esta caja de herramientas se ha utilizado o ha ayudado a realizar las siguientes publicaciones académicas:
Markus Giftthaler, Michael Neunert, Markus Stäuble y Jonas Buchli. "The Control Toolbox: una biblioteca C++ de código abierto para robótica, control óptimo y predictivo de modelos". IEEE Simpar 2018 (Premio al Mejor Trabajo Estudiantil). preimpresión de arXiv
Markus Giftthaler, Michael Neunert, Markus Stäuble, Jonas Buchli y Moritz Diehl. "Una familia de métodos iterativos de disparo Gauss-Newton para un control óptimo no lineal". IROS 2018. preimpresión de arXiv
Jan Carius, René Ranftl, Vladlen Koltun y Marco Hutter. "Optimización de trayectoria con contactos duros implícitos". IEEE Robótica y Automatización Cartas 3, no. 4 (2018): 3316-3323.
Michael Neunert, Markus Stäuble, Markus Giftthaler, Dario Bellicoso, Jan Carius, Christian Gehring, Marco Hutter y Jonas Buchli. “Control Predictivo de Modelos de Cuerpo Entero Mediante Contactos para Cuadrúpedos”. IEEE Robotics and Automation Letters, 2017. preimpresión de arXiv
Markus Giftthaler y Jonas Buchli. “Un enfoque de proyección para el control óptimo cuadrático lineal iterativo restringido por la igualdad”. Conferencia internacional IEEE-RAS 2017 sobre robots humanoides, del 15 al 17 de noviembre, Birmingham, Reino Unido. Exploración IEEE
Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini y Jonas Buchli. “Diferenciación automática de la dinámica del cuerpo rígido para un control y estimación óptimos”, Robótica avanzada, número especial de SIMPAR. Noviembre de 2017. preimpresión de arXiv
Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini y Jonas Buchli. “Derivados rápidos de la dinámica de cuerpos rígidos para control, optimización y estimación”, Conferencia internacional IEEE 2016 sobre simulación, modelado y programación para robots autónomos, San Francisco. (Premio al Mejor Trabajo). Exploración IEEE
Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli "Optimización de la trayectoria mediante contactos y descubrimiento automático de la marcha para cuadrúpedos", IEEE Robotics and Automation Letters, IEEE Xplore
Michael Neunert, Cédric de Crousaz, Fadri Furrer, Mina Kamel, Farbod Farshidian, Roland Siegwart, Jonas Buchli. "Control predictivo rápido de modelos no lineales para optimización y seguimiento de trayectorias unificadas", Conferencia Internacional IEEE sobre Robótica y Automatización (ICRA) 2016, IEEE Xplore
Markus Giftthaler, Farbod Farshidian, Timothy Sandy, Lukas Stadelmann y Jonas Buchli. “Planificación cinemática eficiente para manipuladores móviles con restricciones no holonómicas que utilizan un control óptimo”, Conferencia internacional IEEE sobre robótica y automatización, 2017, Singapur. preimpresión de arXiv
Markus Giftthaler, Timothy Sandy, Kathrin Dörfler, Ian Brooks, Mark Buckingham, Gonzalo Rey, Matthias Kohler, Fabio Gramazio y Jonas Buchli. “Fabricación Robótica Móvil a escala 1:1: el Fabricante In situ”. Robótica de la construcción, Springer Journal no. 41693 preimpresión arXiv
Timothy Sandy, Markus Giftthaler, Kathrin Dörfler, Matthias Kohler y Jonas Buchli. “Reposicionamiento y localización autónomos de un fabricante in situ”, Conferencia internacional IEEE sobre robótica y automatización 2016, Estocolmo, Suecia. Exploración IEEE
Michael Neunert, Farbod Farshidian, Jonas Buchli (2014). Control de movimiento predictivo de modelo no lineal adaptativo en tiempo real. En el Taller IROS 2014 sobre Aprendizaje Automático en la Planificación y Control de la preimpresión del Movimiento de Robots