2019-05-16

基于无迹卡尔曼滤波的SLAM算法

目的:

求解SLAM问题时一般将移动机器人的位姿状态和环境地图中的路标位置组合成联合的系统状态向量,并利用SLAM算法对联合系统状态向量作最小均方误差估计,并把移动机器人在移动过程中新观测到的路标向量加入到联合状态向量,以此来逐步构建环境地图并同时更新机器人在环境中的位置。本文要研究的问题是通过采用无迹卡尔曼滤波算法来提高SLAM定位估计的精度。

SLAM问题的UKF实现:

在matlab上实现SLAM仿真,在一张自定义地图中放置多个路标点,设置小车的速度以及传感器能够检测的范围,求出系统非线性状态方程和非线性观测方程。初始化,根据K时刻状态估计值 和协方差矩阵对n维状态向量采样获得2n+1个Sigma点。]时间预测,通过非线性模型对Sigma点的状态进行预测,利用这些Sigma点集的状态值加权求和得到均值和协方差预测值。可用和分别表示Sigma点的均值和协方差对应的权值。

观测更新,通过非线性的观测方程对观测量的均值和协方差进行预测,通过加权求和得到。     

状态更新,利用K+1时刻获得的观测值对状态变量进行更新,定义新息,滤波增益矩阵,更新状态和协方差。

目前进展:

在相同的地图下,分别对EKF-SLAM和UKF-SLAM仿真作了比较,由于计算量较大的原因会导致计算机运行速度变慢,所以每隔500个计数点取一次数据求取误差均值,并求取34个点,并计算两种算法的所用时间。结果证明,UKF的误差均值只有1.815m,EKF的误差均值有3.548m,UKF算法明显优于EKF算法,运行时间UKF用了182秒,而EKF用了212秒,运行时间也明显减短了。

总结:

因为相对于扩展卡尔曼算法,无迹卡尔曼算法不需要对非线性系统的线性化过程忽略高阶项,也不需要获得Jacobian矩阵,采用UT变化能提高定位的精度。实验结果无迹卡尔曼算法计算速度和定位平均误差都会减小。所以可以针对于UKF的基础上改进算法来进一步提高定位的精度。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 运动不仅能让人保持身体健康,给人带来快乐,还可以提高认知能力,它能增强记忆力、提高反应速度,还能缓解抑郁症状。科学...
    寻世良方Cc_Sandy拎0阅读 219评论 0 1
  • 特征整理: 体积较大,位于右中侧,左侧朝向,身体有倾斜,头发有轮廓描绘,五官均有细致描绘,无脖子,双肩有斜度,领口...
    弘羽丰阅读 181评论 1 1
  • sql查询语句 select distinct *|字段|表达式 as 别名 from 表 表别名 SELECT...
    卢布朗阁楼的Mona阅读 316评论 0 0
  • 不知不觉 又一周过去了 易效能的90天计划很快就要接近尾声了。 在上一周的项目学习中,我为我的项目设定了每天打卡需...
    e9b6eca5c0ee阅读 214评论 0 1
  • 作为运营人员,咱们每做一件事情都必须复盘,做的好的地方得挖掘,做的不足之处得推演分析,人不能被坎儿重复绊倒2次。 ...
    运营杂说阅读 502评论 0 0

友情链接更多精彩内容