Extended Kalman Filter for 2D UAV Trajectory Prediction
一个学习项目,尝试复刻Keisuke Fujii《Extended Kalman Filter》论文中的EKF算法,用于二维平面UAV点目标轨迹预测仿真。
- ✅ 严格遵循论文数学公式,确保物理真实性
- ✅ 完整实现EKF预测-滤波-平滑流程 (Eq.2.9-2.35)
- ✅ 逆卡尔曼滤波支持站点排除 (Eq.2.36-2.38)
- ✅ 多种运动模型(恒速/匀加速/圆周)
- ✅ 单图输出可视化结果(12种图表)
- ✅ 命令行接口,支持参数化仿真
- ✅ 高性能:>1000步/秒处理速度
# 克隆项目
git clone https://github.com/Biubushy/ekf-tracker.git
cd ekf-tracker
# 使用uv安装依赖
uv sync# 基本仿真(100步,恒速运动)
uv run ekf-tracker simulate
# 自定义仿真参数
uv run ekf-tracker simulate --steps 200 --dt 0.1 --smooth
# 圆周运动轨迹
uv run ekf-tracker simulate --trajectory circular --steps 100 --smooth
# 指定噪声参数
uv run ekf-tracker simulate --process-noise 0.5 --measurement-noise 1.0
# 可复现结果
uv run ekf-tracker simulate --seed 42 --smooth
# 查看帮助
uv run ekf-tracker --helpekf_tracker/
├── core/ # EKF核心算法
│ ├── predictor.py # 预测步骤 (Eq.2.9, 2.13, 2.14)
│ ├── filter.py # 滤波步骤 (Eq.2.18, 2.21, 2.23)
│ ├── smoother.py # 平滑步骤 (Eq.2.34, 2.35)
│ └── inverse.py # 逆滤波 (Eq.2.36, 2.37)
├── models/ # 物理模型
├── simulation/ # 仿真逻辑
├── visualization/ # 可视化
└── cli.py # 命令行入口
tests/
├── unit/ # 公式验证测试
├── integration/ # 流程测试
└── validation/ # 统计验证
本项目严格复刻以下论文的EKF算法实现:
Fujii K. Extended Kalman Filter[J]. Reference Manual, 2013, 14: 41.
论文PDF已包含在项目中:paper/Extended Kalman Filter.pdf
| 模块 | 公式 | 说明 |
|---|---|---|
| 预测 | Eq.2.9, 2.13, 2.14 | 状态预测、协方差传播 |
| 滤波 | Eq.2.17, 2.18, 2.21, 2.23 | 卡尔曼增益、状态更新 |
| 平滑 | Eq.2.34, 2.35 | RTS平滑器 |
| 逆滤波 | Eq.2.36, 2.37, 2.38 | 站点排除 |
# 运行测试
uv run pytest
# 代码格式化
uv run ruff format ekf_tracker/
# 代码检查
uv run ruff check ekf_tracker/MIT License - 详见 LICENSE
Biubushy - @Biubushy
⭐ 如果这个项目对你有帮助,欢迎 Star!