这是一个用于学习卡尔曼滤波器的交互式教程项目,通过实现二维装甲板跟踪系统来帮助理解卡尔曼滤波的原理和应用。仓库内包含教程PDF文档和以RoboMaster比赛中自瞄系统为背景的代码填空练习。
- 📚 交互式学习:通过 Jupyter Notebook 提供逐步指导
- 🎯 实战应用:基于真实的装甲板检测数据进行跟踪
- 📊 可视化展示:实时显示跟踪结果、预测轨迹和误差
- 🔧 填空式教学:通过完成 TODO 项目深入理解算法原理
Kalman-Filter-Tutorial/
├── kalman_filter_tutorial.ipynb # 完整版教程(含答案)
├── kalman_filter_tutorial-todo.ipynb # 练习版教程(待填空)
├── kalman_armor_tracker.py # Python 脚本版本
├── data/ # 数据目录
│ ├── corners_shuffle.txt # 随机移动轨迹数据
│ ├── corners_uniform.txt # 匀速移动轨迹数据
│ ├── video_shuffle.mp4 # 随机移动视频
│ └── video_uniform.mp4 # 匀速移动视频
├── scripts/ # 辅助脚本
│ └── draw_corners_on_video.py # 视频可视化脚本
└── README.md # 项目说明文档
- 状态向量:[x, y, vx, vy] - 包含位置和速度
- 运动模型:恒定速度模型(CV Model)
- 可调参数:
- 位置过程噪声(POSITION_PROCESS_NOISE)
- 速度过程噪声(VELOCITY_PROCESS_NOISE)
- 观测噪声(MEASUREMENT_NOISE)
- 初始不确定性(INITIAL_UNCERTAINTY)
- 实时跟踪:基于视频帧的装甲板实时跟踪
- 未来预测:预测指定时间后的目标位置
- 误差计算:对比预测位置与真实位置,计算预测误差
- 轨迹可视化:显示历史轨迹、当前跟踪位置和预测位置
- Python 3.7+
pip install numpy opencv-python jupyter-
导入库和配置:配置项目所需的依赖和参数
-
卡尔曼滤波器类:实现核心算法
- 状态转移矩阵 A
- 观测矩阵 H
- 过程噪声矩阵 Q
- 观测噪声矩阵 R
- 预测(Predict)步骤
- 更新(Update)步骤
-
数据解析:读取装甲板检测数据
-
跟踪逻辑:实现完整的跟踪流程
- 绿色:当前帧检测结果
- 蓝色:历史跟踪轨迹
- 紫红色:当前跟踪位置
- 红色:预测未来位置
- 黄色:未来真实位置(Ground Truth)
Singer 模型:学习如何跟踪高机动性目标
frame_id armor_idx color number conf conf_class x1 y1 x2 y2 x3 y3 x4 y4
0 0 1 5 0.95 0.98 100.0 200.0 150.0 200.0 150.0 250.0 100.0 250.0
...
字段说明:
frame_id:帧编号armor_idx:装甲板索引color:颜色标识number:数字标识conf:置信度conf_class:分类置信度x1-y4:四个角点坐标
-
位置过程噪声(POSITION_PROCESS_NOISE = 1.0)
- 增大:对模型预测信任度降低,更依赖观测
- 减小:对模型预测信任度增加,平滑效果更强
-
速度过程噪声(VELOCITY_PROCESS_NOISE = 10.0)
- 增大:允许速度有更大变化,适应性更强
- 减小:速度变化更平稳,适合匀速运动
-
观测噪声(MEASUREMENT_NOISE = 10.0)
- 增大:对观测数据信任度降低,滤波效果更强
- 减小:对观测数据信任度增加,跟随性更好
- 匀速运动:减小速度过程噪声,增大观测噪声
- 随机运动:增大速度过程噪声,适当减小观测噪声
- 观测噪声大:增大观测噪声参数,提高滤波效果
A: 请检查视频文件路径是否正确,确保 OpenCV 支持该视频格式。
A: 尝试调整噪声参数,特别是速度过程噪声和观测噪声的比例。
A: 可能是初始化问题或噪声参数不合适,尝试:
- 检查初始不确定性设置
- 调整过程噪声和观测噪声的平衡
- 确保数据质量良好
A: 按照角点文件格式准备数据,确保包含帧编号和四个角点坐标。
- ✅ 完成基础教程,理解卡尔曼滤波的预测-更新循环
- ✅ 实验不同的噪声参数,观察对跟踪效果的影响
- ✅ 尝试在 shuffle 和 uniform 两种数据上的表现差异
- ✅ (进阶)实现 Singer 模型,处理高机动性目标
- ✅ (扩展)将算法应用到自己的项目中
- 卡尔曼滤波器理论
- Singer 模型论文
- OpenCV 官方文档
- NumPy 官方文档
祝学习愉快!🎉