- 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 控制工具箱(“CT”),一个用于高效建模、控制、估计、轨迹优化和模型预测控制的开源 C++ 库。 CT 适用于广泛的动态系统,但具有专为机器人设计的附加建模工具。本页概述了其一般概念、主要构建模块并重点介绍了选定的应用示例。
该库包含多种用于设计和评估控制器、动态系统建模和解决最优控制问题的工具。 CT 的设计考虑了以下特点:
系统和动力学:
轨迹优化、最优控制和(非线性)模型预测控制:
表现:
机器人建模、刚体运动学和动力学:
自动微分:
控制工具箱已用于飞行、行走和地面机器人的硬件和模拟控制任务。
ct_ros 中提供了稍微复杂的优化示例,包括四足动物的步态优化。
控制和机器人领域的研究人员和从业者的一项常见任务是对系统进行建模、实现运动方程以及设计基于模型的控制器、估计器、规划算法等。迟早,人们会面临有效实施的问题,计算导数信息,制定成本函数和约束或以模型预测控制方式运行控制器。
控制工具箱是专门为这些任务而设计的。它完全用 C++ 编写,重点关注可以在机器人或其他驱动硬件上在线(循环)运行的高效代码。 CT 的主要贡献是其最优控制算法的实现,涵盖从简单的 LQR 参考实现到约束模型预测控制的范围。 CT 支持自动微分 (Auto-Diff),并允许为任意标量和向量值函数生成导数代码。我们在设计工具箱时考虑到了可用性,使用户能够轻松、轻松地应用非线性模型预测控制 (NMPC) 或数值最优控制等先进概念。虽然我们提供了与最先进的 Auto-Diff 兼容机器人建模软件的接口,但所有其他模块都独立于特定的建模框架,允许代码与现有的 C/C++ 代码或库接口。
CT已成功应用于各种不同的项目,包括大量的硬件实验、演示和学术出版物。示例硬件应用程序包括避免碰撞的在线轨迹优化citegifthaler2017autodiff、四足动物轨迹优化citeneunert:2017:ral和移动操纵器citegifthaler2017efficient以及地面机器人citeneunert2017mpc和无人机citeneunert16hexrotor上的NMPC。该项目源于苏黎世联邦理工学院敏捷灵巧机器人实验室的研究,但不断扩展以涵盖更多应用和算法领域。
软件是机器人系统的关键构建模块之一,人们在创建机器人软件工具和库方面付出了巨大的努力。然而,当涉及到控制,特别是数值最优控制时,没有多少可用的开源工具既易于快速开发又足够高效用于在线使用。虽然存在用于数值最优控制和轨迹优化的成熟工具箱,但它们是高度专业化的独立工具,无法为其他应用程序提供足够的灵活性。这就是 CT 发挥作用的地方。CT 的设计初衷是提供快速开发和评估控制方法所需的工具,同时针对允许在线操作的效率进行优化。虽然重点在于控制,但所提供的工具也可用于模拟、估计或优化应用。
与其他机器人软件相比,CT 并不是一个严格的集成应用程序,而是可以直接视为一个工具箱:它提供了各种可以使用和组合的工具来解决手头的任务。虽然易用性一直是设计过程中的主要标准,并提供了应用示例,但使用 CT 仍然需要编程和控制知识。然而,它使用户无需实施需要深入了解线性代数或数值方法的标准方法。此外,通过使用通用定义和类型,可以提供系统、控制器或集成器等不同组件之间的无缝集成,从而实现快速原型设计。
CT 的主要关注点是效率,这就是它完全用 C++ 实现的原因。由于 CT 被设计为一个工具箱而不是一个集成应用程序,因此我们试图为用户提供最大的灵活性。因此,它不依赖于 ROS 等特定中间件,并且依赖性保持在最低限度。 CT 的两个基本依赖项是 Eigen 和 Kindr(基于 Eigen)。这种 Eigen 依赖性是有意为之的,因为 Eigen 是 C++ 中线性代数的事实上的标准,因为它提供了标准矩阵运算的高效实现以及更高级的线性代数方法。 Kindr 是一个仅包含头文件的运动学库,它构建在它的基础上,并为不同的旋转表示(例如四元数、欧拉角或旋转矩阵)提供数据类型。
控制工具箱由三个主要模块组成。核心 ( ct_core
) 模块、最优控制 ( ct_optcon
) 模块和刚体动力学 ( ct_rbd
) 模块。模块之间有清晰的层次结构。这意味着,模块按此顺序相互依赖,例如,您可以使用核心模块而不使用 optcon 或 rbd 模块。
ct_core
) 模块提供通用类型定义和数学工具。例如,它包含大多数数据类型定义、系统和控制器的定义以及微分方程数值积分器等基本功能。ct_optcon
) 模块构建在核心模块之上,并添加了用于定义和解决最优控制问题的基础架构。它包含定义成本函数、约束、求解器后端和通用 MPC 包装器的功能。ct_rbd
) 模块提供了用于对刚体动力学系统进行建模的工具以及与ct_core
和ct_optcon
数据类型的接口。为了进行测试和示例,我们还提供了模型模块 ( ct_models
),其中包含各种机器人模型,包括四足动物、机械臂、普通四旋翼飞行器和带有悬挂负载的四旋翼飞行器。
下面详细介绍这四个不同的主要模块。
要开始使用控制工具箱,请使用 doxygen 构建存储库文档并遵循“入门”教程。
该软件于 2014 年至 2018 年间在瑞士苏黎世联邦理工学院的敏捷与灵巧机器人实验室开发。在此期间,瑞士国家科学基金会 (SNF) 向 Jonas 授予 SNF 教授职位,提供财政支持,使开发成为可能Buchli 和国家机器人和数字制造研究中心 (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 找到它们
该工具箱已用于或帮助实现以下学术出版物:
马库斯·吉夫塔勒、迈克尔·诺伊纳特、马库斯·施陶布尔和乔纳斯·布赫利。 “控制工具箱 - 用于机器人、最优和模型预测控制的开源 C++ 库”。 IEEE Simpar 2018(最佳学生论文奖)。 arXiv 预印本
马库斯·吉夫塔勒、迈克尔·诺伊纳特、马库斯·施陶布尔、乔纳斯·布赫利和莫里茨·迪尔。 “非线性最优控制的迭代高斯-牛顿射击方法系列”。 IROS 2018。arXiv 预印本
扬·卡里乌斯、雷内·兰福特、弗拉德伦·科尔通和马可·哈特。 “通过隐式硬接触进行轨迹优化。” IEEE 机器人与自动化快报 3,编号。 4(2018):3316-3323。
迈克尔·诺伊纳特、马库斯·施陶布尔、马库斯·吉夫塔勒、达里奥·贝利科索、简·卡里乌斯、克里斯蒂安·格林、马可·哈特和乔纳斯·布赫利。 “通过四足动物的接触进行全身模型预测控制”。 IEEE 机器人与自动化快报,2017 年。arXiv 预印本
马库斯·吉夫塔勒和乔纳斯·布赫利。 “等式约束迭代线性二次最优控制的投影方法”。 2017 年 IEEE-RAS 国际人形机器人会议,11 月 15 日至 17 日,英国伯明翰。 IEEE探索
马库斯·吉夫塔勒、迈克尔·诺伊纳特、马库斯·施陶布尔、马可·弗里杰里奥、克劳迪奥·塞米尼和乔纳斯·布赫利。 “用于最优控制和估计的刚体动力学自动微分”,高级机器人学,SIMPAR 特刊。 2017 年 11 月。arXiv 预印本
迈克尔·诺伊纳特、马库斯·吉夫塔勒、马可·弗里杰里奥、克劳迪奥·塞米尼和乔纳斯·布赫利。 “用于控制、优化和估计的刚体动力学的快速导数”,2016 年 IEEE 国际自主机器人仿真、建模和编程会议,旧金山。 (最佳论文奖)。 IEEE探索
Michael Neunert、Farbod Farshidian、Alexander W. Winkler、Jonas Buchli“通过四足动物的接触和自动步态发现进行轨迹优化”,IEEE 机器人与自动化快报、IEEE Xplore
迈克尔·诺伊纳特、塞德里克·德·克鲁萨、法德里·富勒、米娜·卡梅尔、法博德·法什迪安、罗兰·西格沃特、乔纳斯·布赫利。 “用于统一轨迹优化和跟踪的快速非线性模型预测控制”,2016年IEEE机器人与自动化国际会议(ICRA),IEEE Xplore
马库斯·吉夫塔勒、法博德·法尔希迪安、蒂莫西·桑迪、卢卡斯·斯塔德尔曼和乔纳斯·布赫利。 “使用最优控制对具有非完整约束的移动机械手进行高效运动规划”,IEEE 国际机器人与自动化会议,2017 年,新加坡。 arXiv 预印本
马库斯·吉夫塔勒、蒂莫西·桑迪、凯瑟琳·多弗勒、伊恩·布鲁克斯、马克·白金汉、贡萨洛·雷伊、马蒂亚斯·科勒、法比奥·格拉马齐奥和乔纳斯·布赫利。 “1:1 比例的移动机器人制造:原位制造机”。建筑机器人,施普林格杂志第 1 号。 41693 arXiv 预印本
蒂莫西·桑迪、马库斯·吉夫塔勒、凯瑟琳·多弗勒、马蒂亚斯·科勒和乔纳斯·布赫利。 “原位制造商的自主重新定位和本地化”,2016 年 IEEE 国际机器人与自动化会议,瑞典斯德哥尔摩。 IEEE探索
迈克尔·诺伊纳特、法博德·法什迪安、乔纳斯·布赫利 (2014)。自适应实时非线性模型预测运动控制。 IROS 2014 机器人运动规划与控制机器学习研讨会预印本