实时最优控制(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 …...

label-studio的使用教程(导入本地路径)
文章目录 1. 准备环境2. 脚本启动2.1 Windows2.2 Linux 3. 安装label-studio机器学习后端3.1 pip安装(推荐)3.2 GitHub仓库安装 4. 后端配置4.1 yolo环境4.2 引入后端模型4.3 修改脚本4.4 启动后端 5. 标注工程5.1 创建工程5.2 配置图片路径5.3 配置工程类型标签5.4 配置模型5.…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果
Springboot社区养老保险系统小程序
一、前言 随着我国经济迅速发展,人们对手机的需求越来越大,各种手机软件也都在被广泛应用,但是对于手机进行数据信息管理,对于手机的各种软件也是备受用户的喜爱,社区养老保险系统小程序被用户普遍使用,为方…...

【笔记】WSL 中 Rust 安装与测试完整记录
#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统:Ubuntu 24.04 LTS (WSL2)架构:x86_64 (GNU/Linux)Rust 版本:rustc 1.87.0 (2025-05-09)Cargo 版本:cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

MySQL的pymysql操作
本章是MySQL的最后一章,MySQL到此完结,下一站Hadoop!!! 这章很简单,完整代码在最后,详细讲解之前python课程里面也有,感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...

【1】跨越技术栈鸿沟:字节跳动开源TRAE AI编程IDE的实战体验
2024年初,人工智能编程工具领域发生了一次静默的变革。当字节跳动宣布退出其TRAE项目(一款融合大型语言模型能力的云端AI编程IDE)时,技术社区曾短暂叹息。然而这一退场并非终点——通过开源社区的接力,TRAE在WayToAGI等…...