信息融合与状态估计 主要是针对多传感器多时滞(包括状态之后和观测滞后)系统,带相关噪声多传感器...
信息融合与状态估计 主要是针对多传感器多时滞包括状态之后和观测滞后系统带相关噪声多传感器多时滞系统的(SCI)融合估值器。 为了避免噪声相关带来的推导上的复杂性先将带相关噪声的系统转化为带不相关白噪声的系统然后再进行融合。多传感器系统像极了人类处理信息的方式——眼睛看路、耳朵听声、皮肤感知温度。但当这些感官存在时间差和数据干扰时问题就变得有意思了。想象你戴着VR眼镜玩节奏游戏手柄动作和画面显示存在0.1秒延迟这时候大脑会自动做状态估计工程师们处理传感器时滞也是类似道理。先解决噪声相关这个麻烦精。假设我们有两个传感器的噪声协方差矩阵import numpy as np Q np.array([[4, 1.2], [1.2, 1]])这玩意儿非对角线有值说明噪声相关。咱们用矩阵分解大法# 白化变换核心代码 L np.linalg.cholesky(Q) Q_whitened np.eye(2) # 对角阵达成 print(白化矩阵:\n, L.T)通过Cholesky分解得到白化矩阵相当于给系统噪声做了个正交化手术。这时候新系统的噪声就互不干扰了后续推导可以直接套用卡尔曼滤波的标准公式。信息融合与状态估计 主要是针对多传感器多时滞包括状态之后和观测滞后系统带相关噪声多传感器多时滞系统的(SCI)融合估值器。 为了避免噪声相关带来的推导上的复杂性先将带相关噪声的系统转化为带不相关白噪声的系统然后再进行融合。处理时滞更有意思最近在自动驾驶项目里就遇到过毫米波雷达和摄像头数据不同步的问题。来看个缓冲队列的土法子% 时滞补偿队列示例 delay_steps 3; % 最大滞后步数 buffer zeros(5, delay_steps1); % 状态维度5 function [corrected_data] delay_compensate(new_data) buffer [new_data, buffer(:,1:end-1)]; % 滑动窗口 corrected_data buffer(:, end); % 取延迟补偿后的数据 end这相当于给每个传感器配了个时光胶囊把当前数据和历史数据混合使用。实际工程中会根据时滞量做动态插值像极了视频播放器的缓冲机制。SCI融合的精华在于如何给不同传感器投票。上周调试无人机IMU时发现加速度计在剧烈震动时会抽风这时候就得动态调整权重# 协方差加权融合 sensor1_cov np.diag([0.1, 0.3]) sensor2_cov np.diag([0.4, 0.2]) weights [1/np.trace(sensor1_cov), 1/np.trace(sensor2_cov)] total_weight sum(weights) fusion_result (weights[0]*sensor1_data weights[1]*sensor2_data) / total_weight print(动态权重:, [w/total_weight for w in weights])这种活权重机制让系统在激光雷达失效时自动提高视觉导航的权重跟人类在雾天开车更依赖毫米波雷达是一个道理。有趣的是实际调试中发现权重指数取平方反而效果更好可能因为非线性系统需要更激进的权重分配。最后说个实战坑点处理多时滞系统时千万别直接拿现成的卡尔曼库硬套。曾经有个项目因为忽略观测滞后和状态滞后的叠加效应导致无人机在急转弯时姿态估计崩了。后来用双重时间戳标记法才解决——给每个数据包打上采集时间和到达时间两个标签像快递分拣一样处理时序问题。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2413890.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!