问题标签 [mpc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
robotics - 使用 Drake 的麦克纳姆轮式模型的 MPC
我是新手MIT Drake
,我用CasADi (ipopt)
的是麦克纳姆轮式模型MPC
。
在CasADi
中,我可以为优化参数(即初始状态和目标状态)创建一个符号变量。
然后用它来计算状态错误,我怎样才能获得等效的功能Drake
?
matlab - 在 MATLAB Simulink 中使用非线性 MPC 在仿真期间构建贝塞尔曲线
目前我正在做模型来模拟 Simulink 中 2 辆汽车的超车机动,对于路径跟踪,我在 Simulink 中使用内置的非线性 MPC。它获取参考点作为输入。
为了构建参考点,我开发了 MATLAB 函数。这是代码:
我知道代码和系统本身存在一些问题非常“愚蠢”,但现在的主要问题是非线性 MPC 无法获得可变大小的信号(MATLAB 说它是可变大小的,但实际上大小总是相同的,因为我定义了这条线的点数t = linspace(0,1,80);
)。Simulink 显示以下错误。
我尝试了几件事。我使变量bezierPoints
保持不变,我尝试了从这里构建贝塞尔曲线的其他方法:如何将二次贝塞尔曲线代码转换为三次贝塞尔曲线?. 在上面的代码中,我使用了这里的方法:Bézier Curves and Kronecker's Tensor Product。我将变量的赋值移到bezierPoints
函数的末尾(我认为可能由于向量大小不同,多个赋值会导致此错误发生)。但没有任何效果。
所以现在我将这个问题与我用于构建贝塞尔曲线的方法联系起来。有没有什么方法可以在模拟过程中将这条曲线构建为固定大小的数组?在此功能之前,我在模拟之前预定义了曲线,并使用带有时间参考的块“From Workspace”进行模拟,但现在我需要在模拟期间根据两辆车的位置和速度来构建它。
谢谢!
mingw - 如何查找和更新 MPC 头文件以避免“警告:MPC 头版本 1.0.2 与库版本 1.0.3 不同”。
我在 Windows 上使用 MINGW。我正在使用 gfortran 函数编译一个旧程序。我收到以下错误:
warning: MPC header version 1.0.2 differs from library version 1.0.3.
我已经运行了 MINGW 安装管理器并确认我有 1.0.3 版本的 MPC 库。我能找到的唯一 mpc.h 文件中包含 1.0.3 版本号,所以我不确定它正在查找/使用什么头文件。
CodeBlocks 生成的输出日志如下(删除了不相关的警告):
matlab - 在 MATLAB 中验证 MPC 模型时出错
我在这里从 matlab 论坛移植我的问题: https ://www.mathworks.com/matlabcentral/answers/871733-validating-mpc-controller-with-parameters?s_tid=srchtitle
我找不到解释如何定义带参数的 MPC 模型的示例。我假设使用细胞会像我尝试使用其他配方一样起作用。
我有一个使用以下脚本构建的 MPC 控制器:
其中 params 定义为 1x28 元胞数组。当我将 nlobj 验证为:
它给了我以下错误:
python-3.x - Gekko ARX 模型崩溃可能加载最后一次迭代
我对使用 Gekko 和一般情况下的预测控制建模非常陌生。
我在 Gekko 中创建了一个 ARX MPC,效果很好。然而,我注意到在前 50-80 次迭代中,结果很好……令人失望。然而,在第一次迭代之后,我得到了很好的结果(我猜 ARX 算法在这里起作用或者可能是 BIAS?)。现在我的问题是模型可能会在一段时间后崩溃,我必须重做 50-80 次迭代才能再次获得良好的结果,有没有办法“保存”最后一个计算的模型并在重新启动计算时使用它?
reference - simulink 中的 MPC 用于参考跟踪
我已经编写了一个使用 mpc 进行跟踪的 matlab 代码。我怎样才能在simulink上实现呢?我不想使用任何自定义的 mpc 块,所以请通过提供一个简单的示例(特别是用于跟踪)来帮助我,因为我还在 simulink 中实现了一个基于调节器的用于倒立摆的 mpc 现在我很困惑如何进行“参考跟踪” " simulink 中的 mpc。
c++ - 矢量擦除但我的矢量下标超出范围错误
我想擦除半径 < 20,但收到矢量下标超出范围错误。
gcc - 无法在 x86 上构建跨原生 aarch64 mpc 库:mpc 中的 libtool 脚本错误地计算了 $dependency 库
我正在尝试为 aarch64 (build=x86_64,host=aarch64,target=aarch64) 构建一个 gcc 交叉/本机工具链,并且在 libmpc (1.2.1 版) 上遇到困难。构建失败并出现以下错误:
这就是问题。有问题的文件 libgmp.a 现在不在“/usr/lib”中。它位于我的跨/本地链“/home/chris/local/aarch64-linux-gnu/usr/lib/”的暂存区。我使用它配置了 mpc,--with-mpfr=/home/chris/local/aarch64-linux-gnu/usr --with-gmp=/home/chris/local/aarch64-linux-gnu/usr
因此它会找到 libmpfr.la libgmp.la 的正确版本(它确实如此),但问题是 ../libtool 脚本(来自 mpc-1.2.1)运行命令
在 libtool shell 脚本中的第 8360 行或附近。它在上面的 func_source 语句中读取的 libmpfr.la 文件正确地指出它依赖于 /usr/lib/libgmp.la (depedency_libs=' /usr/lib/libgmp.la')
,因为它属于 aarch64 系统。但它不在进行此编译的 x86_64 构建平台上。然后编译失败并出现上述 grep 错误。
我试图阅读交叉编译时可以阅读的所有资源。不幸的是,虽然交叉编译器得到了很好的解释,但如何使用外国构建平台为本地编译器进行“加拿大交叉”的信息非常有限。
谁能给我说明我应该如何解决这个问题?当 mpfr 和 gmp 库不在其正确的运行时位置并且与构建节点的体系结构不同时,我需要构建 libmpc。最终,我需要构建一个交叉/本机 gcc,但遗憾的是,如果没有 libmpc 的 aarch64 构建,我将无法尝试。
我可以简单地手动删除 mpfr.la 和 gmp.la 文件中的dependency_libs 语句,还是会在以后导致更大的问题?我是否错过了构建过程中的一个步骤,这是导致此问题的根本原因?任何帮助表示赞赏。