Matlab实现基于EKF(Extended Kalman Filter, 扩展卡尔曼滤波)的无人机姿态估计 使用EKF(Extended Kalman Filter, 扩展卡尔曼滤波)算法来对四旋翼无人机的姿态进行滤波和估计,姿态包括:俯仰角、滚转角、偏航角的角度值和角速度值。前提:角度值无法直接通过传感器直接测得,角速度值可以测得。 代码说明 test1.m:一维线性卡尔曼滤波的例子 jaccsd.m:用于求解EKF算法中的雅克比矩阵 EKF.m:EKF算法仿真程序 仿真结果 说明: 1.仿真软件采用MATLAB2010b 2.控制量和姿态角速度值采用随机生成的数据(使用实际数据更好) 3.仿真过程偶尔会出现错误结果,原因是EKF计算过程中有几率出现奇异矩阵,导致算法无法进行下去
2023-02-24 17:04:37 391KB EKF 扩展卡尔曼滤波 无人机姿态估计
1
虽然无先导卡尔曼UKF滤波技术在性能上要优于一阶线性化的扩展卡尔曼滤波EKF技术, 但是对于改进型Logistic混沌映射的扩频通信系统, UKF运算时间长, 算法复杂。针对上述缺点以及改进型Logistic映射的泰勒展开式最高项为二阶的特点, 提出将二阶EKF运用到接收系统中, 该接收系统能精确到泰勒展开式的二阶, 达到与UKF相同的性能。相比UKF的复杂算法更加简单, 运算速度也更快。仿真实验表明, 虽然二阶EKF与UKF的误码率相同, 但在运算速度与复杂度方面均优于UKF。
1
文中阐述一种移动机器人SLAM问题的解决方法,首先利用激光测距仪得到环境中障碍物的监测图表,然后增量的构建全局地图。利用扩展卡尔曼滤波器(EKF)创建移动机器人定位计算的有界估量;最后通过仿真和物理实验验证了该方法的正确性。可为解决机器人在未知环境下的地图创建与定位问题提供理论依据,具有实际意义。
1
锂电池模型建立、参数辨识与验证、SOC估计采用扩展卡尔曼滤波(EKF).7z
1
用EKF算法进行仿真,模拟了PMSM的电机动态数据,取得良好效果
2022-11-02 20:40:54 19KB 4lc8 ekf_电机 shelteri4k 扩展卡尔曼pmsm
1
EEKF - 嵌入式扩展卡尔曼滤波器 该项目在 C 中实现了一个扩展卡尔曼滤波器,用于嵌入式应用程序。 主要特点是: 小实现 使用回调进行状态转换和测量预测功能的简单 C 接口 可用于非线性(扩展)和线性卡尔曼滤波器情况 没有动态内存分配 专用最小矩阵计算模块 使用 Cholesky 分解的高效滤波器计算 分离的预测和校正步骤 输入和测量维度允许在步骤之间改变 什么是卡尔曼滤波器? 使用卡尔曼滤波器,可以通过仅测量可见输出来估计过程/系统的内部隐藏状态。 这广泛用于惯性测量单元 (IMU),以进行传感器融合或航位侦察。 只要没有测量可用,过滤器就会预测系统的当前状态。 一旦测量可用,它将更新估计值。 这称为预测和校正步骤。 有关更多信息,请参阅 。 那么什么是扩展卡尔曼滤波器? 在线性滤波器的情况下,从一个时间步到下一个时间步的状态是线性相关的。 这意味着它们存在一个表达这一点的常量
2022-10-27 14:13:50 14KB C
1
7 对于一个运动模型,建立卡尔曼滤波模型,进行仿真,设已知初始时刻运动目标的真实位置和速度,并已知卡尔曼滤波使用的初始状态值,对该问题给出仿真;进一步分析该问题的稳态卡尔曼解,直接使用稳态卡尔曼滤波(滤波器)仿真该问题。 提供了Matlab源代码,代码中有注释和画图,非常详细。
2022-10-24 06:48:12 5KB 观测器 healthyqn thenmwe matlab观测器
1
matlab代码,该代码包括锂离子电池实验数据,对于没有实验数据的用户十分友好,实验数据里有SOC-OCV曲线,以及实验室测量的电流电压。本代码采用了两个卡尔曼滤波器来完成SOC的估计,并与单独的卡尔曼滤波做了对比。代码的中文注释比较详细,帮助读者理解以及进行二次开发。程序可以完美运行,需要注意的点是先将文件里的数据导入matlab的工作空间,如有问题可在该页面下方进行评论或者私信我。
采用二阶RC模型,需要代入自己的数据的地方: R0 = @(x)(-0.07495*(x(4))^4+0.2187*(x(4))^3-0.1729*(x(4))^2+0.01904*(x(4))+0.1973); R1 = @(x)(0.07826*(x(4))^4-0.2208*(x(4))^3+0.217*(x(4))^2-0.08761*(x(4))+0.01664); R2 = @(x)(0.1248*(x(4))^4-0.2545*(x(4))^3+0.1254*(x(4))^2-0.03868*(x(4))+0.05978); C1 = @(x)(2431*(x(4))^4-4606*(x(4))^3+3084*(x(4))^2-589*(x(4))+209.8); C2 = @(x)(681.1*(x(4))^4-3197*(x(4))^3+4595*(x(4))^2-3114*(x(4))+1444);