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

news2024/10/6 5:54:04

一、说明

        模型预测路径积分控制(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.coloradmin.cn/o/1120272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【小白专用23.10.22 已验证】windows 11 安装PHP8.2 +Apache2.4

环境说明 windows:windows 11 x64apache: Apache/2.4.43php :php-8.2.11 一.php 1、PHP下载 PHP For Windows: Binaries and sources Releases 注意: 1.要下载Thread Safe,否则没有php8apache2_4.dll这个文件;如果使用Apache作为服务器…

Casbin实战经验大揭秘:教育培训领域的创新实践和高效优化策略

策略描述语言(论文) 摘要: 为了保护云资源的安全,防止数据泄露和非授权访问,必须对云平台的资源访问实施访问控制。然而,目前主流云平台通常采用自己的安全策略语言和访问控制机制,从而造成两个问题&#x…

Jenkins简介及安装配置详解:开启持续集成之旅

目录 一、Jenkins介绍1.1 持续集成1.2 Jenkins持续集成的过程(传统方式与自动化部署) 二、环境搭建1、准备工作2、WEB发布服务器环境搭建3、SVN服务器环境搭建4、Jenkins环境搭建 一、Jenkins介绍 Jenkins是一个开源的、用Java编写的持续集成和持续交付&…

Defender Antivirus占用资源怎么禁止

前言 有时Defender Antivirus 突然磁盘IO很高。导致机器卡得很,开发代码很不方便,本文就介绍如何禁用这个服务。2f089809-2c6f-4fb7-86f5-8b5cbca8bd0d 操作 下载Defender Control https://www.sordum.org/9480/defender-control-v2-1/ 这是当前的最…

Adobe Photoshop 基本操作

PS快捷键 图层 选择图层 Ctrl T:可以对图层的大小和位置进行调整 填充图层 MAC: AltBackspace (前景) or CtrlBackspace (背景) WINDOWS: AltDelete (前景) or CtrlDelete (背景) 快速将图层填充为前景色或背景色 平面化图层(盖印图层&#xff09…

uniapp实现登录组件之外区域置灰并引导登录

实现需求 每个页面需要根据用户是否登录决定是否显示登陆组件,登录组件半屏底部显示,登录组件之外区域置灰,功能按钮点击之后引导提示登录.页面效果如下: 实现思路说明 设置登录组件背景颜色为灰色,将页面分成登录区域(底部)和非登陆区域(上面灰色显示部分), 置灰区域添加…

嵌入式学习笔记(61)位操作符

2.1.1.位与& (1)注意:位与符号是一个&,两个&&是逻辑与。 (2)真值表:1&00 1&11 0&00 0&10 (3)从真值表可以看出:位与操作的特点是,只有1和1位于结果为1,其余全是0. (4)…

【Java】Java 17 新特性

Java 17 新特性概览 1. Java 17 简介2. Java 17 新特性类型推断 - 新的 var 关键字垃圾回收器改进JEP 356 增强的伪随机数生成器(1)提供了一个新接口 RandomGenerator(2)提供了一个新类 RandomGeneratorFactory(3&…

Flutter的Don‘t use ‘BuildContext‘s across async gaps警告解决方法

文章目录 问题有问题的源码 问题原因问题分析Context的含义BuildContext的作用特殊情况 解决方法 问题 Flutter开发中遇到Don’t use BuildContext’s across async gaps警告 有问题的源码 if (await databaseHelper.isDataExist(task.title)) {showDialog(context: context,…

在PowerBI中提取IFC文件中的数据

推荐:用 NSDT编辑器 快速搭建可编程3D场景 在这篇文章中,我将逐步介绍从IFC文件中提取数据以创建 Shift IFC4PowerBI 函数的步骤。通过了解此工作流程,你能够更轻松地将 IFC 数据合并到自己的流程中。 在本文中,我们将重点关注文…

Reparameterization trick(重参数化技巧)

“Reparameterization trick”(重参数化技巧)是一种在训练生成模型中处理随机性潜在变量的方法,特别常见于变分自动编码器(VAE)等模型中。这个技巧的目的是使模型可微分(differentiable)&#x…

【源码】C++坦克大战源码

文章目录 题目介绍你收到的所有文件源码效果展示报告内容 题目介绍 代码量:1450 语言:C 你收到的所有文件 其中一个是devc版本,也可以用visual stdio 运行。 源码效果展示 typedef struct //这里的出现次序指的是一个AI_ta…

使用CountdownLatch和线程池批量处理http请求,并处理响应数据

背景和问题 ​ 背景:最近项目的一个接口数据,需要去请求其他多个服务器的数据,然后统一返回; 问题点:如果遍历所有的服务器地址,然后串行请求就会出现请求时间过长,加入需要请求十个服务器&…

Xray联动crawlergo自动扫描漏洞教程

xray和crawlergo联动 xray下载: https://github.com/chaitin/xray/releases crawlergo下载:360-crawlergo: github:https://github.com/Qianlitp/crawlergo/releases 联动脚本: github:https://github.com/timwhitez/crawlergo_x_…

Qt扫盲-QColor 理论使用总结

QColor 理论使用总结 一、概述1. 构造函数2. 合法性校验3. 组成值检索 二、整数与浮点精度三、Alpha-Blended Alpha混合图四、预定义颜色五、扩展的RGB颜色模型六、HSV颜色模型七、HSL颜色模型八、CMYK颜色模型 一、概述 QColor 是Qt里面描绘颜色的一个属性类,这个…

【算法练习Day25】 重新安排行程N 皇后 解数独

​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:练题 🎯长路漫漫浩浩,万事皆有期待 文章目录 重新安排行程N 皇后解数独总…

图论05-【无权无向】-图的广度优先BFS遍历-路径问题/检测环/二分图/最短路径问题

文章目录 1. 代码仓库2. 单源路径2.1 思路2.2 主要代码 3. 所有点对路径3.1 思路3.2 主要代码 4. 联通分量5. 环检测5.1 思路5.2 主要代码 6. 二分图检测6.1 思路6.2 主要代码6.2.1 遍历每个联通分量6.2.2 判断相邻两点的颜色是否一致 7. 最短路径问题7.1 思路7.2 代码 1. 代码…

使用 Visual Studio Code (VS Code) 作为 Visual C++ 6.0 (VC6) 的编辑器

使用 Visual Studio Code (VS Code) 作为 Visual C 6.0 (VC6) 的编辑器 由于一些众所周知的原因,我们不得不使用经典(过时)的比我们年龄还大的已有 25 年历史的 VC 6.0 来学习 C 语言。而对于现在来说,这个经典的 IDE 过于简陋&a…

python:红狐优化算法(Red fox optimization,RFO)求解23个基本函数

一、红狐优化算法 红狐优化算法(Red fox optimization,RFO)由Dawid Połap和 Marcin Woźniak于2021年提出,该算法模拟了红狐的狩猎行为,具有收敛速度快,寻优精度高等优势。 参考文献: Poap D …

华为OD技术面试-最短距离矩阵(动态规划、广度优先)

背景 记录2023-10-21 晚华为OD三面的手撕代码题,当时没做出来,给面试官说了我的想法,评价:解法复杂了,只是简单的动态规范 或 广度优先算法,事后找资料记录实现方式。 题目 腐烂的橘子 问题描述&#xff…