机器人控制的开源优化库 Model-based Optimization for Robotics - Optimization Tools

news/2025/2/21 18:54:58

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、开源的库和工具箱
    • 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


前言

开源的库和工具箱


一、开源的库和工具箱

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


http://www.niftyadmin.cn/n/5229918.html

相关文章

C语言二叉树与堆的实现(一)

目录 二叉树 二叉树的分类(目前只谈两种) 满二叉树 完全二叉树 二叉树的性质(其余的可以自己总结) 选择练习 二叉树的存储结构 顺序存储方式 链式存储方式 一种完全二叉树:堆 堆的概念 堆的性质 建堆的时…

【微服务 SpringCloudAlibaba】实用篇 · Gateway服务网关

微服务(8) 文章目录 微服务(8)1. 为什么需要网关2. gateway快速入门1)创建gateway服务,引入依赖2)编写启动类3)编写基础配置和路由规则4)重启测试5)网关路由的…

使用vscode的remotessh插件远程连接的时候被要求重复输入密码

问题描述: 需要远程连接服务器,使用ssh,我用到的是vscode里面的remotessh插件。配置好config以后 HostHostNameUserPortIdentifyFile进入到了vscode的密码登录界面,但是一直被要求循环输入密码,很奇怪,去…

计网Lesson5 - MAC 地址与 ARP

文章目录 M A C MAC MAC 地址1. M A C MAC MAC 地址的格式 2. M A C MAC MAC 地址的获取3. A R P ARP ARP 协议4. A R P ARP ARP 缓存5. R A R P RARP RARP M A C MAC MAC 地址 1. M A C MAC MAC 地址的格式 每个网卡都有一个 6 6 6 字节的 M A C MAC MAC 地址 M A C…

Java + openCV更换证件照背景色

最近在小红书上看到很多更换证件照背景色的需求,联想到以前自己也更换过证件照背景色而且还是付费的,碰巧最近在看一本书《JavaOpenCV高效入门》,于是查找资料,找到了通过技术解决这个需求的办法。 先看效果图(图片来自…

leetcode-142-环形链表(C语言实现)

题目: 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评…

kubeadm快速搭建k8s高可用集群

1.安装及优化 1.1基本环境配置 1.环境介绍 (1).高可用集群规划 主机名ip地址说明k8s-master01192.168.2.96master节点k8s-master02192.168.2.97master节点k8s-master03192.168.2.98master节点k8s-node01192.168.2.99node节点k8s-node02192.168.2.100n…

从带宽和 cpu 的发展看未来的传输协议

简单展示以太网和 CPU 的发展轨迹: 图中那条粗的约束线扭曲了坐标轴,三个维度不再正交,最终卷于一点,这封闭的体积就是极限。由于 cpu 在执行串行流,加之冯诺依曼内存墙,它将比以太网芯片更快更早逼近极限…