使用一个安装在轮子上的IMU进行同时定位和地形映射(Matlab代码实现) | 您所在的位置:网站首页 › 轮子定位 › 使用一个安装在轮子上的IMU进行同时定位和地形映射(Matlab代码实现) |
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭:行百里者,半于九十。 📋📋📋本文目录如下:🎁🎁🎁 目录 ⛳️赠与读者 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、文章 ⛳️赠与读者👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。 或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎 💥1 概述参考文献1: 摘要—对于移动机器人而言,一种能够在环境干扰下保持可靠的姿态估计器是非常理想的。为此,惯性测量单元(IMU)发挥着重要作用,因为它们可以独立地感知车辆的完整运动状态。然而,由于固有噪声和偏差不稳定性,特别是对于低成本传感器,它容易受到累积误差的影响。在我们先前关于Wheel-INS的研究中,我们提出通过将IMU安装在机器人车轮上,利用旋转调制来限制纯惯性导航系统(INS)的误差漂移。然而,由于缺乏外部校正信号,Wheel-INS仍然会随着时间的推移而漂移。在本文中,我们提出利用Wheel-INS的环境感知能力,仅通过一个IMU实现同时定位和地图构建(SLAM)。具体而言,我们使用路面倾斜角(由Wheel-INS估计的机器人横滚角镜像)作为地形特征,以便通过Rao-Blackwellized粒子滤波器实现环路闭合。路面倾斜角根据粒子维护的网格地图中的机器人位置进行采样和存储。根据当前估计的横滚序列和地形图之间的差异更新粒子的权重。现场实验表明,使用机器人横滚角估计在Wheel-INS中执行SLAM的想法是可行的。此外,定位精度相对于Wheel-INS有了显著提高(超过30%)。 关键词—SLAM,定位 摘要:为了提高轮式机器人惯性导航系统(INS)的准确性和稳健性,我们提出了Wheel-INS,这是一种基于安装在车轮上的微机电系统(MEMS)惯性测量单元(IMU)的完整的航位推算解决方案,而无需增加额外的组件成本。将IMU安装在地面车辆非转向车轮的中心具有两个主要优点。首先,陀螺仪输出可以用来计算车轮速度,从而替代传统的里程表,以减轻INS的误差漂移。其次,随着车轮的旋转,惯性传感器的恒定偏差误差可以在一定程度上被抵消。描述了车轮安装的IMU(Wheel-IMU)的安装方案、系统特性和航位推算误差分析。实验结果表明,Wheel-INS在水平平面上的最大位置漂移小于总行驶距离的1.8%,比传统的里程表辅助INS(ODO/INS)减少了23%。此外,由于对陀螺仪的恒定偏差误差具有固有的免疫性,Wheel-INS优于ODO/INS。 关键词:航位推算、车轮安装IMU、状态估计、轮式机器人、旋转调制。 📚2 运行结果部分代码: %function particles= resampleParticles(particles, Nmin, fp_debug, resample_randstream) function particles= resampleParticles(particles, Nmin) %, resample_randstream % % Resample particles if their weight variance is such that N-effective % is less than Nmin. % N = length(particles); w = [particles.w]; ws = sum(w); w = w/ws; Neff = 1 / sum(w .^ 2); if Neff < Nmin %fprintf(fp_debug, 'Particles resampled, Neff = %d\n', Neff); %disp(['Particles resampled, Neff = ', Neff]); %[keep] = stratified_resample(w, resample_randstream);%, resample_randstream [keep] = stratified_resample(w); %fprintf(fp_debug, 'Keep particles: '); particles = particles(keep); % for i=1:N % particles(i).w= 1/N; % fprintf(fp_debug, '%d ', keep(i)); % % end %fprintf(fp_debug, '\n'); %disp('Keep particles: ');disp(keep); else for i=1:N particles(i).w= particles(i).w / ws; end end 🎉3 参考文献文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。 🌈4 Matlab代码、数据、文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |