基于迭代扩展卡尔曼滤波算法的倒立摆控制系统matlab仿真

简介: 本课题研究基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF、迭代UKF和迭代EKF的控制效果。倒立摆作为典型的非线性系统,适用于评估不同滤波方法的性能。UKF采用无迹变换逼近非线性函数,避免了EKF中的截断误差;EKF则通过泰勒级数展开近似非线性函数;迭代EKF和迭代UKF通过多次迭代提高状态估计精度。系统使用MATLAB 2022a进行仿真和分析,结果显示UKF和迭代UKF在非线性强的系统中表现更佳,但计算复杂度较高;EKF和迭代EKF则更适合维数较高或计算受限的场景。

1.课题概述
基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,对比UKF,EKF迭代UKF,迭代EKF四种卡尔曼滤波的控制效果。

2.系统仿真结果

1.png
2.png
3.png
4.png

3.核心程序与模型
版本:MATLAB2022a

X_iukf        = zeros(2, Times1);
X_iukf(:,1)   = state0;
P_iukf        = zeros(2,2,Times1);
P_iukf(:,:,1) = Sigma_;
for i=1:Times1-1
    [X_iukf(:,i+1), P_iukf(:,:,i+1)] = func_iter_EKF(X_iukf(:,i), P_iukf(:,:,i), f, [z_(i,:)]', Q, R, dt);
end
err_ekf  =X_ekf  - theta00(1:dt/dt0:end,:)';
err_iekf = X_iekf - theta00(1:dt/dt0:end,:)';
err_ukf  =X_ukf  - theta00(1:dt/dt0:end,:)';
err_iukf = X_iukf - theta00(1:dt/dt0:end,:)';

figure
subplot(2,2,1)
plot(mod(err_ekf(1,:)-pi, 2*pi).^2)
title('EKF控制误差')
ylabel('theta');
subplot(2,2,2)
plot(mod(err_iekf(1,:)-pi,2*pi).^2)
title('迭代EKF控制误差')
ylabel('theta');
subplot(2,2,3)
plot(mod(err_ukf(1,:)-pi,2*pi).^2)
title('UKF控制误差')
ylabel('theta');
subplot(2,2,4)
plot(mod(err_iukf(1,:)-pi,2*pi).^2)
title('迭代UKF控制误差')
ylabel('theta');

figure
subplot(2,2,1)
plot(err_ekf(2,:))
title('EKF控制误差')
ylabel('theta dot');
subplot(2,2,2)
plot(err_iekf(2,:))
title('迭代EKF控制误差')
ylabel('theta dot');
subplot(2,2,3)
plot(err_ukf(2,:))
title('UKF控制误差')
ylabel('theta dot');
subplot(2,2,4)
plot(err_iukf(2,:))
title('迭代UKF控制误差')
ylabel('theta dot');


P_ekf2  = reshape(P_ekf, [4, Times1]);
P_iekf2 = reshape(P_iekf, [4, Times1]);
P_ukf2  = reshape(P_ukf, [4, Times1]);
P_iukf2 = reshape(P_iukf, [4, Times1]);

figure;
plot(P_ekf2(1,:))
hold on
plot(P_iekf2(1,:))
hold on
plot(P_ukf2(1,:))
hold on
plot(P_iukf2(1,:))
legend('EKF','迭代iEKF','UKF','迭代UKF')
0007

4.系统原理简介
倒立摆控制系统是一种具有挑战性的非线性控制系统,常用于研究控制算法的性能。扩展卡尔曼滤波(EKF)和无迹卡尔曼滤波(UKF)是两种常用的非线性滤波方法,用于估计系统的状态。本文将详细介绍基于迭代扩展卡尔曼滤波算法的倒立摆控制系统,并对比UKF、EKF迭代UKF和迭代EKF的性能。

4.1、UKF(无迹卡尔曼滤波)
UKF是一种基于无迹变换(Unscented Transform,UT)的非线性滤波方法。它通过选择一组确定的sigma点来逼近非线性函数的概率密度函数,从而避免了EKF中对非线性函数进行泰勒级数展开带来的截断误差。

476c5a2e34383ab9bf9f22decb5cc692_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png
1d5dcfc72f5615d3d16bb79230f24de1_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

4.2 EKF(扩展卡尔曼滤波)
EKF是一种基于泰勒级数展开的非线性滤波方法。它通过在当前估计值附近对非线性函数进行泰勒级数展开,并保留一阶项来近似非线性函数。然后利用卡尔曼滤波的框架进行状态估计。

a6b0993de4a2e33b35fda5eeca53de02_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

4.3iEKF(迭代扩展卡尔曼滤波)
iEKF是一种基于迭代思想的扩展卡尔曼滤波方法。它通过多次迭代来改进状态估计的精度。在每次迭代中,利用上一次迭代的估计值对非线性函数进行泰勒级数展开,并更新状态估计,IEKF 的核心思想就是想 提高观测方程的线性化精度,因为我们之前的 EKF 都是把观测方程在IMU得到的 先验状处进行线性化,此时线性化是观测方程为:

d82207b031cbb0272e792c61055b79c8_watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_100,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=.png

4.4 iUKF(迭代无迹卡尔曼滤波)
iUKF结合了无迹卡尔曼滤波和迭代思想,通过多次迭代来改进状态估计的精度。在每次迭代中,利用上一次迭代的估计值重新计算sigma点,并通过无迹变换传播sigma点来更新状态估计。

4.5优缺点比较
UKF和iUKF相较于EKF和iEKF,由于采用了无迹变换,对于非线性函数的逼近更为准确,因此在非线性较强的系统中表现更好。然而,UKF和iUKF的计算复杂度相对较高,对于维数较高的系统可能会面临计算上的挑战。

   另一方面,EKF和iEKF在线性化过程中只保留了一阶项,因此在非线性较强时可能会导致较大的估计误差。但是,它们的计算复杂度相对较低,对于维数较高的系统更为实用。此外,通过迭代的方式,iEKF和iUKF可以进一步提高状态估计的精度。

    总结来说,选择UKF、EKF、iUKF还是iEKF取决于具体的系统特性和需求。在非线性较强且维数较低的系统中,UKF和iUKF可能是更好的选择;而在维数较高或对计算复杂度有限制的场景中,EKF和iEKF可能更为实用。
相关文章
|
4月前
|
机器学习/深度学习 算法 机器人
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
【水下图像增强融合算法】基于融合的水下图像与视频增强研究(Matlab代码实现)
461 0
|
4月前
|
机器学习/深度学习 算法 机器人
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
使用哈里斯角Harris和SIFT算法来实现局部特征匹配(Matlab代码实现)
237 8
|
4月前
|
机器学习/深度学习 算法 自动驾驶
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
基于导向滤波的暗通道去雾算法在灰度与彩色图像可见度复原中的研究(Matlab代码实现)
271 8
|
4月前
|
数据采集 分布式计算 并行计算
mRMR算法实现特征选择-MATLAB
mRMR算法实现特征选择-MATLAB
312 2
|
5月前
|
传感器 机器学习/深度学习 编解码
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
MATLAB|主动噪声和振动控制算法——对较大的次级路径变化具有鲁棒性
295 3
|
5月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
214 6
|
4月前
|
机器学习/深度学习 算法 数据可视化
基于MVO多元宇宙优化的DBSCAN聚类算法matlab仿真
本程序基于MATLAB实现MVO优化的DBSCAN聚类算法,通过多元宇宙优化自动搜索最优参数Eps与MinPts,提升聚类精度。对比传统DBSCAN,MVO-DBSCAN有效克服参数依赖问题,适应复杂数据分布,增强鲁棒性,适用于非均匀密度数据集的高效聚类分析。
|
5月前
|
机器学习/深度学习 传感器 算法
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
【高创新】基于优化的自适应差分导纳算法的改进最大功率点跟踪研究(Matlab代码实现)
329 14
|
4月前
|
开发框架 算法 .NET
基于ADMM无穷范数检测算法的MIMO通信系统信号检测MATLAB仿真,对比ML,MMSE,ZF以及LAMA
简介:本文介绍基于ADMM的MIMO信号检测算法,结合无穷范数优化与交替方向乘子法,降低计算复杂度并提升检测性能。涵盖MATLAB 2024b实现效果图、核心代码及详细注释,并对比ML、MMSE、ZF、OCD_MMSE与LAMA等算法。重点分析LAMA基于消息传递的低复杂度优势,适用于大规模MIMO系统,为通信系统检测提供理论支持与实践方案。(238字)
|
5月前
|
机器学习/深度学习 传感器 算法
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
【无人车路径跟踪】基于神经网络的数据驱动迭代学习控制(ILC)算法,用于具有未知模型和重复任务的非线性单输入单输出(SISO)离散时间系统的无人车的路径跟踪(Matlab代码实现)
382 2

热门文章

最新文章