实时最优控制(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 …...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
<6>-MySQL表的增删查改
目录 一,create(创建表) 二,retrieve(查询表) 1,select列 2,where条件 三,update(更新表) 四,delete(删除表…...
大数据零基础学习day1之环境准备和大数据初步理解
学习大数据会使用到多台Linux服务器。 一、环境准备 1、VMware 基于VMware构建Linux虚拟机 是大数据从业者或者IT从业者的必备技能之一也是成本低廉的方案 所以VMware虚拟机方案是必须要学习的。 (1)设置网关 打开VMware虚拟机,点击编辑…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
C++:多态机制详解
目录 一. 多态的概念 1.静态多态(编译时多态) 二.动态多态的定义及实现 1.多态的构成条件 2.虚函数 3.虚函数的重写/覆盖 4.虚函数重写的一些其他问题 1).协变 2).析构函数的重写 5.override 和 final关键字 1&#…...
Golang——6、指针和结构体
指针和结构体 1、指针1.1、指针地址和指针类型1.2、指针取值1.3、new和make 2、结构体2.1、type关键字的使用2.2、结构体的定义和初始化2.3、结构体方法和接收者2.4、给任意类型添加方法2.5、结构体的匿名字段2.6、嵌套结构体2.7、嵌套匿名结构体2.8、结构体的继承 3、结构体与…...
从 GreenPlum 到镜舟数据库:杭银消费金融湖仓一体转型实践
作者:吴岐诗,杭银消费金融大数据应用开发工程师 本文整理自杭银消费金融大数据应用开发工程师在StarRocks Summit Asia 2024的分享 引言:融合数据湖与数仓的创新之路 在数字金融时代,数据已成为金融机构的核心竞争力。杭银消费金…...
从物理机到云原生:全面解析计算虚拟化技术的演进与应用
前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...
