首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将LGR和Kalman滤波器组合成一个控制器

将LGR和Kalman滤波器组合成一个控制器
EN

Stack Overflow用户
提问于 2018-03-25 09:33:42
回答 1查看 443关注 0票数 2

我想做的是

  • 我试图创建一个LQG控制器来控制一个给定的系统,结合线性二次型调节器(LQR)和卡尔曼滤波器。

我被困在那里

我发现这两个分别,但我不知道如何结合在MATLAB中。这是系统和LQR解决方案:

我能够分别创建Kalman滤波器和LQR,但我不知道如何将LQR组合起来,以卡尔曼滤波状态估计作为输入。

代码语言:javascript
复制
Akal = Afull;
Bkal = [B1, B2];
Ckal = Cfull;
Dkal = [0 0];
sys_kal = ss(Akal,Bkal,Ckal,Dkal);

[KEST,L,P] = kalman(sys_kal,E_d, E_n, 0)

[K,S,e] = lqr(Afull,B1,Q,r);

当我使用卡尔曼函数时,下面是size(KEST)给我的内容:

代码语言:javascript
复制
State-space model with 11 outputs, 2 inputs, and 10 states.

我希望我的U使用新的SS系统KEST的估计值。KEST提供了输出的估计(y,维度1)和所有10个状态的估计(X,维度10)。我可以用LQR和Kalman函数来写/画出我想要创建的闭环控制路径,但是我被困在这一点上,因为我不知道如何通过MATLAB实现它。我对语法也不太确定。

我已经搜索了MATLAB的例子,但没有找到任何告诉我如何组合我发现的东西。我知道KEST是一个状态空间模型,但我不知道如何使用它或选择一个输出。

我希望得到的帮助

  • 如果我使用bode(KEST),它会给我一个所有11个输出的预兆图。我不知道如何选择KEST的单个输出。
  • 我想要U = -K*X_est,但目前我只知道K的价值。我不知道如何从我的X_est状态空间系统获得一个KEST
EN

回答 1

Stack Overflow用户

发布于 2018-03-26 05:16:25

您要查找的是一个名为lqgreg的命令:

代码语言:javascript
复制
rlqg = lqgreg(kest,k)

还要确保kest输出是10个状态,并且y(输出)不包括在估计中。

为了更好地理解它: LQR是一个状态反馈,所以控制用一个最佳k增益反馈所有的状态。K的大小等于系统模型的状态。

通常LQR的问题是很少测量所有的状态。这里来了卡尔曼滤波,并帮助估计所有的状态,从测量的输出和已知的输入。请注意,kalman滤波器可以用于许多其他事情,但是在这里,kalman滤波器的唯一作用是为状态反馈创建状态估计,因此它应该只估计系统状态。

如果您需要知道您的系统输出(用于绘图或其他任何事情),从状态估计和输入(Cx + Du)计算是非常容易的,但是您可以为输出估计创建另一个kalman滤波器。在微控制器或其他低容量环境中运行时,这个后期的解决方案是不可接受的,因为您是重复的,基本上是相同的算法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49474403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档