- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
Dies ist die Control Toolbox, eine effiziente C++-Bibliothek zur Steuerung, Schätzung, Optimierung und Bewegungsplanung in der Robotik.
Link zum Wiki, Schnellstart!
Die ausführliche Dokumentation finden Sie hier.
Dies ist die ADRL Control Toolbox („CT“), eine Open-Source-C++-Bibliothek für effiziente Modellierung, Steuerung, Schätzung, Trajektorienoptimierung und modellprädiktive Steuerung. Der CT ist auf eine breite Klasse dynamischer Systeme anwendbar, verfügt jedoch über zusätzliche Modellierungswerkzeuge, die speziell für die Robotik entwickelt wurden. Auf dieser Seite werden das allgemeine Konzept, die wichtigsten Bausteine und ausgewählte Anwendungsbeispiele erläutert.
Die Bibliothek enthält mehrere Werkzeuge zum Entwurf und zur Bewertung von Reglern, zur Modellierung dynamischer Systeme und zur Lösung optimaler Regelungsprobleme. Der CT wurde unter Berücksichtigung der folgenden Merkmale entwickelt:
Systeme und Dynamik :
Trajektorienoptimierung, optimale Regelung und (nichtlineare) modellprädiktive Regelung :
Leistung :
Robotermodellierung, Starrkörperkinematik und -dynamik :
Automatische Differenzierung :
Die Control Toolbox wurde für Hardware- und Simulationssteuerungsaufgaben an Flug-, Lauf- und Bodenrobotern verwendet.
Etwas komplexere Optimierungsbeispiele, einschließlich der Gangoptimierung für einen Vierbeiner, sind in ct_ros verfügbar.
Eine gemeinsame Aufgabe von Forschern und Praktikern sowohl in der Steuerungs- als auch in der Robotikbranche besteht darin, Systeme zu modellieren, Bewegungsgleichungen zu implementieren und modellbasierte Regler, Schätzer, Planungsalgorithmen usw. zu entwerfen. Früher oder später wird man mit Fragen einer effizienten Implementierung konfrontiert , Berechnen abgeleiteter Informationen, Formulieren von Kostenfunktionen und Einschränkungen oder Ausführen von Reglern in modellprädiktiver Regelungsweise.
Die Control Toolbox ist speziell für diese Aufgaben konzipiert. Es ist vollständig in C++ geschrieben und konzentriert sich stark auf hocheffizienten Code, der online (in der Schleife) auf Robotern oder anderer gesteuerter Hardware ausgeführt werden kann. Ein wesentlicher Beitrag des CT sind seine Implementierungen optimaler Steuerungsalgorithmen, die einen Bereich von einfachen LQR-Referenzimplementierungen bis hin zur prädiktiven Steuerung mit eingeschränkten Modellen umfassen. Der CT unterstützt die automatische Differenzierung (Auto-Diff) und ermöglicht die Generierung von Ableitungscode für beliebige skalare und vektorwertige Funktionen. Bei der Entwicklung der Toolbox haben wir auf Benutzerfreundlichkeit geachtet, damit Benutzer fortgeschrittene Konzepte wie die nichtlineare modellprädiktive Regelung (NMPC) oder die numerische optimale Regelung einfach und mit minimalem Aufwand anwenden können. Während wir eine Schnittstelle zu einer hochmodernen Auto-Diff-kompatiblen Robotermodellierungssoftware bereitstellen, sind alle anderen Module unabhängig von einem bestimmten Modellierungsframework, sodass der Code mit vorhandenem C/C++-Code oder Bibliotheken verbunden werden kann.
Der CT wurde in einer Vielzahl unterschiedlicher Projekte erfolgreich eingesetzt, darunter in einer Vielzahl von Hardware-Experimenten, Demonstrationen und wissenschaftlichen Veröffentlichungen. Beispielhafte Hardwareanwendungen sind Online-Trajektorienoptimierung mit Kollisionsvermeidung cite giftthaler2017autodiff, Trajektorienoptimierung für Vierbeiner cite neunert:2017:ral und mobile Manipulatoren cite giftthaler2017efficient sowie NMPC auf Bodenrobotern cite neunert2017mpc und UAVs cite neunert16hexrotor. Das Projekt entstand aus der Forschung des Agile & Dexterous Robotics Lab der ETH Zürich, wird jedoch kontinuierlich erweitert, um weitere Anwendungsfelder und Algorithmen abzudecken.
Software ist einer der Schlüsselbausteine für Robotersysteme und es werden große Anstrengungen unternommen, Softwaretools und Bibliotheken für die Robotik zu erstellen. Wenn es jedoch um Steuerung und insbesondere um die numerische optimale Steuerung geht, stehen nicht viele Open-Source-Tools zur Verfügung, die sowohl einfach zu verwenden für eine schnelle Entwicklung als auch effizient genug für die Online-Nutzung sind. Es gibt zwar ausgereifte Toolboxen für Numerical Optimal Control und Trajectory Optimization, es handelt sich jedoch um hochspezialisierte, eigenständige Tools, die für andere Anwendungen nicht genügend Flexibilität bieten. Hier kommt der CT ins Spiel. Der CT wurde von Grund auf so konzipiert, dass er die erforderlichen Werkzeuge für die schnelle Entwicklung und Bewertung von Steuerungsmethoden bereitstellt und gleichzeitig auf Effizienz optimiert ist, um einen Online-Betrieb zu ermöglichen. Während der Schwerpunkt auf der Steuerung liegt, können die bereitgestellten Werkzeuge auch für Simulations-, Schätzungs- oder Optimierungsanwendungen verwendet werden.
Im Gegensatz zu anderer Robotersoftware handelt es sich bei CT nicht um eine starre integrierte Anwendung, sondern kann im wahrsten Sinne des Wortes als Werkzeugkasten betrachtet werden: Es bietet eine Vielzahl von Werkzeugen, die zur Lösung einer bestimmten Aufgabe verwendet und kombiniert werden können. Während beim Design und den bereitgestellten Anwendungsbeispielen die Benutzerfreundlichkeit ein wichtiges Kriterium war, erfordert die Verwendung von CT immer noch Programmier- und Steuerungskenntnisse. Es befreit die Benutzer jedoch von der Implementierung von Standardmethoden, die umfassende Erfahrung mit linearer Algebra oder numerischen Methoden erfordern. Darüber hinaus wird durch die Verwendung gemeinsamer Definitionen und Typen eine nahtlose Integration zwischen verschiedenen Komponenten wie Systemen, Controllern oder Integratoren gewährleistet, was ein schnelles Prototyping ermöglicht.
Das Hauptaugenmerk von CT liegt auf der Effizienz, weshalb es vollständig in C++ implementiert ist. Da CT als Toolbox und nicht als integrierte Anwendung konzipiert ist, haben wir versucht, den Benutzern maximale Flexibilität zu bieten. Daher ist es nicht an eine bestimmte Middleware wie ROS gebunden und Abhängigkeiten werden auf ein Minimum beschränkt. Die beiden wesentlichen Abhängigkeiten für CT sind Eigen und Kindr (die auf Eigen basieren). Diese Eigenabhängigkeit ist beabsichtigt, da Eigen ein De-facto-Standard für die lineare Algebra in C++ ist, da es hocheffiziente Implementierungen von Standardmatrixoperationen sowie fortgeschrittenere Methoden der linearen Algebra bietet. Kindr ist eine reine Header-Kinematikbibliothek, die darauf aufbaut und Datentypen für verschiedene Rotationsdarstellungen wie Quaternionen, Euler-Winkel oder Rotationsmatrizen bereitstellt.
Die Control Toolbox besteht aus drei Hauptmodulen. Das Core-Modul ( ct_core
), das Optimal Control-Modul ( ct_optcon
) und das Rigid Body Dynamics-Modul ( ct_rbd
). Zwischen den Modulen besteht eine klare Hierarchie. Das bedeutet, dass die Module in dieser Reihenfolge voneinander abhängig sind, Sie können also beispielsweise das Kernmodul ohne das optcon- oder rbd-Modul verwenden.
ct_core
) bietet allgemeine Typdefinitionen und mathematische Werkzeuge. Es enthält beispielsweise die meisten Datentypdefinitionen, Definitionen für Systeme und Steuerungen sowie grundlegende Funktionalitäten wie numerische Integratoren für Differentialgleichungen.ct_optcon
) baut auf dem Core-Modul auf und fügt Infrastruktur zum Definieren und Lösen von Optimal Control-Problemen hinzu. Es enthält die Funktionalität zum Definieren von Kostenfunktionen, Einschränkungen, Solver-Backends und einen allgemeinen MPC-Wrapper.ct_rbd
) bietet Werkzeuge zur Modellierung von Rigid Body Dynamics-Systemen und Schnittstellen zu den Datentypen ct_core
und ct_optcon
. Für Tests und Beispiele stellen wir außerdem das Modellmodul ( ct_models
) zur Verfügung, das verschiedene Robotermodelle enthält, darunter einen Vierbeiner, einen Roboterarm, einen normalen Quadrocopter und einen Quadrocopter mit angehängter Last.
Die vier verschiedenen Hauptmodule werden im Folgenden detailliert beschrieben.
Um mit der Control-Toolbox zu beginnen, erstellen Sie bitte die Repository-Dokumentation mit doxygen und folgen Sie dem Tutorial „Erste Schritte“.
Diese Software wurde zwischen 2014 und 2018 am Agile & Dexterous Robotics Lab der ETH Zürich, Schweiz, entwickelt. Während dieser Zeit wurde die Entwicklung durch finanzielle Unterstützung des Schweizerischen Nationalfonds (SNF) durch einen SNF-Professorpreis an Jonas ermöglicht Buchli und die Nationalen Forschungsschwerpunkte (NFS) Robotik und Digitale Fabrikation.
Die Control Toolbox wird unter der BSD-2-Klausellizenz veröffentlicht. Bitte beachten Sie LICENCE.txt und 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}
}
Frühere Versionen bis v2.3 werden auf Bitbucket gehostet, sie sind unter https://bitbucket.org/adrlab/ct/wiki/Home zu finden
Diese Toolbox wurde in den folgenden wissenschaftlichen Veröffentlichungen verwendet oder hat bei deren Realisierung geholfen:
Markus Giftthaler, Michael Neunert, Markus Stäuble und Jonas Buchli. „The Control Toolbox – Eine Open-Source-C++-Bibliothek für Robotik, optimale und modellprädiktive Steuerung“. IEEE Simpar 2018 (Best Student Paper Award). arXiv-Vorabdruck
Markus Giftthaler, Michael Neunert, Markus Stäuble, Jonas Buchli und Moritz Diehl. „Eine Familie iterativer Gauß-Newton-Schießmethoden für nichtlineare optimale Steuerung“. IROS 2018. arXiv-Vorabdruck
Jan Carius, René Ranftl, Vladlen Koltun und Marco Hutter. „Flugbahnoptimierung mit impliziten harten Kontakten.“ IEEE Robotics and Automation Letters 3, Nr. 4 (2018): 3316-3323.
Michael Neunert, Markus Stäuble, Markus Giftthaler, Dario Bellicoso, Jan Carius, Christian Gehring, Marco Hutter und Jonas Buchli. „Prädiktive Ganzkörpermodell-Kontrolle durch Kontakte für Vierbeiner“. IEEE Robotics and Automation Letters, 2017. arXiv-Vorabdruck
Markus Giftthaler und Jonas Buchli. „Ein Projektionsansatz zur gleichheitsbeschränkten iterativen linearen quadratischen Optimalsteuerung“. 2017 IEEE-RAS Internationale Konferenz über humanoide Roboter, 15.–17. November, Birmingham, Großbritannien. IEEE Xplore
Markus Giftthaler, Michael Neunert, Markus Stäuble, Marco Frigerio, Claudio Semini und Jonas Buchli. „Automatische Differenzierung der Dynamik starrer Körper zur optimalen Kontrolle und Schätzung“, Advanced Robotics, SIMPAR-Sonderausgabe. November 2017. arXiv-Vorabdruck
Michael Neunert, Markus Giftthaler, Marco Frigerio, Claudio Semini und Jonas Buchli. „Fast Derivatives of Rigid Body Dynamics for Control, Optimization and Estimation“, 2016 IEEE International Conference on Simulation, Modelling, and Programming for Autonomous Robots, San Francisco. (Best Paper Award). IEEE Xplore
Michael Neunert, Farbod Farshidian, Alexander W. Winkler, Jonas Buchli „Trajectory Optimization Through Contacts and Automatic Gait Discovery for Quadrupeds“, IEEE Robotics and Automation Letters, IEEE Xplore
Michael Neunert, Cédric de Crousaz, Fadri Furrer, Mina Kamel, Farbod Farshidian, Roland Siegwart, Jonas Buchli. „Schnelle nichtlineare modellprädiktive Steuerung für einheitliche Trajektorienoptimierung und -verfolgung“, 2016 IEEE International Conference on Robotics and Automation (ICRA), IEEE Xplore
Markus Giftthaler, Farbod Farshidian, Timothy Sandy, Lukas Stadelmann und Jonas Buchli. „Effiziente kinematische Planung für mobile Manipulatoren mit nicht holonomen Einschränkungen unter Verwendung optimaler Steuerung“, IEEE International Conference on Robotics and Automation, 2017, Singapur. arXiv-Vorabdruck
Markus Giftthaler, Timothy Sandy, Kathrin Dörfler, Ian Brooks, Mark Buckingham, Gonzalo Rey, Matthias Kohler, Fabio Gramazio und Jonas Buchli. „Mobile Roboterfabrikation im Maßstab 1:1: der In-situ-Fabrator“. Construction Robotics, Springer Journal Nr. 41693 arXiv-Vorabdruck
Timothy Sandy, Markus Giftthaler, Kathrin Dörfler, Matthias Kohler und Jonas Buchli. „Autonomous Repositioning and Localization of an In situ Fabricator“, IEEE International Conference on Robotics and Automation 2016, Stockholm, Schweden. IEEE Xplore
Michael Neunert, Farbod Farshidian, Jonas Buchli (2014). Adaptive nichtlineare modellprädiktive Echtzeit-Bewegungssteuerung. Im Vorabdruck des IROS 2014-Workshops zu maschinellem Lernen bei der Planung und Steuerung von Roboterbewegungen