C++ 中的模型预测路径积分 (MPPI) 控制

一、说明

        模型预测路径积分控制(MPPI)是一种基于采样的模型预测控制算法。是MPC控制模型的延申和拓宽,要了解MPPI需要先理解MPC,参见文章:MPC预测控制概述和C++ 中的模型库-CSDN博客

二、模型预测路径积分 (MPPI) 控制

        模型预测路径积分控制(MPPI)是一种基于采样的模型预测控制算法。MPPI 的第一个版本在 2016 年的 ICRA 上发布[pdf]。这项工作包括利用自由能和相对熵之间的信息论对偶性推导 MPPI,而实验包括使用 GT-AutoRally 车辆进行越野导航的应用。        MPPI 的后续版本包括 ICRA 2017 [pdf]和 TRO 2018 [pdf]中发布的非仿射动力学 MPPI 工作。自从第一次放弃出版物以来,ACDS 实验室以及其他实验室开发了不同的 MPPI 变体和形式。这些变体包括 Tube-MPPI、Robust-MPPI 和最新版本,例如 Tsallis-MPPI、约束协方差引导 – MPPI (CCS-MPPI) 和协方差控制-MPPI (CC-MPPI)。

        基于采样类型的 MPC 算法可以使用不同的方法推导,包括自由能和相对熵之间的信息论对偶性、随机搜索方法和变分优化方法。每种方法都有其自身的优势,其中包括不同的算法特征、与标准 Hamilton-Jacobi-Belman 理论的联系、处理一般分布类别、随机过程和成本函数的灵活性,以及​​计算资源方面的要求。

        Tube-MPPI:在基于 Tube 的 MPPI 中,有两个优化层,该架构的灵感来自于标准的基于 Tube 的模型预测和后退地平线控制架构。第一个优化层对应于普通 MPPI 算法,该算法使用标称对象或动力学的标称表示。第二层由微分动态规划控制器组成,跟踪由更高级别优化生成的轨迹。关于 Tube-MPPI 的论文首次发表在 RSS 2018 中,可以在链接中找到

        Robust-MPPI:鲁棒模型预测路径积分控制旨在通过增强动态表示并将低级控制器洞察力与 MPPI 的随机优化模块相结合来克服 Tube-MPPI 的局限性。这使得RMPPI能够在地面导航任务中不那么保守并实现更高的速度。RMPPI 的其他功能包括选择下一个标称状态的优化步骤以及 RMPPI 的两个查询之间的性能界限。该界限是根据 RMPPI 的两个查询之间的自由能差计算的。关于RMPPI的论文出现在RAL 2021中,可以在链接中找到

        Tsallis-MPPI:这是 MPPI 的扩展,依赖于变分优化和非扩展信息理论测量的使用。非广延信息论度量包括 Tsallis 熵和相应的散度。这些度量是香农熵和 Kulback Leibler 散度的概括。虽然 Tsallis 熵的有效性一直存在争议,但至少在工程应用中,它为可扩展且高效的随机优化算法的开发提供了有用的概括。在 Tsallis-MPPI 的背景下,我们的工作表明存在从交叉熵到 MPPI 的随机优化算法的连续体,它们是 Tsallis MPPI 的子情况。所提出的算法在性能以及不同任务和策略参数化(包括多模态和变分斯坦策略参数化)之间的一致性方面具有优势。Tsallis MPPI 的论文发表在 RSS 2021 中,可以在链接中找到

        CCS-MPPI:约束协方差转向 MPPI 是一种基于管的 MPC 架构,它结合了基于采样的算法,例如 MPPI 和协方差转向控制算法。该架构由两层组成。第一层由生成最优状态分布的 MPPI 控制器组成。然后通过低级协方差控制算法跟踪状态分布。该算法是为线性系统开发的,与普通 MPPI 相比,在避障任务上的性能有所提高。CCS-MPPI 的工作首次发表在 ACC 2022 上,可以在链接中找到

        CC-MPPI:协方差控制 MPPI 是一种将 MPPI 与协方差引导混合在一个层中的架构。这里的想法是,对于 MPPI 中生成的每个采样轨迹,都存在一个协方差转向问题,该问题提供一个具有相应采样轨迹平均值的椭球体。协方差引导算法提供控制,以围绕 MPPI 生成的每个采样轨迹引导协方差。这项工作的动机与提高 MPPI 的探索能力有关。论文首次发表于ICRA 2022,可在链接中找到

三、 模型预测控制(MPC)背景 

        MPC(考虑我之前的文章)是一种控制策略,它通过在每个时间步解决优化问题来计算控制动作。优化问题涉及预测系统在有限范围内的未来行为并找到最小化特定成本函数的控制序列。
        记住。在 MPC 中,在每个时间步,我们在有限的预测范围内解决优化问题,以获得一系列控制输入。然而,只有该序列的第一个控制输入被应用到系统。然后,在下一个时间步,再次求解优化(考虑系统的新状态),并且再次仅应用第一个控制输入。这种“后退地平线”方法是 MPC 的基本特征。

四、模型预测路径积分(MPPI)控制器:

        MPPI 是 MPC 的一个变体,它使用随机优化来计算控制动作。在 MPPI,我们考虑的不是解决确定性优化问题
,而是影响控制器性能的两个主要特征。

  • 轨迹是指在给定一系列控制输入的情况下,系统随时间经过的状态序列。在 MPPI 的背景下,对多个轨迹进行采样以探索系统未来可能的不同行为。在 MPPI 中,对多个此类轨迹进行采样以探索状态和控制空间。这个想法是评估与每个轨迹相关的成本,然后使用该信息来确定最佳控制动作。
  • 范围,通常称为预测或规划范围,是在优化问题中考虑未来轨迹的时间步数。它定义了控制器在做出决策时着眼于多远的未来。
    MPPI 中的优化问题旨在找到在此范围内最小化预期成本的控制操作序列。
    地平线 T 的选择至关重要:
    如果地平线太短,控制器可能没有足够的远见来做出正确的决策,特别是在行动产生长期后果的情况下。
    如果范围太长,计算复杂度可能会变得昂贵,特别是因为 MPPI 涉及对多个轨迹进行采样。此外,由于系统动力学或干扰的不确定性,对遥远未来的预测可能不太准确。

MPPI 概述(按作者)

        MPPI 对多个控制轨迹进行采样并计算每个轨迹的预期成本。然后根据这些轨迹的加权平均值选择控制动作。

        MPPI 背后的主要思想是使用随机最优控制的路径积分公式,它将轨迹的预期成本与其概率联系起来。

        从数学上讲,MPPI 控制动作由下式给出:

        目标函数:给定一个具有状态x和控制u的系统,目标是在有限范围T内最小化预期成本:

        其中c ( xt , ut ​) 是时间t的瞬时成本。

        随机动力学:系统动力学由下式给出:

        其中wt​ 是协方差为 Σ 的零均值高斯噪声。

        采样:在每个时间步,K个控制轨迹,

        从高斯分布中采样。

        成本评估:使用系统动力学和成本函数计算每个采样轨迹的成本:

        成本函数c ( xt , ut ) 可以根据所需的行为进行选择。例如,人们可以选择二次成本函数来惩罚与直立位置和大控制输入的偏差:

        其中QR是正定矩阵。

        加权组合:最优控制输入计算为采样控制轨迹的加权平均值:

        ​其中权重ωk由下式给出:

        这里,λ是决定加权锐度的温度参数。

五、车杆系统:

车杆(作者)

        对于车杆系统,状态 x 定义为:

        控制输入​​ u是施加到小车上的力。

        车杆系统的动力学可以使用牛顿定律导出,并由下式给出:

        这是 MPPI 控制器的简单模拟,您可以更改初始值,

模拟结果(作者)

六、后记

        本文是关于模型预测控制器 (MPC) 的讨论的延续。关于MPC资源请看:

你可以在GitHub上找到源代码。MPC预测控制概述和C++ 中的模型库 

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何破解压缩包密码,CTF压缩包处理

I. 引言 压缩包我们经常接触,用于对文件进行压缩存储/传输。压缩包处理在CTF比赛中是非常重要的一块,因为压缩包中可能包含重要信息:许多CTF题目会将关键信息隐藏在压缩包中,参赛者需要解压并查看其中的内容才能获取有用的线索。…

Day7力扣打卡

打卡记录 合法分组的最少组数(贪心) 链接 举例说明,假设 c n t [ x ] 32 cnt[x]32 cnt[x]32, k 10 k10 k10,那么 32 10 10 10 2 321010102 321010102,多出的 2 2 2 可以分成两个 1 1 1&#xf…

Html -- 文字时钟

Html – 文字时钟 文字时钟&#xff0c;之前在Android上实现了相关效果&#xff0c;闲来无事&#xff0c;弄个网页版的玩玩。。。直接上代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><titl…

SpringBoot+Vue实现AOP系统日志功能

AOP扫盲&#xff1a;Spring AOP (面向切面编程&#xff09;原理与代理模式—实例演示 logs表&#xff1a; CREATE TABLE logs (id int(11) NOT NULL AUTO_INCREMENT,operation varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 操作名称,type varchar(255) COLL…

鸿鹄工程项目管理系统 Spring Cloud+Spring Boot+Mybatis+Vue+ElementUI+前后端分离构建工程项目管理系统项目背景

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展&#xff0c;企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性&#xff0c;公司对内部工程管…

uniapp canvas 无法获取 webgl context 的问题解决

uniapp canvas 无法获取 webgl context 的问题解决 一、问题描述 在 uniapp 中做一个查看监控视频的页面&#xff0c;用到的是 JSMpeg 这个库&#xff0c;原理就是前后台通过 websocket 不断推送新画面内容到前端&#xff0c;前端通过这个 JSMpeg 渲染到前端页面中指定的 can…

Vue2基础知识(五)插槽

&#x1f48c; 所属专栏&#xff1a;【Vue2】&#x1f600; 作 者&#xff1a;长安不及十里&#x1f4bb;工作&#xff1a;目前从事电力行业开发&#x1f308;目标&#xff1a;全栈开发&#x1f680; 个人简介&#xff1a;一个正在努力学技术的Java工程师&#xff0c;专注基础和…

如何打造小红书产品差异化,打造产品优势?

其实在当今的时代&#xff0c;我们实质上已经进入到了一个产能过剩的时代&#xff0c;这意味着大量的同质化产品出现在市场上&#xff0c;选择更多了但是选择也更少了。今天为大家分享下如何打造小红书产品差异化&#xff0c;打造产品优势&#xff1f; 下面是一些产品差异化策略…

动画系统的前世今生(一)

掐指一算&#xff0c;五年没更新过我的CSDN账号啦&#xff0c;方向也从人工智能变成了计算机图形学&#xff0c;当然也依旧会关注AI的发展&#xff0c;之前在知乎上写了一些文章[传送门]&#xff0c;后续也会逐渐同步到CSDN上&#xff5e; 这个系列将包含五篇文章&#xff0c;内…

栈和队列相关的OJ题

1.栈的压入、弹出序列 题目链接 栈的压入、弹出序列_牛客题霸_牛客网 (nowcoder.com) 题目描述 题目给出两个序列&#xff0c;一个是入序列pushV&#xff0c;一个是出序列popV&#xff0c;要求判断是否匹配入栈出栈的规则顺序。 解题思路 可以用数据模拟入栈出栈&#xf…

SpringBoot使用@Value获取不到yaml中配置的值

在最近的开发中遇到一个问题,使用Value获取yml文件中配置的属性时始终获取不到值,一开始我以为是没有注入的问题,或者没有写setter方法的问题,后来我发现这些都都写了然后开始百度发现获取不到属性值有这么几个原因 获取不到值的原因 1.没有使用Component注解,也就是没有注入…

技术文档工具『Writerside』抢鲜体验

前言 2023 年 10 月 16 日&#xff0c;JetBrains 宣布以早期访问状态推出 Writerside&#xff0c;基于 IntelliJ 平台的 JetBrains IDE&#xff0c;开发人员可使用它编写、构建、测试和发布技术文档&#xff0c;可以作为 JetBrains IDE 中的插件使用&#xff0c;也可以作为独立…

无论有没有按钮,iPhone都可以进行截屏操作!如何在iPhone上截屏

通过简单的按键组合&#xff0c;可以很容易地将iPhone屏幕的图片捕获到图像文件中&#xff0c;并保存到照片库中。以下是操作方法。 什么是屏幕截图 屏幕截图是指通常包含你在设备屏幕上看到的内容的精确副本的图像。在设备内拍摄的数字屏幕截图通常使用相机拍摄物理屏幕的照…

Spring容器中同名 Bean 加载策略

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是「奇点」&#xff0c;江湖人称 singularity。刚工作几年&#xff0c;想和大家一同进步&#x1f91d;&#x1f91d; 一位上进心十足的【Java ToB端大厂…

【vSphere 8 自签名证书】企业 CA 签名证书替换 vSphere Machine SSL 证书Ⅳ—— 替换默认证书

目录 博文摘要6. 使用企业 CA 签发的 SSL 证书 替换 vSphere 默认 SSL 证书6.1 确认证书文件6.2 替换默认 vSphere 证书6.3 验证自签名证书6.4 补充说明 关联博文参考资料 博文摘要 博文主要描述了在 vCenter Server 8 上通过实用工具 certificate-manager 将 vSphere 默认 Ma…

差分时钟与DDR3

Zynq上的存储器接口 所有 Zynq-7000 AP芯片上的存储器接口单元包括一个动态存储器控制器和几个 静态存储器接口模块。动态存储器控制器可以用于 DDR3、DDR3L、DDR2 和 LPDDR2。 静态存储器控制器支持一个 NAND 闪存接口、一个 Quad-SPI 闪存接口、一个并行数 据总线和并行 NOR …

力扣刷题 day52:10-22

1.数组拆分 给定长度为 2n 的整数数组 nums &#xff0c;你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) &#xff0c;使得从 1 到 n 的 min(ai, bi) 总和最大。 返回该 最大总和 。 方法一&#xff1a;排序 #方法一&#xff1a;排序 def arrayPai…

uniapp开发微信小程序,webview内嵌h5,h5打开pdf地址,解决方案

根据公司要求&#xff0c;让我写一个h5&#xff0c;后续会嵌入到合作公司的微信小程序的webview中&#xff0c;如果是自己公司微信小程序&#xff0c;可以采取先下载下来pdf&#xff0c;然后通过wx.openDocument&#xff0c;进行单纯的预览操作&#xff0c;这个可以根据这个老哥…

工具让公众号推送变得轻而易举

公众号运营的关键在于定期向用户推送内容&#xff0c;但手动推送过程繁琐且浪费时间。现在&#xff0c;有了乔拓云公众号助手工具&#xff0c;你可以轻松实现公众号的自动推送功能。让我们一起来看看如何操作吧&#xff01; 首先&#xff0c;你需要注册一个乔拓云公众号助手工具…

【Rust】4 一文讲解重点 pattern matching | trait | 生命周期 | 闭包 | 迭代器 | 智能指针 | 并发与并行

文章目录 一、pattern matching二、trait2.1 常见 trait2.1.1 Copy 和 Clone2.1.2 PartialEq 和 Eq2.1.3 PartialOrd 和 Ord2.1.4 Hash2.1.5 From, Into, TryFrom, TryInto 2.2 概念2.2.1 关联类型2.2.2 关联常量2.3.3 泛型关联类型2.3.3.1 示例: 用泛型关联类型, 创建集合工厂…