当前位置: 首页 > news >正文

卡尔曼滤波数据融合

  • 状态向量:位置和速度 [x, y, vx, vy]

  • 预测阶段:用加速度估算速度和位置(IMU数据)

  • 更新阶段:用 GPS 位置修正漂移(每隔一定时间才来一次)

import numpy as np# 时间步长(秒)
dt = 0.1# 状态向量: [x, y, vx, vy]
x = np.array([[0], [0], [0], [0]])# 状态协方差矩阵
P = np.eye(4) * 1.0# 状态转移矩阵 F
F = np.array([[1, 0, dt, 0],[0, 1, 0, dt],[0, 0, 1,  0],[0, 0, 0,  1]
])# 控制输入矩阵 B(加速度影响速度和位置)
B = np.array([[0.5 * dt**2, 0],[0, 0.5 * dt**2],[dt, 0],[0, dt]
])# 观测矩阵 H(GPS 只能测位置)
H = np.array([[1, 0, 0, 0],[0, 1, 0, 0]
])# 过程噪声协方差 Q(IMU 不准)
Q = np.eye(4) * 0.2# 观测噪声协方差 R(GPS 有噪声)
R = np.eye(2) * 2.0# 单位矩阵 I
I = np.eye(4)# 模拟数据:IMU 每次有,GPS 每10次有
imu_acc = [0.1, 0.0]  # 恒定 x 方向加速度
for step in range(50):# === 1. 预测阶段 ===u = np.array([[imu_acc[0]], [imu_acc[1]]])  # IMU 加速度输入x = F @ x + B @ uP = F @ P @ F.T + Q# === 2. 更新阶段(GPS 每10步更新一次)===if step % 10 == 0:gps_pos = np.array([[x[0, 0] + np.random.normal(0, 1)],[x[1, 0] + np.random.normal(0, 1)]])  # 模拟GPS测量y = gps_pos - H @ xS = H @ P @ H.T + RK = P @ H.T @ np.linalg.inv(S)x = x + K @ yP = (I - K @ H) @ Pprint(f"Step {step:02d} -> Position: ({x[0,0]:.2f}, {x[1,0]:.2f})  Velocity: ({x[2,0]:.2f}, {x[3,0]:.2f})")

http://www.lryc.cn/news/597780.html

相关文章:

  • GaussDB null的用法
  • mac测试ollama llamaindex
  • c++--面向对象封装--实践
  • 【2025/07/23】GitHub 今日热门项目
  • git的使用,推送仓库github
  • 【数据结构】——时间与空间复杂度深度解析
  • 第一章:Go语言基础入门之Hello World与Go程序结构
  • 设置低秩适配器(LoRA)
  • 苍穹外卖DAY11
  • 【网安-小迪】Day5:反弹SHELL不回显带外正反向连接防火墙出入站文件下载
  • android studio打包vue
  • vue写的app设置角标
  • 智能小e-集成配置
  • vue3与ue5通信-工具类
  • 2025年电赛--电源题赛前押题
  • 【每日算法】专题十八_BFS 解决拓扑排序
  • 刷完jetpack后无法打开安装的浏览器的解决办法useful
  • SSM框架中关于Spring MVC的技术问题
  • C语言常见的预定符号常量
  • spring的value注解
  • 构建高性能推荐系统:MixerService架构解析与核心实现
  • 解决uniapp 使用uview生成小程序包太大无法上传的问题
  • 构件组装中的架构失配问题:分析与解决
  • 架构师--基于常见组件的微服务场景实战
  • 压测软件JMeter安装配置以及创建桌面快捷方式(详细图解)
  • 「iOS」——KVO
  • 通用表格识别技术的应用,深刻改变人们处理表格数据的方式
  • 基于MCP架构的LLM-Agent融合—构建AI Agent的技术体系与落地实践
  • MATLAB 2024b深度学习新特性全面解析与DeepSeek大模型集成开发技术
  • 【解决vmware ubuntu不小心删boot分区,进不去系统】