本代码实现了二维环境下SLAM问题的EKF(扩展卡尔曼滤波)算法,并通过最小化均方误差优化了状态估计。适用于机器人自主导航研究。
在使用MATLAB进行EKF-2D-SLAM的过程中,在运动更新阶段固定点坐标不变的情况下,只需要根据运动方程来更新位置(x, y)、方向角(α)及其协方差与互协方差即可。
当观测到已有的固定点时,依次对这些特征点信息执行扩展卡尔曼滤波(EKF)的更新步骤。若在这一过程中发现新的未被观测过的固定点,则需要进行状态增广。通过逆观测方程和新获取的测量数据来推断新增加的状态变量及其协方差,并将它们合并到系统的整体状态向量与协方差矩阵中。
整个SLAM算法的核心代码位于名为slam.m的主文件内,直接运行该脚本即可执行完整的实验流程。关于此项目的详细说明和理论依据可以在项目文档夹中的PDF文件里找到;需要注意的是,这些公式可能存在一些笔误或排版错误,请参考最新的更新版本以获取最准确的内容。
此外,在传感器探测范围内路标点首次被添加到系统状态时会触发一次初始的状态增广过程。随着更多数据的积累和处理,这种增广操作将会持续进行直到所有可能的新固定点都被加入进来为止。在2020年2月21日之后的一次更新中,我们还增加了轨迹显示功能以帮助更好地理解算法运行情况,并对原有代码进行了重构优化。