卡尔曼滤波实战:Python 手写 5 个关键步骤,让抖动轨迹变平滑 卡尔曼滤波实战Python 手写 5 个关键步骤让抖动轨迹变平滑【免费下载链接】Kalman-and-Bayesian-Filters-in-PythonKalman Filter book using Jupyter Notebook. Focuses on building intuition and experience, not formal proofs. Includes Kalman filters,extended Kalman filters, unscented Kalman filters, particle filters, and more. All exercises include solutions.项目地址: https://gitcode.com/gh_mirrors/ka/Kalman-and-Bayesian-Filters-in-Python开源项目 Kalman and Bayesian Filters in Python 把卡尔曼滤波写成了一本人能动手的 Notebook 教材从一维平滑到雷达跟踪每个例子改一个参数就能看到曲线立刻变化。传感器读数忽高忽低、轨迹在图上跳成锯齿的时候加一层滤波比换更贵的硬件划算得多。这篇文章就讲工程上最容易翻车的几件事——参数怎么定、残差怎么读、发散了怎么救。要在本地跑全部例子clone 仓库https://gitcode.com/gh_mirrors/ka/Kalman-and-Bayesian-Filters-in-Python再执行pip install filterpy安装细节见 Appendix-A-Installation.ipynb。传感器读数为什么跳变先接受每次读数都不可全信同一个路口车载 GPS 每过一次报出的高度都不一样同一块砝码厨房秤两次读数也对不上。静态测量还能靠多次取平均救回来可追踪移动物体时你等不起。为什么不能像静态场景那样多平均几次因为目标每时每刻都在动——无人机、车辆、目标都在位移你需要的是模型预测 最新测量实时融合的估计。这正是卡尔曼滤波做的事每一步输出一个最优估计外加这个估计的置信度。卡尔曼滤波参数怎么定Q 和 R 的确定方法参数没定对后面的代码写得再漂亮也白搭所以先讲它。一维版本每步只做三件事K P / (P R) # 卡尔曼增益这一步听测量多少 x x K * (z - x) # 用残差修正估计 P (1 - K) * P # 修正后置信度提高K 本质是信任度测量噪声 R 大K 就小估计更信自己的预测R 小估计就被测量拖着走。P 是当前不确定度它越小新测量带来的修正就越轻。R 的定法查传感器手册的精度指标或让传感器对着静止目标重复采样取标准差的平方。Q 的定法描述目标自己会动多少。机动性强就放大接近匀速就压小。典型坑Q 和 R 同时给小滤波器又倔又僵目标真机动时滞后明显Q 给大输出看着平滑了抖动只是被平均掉了误差没变小。预测与更新每步只做猜一遍、修一遍参数定好后滤波器就是一个循环。想象你在找人先按他的速度和方向猜下一秒他在哪预测GPS 点到了之后把猜测朝那个点挪一小步更新——挪多少就是上一节的 K。底下的表示是高斯分布均值是最优猜测方差是把握。预测把分布往前推并加宽不确定度多了 Q 这一部分更新把预测分布和测量分布相乘结果的方差比两者都小——滤波降噪的本事就来自这一步。状态扩展后 H 矩阵怎么写位置-速度联合估计实际跟踪一般不只要位置还要速度状态向量写成 x [位置, 速度]^T。预测改由矩阵 F 驱动位置按速度推进速度暂不变但测量只读得到位置从状态空间到测量空间需要一个映射这就是 H 矩阵例如 H [1, 0]。y z - H x_pred # 残差在测量空间里算差距只估一个量时 H 就是数字 1写了等于没写状态一旦扩展H 是第一个要写对的矩阵。如果测量函数本身非线性——典型如雷达测距 r sqrt(x² y²)——就围绕当前估计做一阶泰勒展开、配上雅可比矩阵这就是扩展卡尔曼滤波EKF完整例子在 11-Extended-Kalman-Filters.ipynb。残差怎么读滤波器诊断的第一张图怎么判断滤波器是不是已经跑飞了别盯估计值先看残差 y模型和参数都正常时残差应当是零均值、方差平稳的纯噪声。把残差序列画出来病征基本都会现形系统性偏移测量有偏如 GPS 漂移或模型漏了某种运动分量方差突增目标在机动或传感器退化Q 该放大了长期超出理论界R 或 Q 至少有一个定错了。画图用的函数在 kf_book/book_plots.py 的show_residual_chart里14-Adaptive-Filtering.ipynb 进一步用残差的统计量在线调整 Q值得对照着读。卡尔曼滤波发散了怎么办四步排错清单发散的特征很反直觉估计越错越远协方差却越缩越小——滤波器自信地错。⚠️ 按出现频率排一遍R 太小每个坏测量点都被当成金标准一个野点带偏全程。先回数据手册和离线复测核对 R模型不匹配状态模型里没有加速度项目标却在加速。补状态或临时放大 Q数值问题长时间运行后 P 失去对称性换数值稳定实现Joseph 形式filterpy 已内置初值离谱x0、P0 给得不合理滤波器短时间拉不回来在可信场景重新初始化。排查顺序就一句话先画残差定位出问题开始的时间窗口再照上表逐项过。动手实验改一个参数立刻看结果这本书最大的价值是反馈快建议你挑三个实验做一遍打开 04-One-Dimensional-Kalman-Filters.ipynb把 R 减半看单个坏测量把输出拖偏多少打开 06-Multivariate-Kalman-Filters.ipynb看速度估计从零初值到收敛的全过程打开 05-Multivariate-Gaussians.ipynb盯着协方差椭圆随步数收缩。做完这三组再去看 10-Unscented-Kalman-Filter.ipynbUKF 用 sigma 点代替雅可比非线性更强的场景会更顺手。【免费下载链接】Kalman-and-Bayesian-Filters-in-PythonKalman Filter book using Jupyter Notebook. Focuses on building intuition and experience, not formal proofs. Includes Kalman filters,extended Kalman filters, unscented Kalman filters, particle filters, and more. All exercises include solutions.项目地址: https://gitcode.com/gh_mirrors/ka/Kalman-and-Bayesian-Filters-in-Python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考