- Important note (July 2021): this library is currently only scarcely maintained,
- it may take a while until we respond to bugs or feature requests.
Это Control Toolbox, эффективная библиотека C++ для управления, оценки, оптимизации и планирования движения в робототехнике.
Ссылка на вики, быстрый старт!
Подробную документацию можно найти здесь.
Это ADRL Control Toolbox («CT»), библиотека C++ с открытым исходным кодом для эффективного моделирования, управления, оценки, оптимизации траектории и прогнозного управления моделью. CT применим к широкому классу динамических систем, но имеет дополнительные инструменты моделирования, специально разработанные для робототехники. На этой странице изложена его общая концепция, основные строительные блоки и выделены избранные примеры приложений.
Библиотека содержит несколько инструментов для проектирования и оценки контроллеров, моделирования динамических систем и решения задач оптимального управления. CT был разработан с учетом следующих особенностей:
Системы и динамика :
Оптимизация траектории, оптимальное управление и (нелинейное) управление с прогнозированием модели :
Производительность :
Моделирование роботов, кинематика и динамика твердого тела :
Автоматическая дифференциация :
Панель инструментов управления использовалась для задач управления аппаратным обеспечением и моделированием летающих, шагающих и наземных роботов.
Чуть более сложные примеры оптимизации, включая оптимизацию походки четвероногого животного, доступны в ct_ros.
Общими задачами исследователей и практиков как в области управления, так и в области робототехники является моделирование систем, реализация уравнений движения и проектирование на основе моделей контроллеров, оценщиков, алгоритмов планирования и т. д. Рано или поздно каждый сталкивается с вопросами эффективной реализации. , вычисление производной информации, формулирование функций стоимости и ограничений или запуск контроллеров в режиме управления с прогнозированием модели.
Control Toolbox специально разработан для этих задач. Он полностью написан на C++ и уделяет особое внимание высокоэффективному коду, который можно запускать онлайн (в цикле) на роботах или другом управляемом оборудовании. Основным вкладом CT является реализация алгоритмов оптимального управления, охватывающих диапазон от простых эталонных реализаций LQR до прогнозирующего управления с ограниченной моделью. CT поддерживает автоматическое дифференцирование (Auto-Diff) и позволяет генерировать производный код для произвольных скалярных и векторных функций. Мы разработали набор инструментов с учетом удобства использования, позволяя пользователям легко и с минимальными усилиями применять передовые концепции, такие как управление с прогнозированием нелинейных моделей (NMPC) или оптимальное числовое управление. Хотя мы предоставляем интерфейс для современного программного обеспечения для моделирования роботов, совместимого с Auto-Diff, все остальные модули не зависят от конкретной среды моделирования, что позволяет взаимодействовать коду с существующим кодом или библиотеками C/C++.
КТ успешно использовался в различных проектах, включая большое количество аппаратных экспериментов, демонстраций и научных публикаций. Примерами аппаратных приложений являются онлайн-оптимизация траектории с предотвращением столкновений cite Giftthaler2017autodiff, оптимизация траектории для четвероногих cite neunert:2017:ral и мобильных манипуляторов cite Giftthaler2017efficient, а также NMPC на наземных роботах cite neunert2017mpc и БПЛА cite neunert16hexrotor. Проект возник на основе исследований, проводимых в Лаборатории гибкой и ловкой робототехники в ETH Zurich, но постоянно расширяется, чтобы охватить все больше областей приложений и алгоритмов.
Программное обеспечение является одним из ключевых строительных блоков робототехнических систем, и прилагаются большие усилия по созданию программных инструментов и библиотек для робототехники. Однако, когда дело доходит до управления и особенно числового оптимального управления, существует не так много доступных инструментов с открытым исходным кодом, которые были бы одновременно просты в использовании для быстрой разработки и достаточно эффективны для использования в Интернете. Хотя существуют зрелые наборы инструментов для числового оптимального управления и оптимизации траектории, они представляют собой узкоспециализированные автономные инструменты, которые не обеспечивают достаточной гибкости для других приложений. Вот тут-то и вступает в игру CT. CT был разработан с нуля, чтобы предоставить инструменты, необходимые для быстрой разработки и оценки методов управления, одновременно оптимизирован для эффективности, позволяющей работать в режиме онлайн. Хотя упор делается на контроль, предоставляемые инструменты также можно использовать для моделирования, оценки или оптимизации.
В отличие от другого программного обеспечения для роботов, CT не является жестко интегрированным приложением, его можно рассматривать буквально как набор инструментов: он предлагает множество инструментов, которые можно использовать и комбинировать для решения поставленной задачи. Хотя простота использования была основным критерием при проектировании и приводятся примеры применения, использование CT по-прежнему требует знаний в области программирования и управления. Однако он освобождает пользователей от реализации стандартных методов, требующих глубокого опыта работы с линейной алгеброй или численными методами. Кроме того, за счет использования общих определений и типов обеспечивается плавная интеграция между различными компонентами, такими как системы, контроллеры или интеграторы, что позволяет быстро создавать прототипы.
Основное внимание в CT уделяется эффективности, поэтому он полностью реализован на C++. Поскольку CT спроектирован как набор инструментов, а не как интегрированное приложение, мы постарались предоставить пользователям максимальную гибкость. Таким образом, он не привязан к конкретному промежуточному программному обеспечению, такому как ROS, и зависимости сведены к минимуму. Две основные зависимости для CT — это Eigen и Kindr (основанный на Eigen). Эта зависимость Eigen является преднамеренной, поскольку Eigen де-факто является стандартом линейной алгебры в C++, поскольку он обеспечивает высокоэффективную реализацию стандартных матричных операций, а также более продвинутые методы линейной алгебры. Kindr — это библиотека кинематики, предназначенная только для заголовка, которая построена на ее основе и предоставляет типы данных для различных представлений вращения, таких как кватернионы, углы Эйлера или матрицы вращения.
Control Toolbox состоит из трех основных модулей. Модуль Core ( ct_core
), модуль оптимального управления ( ct_optcon
) и модуль динамики твердого тела ( ct_rbd
). Между модулями существует четкая иерархия. Это означает, что модули зависят друг от друга в этом порядке, например, вы можете использовать основной модуль без модуля optcon или rbd.
ct_core
) предоставляет общие определения типов и математические инструменты. Например, он содержит большинство определений типов данных, определений систем и контроллеров, а также базовые функции, такие как числовые интеграторы для дифференциальных уравнений.ct_optcon
) построен на основе модуля Core и добавляет инфраструктуру для определения и решения задач оптимального управления. Он содержит функциональные возможности для определения функций стоимости, ограничений, серверных частей решателя и общую оболочку MPC.ct_rbd
) предоставляет инструменты для моделирования систем Rigid Body Dynamics и интерфейсов с типами данных ct_core
и ct_optcon
. Для тестирования, а также в качестве примеров мы также предоставляем модуль моделей ( ct_models
), который содержит различные модели роботов, включая четвероногого, роботизированную руку, обычный квадрокоптер и квадрокоптер с подвешенным грузом.
Ниже подробно описаны четыре различных основных модуля.
Чтобы начать работу с набором инструментов управления, создайте документацию по репозиторию с помощью doxygen и следуйте инструкциям «Начало работы».
Это программное обеспечение было разработано в Лаборатории гибкой и ловкой робототехники в ETH Цюрих, Швейцария, в период с 2014 по 2018 год. За это время разработка стала возможной благодаря финансовой поддержке Швейцарского национального научного фонда (SNF) в виде присуждения профессорской звания SNF Йонасу. Бухли и Национальные исследовательские центры исследований (NCCR) робототехники и цифрового производства.
Control Toolbox выпускается под лицензией пункта BSD-2. См. LICENCE.txt и 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}
}
Более ранние версии до v2.3 размещаются на Bitbucket, их можно найти по адресу https://bitbucket.org/adrlab/ct/wiki/Home.
Этот набор инструментов использовался или помог реализовать следующие научные публикации:
Маркус Гифтталер, Михаэль Нойнерт, Маркус Штойбле и Йонас Бухли. «The Control Toolbox — библиотека C++ с открытым исходным кодом для робототехники, оптимального и модельного прогнозирующего управления». IEEE Simpar 2018 (премия за лучшую студенческую работу). Препринт arXiv
Маркус Гифтталер, Михаэль Нойнерт, Маркус Штойбле, Йонас Бухли и Мориц Диль. «Семейство итерационных методов стрельбы Гаусса-Ньютона для нелинейного оптимального управления». IROS 2018. Препринт arXiv
Ян Кариус, Рене Ранфтл, Владлен Колтун и Марко Хуттер. «Оптимизация траектории с помощью неявных жестких контактов». Письма IEEE по робототехнике и автоматизации 3, вып. 4 (2018): 3316-3323.
Михаэль Нойнерт, Маркус Штойбле, Маркус Гифтталер, Дарио Белликосо, Ян Кариус, Кристиан Геринг, Марко Хуттер и Йонас Бухли. «Прогнозирующее управление моделью всего тела через контакты для четвероногих». Письма IEEE по робототехнике и автоматизации, 2017. Препринт arXiv.
Маркус Гифтталер и Йонас Бухли. «Проекционный подход к итерационному линейному квадратичному оптимальному управлению с ограничениями равенства». Международная конференция IEEE-RAS по роботам-гуманоидам 2017, 15-17 ноября, Бирмингем, Великобритания. IEEE исследование
Маркус Гифтталер, Михаэль Нойнерт, Маркус Штойбле, Марко Фригерио, Клаудио Семини и Йонас Бухли. «Автоматическое дифференцирование динамики твердого тела для оптимального управления и оценки», Advanced Robotics, специальный выпуск SIMPAR. Ноябрь 2017. Препринт arXiv
Михаэль Нойнерт, Маркус Гифтталер, Марко Фриджерио, Клаудио Семини и Йонас Бухли. «Быстрые производные динамики твердого тела для управления, оптимизации и оценки», Международная конференция IEEE 2016 г. по моделированию, моделированию и программированию автономных роботов, Сан-Франциско. (Лучший доклад). IEEE исследование
Майкл Нойнерт, Фарбод Фаршидиан, Александр В. Винклер, Йонас Бухли «Оптимизация траектории посредством контактов и автоматическое обнаружение походки четвероногих», IEEE Robotics and Automation Letters, IEEE Xplore
Михаэль Нойнерт, Седрик де Круза, Фадри Фуррер, Мина Камель, Фарбод Фаршидиан, Роланд Зигварт, Йонас Бухли. «Быстрое управление с прогнозированием нелинейных моделей для унифицированной оптимизации и отслеживания траектории», Международная конференция IEEE по робототехнике и автоматизации (ICRA), 2016 г., IEEE Xplore
Маркус Гифтталер, Фарбод Фаршидиан, Тимоти Сэнди, Лукас Стадельманн и Йонас Бухли. «Эффективное кинематическое планирование мобильных манипуляторов с неголономными ограничениями с использованием оптимального управления», Международная конференция IEEE по робототехнике и автоматизации, 2017 г., Сингапур. Препринт arXiv
Маркус Гифтталер, Тимоти Сэнди, Кэтрин Дорфлер, Ян Брукс, Марк Бакингем, Гонсало Рей, Маттиас Колер, Фабио Грамазио и Йонас Бухли. «Мобильное роботизированное производство в масштабе 1:1: производитель на месте». Строительная робототехника, Springer Journal no. 41693 препринт arXiv
Тимоти Сэнди, Маркус Гифтталер, Катрин Дёрфлер, Маттиас Колер и Йонас Бухли. «Автономное перемещение и локализация производителя на месте», Международная конференция IEEE по робототехнике и автоматизации 2016, Стокгольм, Швеция. IEEE исследование
Михаэль Нойнерт, Фарбод Фаршидиан, Йонас Бухли (2014). Адаптивная нелинейная модель с прогнозированием движения в реальном времени. Препринт семинара IROS 2014 по машинному обучению в планировании и управлении движением робота