系列文章目录
文章目录
- 系列文章目录
- 前言
- 一、开源的库和工具箱
- 1.1 ACADO
- 1.2 CasADi
- 1.3 Control Toolbox
- 1.4 Crocoddyl
- 1.5 Ipopt
- 1.6 Manopt
- 1.7 LexLS
- 1.8 NLOpt
- 1.9 qpOASES
- 1.10 qpSWIFT
- 1.11 Roboptim
- 二、其他库和工具箱
- 2.1 MUSCOD
- 2.2 OCPID-DAE1
- 2.3 SNOPT
前言
机器人,尤其是仿人机器人,是一个极其复杂的动态系统,其行为的生成(generation of behaviors)并非易事,因为一个行为需要调整的参数数量非常多。但是,当今机器人面临的挑战要求它们自动生成和控制各种行为,以便更加灵活地适应不断变化的环境。优化(Optimization)或最优控制(optimal control)为基于基本原理(成本函数(cost functions)、约束条件(constraints))自动生成行为提供了一种有趣的方法。摩尔定律以及优化算法,特别是实时优化算法的最新发展,使得算法优化的更广泛应用成为现实,甚至在不久的将来,复杂机器人应用中的实时控制(real-time control)也将成为现实。
基于模型的机器人优化(Model-based optimization for Robotics)技术专题组推动的重要研究领域包括
- Optimization-based generation of robot trajectories using dynamical models of the robot and its environment,利用机器人及其环境的动力学模型,基于优化生成机器人轨迹
- Improve the behavior style of robots by optimization, in particular for humanoid robots (induce natural behavior),通过优化改进机器人的行为方式,特别是仿人机器人(诱导自然行为)
- Online motion control using real-time model-based optimization and model predictive control/receding horizon control,利用基于模型的实时优化和模型预测控制进行在线运动控制
- Development of appropriate dynamical models for offline and online optimization,为离线和在线优化开发适当的动力学模型
- Learning/improving models during optimization,在优化过程中学习/改进模型
- Inverse optimal control techniques for the identification of objective functions,识别目标函数的逆最优控制技术
- Robust optimal control and refinement of optimal controls based on actual experience,基于实际经验的鲁棒最优控制和最优控制改进
- Combination of optimization and machine learning approaches,优化与机器学习方法的结合
- Combination of optimization and path planning methods,优化与路径规划方法的结合
- This interdisciplinary scope includes establishing bridges to the mathematical optimization community as well as to the field of biomechanics (to learn from biology and to identify optimality criteria) and to computer graphics (for promising optimization approaches on physically realistic models).,这一跨学科范围包括建立与数学优化社区以及生物力学领域(从生物学中学习并确定优化标准)和计算机制图领域(在物理现实模型上采用有前途的优化方法)的桥梁。
一、开源的库和工具箱
1.1 ACADO
ACADO 工具箱是一个用于自动控制和动态优化的开源软件环境和算法集。
它还使用直接多步法(direct multiple shooting method)。ACADO 由 C++ 编写,但带有用户友好的 Matlab 接口。
作者是鲁汶工程大学的 Moritz Diehl、Boris Houska、Hand Joachim Ferreau、Milan Vukov 和 Rien Quiynen。
网址: www.acadotoolkit.org
1.2 CasADi
CasADi 是一款用于非线性优化(nonlinear optimization )和算法微分(algorithmic differentiation)的开源工具。它有助于在离线环境和非线性模型预测控制(NMPC)中快速、高效地实施不同的数值优化控制方法。
网址:https://web.casadi.org/
1.3 Control Toolbox
控制工具箱(Control Toolbox,简称 “CT”)是一个用于建模(modeling)、控制(control)、估计(estimation)、轨迹优化(trajectory optimization)和模型预测控制(model predictive control)的 C++ 库。控制工具箱适用于多种动态系统,但也有专门为机器人设计的附加工具。该库包含多个工具,用于设计和评估控制器、动态系统建模和数值求解最优控制问题(optimal control problems)。
网址:https://ethz-adrl.github.io/ct/
1.4 Crocoddyl
Crocoddyl 是一个用于接触序列(contact sequence)下机器人控制的最优控制库。它的求解器基于高效的差分动态编程(Differential Dynamic Programming,DDP)算法。Crocoddyl 可计算最佳轨迹(optimal trajectories)和最佳反馈增益(optimal feedback gains)。它使用 Pinocchio 快速计算机器人动力学及其分析导数。
网址:https://github.com/loco-3d/crocoddyl
1.5 Ipopt
Ipopt 是用于大规模非线性连续优化(large-scale nonlinear continuous optimization)的开源求解器。它可以在 AIMMS、AMPL、GAMS 或 Matlab 等建模环境中使用,也可以作为可调用库提供,并与 C++、C、Fortran、Java 和 R 兼容。
网址:https://github.com/coin-or/Ipopt
1.6 Manopt
Matlab、Python 和 Julia 工具箱用于流形(manifolds)和矩阵(matrices)上的无约束优化(unconstrained optimization),可轻松处理应用中自然出现的各类约束(constraints)和对称性(symmetries),如正交性(orthonormality)、低秩(low rank)、正向性(positivity)和群作用(group actions)下的不变性(invariance)。
网址:https://www.manopt.org/
1.7 LexLS
D. Dimitrov、A. Sherikov 和 P.-B. Wieber 在论文 Efficient resolution of potentially conflicting linear constraints in robotics 中提出的基于词法 QR (l-QR) 的词法最小二乘问题(lexicographic least-squares problems)快速 C++ 求解器。
网址:https://github.com/jrl-umi3218/lexls
1.8 NLOpt
NLopt 是一个免费/开源的非线性优化(nonlinear optimization)库,它为许多在线免费优化例程以及各种其他算法的原始实现提供了一个通用接口。
网址:https://openocl.org/
1.9 qpOASES
qpOASES 是最近提出的在线主动集策略的开源 C++ 实现,其灵感来自参数化二次规划(parametric quadratic programming,QP)领域的重要观察结果。它的一些理论特性使其特别适用于模型预测控制(MPC)应用。进一步的数值修改使 qpOASES 成为一个可靠的 QP 求解器,即使是在处理半有限的(semi-definite)、不确定的(ill-posed)或退化(degenerated)的 QP 问题时也是如此。此外,qpOASES 还提供了多个与 Matlab 或 Simulink 等第三方软件的接口,即使不懂 C/C++ 的用户也能轻松使用。
1.10 qpSWIFT
qpSWIFT 是一种稀疏二次规划(sparse quadratic programming)编程求解器,专为机器人等嵌入式应用而设计。qpSWIFT 采用带有 Mehrotra 预测器-校正器步骤和 Nesterov-Todd 缩放的基元-二元内部点法。
求解器的核心部分是用 ANSI-C 编写的,并带有与 matlab、python 和 simulink 等流行编程语言的接口。要了解更多关于求解器安装和使用的信息,请参阅(pdf)或(github wiki)上的网页文档。有关算法的详细信息,请参阅研究文章(链接)
网址:https://qpswift.github.io/
Github 地址:https://github.com/qpSWIFT/qpSWIFT
1.11 Roboptim
Roboptim 是一个用于机器人数值优化的现代开源 C++ 库,由 Thomas Moulard(法国图卢兹 LAAS CNRS 和日本筑波 AIST-JRL)开发。
网址:http://www.roboptim.net/
二、其他库和工具箱
2.1 MUSCOD
MUSCOD 是一款功能强大的优化控制代码,适用于系统常微分方程和微分代数方程,可用于机器人问题。它采用直接多步法(direct multiple shooting method)。 MUSCOD 由 Hans Georg Bock、Daniel Leineweber 和合作者(德国海德堡大学)编写。
网址:http://www.iwr.uni-heidelberg.de/~agbock/RESEARCH/muscod.php, https://neos-server.org/neos/solvers/miocp:MUSCOD-II/AMPL.html
2.2 OCPID-DAE1
有关最优控制和代码 OCPID.DAE1 的总体信息页面,作者 Matthias Gerdts(德国慕尼黑联邦国防军大学):
网址:http://www.optimal-control.de
2.3 SNOPT
SNOPT 是一个用于约束优化的通用系统。它能在变量和稀疏线性或非线性约束条件的限制下,最小化线性或非线性函数。它适用于大规模线性和二次编程、线性约束优化以及一般非线性程序。
网址:https://web.stanford.edu/group/SOL/snopt.htm