- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
Il s'agit de Control Toolbox, une bibliothèque C++ efficace pour le contrôle, l'estimation, l'optimisation et la planification de mouvements en robotique.
Lien vers le wiki, démarrage rapide !
Retrouvez la documentation détaillée ici.
Il s'agit de l'ADRL Control Toolbox (« CT »), une bibliothèque C++ open source pour une modélisation, un contrôle, une estimation, une optimisation de trajectoire et un contrôle prédictif de modèle efficaces. Le CT est applicable à une large classe de systèmes dynamiques, mais dispose d'outils de modélisation supplémentaires spécialement conçus pour la robotique. Cette page présente son concept général, ses principaux éléments constitutifs et met en évidence des exemples d'application sélectionnés.
La bibliothèque contient plusieurs outils pour concevoir et évaluer des contrôleurs, modéliser des systèmes dynamiques et résoudre des problèmes de contrôle optimal. Le CT a été conçu en tenant compte des caractéristiques suivantes :
Systèmes et dynamiques :
Optimisation de trajectoire, contrôle optimal et contrôle prédictif de modèle (non linéaire) :
Performance :
Modélisation de robots, cinématique et dynamique des corps rigides :
Différenciation automatique :
La Control Toolbox a été utilisée pour les tâches de contrôle matériel et de simulation sur les robots volants, marchant et au sol.
Des exemples d'optimisation légèrement plus complexes, y compris l'optimisation de la démarche pour un quadrupède, sont disponibles dans ct_ros.
Une tâche courante pour les chercheurs et les praticiens des communautés de contrôle et de robotique consiste à modéliser des systèmes, à mettre en œuvre des équations de mouvement et à concevoir des contrôleurs, des estimateurs, des algorithmes de planification basés sur des modèles, etc. Tôt ou tard, on est confronté à des questions de mise en œuvre efficace. , calculer des informations dérivées, formuler des fonctions de coût et des contraintes ou exécuter des contrôleurs de manière prédictive par modèle.
La Control Toolbox est spécialement conçue pour ces tâches. Il est entièrement écrit en C++ et met l'accent sur un code hautement efficace qui peut être exécuté en ligne (en boucle) sur des robots ou d'autres matériels actionnés. Une contribution majeure du CT réside dans ses implémentations d'algorithmes de contrôle optimal, allant des simples implémentations de référence LQR au contrôle prédictif de modèle contraint. Le CT prend en charge la différenciation automatique (Auto-Diff) et permet de générer du code dérivé pour des fonctions scalaires et vectorielles arbitraires. Nous avons conçu la boîte à outils en gardant à l'esprit la convivialité, permettant aux utilisateurs d'appliquer facilement et avec un minimum d'effort des concepts avancés tels que le contrôle prédictif de modèle non linéaire (NMPC) ou le contrôle numérique optimal. Bien que nous fournissions une interface avec un logiciel de modélisation de robot compatible Auto-Diff de pointe, tous les autres modules sont indépendants d'un cadre de modélisation particulier, permettant au code d'être interfacé avec du code ou des bibliothèques C/C++ existantes.
Le CT a été utilisé avec succès dans une variété de projets différents, notamment un grand nombre d'expériences matérielles, de démonstrations et de publications universitaires. Des exemples d'applications matérielles sont l'optimisation de trajectoire en ligne avec évitement de collision cite giftthaler2017autodiff, l'optimisation de trajectoire pour les quadrupèdes cite neunert:2017:ral et les manipulateurs mobiles cite giftthaler2017efficient ainsi que le NMPC sur les robots au sol cite neunert2017mpc et les drones cite neunert16hexrotor. Le projet est né de recherches menées au laboratoire de robotique agile et agile de l'ETH Zurich, mais est continuellement étendu pour couvrir davantage de domaines d'application et d'algorithmes.
Le logiciel est l’un des éléments constitutifs clés des systèmes robotiques et de gros efforts sont déployés pour créer des outils logiciels et des bibliothèques pour la robotique. Cependant, en matière de contrôle et en particulier de contrôle numérique optimal, il n'existe pas beaucoup d'outils open source disponibles qui soient à la fois faciles à utiliser pour un développement rapide et suffisamment efficaces pour une utilisation en ligne. Bien qu'il existe des boîtes à outils matures pour le contrôle numérique optimal et l'optimisation de trajectoire, il s'agit d'outils autonomes hautement spécialisés qui n'offrent pas suffisamment de flexibilité pour d'autres applications. C'est ici que le CT entre en jeu. Le CT a été conçu dès le départ pour fournir les outils nécessaires au développement et à l'évaluation rapides des méthodes de contrôle tout en étant optimisé pour l'efficacité permettant un fonctionnement en ligne. Si l'accent est mis sur le contrôle, les outils fournis peuvent également être utilisés pour des applications de simulation, d'estimation ou d'optimisation.
Contrairement à d'autres logiciels robotiques, CT n'est pas une application intégrée rigide mais peut être considéré littéralement comme une boîte à outils : il offre une variété d'outils qui peuvent être utilisés et combinés pour résoudre une tâche à accomplir. Même si la facilité d'utilisation a été un critère majeur lors de la conception et que des exemples d'application sont fournis, l'utilisation de CT nécessite toujours des connaissances en programmation et en contrôle. Cependant, il libère les utilisateurs de la mise en œuvre de méthodes standards qui nécessitent une expérience approfondie de l'algèbre linéaire ou des méthodes numériques. De plus, en utilisant des définitions et des types communs, une intégration transparente entre différents composants tels que des systèmes, des contrôleurs ou des intégrateurs est assurée, permettant un prototypage rapide.
L’objectif principal de CT est l’efficacité, c’est pourquoi il est entièrement implémenté en C++. Puisque CT est conçu comme une boîte à outils plutôt que comme une application intégrée, nous avons essayé d’offrir un maximum de flexibilité aux utilisateurs. Par conséquent, il n’est pas lié à un middleware spécifique tel que ROS et les dépendances sont réduites au minimum. Les deux dépendances essentielles de CT sont Eigen et Kindr (qui est basé sur Eigen). Cette dépendance Eigen est intentionnelle puisque Eigen est un standard de facto pour l'algèbre linéaire en C++, car il fournit des implémentations très efficaces d'opérations matricielles standard ainsi que des méthodes d'algèbre linéaire plus avancées. Kindr est une bibliothèque cinématique uniquement en en-tête qui s'appuie sur celle-ci et fournit des types de données pour différentes représentations de rotation telles que les quaternions, les angles d'Euler ou les matrices de rotation.
La Control Toolbox se compose de trois modules principaux. Le module Core ( ct_core
), le module Optimal Control ( ct_optcon
) et le module Rigid Body Dynamics ( ct_rbd
). Il existe une hiérarchie claire entre les modules. Cela signifie que les modules dépendent les uns des autres dans cet ordre, par exemple vous pouvez utiliser le module principal sans le module optcon ou rbd.
ct_core
) fournit des définitions générales de types et des outils mathématiques. Par exemple, il contient la plupart des définitions de types de données, des définitions de systèmes et de contrôleurs, ainsi que des fonctionnalités de base telles que des intégrateurs numériques pour les équations différentielles.ct_optcon
) s'appuie sur le module Core et ajoute une infrastructure pour définir et résoudre les problèmes de contrôle optimal. Il contient les fonctionnalités permettant de définir des fonctions de coût, des contraintes, des backends de solveur et un wrapper MPC général.ct_rbd
) fournit des outils pour modéliser les systèmes et les interfaces Rigid Body Dynamics avec les types de données ct_core
et ct_optcon
. Pour les tests ainsi que les exemples, nous fournissons également le module modèles ( ct_models
) qui contient différents modèles de robots dont un quadrupède, un bras robotique, un quadrotor normal et un quadrotor avec charge suspendue.
Les quatre modules principaux différents sont détaillés ci-dessous.
Pour démarrer avec la boîte à outils de contrôle, veuillez créer la documentation du référentiel avec doxygen et suivre le didacticiel « Mise en route ».
Ce logiciel a été développé au laboratoire de robotique agile et agile de l'ETH Zurich, en Suisse, entre 2014 et 2018. Pendant cette période, le développement a été rendu possible grâce au soutien financier du Fonds national suisse (FNS) grâce à une bourse de professeur du SNF à Jonas. Buchli et les Centres nationaux de recherche en robotique et fabrication numérique (PRN).
La Control Toolbox est publiée sous la licence clause BSD-2. Veuillez consulter LICENCE.txt et NOTICE.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}
}
Les versions antérieures jusqu'à la v2.3 sont hébergées sur bitbucket, elles peuvent être trouvées sur https://bitbucket.org/adrlab/ct/wiki/Home
Cette boîte à outils a été utilisée ou a contribué à la réalisation des publications académiques suivantes :
Markus Giftthaler, Michael Neunert, Markus Stäuble et Jonas Buchli. "La boîte à outils de contrôle - Une bibliothèque C++ Open-Source pour la robotique, le contrôle prédictif optimal et de modèle". IEEE Simpar 2018 (Prix du meilleur article étudiant). préimpression arXiv
Markus Giftthaler, Michael Neunert, Markus Stäuble, Jonas Buchli et Moritz Diehl. "Une famille de méthodes de prise de vue itératives Gauss-Newton pour un contrôle optimal non linéaire". IROS 2018. Préimpression arXiv
Jan Carius, René Ranftl, Vladlen Koltun et Marco Hutter. "Optimisation de trajectoire avec contacts durs implicites." Lettres IEEE sur la robotique et l'automatisation 3, non. 4 (2018) : 3316-3323.
Michael Neunert, Markus Stäuble, Markus Giftthaler, Dario Bellicoso, Jan Carius, Christian Gehring, Marco Hutter et Jonas Buchli. « Contrôle prédictif du modèle du corps entier via des contacts pour les quadrupèdes ». IEEE Robotics and Automation Letters, 2017. Préimpression arXiv
Markus Giftthaler et Jonas Buchli. «Une approche de projection du contrôle optimal quadratique linéaire itératif contraint par l'égalité». Conférence internationale IEEE-RAS 2017 sur les robots humanoïdes, du 15 au 17 novembre, Birmingham, Royaume-Uni. IEEE Xplore
Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini et Jonas Buchli. « Différenciation automatique de la dynamique des corps rigides pour un contrôle et une estimation optimaux », Advanced Robotics, numéro spécial SIMPAR. Novembre 2017. Préimpression arXiv
Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini et Jonas Buchli. «Fast Derivatives of Rigid Body Dynamics for Control, Optimization and Estimation», Conférence internationale IEEE 2016 sur la simulation, la modélisation et la programmation pour les robots autonomes, San Francisco. (Prix du meilleur article). IEEE Xplore
Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli "Optimisation de la trajectoire grâce aux contacts et découverte automatique de la démarche pour les quadrupèdes", IEEE Robotics and Automation Letters, IEEE Xplore
Michael Neunert, Cédric de Crousaz, Fadri Furrer, Mina Kamel, Farbod Farshidian, Roland Siegwart, Jonas Buchli. "Contrôle prédictif de modèle non linéaire rapide pour l'optimisation et le suivi unifiés de trajectoire", Conférence internationale IEEE 2016 sur la robotique et l'automatisation (ICRA), IEEE Xplore
Markus Giftthaler, Farbod Farshidian, Timothy Sandy, Lukas Stadelmann et Jonas Buchli. « Planification cinématique efficace pour les manipulateurs mobiles avec contraintes non holonomiques utilisant un contrôle optimal », Conférence internationale IEEE sur la robotique et l'automatisation, 2017, Singapour. préimpression arXiv
Markus Giftthaler, Timothy Sandy, Kathrin Dörfler, Ian Brooks, Mark Buckingham, Gonzalo Rey, Matthias Kohler, Fabio Gramazio et Jonas Buchli. "Fabrication robotique mobile à l'échelle 1:1 : le fabricant in situ". Robotique de construction, Springer Journal no. 41693 préimpression arXiv
Timothy Sandy, Markus Giftthaler, Kathrin Dörfler, Matthias Kohler et Jonas Buchli. « Repositionnement et localisation autonomes d'un fabricant in situ », Conférence internationale IEEE sur la robotique et l'automatisation 2016, Stockholm, Suède. IEEE Xplore
Michael Neunert, Farbod Farshidian, Jonas Buchli (2014). Contrôle de mouvement prédictif de modèle non linéaire adaptatif en temps réel. Dans l'atelier IROS 2014 sur l'apprentissage automatique dans la planification et le contrôle de la préimpression du mouvement des robots