机器人最优控制开源库 Model-based Optimization for Robotics

系列文章目录


文章目录

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207468.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Conductor之动态分叉

Conductor之动态分叉 动态分叉 关于动态分叉,参考1 动态分叉 有时候我们希望在运行时能动态添加分叉任务(注意是分叉任务,不是动态任务),Conductor当前版本也是支持的,但是经过试验的版本只支持串行分叉&…

进程间通信方式——管道

进程间通信方式——管道 1、管道2、匿名管道2.1 创建匿名管道2.2 进程间通信 3、有名管道3.1 创建有名管道3.2 进程间通信 4、管道的读写行为 原文链接 1、管道 管道的是进程间通信(IPC - InterProcess Communication)的一种方式,管道的本质…

进程(process) vs 线程(Thread)

文章目录 前言一、进程(process) vs 线程(Thread)引用自维基百科引用自CSDN INCOE AI引用自 geeksforgeeksOS( Operating System )如何调度线程的线程锁的核心原理是什么? 总结 前言 🚀 多方面理解进程(process) ,线…

Python程序的计时

# -*- coding: UTF-8 -*- import timedef fun():time.sleep(5)sinceTime time.time() print("开始计时时刻:", sinceTime) fun() endTime time.time() print("结束时刻:", endTime) program_time endTime - sinceTime print(&quo…

振南技术干货集:各大平台串口调试软件大赏(5)

注解目录 (串口的重要性不言而喻。为什么很多平台把串口称为 tty,比如 Linux、MacOS 等等,振南告诉你。) 1、各平台上的串口调试软件 1.1Windows 1.1.1 STCISP (感谢 STC 姚老板设计出 STCISP 这个软件。&#xf…

特殊二叉树——堆

🌈一、堆的基本概念 1.堆:非线性结构,是完全二叉树 2.堆分为大堆和小堆。 大堆:树中任意一个父亲都大于等于孩子,根节点值大于等于其所有子孙节点的值。 小堆:树中任意一个父亲都小于等于孩子,…

【pytorch】深度学习入门一:pytorch的安装与配置(Windows版)

请支持原创,认准DannisTang(tangweixuan1995foxmail.com) 文章目录 第〇章 阅读前提示第一章 准备工作第一节 Python下载第二节 Python安装第三节 Python配置第四节 Pycharm下载第五节 Pycharm安装第六节 CUDA的安装 第二章 Anaconda安装与配…

Kaggle-水果图像分类银奖项目 pytorch Densenet GoogleNet ResNet101 VGG19

一些原理文章 卷积神经网络基础(卷积,池化,激活,全连接) - 知乎 PyTorch 入门与实践(六)卷积神经网络进阶(DenseNet)_pytorch conv1x1_Skr.B的博客-CSDN博客GoogLeNet网…

Django-Redis

NoSQL:(不支持sql语句) Redis MongoDB Hbase hadoop Cassandra hadoop key-value数据库(非关系性数据库) redis优势 性能高,读取速度快,存在内存中 Redis应用场景 用来做缓存 在某些特定场景下替代传统数据库---社交…

数据爬取+可视化实战_告白气球_词云展示----酷狗音乐

一、前言 歌词上做文本分析,数据存储在网页上,需要爬取数据下来,词云展示在工作中也变得日益重要,接下来将数据爬虫与可视化结合起来,做个词云展示案例。 二、代码 # -*- coding:utf-8 -*- # 酷狗音乐 通过获取每首歌…

Python (十八) lambda

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

svn合并冲突时每个选项的含义

合并冲突时每个选项的含义 - 这个图片是 TortoiseSVN(一个Subversion(SVN)客户端)的合并冲突解决对话框。当你尝试合并两个版本的文件并且出现差异时,你需要解决这些差异。这个对话框提供了几个选项来处理合并冲突&…

Python中用于机器学习的Lazy Predict库

Python是一种多功能语言,你可以用它来做任何事情。Python的一个伟大之处在于,有这么多的库使它变得更加强大。Lazy Predict就是其中一个库。它是机器学习和数据科学的一个很好的工具。在本文中,我们将了解它是什么,它做什么&#…

adb连接Android手机

文章目录 一、adb连接Android手机1.USB连接调试(方法一)2.Wifi连接调试(方法二) 一、adb连接Android手机 1.USB连接调试(方法一) 使用usb数据线连接好电脑手机打开调试模式,勾选usb调试模式&a…

使用Pytorch从零开始构建Energy-based Model

知识回顾: [1] 生成式建模概述 [2] Transformer I,Transformer II [3] 变分自编码器 [4] 生成对抗网络,高级生成对抗网络 I,高级生成对抗网络 II [5] 自回归模型 [6] 归一化流模型 [7] 基于能量的模型 [8] 扩散模型 I, 扩散模型 II 在本教程中…

学生上课睡觉原因及对策

老师经常会遇到这样的情况:一些学生在课堂上昏昏欲睡,根本无法集中精力学习。所以怎么解决这个问题呢?接下来,我给大家一些实用的建议。 学生晚上熬夜,睡眠不足 引导学生养成良好的作息习惯,保证充足的睡眠…

“Python: Configure Tests“ not found解决方案

最近想尝试尝试学学软件测试。正好电脑上安装了vscode, 又懒得装pycharm,所以就用vscode了。 遇到的问题 跟着vscode运行unittest框架想运行一下测试用例文件。【前提是文件名一定要包含test,文件里要导入unittest的包,类要继承…

vue生命周期、工程化开发和脚手架

1、前言 持续学习记录总结中,vue生命周期、工程化开发和脚手架 2、Vue生命周期 Vue生命周期:就是一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个阶段:① 创建 ② 挂载 ③ 更新 ④ 销毁 1.创建阶段:创建响应式数据 2.挂…

JCRE-逻辑通道

概述 卡以APDU的形式接收来自CAD的服务请求。JCRE使用SELECT FILE APDU和MANAGE CHANNEL OPEN APDU来指定逻辑通道会话的活动Applet。一旦被选中,一个Applet实例将接收分派到该逻辑通道的所有后续APDU,直到该小程序实例被取消变成Desectected状态。 Ja…

机器人AGV小车避障传感器测距

一、A22超声波传感器 该模块是基于机器人自动控制应用而设计的超声波避障传感器,针对目前市场上对于超声波传感器模组盲区大、测量角度大、响应时间长、安装适配性差等问题而着重设计。 具备了盲区小、测量角度小、响应时间短、过滤同频干扰、体积小、安装适配性高…