实时最优控制(Real-Time Optimal Control)工具
系列文章目录
前言
许多现代控制方法,如模型预测控制(model-predictive control),在很大程度上依赖于实时解决优化问题。特别是,高效解决优化控制问题的能力使复杂机器人系统在实现高动态行为(highly dynamic behaviors)方面取得了许多最新突破。以实时性能(real-time performance)解决这些优化问题的能力极具挑战性,目前是机器人学(robotics)、航空航天(aerospace)、运筹学(operations research)、金融学(finance)等众多学科中一个非常活跃的研究领域。为了让那些可能不具备非线性优化(nonlinear optimization)、动力学(dynamics)或控制(control)方面必要背景的从业人员更容易使用这些功能强大的方法,机器人社区开发了几款开源软件包,专门用于设置和解决最优控制问题。本教程式研讨会面向广大听众,旨在让社区了解这些软件包的优点,并重点介绍现代最优控制技术最近取得的成功。
一、求解器
1.1 TrajectoryOptimization.jl
卡内基梅隆大学机器人探索实验室用 Julia 编程语言开发了一套工具,用于设置和解决轨迹优化(trajectory optimization)问题。他们的核心求解器 ALTRO 使用迭代 LQR (iLQR) 和增强拉格朗日法 (augmented Lagrangian method,ALM) 来处理一般路径约束,并结合主动集方法(active-set method)来完善解决方案。尽管 ALTRO 是用高级编程语言编写的,但它在凸规划(convex programs)、二阶锥规划(second-order cone programs)和一般非线性轨迹优化(general nonlinear trajectory optimization)问题上的表现令人印象深刻。它能原生处理三维旋转,在李代数(Lie algebra)上执行优化,并使用单位四元数(unit quaternions)作为全局参数化(global parameterization)。
1.2 OCS2
OCS2 是专为切换系统(Switched Systems)优化控制(Optimal Control of Switched Systems,OCS2)定制的 C++ 工具箱。该工具箱提供了连续时间域(称为 SLQ)和离散时间域(称为 iLQR)中微分动态规划(Differential Dynamic Programming,DDP)算法的高效实现。OCS2 通过增强拉格朗日法(augmented Lagrangian)和松弛障碍法处理一般路径约束。为便于在机器人任务(robotic tasks)中应用 OCS2,它为用户提供了额外的工具,以便根据 URDF 模型设置系统动力学(如运动学或动力学模型)和成本/约束(如避免自碰撞(self-collision avoidance)和末端执行器跟踪(end-effector tracking))。该库还提供了一个自动微分(automatic differentiation)工具,用于计算系统动力学(dynamics)、约束(constraints)和成本(cost)的导数。该工具箱的实现高效且数值稳定(numerically stable),加上其用户友好的界面,为在机载计算能力有限的众多机器人应用中以 MPC 方式部署该工具箱铺平了道路。
1.3 Crocoddyl
Crocoddyl 是一种优化控制求解器,用于机械臂(manipulator)和足式机器人(legged robots)的全身模型预测控制(whole-body model predictive control)。它从一开始就建立在前端(成本和约束图(graph of cost and constraints)、积分器(integration)、函数及其导数的评估)和后端(数值约束求解器(numerical constrained solver))的分离之上。在提供通用接口的同时,前端主要基于刚体动力学库 Pinocchio,该库使 Crocoddyl 能够非常高效地评估成本、动力学及其导数,并提供代码生成整个计算的可能性。对于足式机器人,接触约束条件可直接在机器人动力学内部处理,并采用独创算法求解,从而实现稳健高效的评估。评估图的构建遵循 "先离散,后求解 "(discretize first, solve second)的方法,实现了后端和前端的完全解耦。我们提出了几种后端求解器,它们大多是 DDP 算法的变体。主要的 DDP 求解器实现了多重射击策略(multiple shooting strategy)和盒式约束(box constraints)。我们正在发布一个等式/不等式约束增强拉格朗日求解器(equality/inequality-constraint augmented Lagrangian solver)和一个能够考虑外部参数(如接触位置(contact location)、定时(timings)或编码设计参数(codesign parameters))的求解器。Crocoddyl 已用于在仿人机器人、机械臂和四足机器人上实现带有低级扭矩伺服(low-level torque servo)的在线全身模型预测控制(online whole-body model predictive control)。将提出复制控制器的指导原则。Crocoddyl 也是一项基于开放源代码和 BSD-3 许可的国际合作项目。它由法国国家科学研究中心(LAAS-CNRS)、巴黎英瑞亚公司(Inria Paris)、爱丁堡大学、牛津大学、特伦托大学、马克斯-普朗克研究所或纽约大学牵头开发。我们很高兴为新用户提供指导,也欢迎大家为我们提供帮助。
1.4 SCP Toolbox
序列凸规划(Sequential Convex Programming,SCP)工具箱是一个 Julia 库,它为一套实时序列凸编程(SCP)算法提供了解析器 - 求解器接口。高级优化控制问题解析器为用户提供了使用以下算法解决通用非凸轨迹问题(generic nonconvex trajectory problems)的能力: LCvx、SCvx、PTR 和 GuSTO。这些算法已应用于航空航天和机器人独立研究问题,可能与 NASA、SpaceX、Blue Origin 和 Masten Space Systems 等组织相关。该工具箱源于一篇最新的综合教程论文,介绍了无损凸化和 SCP 算法的理论与实践。除初学者教程外,该工具箱还提供了 8 个预定义示例,包括四旋翼飞行、NASA 阿波罗交会、火星着陆和 SpaceX 星际飞船着陆翻转
相关文章:

实时最优控制(Real-Time Optimal Control)工具
系列文章目录 前言 许多现代控制方法,如模型预测控制(model-predictive control),在很大程度上依赖于实时解决优化问题。特别是,高效解决优化控制问题的能力使复杂机器人系统在实现高动态行为(highly dyna…...

(env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
应公司需求,在特定情况下需要修改ip 在开发过程中出现的小插曲 1、第一种情况:重复声明 2、第二种情况: 应官方要求,需要跳转的 tabBar 页面的路径(需在 pages.json 的 tabBar 字段定义的页面)࿰…...

go-zero开发入门-API服务开发示例
接口定义 定义 API 接口文件 接口文件 add.api 的内容如下: syntax "v1"info (title: "API 接口文件示例"desc: "演示如何编写 API 接口文件"author: "一见"date: "2023年12月07日"version: "…...

NVIDIA Jetson NX ubuntu20.04删除多余版本冲突的Boost库
参考Ubuntu16.04 卸载旧版本Boost库并安装新版本 卸载 删除/usr/local/include/boost文件夹,删除/usr/local/lib中和boost有关的文件,以及/usr/local/lib/cmake/中boost的cmake文件 cd /usr/local/lib/ ls | grep boost sudo rm -rf /usr/local/include/boost su…...

【蜗牛到家】获南明电子信息产业引导基金战略投资
智慧社区生活服务平台「蜗牛到家」已于近期获得贵阳南明电子信息产业引导基金、华科明德战略投资。 贵阳南明电子信息产业引导基金属于政府旗下产业引导基金,贵州华科明德基金管理有限公司擅长电子信息产业、高科技产业、城市建设及民生保障领域的投资,双…...

基于ubuntu nc指令实现远程传输文件到嵌入式设备中
背景: 最近在使用nc进行远程文件传输的时候发现在文件传输完成时,没有正确的反馈,而是界面一直停留在传输阶段,加上使用nc传输需要设置一些诸如-l、 -p等参数,于是想将这些参数包裹在sh脚本中,一键执行脚本…...

蓝桥杯 day01 奇怪的数列 特殊日期
奇怪的数列 题目描述 奇怪的数列 从 X 星截获一份电码,是一些数字,如下: 13 1113 3113 132113 1113122113 ⋯⋯ YY 博士经彻夜研究,发现了规律: 第一行的数字随便是什么,以后每一行都是对上一行…...

properties配置和读取
如何配置和读取属性文件 1.属性文件介绍1.1 什么是属性文件1.2属性文件规范1.3 属性文件优缺点 2.属性文件读取4.spring和属性文件4.1利用注解读取4.2配置文件里直接引用 4.属性文件写入5.注意事项5.总结 1.属性文件介绍 1.1 什么是属性文件 Java开发中,我们经常需…...

如何利用人工智能+物联网技术实现自动化设备生产
随着科技的发展与行业竞争的日益激烈,制造业也逐渐走向智能化发展。制造业的改革是利用物联网技术和自动化设备,实现生产线的智能化和自适应生产,优化生产流程,提高生产效率和质量,为企业创造更大的价值。 方案概述 智…...

STM32CubeMx+MATLAB Simulink串口输出实验
STM32CubeMxMATLAB Simulink串口输出实验 📌《STM32CubeMxMATLAB Simulink点灯程序》📍相关篇《MATLAB Simulink STM32硬件在环 (HIL)实现例程测试》🔖需要的软件支持包:Embedded Coder Support Package fo…...

React中每次渲染都会传入一个新的props.children到子组件?
传入props.children后, 为什么会导致组件的重新渲染? 问题描述 在 react 中, 我想要对组件的渲染进行优化, 遇到了一个非常意思的问题, 当我向一个组件中传入了 props.children 之后, 每次父组件重新渲染都会导致这个组件的重新渲染; 它看起来的表现就像是被memo包…...

Qt 通过命令行编译程序
前言 从服务器拉代码到编译成可执行文件一个脚本解决问题。使用的项目文件见上一个文章 Qt生成动态链接库并使用动态链接库 脚本代码 为了方便易懂这是一个很简单的Qt编译脚本 call E:\vs2015\VC\vcvarsall.bat x86 rmdir /s /q my-project git clone gitgitee.com:wenbai1…...

WireShark监控浏览器登录过程网络请求
软件开发中经常前后端扯皮。一种是用Chrome浏览器的开发者工具 来看网络交互,但是前提是 网络端口的确是通的。 WireShark工作在更低层。 这个工具最大的好处,大家别扯皮,看网络底层的log,到底 你的端口开没开, 数据…...

202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制
202301209将RK3399的挖掘机开发板在Android10下设置系统默认为24小时制 2023/12/9 22:07 应该也可以适用于RK3399的Android12系统 --- a/frameworks/base/packages/SettingsProvider/res/values/defaults.xml b/frameworks/base/packages/SettingsProvider/res/values/default…...

智能优化算法应用:基于法医调查算法无线传感器网络(WSN)覆盖优化 - 附代码
智能优化算法应用:基于法医调查算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于法医调查算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.法医调查算法4.实验参数设定5.算法结果6.参考…...

使用MfgTool烧写工具烧写自制系统
一. 简介 本文我们就来学习,如何将我们编译的 uboot,zImage(内核镜像),xxx.dtb设备树文件,还有制作的根文件系统,这四个文件烧写到开发板中,最后 开发板能正常启动。 上一篇文章说…...

react中使用react-konva实现画板框选内容
文章目录 一、前言1.1、API文档1.2、Github仓库 二、图形2.1、拖拽draggable2.2、图片Image2.3、变形Transformer 三、实现3.1、依赖3.2、源码3.2.1、KonvaContainer组件3.2.2、use-key-press文件 3.3、效果图 四、最后 一、前言 本文用到的react-konva是基于react封装的图形绘…...

es6 相关面试总结
1、es6 是什么 新一代的js 语言标准,对其核心做了升级优化,更加适合大型应用开发。 2、箭头函数优缺点 优点: 1.代码优化 2.this 指向不会变动,永远指向其父元素 缺点: 1.没有arguments 参数 2.不能通过 appl…...

【Hive】——数据仓库
1.1 数仓概念 数据仓库(data warehouse):是一个用于存储,分析,报告的数据系统 目的:是构建面向分析的集成化数据环境,分析结果为企业提供决策支持 特点: 数据仓库本身不产生任何数据…...

算法基础九
螺旋矩阵2 给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix。 示例 1: 输入:n 3 输出:[[1,2,3],[8,9,4],[7,6,5]] 示例 2: 输入:n …...

QT-在ui界面中给QWidget增加Layout布局的两种方法
2023-12-05 QT-在ui界面中给QWidget增加Layout布局的两种方法 方式一 在UI界面,用拖拽的方式加入Layout方式二 用notepad软件打开.ui文件,手动加入Layout代码 目标:去除右下角红标,给tab标签增加Layout属性。 方式一 在UI界面&am…...

免费的网页数据抓取工具有哪些?【2024附下载链接】
在网络上,有许多网页数据抓取工具可供选择。本文将探讨其如何全网采集数据并支持指定网站抓取。我们将比较不同的数据采集工具,帮助您找到最适合您需求的工具。 网页数据抓取工具种类 在选择网页数据抓取工具之前,让我们先了解一下这些工具…...

报错:Parsed mapper file: ‘file mapper.xml 导致无法启动
报错 : Logging initialized using class org.apache.ibatis.logging.stdout.StdOutImpl adapter. Registered plugin: com.github.yulichang.interceptor.MPJInterceptor3b2c8bda Parsed mapper file: file [/Mapper.xml] application无法启动 我这边产生原因是项…...

Linux驱动开发学习笔记2《LED驱动开发试验》
目录 一、Linux下LED灯驱动原理 1.地址映射 二、硬件原理图分析 三、实验程序编写 1.LED 灯驱动程序编写 2.编写测试APP 四、运行测试 1.编译驱动程序和测试APP (1)编译驱动程序 (2)编译测试APP 2.运行测试 一、Linux下…...

hive数据库查看参数/hive查看当前环境配置
文章目录 一、hive查看当前环境配置命令 在一次hive数据库执行命令 set ngmr.exec.modecluster时,想看一下 ngmr.exec.mode参数原先的值是什么,所以写一下本篇博文,讲一下怎么查看hive中的参数。 一、hive查看当前环境配置命令 set &#…...

ajax中get和post的区别,datatype返回的数据类型有哪些?web开发中数据提交的几种方式,有什么区别。百度使用哪种方式?
在Ajax中,GET和POST是两种常见的HTTP请求方法。它们有以下区别: GET请求:使用GET请求时,参数数据会附加在URL的末尾,以查询字符串的形式发送给服务器。GET请求是幂等的,也就是说多次发送相同的GET请求&…...

STM32用flash保存参数实现平衡擦写的一种方法
#FLASH平衡擦写# 一、概述 简易示意图如下: 写参数前要擦除对应的扇区 全为0XFFFFFFFF操作的最小单位为32位 uint32_t; 当一块扇区写完时,将所有有用参数复制到第二块扇区,开始写新的参数,如果所有参数写完,又重第…...

Aho Corasick Algorithm
文章目录 前言介绍实现参考 前言 Aho Corasick Algorithm又叫AC自动机,该算法是一个匹配算法,用来匹配文本Text中多个patterns分别出现的次数; 我们定义n为patterns的总长度;m为Text的长度; 问题:在ahis…...

用户管理 --汇总
一、第一节课 1.1 本人写的 前端: 鱼皮 --> 用户中心 第1节课-CSDN博客 中期: 一、用户管理 第1节课中间-CSDN博客 后端: 一、用户管理-CSDN博客 其他的链接 亿图脑图MindMaster 1.2 优秀球友,推荐 Docs 另…...

Flutter视频播放器在iOS端和Android端都能实现全屏播放
Flutter开发过程中,对于视频播放的三方组件有很多,在Android端适配都挺好,但是在适配iPhone手机的时候,如果设置了UIInterfaceOrientationLandscapeLeft和UIInterfaceOrientationLandscapeRight都为false的情况下,无法…...