自瞄工程教程

引言

穷穷原理 洞悉本质

在 GitHub 编辑

与其称之为教程,这份文档更倾向于一种延续与传承:记录、讨论自瞄研发中的过程与经验,帮助初学者更快进入问题本身。文档配套仿真环境,用于模拟自瞄的运行条件,也用于独立发现、分析和解决问题。

转载说明:本文档由 3SE 算法组维护,包含仍在讨论和验证中的想法。页面公开仅用于学习交流;未经维护者许可,请勿整体转载、镜像或将其作为团队的正式结论传播。

为什么要写这份文档

现在的论坛、GitHub 与培训视频中,已经有许多高质量的开源自瞄项目和教学材料。它们展示了可复用的代码、清晰的工程结构,以及一条能够跑通的技术路径。

但“能跑通”并不等于“理解了”。真正困难的部分往往发生在调试与取舍之中:一个开源工程在新的相机、新的机械结构或新的运动状态下为什么失效;参数为何这样设置;某个补偿项究竟在补偿什么;面对异常现象时,应该怀疑检测、PnP、状态估计、火控,还是数据本身。

本教程希望把这些通常散落在调试记录与口头经验中的问题摆到台面上讨论。它不把某一种实现当作唯一答案,而是希望读者理解每个模块背后的假设、适用范围与代价。

以状态估计为例,许多自瞄工程使用扩展卡尔曼滤波器(EKF)。但更值得追问的是:

  • EKF 假设了什么,它适合处理怎样的观测与运动特征?
  • 为什么这里选择 EKF,而不是 KF、UKF 或粒子滤波?
  • PnP 解算输出的噪声、跳变和歧义,能否被现有状态模型充分描述?
  • 估计精度如何影响下游火控、弹道补偿和最终命中率?
  • 如果只得到大致运动趋势,下游优化是否仍可能得到足够高的命中效果?

这些问题未必都存在唯一结论。我们更希望读者能据此形成自己的判断,并通过可控仿真与实验验证判断是否成立。

本文希望做到的事

本文围绕自瞄的完整链路展开:感知、位姿解算、跟踪预测、火控决策与仿真验证。阅读完成后,读者应能够:

  • 理解一条自瞄链路中各模块的输入、输出与主要误差来源;
  • 看懂常见方案的选择理由,而不只复现一组固定参数;
  • 使用模拟器构造条件、复现实验,并验证自己的改进想法;
  • 对当前自瞄的局限与可继续探索的问题形成独立看法。

面向的读者与前置知识

本文面向正在学习或参与 RoboMaster 视觉 / 自瞄研发的读者。建议具备以下基础:

  • 一门可用于工程实现的语言,推荐 C++,Python 可用于分析与原型验证;
  • 基本的 Linux 命令、Git 与 CMake 使用经验;
  • 线性代数、相机成像、坐标变换与基础概率统计;
  • 能够阅读并运行一个 C++ 视觉工程。

不具备全部前置知识也可以开始阅读。遇到不熟悉的概念时,先沿着完整链路理解其位置和作用,再回过头补足理论,往往更有效。

本教程的范围

本教程讨论公开可引用的自瞄工程知识与可复现实验方法,覆盖感知、位姿、跟踪预测、火控和仿真验证。它引用公开 SDK、版本化 release 与可公开的实验材料;不包含模型权重、原始数据集、不可再生采集数据或研发仓库的私有实现。

如何阅读

如果你要从零搭建开发环境,请继续阅读环境与依赖。已有环境的读者可以直接进入后续“感知基础”章节,并在需要时回到本章的思考问题对照自己的实现。

On this page