✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。

🍎 往期回顾关注个人主页:Matlab科研工作室

 👇 关注我领取海量matlab电子书和数学建模资料 

🍊个人信条:格物致知,完整Matlab代码获取及仿真咨询内容私信。

🔥 内容介绍

一、引言

同步定位与地图构建(SLAM)是机器人领域的核心问题之一,旨在让机器人在未知环境中同时构建地图并确定自身位置。扩展卡尔曼滤波(EKF)作为 SLAM 中常用的算法,通过对非线性系统进行线性化近似来估计状态。然而,传统的标准扩展卡尔曼滤波(Standard EKF)在处理复杂环境和非线性问题时存在一些局限性。基于可观测性的扩展卡尔曼滤波为提升滤波性能提供了新的思路,其中包括一些改进的滤波算法,如 Ideal EKF、FEJ - EKF、OC - EKF 等。本文将通过仿真对比这四种滤波算法在 SLAM 中的性能。

二、SLAM 与扩展卡尔曼滤波基础

  1. SLAM 概述:SLAM 问题涉及机器人在移动过程中,利用自身携带的传感器(如激光雷达、摄像头等)获取环境信息,不断更新地图的同时确定自身在地图中的位置。这是一个典型的递归估计问题,随着机器人的移动和新数据的获取,需要实时调整对自身位置和地图特征的估计。

  2. 扩展卡尔曼滤波原理:EKF 用于处理非线性系统的状态估计。对于非线性系统 xk=f(xk−1,uk−1)+wk−1 和 zk=h(xk)+vk,其中 xk 是状态向量,uk 是控制输入,zk 是观测值,wk 和 vk 分别是过程噪声和观测噪声。EKF 通过对非线性函数 f 和 h 进行一阶泰勒展开线性化,将非线性问题近似为线性问题,然后利用卡尔曼滤波的框架进行状态估计。具体步骤包括预测和更新,预测阶段根据上一时刻的状态估计和控制输入预测当前时刻的状态,更新阶段利用当前的观测值对预测状态进行修正。

三、四种滤波算法介绍

  1. Ideal EKF(理想扩展卡尔曼滤波):Ideal EKF 假设系统模型和观测模型完全准确,噪声统计特性也完全已知。在这种理想情况下,EKF 能够达到理论上的最优估计性能。然而,在实际应用中,这种理想条件很难满足,但它为其他滤波算法的性能评估提供了一个理论上限。

  2. Standard EKF(标准扩展卡尔曼滤波):这是最常见的扩展卡尔曼滤波实现方式。它按照标准的 EKF 步骤,对非线性函数进行线性化处理,但由于实际系统中存在模型误差、噪声不确定性等因素,线性化近似可能导致估计误差的累积,从而影响滤波性能。特别是在系统非线性较强时,标准 EKF 的估计精度会受到较大影响。

  3. FEJ - EKF(First - Estimate - Jacobian EKF,首估计雅可比扩展卡尔曼滤波):FEJ - EKF 在计算雅可比矩阵时,使用上一时刻的状态估计值来线性化非线性函数。这种方法在一定程度上简化了计算,但也可能引入误差,因为上一时刻的估计值本身可能存在偏差。然而,它在一些实时性要求较高的场景中,由于计算量相对较小,具有一定的应用价值。

  4. OC - EKF(Observability - Consensus EKF,基于可观测性一致性的扩展卡尔曼滤波):OC - EKF 考虑了系统的可观测性,通过分析系统状态的可观测性条件,对滤波过程进行优化。它利用可观测性矩阵来调整状态估计的权重,使得估计更集中在可观测性较好的状态变量上,从而提高整体的估计精度。在复杂环境中,OC - EKF 能够更好地应对部分状态不可观测或观测噪声较大的情况,提升滤波性能。

四、仿真设置与性能指标

  1. 仿真环境构建:在仿真中,构建一个具有代表性的二维环境,包含各种形状的障碍物。机器人在该环境中按照设定的轨迹移动,同时使用模拟的传感器(如激光雷达)获取环境信息。传感器模型考虑噪声和测量误差,以模拟真实场景中的不确定性。

  2. 算法实现与参数设置:分别实现 Ideal EKF、Standard EKF、FEJ - EKF 和 OC - EKF 算法,并对它们的参数进行合理设置。例如,设置相同的初始状态估计、噪声协方差等参数,以保证在相同的初始条件下进行性能对比。

  3. 性能指标定义:

    • 位置估计误差:计算机器人估计位置与真实位置之间的欧氏距离,作为衡量位置估计精度的指标。位置估计误差越小,说明滤波算法对机器人位置的估计越准确。

    • 地图构建误差:通过比较构建的地图与真实地图中特征点的位置偏差来评估地图构建的准确性。地图构建误差反映了滤波算法在同时估计环境特征方面的性能。

    • 估计方差:分析状态估计的方差,评估滤波算法对估计不确定性的处理能力。较小的估计方差表示算法的估计结果更加稳定可靠。

五、仿真结果与分析

  1. 位置估计误差对比:仿真结果表明,Ideal EKF 的位置估计误差最小,因为它基于理想条件假设。在实际场景下,OC - EKF 的位置估计误差明显小于 Standard EKF 和 FEJ - EKF。这是因为 OC - EKF 利用可观测性优化了估计过程,能够更准确地跟踪机器人的位置。Standard EKF 由于线性化误差的累积,位置估计误差随着时间逐渐增大。FEJ - EKF 虽然计算相对简单,但由于使用上一时刻估计值线性化,也导致其位置估计误差较大。

  2. 地图构建误差对比:在地图构建误差方面,OC - EKF 同样表现出色。它能够更准确地估计环境特征的位置,构建出与真实地图更接近的地图。Standard EKF 和 FEJ - EKF 构建的地图误差较大,特别是在环境特征复杂、非线性程度高的区域。这说明 OC - EKF 在处理地图构建中的不确定性方面具有优势,能够有效减少地图构建误差的累积。

  3. 估计方差对比:OC - EKF 的估计方差相对较小,表明它能够更合理地估计状态的不确定性,为机器人的决策提供更可靠的信息。Standard EKF 和 FEJ - EKF 的估计方差较大,反映出它们在处理不确定性方面的不足,可能导致估计结果的可靠性降低。

六、结论

通过基于可观测性的扩展卡尔曼滤波在 SLAM 仿真中对 Ideal EKF、Standard EKF、FEJ - EKF 和 OC - EKF 四种滤波算法的性能对比,我们发现 OC - EKF 在处理实际场景中的不确定性和非线性问题方面具有显著优势。尽管 Ideal EKF 在理想条件下性能最优,但实际中难以实现。相比之下,OC - EKF 通过考虑系统的可观测性,能够在位置估计、地图构建以及估计方差等方面取得较好的性能,为 SLAM 系统在复杂环境中的应用提供了更可靠的滤波算法选择。未来的研究可以进一步探索如何结合其他先进技术,如深度学习,进一步提升 OC - EKF 在更复杂和动态环境中的性能。

⛳️ 运行结果

📣 部分代码

% propagate state

xe(1:3,1) = [ xe(1) + v_m*dt*cos(xe(3,1));

    xe(2) + v_m*dt*sin(xe(3,1));

    pi_to_pi(xe(3) + omega_m*dt) ];

% compute lagrangian multiplier: lambda

observed_land_id = [];

lenz = length(find(z(3,:)>0));

for i= 1:lenz

    %data association (based on landmark id)

    is_exist = ~(lm_seq - z(3,i));

    idx = find(is_exist);

    if ~isempty(idx)

        observed_land_id = [observed_land_id;idx];

    end

end

nland = length(observed_land_id);

if nland>0

    A = kron(ones(nland)+eye(nland), eye(2));

    for i=1:nland

        ii = 2*i+(-1:0);

        idx = observed_land_id(i);

        fpos = 3+idx*2-1;

        lpos = idx*2-1;

        b(ii,1) = 2*( (xe(fpos:fpos+1,1)-xL_1(lpos:lpos+1,1)) - (xR_k_k(1:2,1)-xR_k_k1(1:2,1)-dpR_star_prev) );

    end

    lambda = A\b;

    lambda = reshape(lambda, 2,nland);

        

    % linearization point for pR

    pR_star = xR_k_k(1:2,1) + sum(lambda,2)/2;

else

    lambda = 0;

    pR_star = xR_k_k(1:2,1);

end

PHI_R = [ eye(2)   J*(xe(1:2,1)-pR_star);  

    zeros(1,2)  1 ];

G_R = [dt*cos(xR_k_k(3,1))   0;

    dt*sin(xR_k_k(3,1))   0;

    0     dt];

% odometry noise cov

Q = [sigma_v^2  0;   0    sigma_w^2];

Qprime = G_R*Q*G_R';

% propagate covariance

Pe(1:3,1:3) = PHI_R*Pe(1:3,1:3)*PHI_R' + Qprime;

if size(Pe,1)>3

    Pe(1:3,4:end) = PHI_R*Pe(1:3,4:end);

    Pe(4:end,1:3) = Pe(1:3,4:end)';

end

Pe = 0.5*(Pe+Pe');

% %

PHI = blkdiag(PHI_R,eye(size(xe,1)-3));

G = [G_R; zeros(size(xe,1)-3,2)];

% % % PHI_mult=PHI_R(k+m-1)*...*PHI_R(k+1)*PHI_R(k), used in computing nullspace of H

PHI_mult = PHI_R*PHI_mult;

%%%%%

dpR_star_prev = dpR_star_prev + xR_k_k1(1:2,1)-pR_star ;

pR_star_prev = pR_star;

xR_k_k1 = xe(1:3,1);

🔗 参考文献

图片

🎈 部分理论引用网络文献,若有侵权联系博主删除

🏆团队擅长辅导定制多种毕业课题科研领域

MATLAB仿真,助力毕业科研梦:

🌈 各类智能优化算法改进及应用
生产调度、经济调度、装配线调度、充电优化、车间调度、发车优化、水库调度、三维装箱、物流选址、货位优化、公交排班优化、充电桩布局优化、车间布局优化、集装箱船配载优化、水泵组合优化、解医疗资源分配优化、设施布局优化、可视域基站和无人机选址优化、背包问题、 风电场布局、时隙分配优化、 最佳分布式发电单元分配、多阶段管道维修、 工厂-中心-需求点三级选址问题、 应急生活物质配送中心选址、 基站选址、 道路灯柱布置、 枢纽节点部署、 输电线路台风监测装置、 集装箱调度、 机组优化、 投资优化组合、云服务器组合优化、 天线线性阵列分布优化、CVRP问题、VRPPD问题、多中心VRP问题、多层网络的VRP问题、多中心多车型的VRP问题、 动态VRP问题、双层车辆路径规划(2E-VRP)、充电车辆路径规划(EVRP)、油电混合车辆路径规划、混合流水车间问题、 订单拆分调度问题、 公交车的调度排班优化问题、航班摆渡车辆调度问题、选址路径规划问题、港口调度、港口岸桥调度、停机位分配、机场航班调度、泄漏源定位
🌈 机器学习和深度学习时序、回归、分类、聚类和降维

2.1 bp时序、回归预测和分类

2.2 ENS声神经网络时序、回归预测和分类

2.3 SVM/CNN-SVM/LSSVM/RVM支持向量机系列时序、回归预测和分类

2.4 CNN|TCN|GCN卷积神经网络系列时序、回归预测和分类

2.5 ELM/KELM/RELM/DELM极限学习机系列时序、回归预测和分类
2.6 GRU/Bi-GRU/CNN-GRU/CNN-BiGRU门控神经网络时序、回归预测和分类

2.7 ELMAN递归神经网络时序、回归\预测和分类

2.8 LSTM/BiLSTM/CNN-LSTM/CNN-BiLSTM/长短记忆神经网络系列时序、回归预测和分类

2.9 RBF径向基神经网络时序、回归预测和分类

2.10 DBN深度置信网络时序、回归预测和分类
2.11 FNN模糊神经网络时序、回归预测
2.12 RF随机森林时序、回归预测和分类
2.13 BLS宽度学习时序、回归预测和分类
2.14 PNN脉冲神经网络分类
2.15 模糊小波神经网络预测和分类
2.16 时序、回归预测和分类
2.17 时序、回归预测预测和分类
2.18 XGBOOST集成学习时序、回归预测预测和分类
2.19 Transform各类组合时序、回归预测预测和分类
方向涵盖风电预测、光伏预测、电池寿命预测、辐射源识别、交通流预测、负荷预测、股价预测、PM2.5浓度预测、电池健康状态预测、用电量预测、水体光学参数反演、NLOS信号识别、地铁停车精准预测、变压器故障诊断
🌈图像处理方面
图像识别、图像分割、图像检测、图像隐藏、图像配准、图像拼接、图像融合、图像增强、图像压缩感知
🌈 路径规划方面
旅行商问题(TSP)、车辆路径问题(VRP、MVRP、CVRP、VRPTW等)、无人机三维路径规划、无人机协同、无人机编队、机器人路径规划、栅格地图路径规划、多式联运运输问题、 充电车辆路径规划(EVRP)、 双层车辆路径规划(2E-VRP)、 油电混合车辆路径规划、 船舶航迹规划、 全路径规划规划、 仓储巡逻
🌈 无人机应用方面
无人机路径规划、无人机控制、无人机编队、无人机协同、无人机任务分配、无人机安全通信轨迹在线优化、车辆协同无人机路径规划
🌈 通信方面
传感器部署优化、通信协议优化、路由优化、目标定位优化、Dv-Hop定位优化、Leach协议优化、WSN覆盖优化、组播优化、RSSI定位优化、水声通信、通信上传下载分配
🌈 信号处理方面
信号识别、信号加密、信号去噪、信号增强、雷达信号处理、信号水印嵌入提取、肌电信号、脑电信号、信号配时优化、心电信号、DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测
🌈电力系统方面
微电网优化、无功优化、配电网重构、储能配置、有序充电、MPPT优化、家庭用电
🌈 元胞自动机方面
交通流 人群疏散 病毒扩散 晶体生长 金属腐蚀
🌈 雷达方面
卡尔曼滤波跟踪、航迹关联、航迹融合、SOC估计、阵列优化、NLOS识别
🌈 车间调度
零等待流水车间调度问题NWFSP 、 置换流水车间调度问题PFSP、 混合流水车间调度问题HFSP 、零空闲流水车间调度问题NIFSP、分布式置换流水车间调度问题 DPFSP、阻塞流水车间调度问题BFSP

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐