本工程是 Kalman-and-Bayesian-Filters-in-Python 一书中代码的整合和再组织,并借鉴了 EKF/UKF Toolbox for MATLAB 中的部分内容。
- 提供一套通俗易懂的入门教程
- 构建一个对入门者友好的滤波仿真工具箱
对于构建环境,有 3 个选项
对于选项 2 和 3,你需要在安装后运行以下命令
# 使用镜像
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes
# 安装包
conda install matplotlib pandas scipy sympy jupyterlab
然后,克隆本仓库
git clone https://github.com/ivaquero/blog-filters.git
最后,启动 jupyterlab
运行代码
cd [本仓库路径] && jupyter lab
- filters-ghk.ipynb: α-β-γ 滤波
- filters-bayes.ipynb: Bayes 统计基础
- filters-kf-basic.ipynb: Kalman 滤波基础
- filters-kf-design.ipynb: Kalman 滤波设计
- filters-kf-plus.ipynb: 非线性 Kalman 滤波
- filters-maneuver.ipynb: 机动目标跟踪
- filters-pf.ipynb: 粒子滤波
- filters-smoothers.ipynb: 平滑器
- filters-task-fusion.ipynb: 数据融合
- filters-task-tracking.ipynb: 目标跟踪
filters
:滤波相关模块bayes
:Bayes 统计fusion
:数据融合ghk
:α-β-γ 滤波ghq
:Gaussian-Hermite 数值积分imm
:交互多模型kalman_ckf
:CKFkalman_ekf
:EKFkalman_enkf
:EnKFkalman_fm
:衰减滤波kalman_hinf
:H∞ 滤波kalman_ukf
:UKFkalman
:线性 Kalman 滤波lsq
:最小二乘滤波particle
:粒子滤波resamplers
:采样器sigma_points
:Sigma 点smoothers
:平滑器solvers
:方程求解器(如 Runge-Kutta)stats
:统计指标helpers
:辅助工具
models
:模型模块const_acc
:匀加速模型const_vel
:匀速模型coord_ture
:协同转角模型singer
:Singer 模型noise
:模型噪声ssmodel*
:模型基类
plots
:绘图相关模块plot_common
:常用绘图(量测、轨迹、残差)plot_bayes
:Bayes 统计绘图plot_nonlinear
:非线性统计绘图plot_gh
:α-β-γ 滤波绘图plot_kf
:Kalman 滤波绘图plot_kf_plus
:非线性 Kalman 滤波绘图plot_pf
:粒子滤波绘图plot_sigmas
:Sigma 点绘图plot_adaptive
:自适应绘图plot_fusion
:数据融合绘图plot_smoother
:平滑器绘图
simulators
:仿真示例相关模块datagen
:常见数据生成linear
:线性运动模型maneuver
:机动模型radar
:地面雷达模型robot
:机器人模型trajectory
:抛体模型
cfg
:仿真实验配置接口clutter
:杂波模块tracker
:关联跟踪模块associate
:关联pda
:概率互联estimators
:状态估计track*
:跟踪
symbol
:符号推导模块datagen
:数据生成models
:运动模型