💥💥💞💞欢迎来到本博客❤️❤️💥💥
🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳️座右铭:行百里者,半于九十。
📋📋📋本文目录如下:🎁🎁🎁
目录
⛳️赠与读者
👨💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。
或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎
💥1 概述
IMU(惯性测量单元)数据均值滤波是一种常见的信号处理技术,用于平滑和去除噪音。IMU通常包含加速度计和陀螺仪,它们提供关于物体加速度和角速度的信息。这些传感器可能会受到各种干扰,包括振动、电磁干扰和传感器误差,因此需要对其进行滤波以提高数据的质量和准确性。
均值滤波是一种简单有效的滤波方法,其基本思想是取一段时间内数据的平均值作为输出,以减少噪音的影响。IMU数据的均值滤波可以通过以下步骤实现:
1. **数据采集**:首先,收集来自IMU的原始数据,包括加速度计和陀螺仪的读数。
2. **数据处理**:对于每个传感器,将一段时间内的数据进行累加,并记录时间窗口内的数据点数。
3. **计算均值**:在时间窗口结束时,将累加的数据除以数据点数,以计算加速度和角速度的平均值。
4. **输出结果**:将计算得到的平均值作为滤波后的结果输出。
均值滤波的优点包括简单易实现、计算效率高等,但也存在一些缺点,例如对快速变化的信号响应较慢,以及对异常值(如突然的运动或震动)的抑制效果不佳。因此,在应用中需要根据具体情况选择合适的滤波方法,并可能需要与其他滤波技术结合使用,以达到更好的效果。
Imu数据分析中常用均值滤波,均值滤波后的数据可以直观的看出,传感器的零偏稳定性、零偏和温度的关系、传感器数据和时间的关系。虽然得不到具体的数据指标,但是可以的感觉到传感器的好坏,传感器测试非常有必要。
📚2 运行结果
2.1 100Hz原始数据
2.2 1s均值数据
2.3 10s均值数据
部分代码:
time_original = 0:0.01:(length(gyro_original) - 1) * 0.01; %生成时间数据,间隔0.01s
time_mean_1s = 0:1:(length(gyro_mean_1s) - 1) * 1; %生成时间数据,间隔1s
time_mean_10s = 0:10:(length(gyro_mean_10s) - 1) * 10; %生成时间数据,间隔10s
figure('name', '原始数据'); %新建绘图窗口
subplot(2, 3, 1); %第一幅子图
plot(time_original, gyro_original(:, 1)); %绘图
title('陀螺 X轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_x(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 2); %第二幅子图
plot(time_original, gyro_original(:, 2)); %绘图
title('陀螺 Y轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_y(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 3); %第三幅子图
plot(time_original, gyro_original(:, 3)); %绘图
title('陀螺 Z轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_z(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 4); %第四幅子图
plot(time_original, acc_original(:, 1)); %绘图
title('加计 X轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_x(g)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 5); %第五幅子图
plot(time_original, acc_original(:, 2)); %绘图
title('加计 Y轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_y(g)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 6); %第六幅子图
plot(time_original, acc_original(:, 3)); %绘图
title('加计 Z轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_z(g)'); %添加y轴标签
grid on; %添加网格线
figure('name', '1s均值'); %新建绘图窗口
subplot(2, 3, 1); %第一幅子图
plot(time_mean_1s, gyro_mean_1s(:, 1)); %绘图
title('陀螺 X轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_x(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 2); %第二幅子图
plot(time_mean_1s, gyro_mean_1s(:, 2)); %绘图
title('陀螺 Y轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_y(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 3); %第三幅子图
plot(time_mean_1s, gyro_mean_1s(:, 3)); %绘图
title('陀螺 Z轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_z(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 4); %第四幅子图
plot(time_mean_1s, acc_mean_1s(:, 1)); %绘图
title('加计 X轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_x(g)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 5); %第五幅子图
plot(time_mean_1s, acc_mean_1s(:, 2)); %绘图
title('加计 Y轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_y(g)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 6); %第六幅子图
plot(time_mean_1s, acc_mean_1s(:, 3)); %绘图
title('加计 Z轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_z(g)'); %添加y轴标签
grid on; %添加网格线
figure('name', '10s均值'); %新建绘图窗口
subplot(2, 3, 1); %第一幅子图
plot(time_mean_10s, gyro_mean_10s(:, 1)); %绘图
title('陀螺 X轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_x(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 2); %第二幅子图
plot(time_mean_10s, gyro_mean_10s(:, 2)); %绘图
title('陀螺 Y轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_y(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 3); %第三幅子图
plot(time_mean_10s, gyro_mean_10s(:, 3)); %绘图
title('陀螺 Z轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('gyro_z(deg/s)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 4); %第四幅子图
plot(time_mean_10s, acc_mean_10s(:, 1)); %绘图
title('加计 X轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_x(g)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 5); %第五幅子图
plot(time_mean_10s, acc_mean_10s(:, 2)); %绘图
title('加计 Y轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_y(g)'); %添加y轴标签
grid on; %添加网格线
subplot(2, 3, 6); %第六幅子图
plot(time_mean_10s, acc_mean_10s(:, 3)); %绘图
title('加计 Z轴'); %添加标题
xlabel('time(sec)'); %添加x轴标签
ylabel('acc_z(g)'); %添加y轴标签
grid on; %添加网格线
🎉3 参考文献
文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。
[1]朱明红.基于低成本IMU的通用多传感器集成动态定位关键技术研究[D].哈尔滨工程大学,2020.
[2]阳兆哲,李跃忠,吴光文.基于无迹卡尔曼滤波和小波分析的IMU传感器去噪技术研究[J].现代电子技术, 2024(005):047.
[3]洪海斌.基于IMU/GPS/ZigBee的室内外无缝导航定位系统的方法研究[D].南昌大学,2015.