Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .github/workflows/build-pdf.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Build handbook PDF

on:
pull_request:
paths:
- "book/**"
- "Makefile"
- ".github/workflows/build-pdf.yml"
push:
branches:
- main
- "refactor/**"
paths:
- "book/**"
- "Makefile"
- ".github/workflows/build-pdf.yml"

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Compile with XeLaTeX
uses: xu-cheng/latex-action@v3
with:
root_file: main.tex
working_directory: book
latexmk_use_xelatex: true
args: -interaction=nonstopmode -halt-on-error -file-line-error

- name: Upload PDF
uses: actions/upload-artifact@v4
with:
name: robomaster-algorithm-handbook
path: book/main.pdf
15 changes: 15 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
book/build/
book/*.aux
book/*.bbl
book/*.bcf
book/*.blg
book/*.fdb_latexmk
book/*.fls
book/*.log
book/*.out
book/*.run.xml
book/*.toc
book/*.xdv
output/
tmp/

51 changes: 51 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# 协作与写作规范

## 章节契约

每章至少包含以下元素:

1. 学习目标;
2. 前置知识与输入/输出变量;
3. 概念提出的动机,而非只给名词和结论;
4. 关键公式、符号定义、适用条件与失效情形;
5. 一个可复现实验或工程检查项;
6. 与下一章的承接段落;
7. 可核验的一手资料或权威教材引用。

## 内容取舍

- 不按年代罗列算法,也不追求覆盖所有模型。
- 一个方法进入核心正文,必须回答:它解决什么变量关系、后续章节是否依赖、RoboMaster 工程中何时使用、失败边界是什么。
- 过时但有历史或教学价值的内容放入“历史注”或附录,不占据主线。
- 赛季规则必须标注赛季、版本号和发布日期;规则变化时,案例与通用原理分开修改。

## 公式与术语

- 符号首次出现时定义维度、坐标系、单位和时间索引。
- 随机变量、观测值、估计值和控制目标使用一致记号。
- 区分图像滤波、状态估计器、闭环控制器和轨迹优化器,不用“滤波”概括一切平滑操作。
- 每个近似都说明来源,例如小角度、局部线性化、高斯噪声、静态场景或同步量测。

## 代码与实验

- 示例应尽量短小,但必须可构建、可测试、可复现。
- 记录依赖版本、随机种子、数据来源、运行命令和预期输出。
- 性能结论同时报告精度、延迟、吞吐、内存/显存和硬件平台。
- 不提交训练权重、超大数据或无来源图片;使用下载脚本或发布附件。

## AI 与 agent coding

AI 工具可以用于检索候选资料、生成脚手架、重构代码、补充测试和语言润色,但不能替代以下责任:

- 作者必须打开并核对实际来源,禁止引用不存在的论文、规则或 API;
- 对代码改动先检查仓库,再给出范围明确的计划,最后执行构建与测试;
- 对数学推导逐步检查定义、等式变换与假设,不以模型输出作为证明;
- 对赛季策略区分官方事实、工程经验和待验证假设;
- PR 中说明 AI 参与了哪些环节,以及人工执行了哪些验证。

推荐工作循环:

```text
问题定义 → 上下文检索 → 变更计划 → 小步修改 → 自动验证 → 人工审查 → 记录证据
```

91 changes: 91 additions & 0 deletions MIGRATION_PLAN.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# LaTeX 重构与内容迁移计划

## 1. 迁移边界

本次重构不是把 8,650 行 Markdown 逐字转成 TeX。旧稿同时混合了赛事介绍、软件安装、硬件选型、模型综述、算法推导、代码片段和个人经验;若机械转换,只会把原有的结构问题搬到 PDF 中。

第一阶段采用“双轨制” :

- `main` 上的旧稿保持不变,确保历史链接与内容仍可访问;
- 重构分支新增 `book/`,先固定知识依赖、排版规范和编译链;
- 每一段旧内容必须经过“保留、压缩、重写、移入附录、删除”判定后,才能进入新版;
- 旧图片不整体复制。只有在新版正文中承担明确论证作用、来源和授权可核验的图片才迁移。

## 2. 仓库审计结果

| 项目 | 当前规模 | 对迁移的影响 |
|---|---:|---|
| 主 Markdown | 8,650 行,约 874 KB | GitHub/编辑器渲染困难,章节耦合严重 |
| 仓库文件 | 481 个 | 大量资源缺乏按章节归档 |
| 总体积 | 约 139 MB | 不宜继续无筛选累积图片 |
| 图片引用 | 386 处,385 个唯一路径 | 需要来源、授权、尺寸与引用位置复核 |
| GIF | 23 个,约 51 MB | PDF 不支持动画;需关键帧、序列图或外部链接 |
| Windows 反斜杠路径 | 154 处 | Linux/LaTeX 构建不能原样复用 |

## 3. 旧章节迁移矩阵

| 旧稿范围 | 旧主题 | 新位置 | 决策 |
|---|---|---|---|
| 0--1 | 前言、摘要 | 前言、阅读指南、第 1 章 | 重写;删除宣传与时效性描述 |
| 2 | 各兵种中的视觉 | 第 27--31 章 | 按 2025/2026 官方规则重写,旧机制仅作历史注 |
| 3 | Ubuntu、IDE、Git、ROS、工具 | 第 2--3 章 | 从安装截图改为 OS、构建、版本控制、通信、可复现原理与 agent 工作流 |
| 4 | 相机、平台、IMU、雷达、通信 | 第 1 章 | 保留主题,重写物理原理、时序、误差模型与选型依据 |
| 5.0--5.1 | CV 常识、OpenCV API | 第 7--8 章与实验 | 大幅压缩 API 罗列,围绕图像形成、卷积、特征点和可验证实验组织 |
| 5.2 | 神经网络与目标检测模型史 | 第 9--11 章 | 大幅删减;用统一任务形式、数据闭环、代表性架构和部署决策取代模型/损失 zoo |
| 5.3 | 各类滤波器与预测 | 第 7、14、22 章 | 拆分:图像滤波归图像形成;贝叶斯估计归状态估计;运动预测归非线性自瞄 |
| 5.4 | 目标跟踪 | 第 14、22 章 | 用状态、量测、关联和不确定性统一重写,并接入自瞄闭环 |
| 5.5.1--5.5.3 | 阈值、不变性、HOG/GIST/LBP 等 | 第 8 章或历史附录 | 只保留后续任务真正依赖的内容,其余不再作为核心路线 |
| 5.5.4--5.5.7 | 特征点、描述子、匹配、RANSAC、ORB | 第 8、13、16 章 | 保留并改写,明确其在多视图几何和 SLAM 前端中的作用 |
| 5.6 | 三维视觉基础 | 第 12--15 章 | 系统重写坐标、成像、标定、PnP、三角化、BA、雷达与跨传感器外参 |
| 5.7 | SLAM 初探 | 第 16 章 | 扩展为前端、后端、因子图、回环、地图与工程评测 |
| 5.8--5.9 | 路径规划、自主决策 | 第 19--26 章 | 从概览升级为核心内容,补齐轨迹优化、MPC、行为架构、DP/RL/VLM 与多机协同 |
| 6 | 自瞄、大符、雷达等应用 | 第 22、27--31 章 | 以端到端误差链和赛季约束为线索重写,不复用过时代码配置 |
| 7 | 成员知识与学习路线 | 阅读指南、各章实验与第 27 章 | 重写为分层项目、验收标准和可复现实验 |
| 8 | 经历、问答与感想 | 前言或历史资料 | 仅保留对学习仍有价值且可验证的部分 |

## 4. 新版知识依赖

新版采用“先底层、后高层,先估计、后决策”的顺序:

1. 先理解传感器如何产生带噪、带延迟、异步的数据,以及程序如何在计算平台上运行;
2. 再学习图像和机器学习,使读者能把原始像素变成二维语义量测;
3. 通过多视图几何、激光雷达和状态估计,把量测变成三维状态与地图;
4. 通过状态空间、LQR/LQG、路径与轨迹规划、MPC 和非线性优化,把状态变成受约束控制输入;
5. 再学习行为决策、动态规划/强化学习、多机器人协同和受约束的 VLM 高层规划;
6. 在 31 章的最终目录中,用自瞄、哨兵和雷达站案例重新闭合感知、决策、规划、控制,并显式分析延迟、带宽、失效与裁判系统约束。

## 5. 图片迁移规则

- 静态图优先重绘为 TikZ、矢量图或可复现绘图脚本;照片类资料保留原图并记录来源。
- GIF 选择 3--6 个有因果意义的关键帧;如动画本身必要,PDF 中放关键帧与可长期访问的链接。
- 不因“已有图片”而保留一段知识;先决定论证,再决定图片。
- 统一使用正斜杠、ASCII 文件名和稳定的 `\label{}`。
- 未确定版权的网络图片不得进入正式发布版。

## 6. 分阶段交付

### Phase A:工程骨架

- 中文书稿模板、分章目录、术语和交叉引用规范;
- `latexmk`/Makefile 本地构建;
- GitHub Actions 构建与 PDF artifact;
- 首批基础章节与旧稿迁移矩阵。

### Phase B:感知主线

- 图像形成、必要的传统视觉、ML/CV 任务统一表述;
- 关键点、多视图几何、LiDAR/IMU、融合与 SLAM;
- 配套最小实验与统一数据接口。

### Phase C:闭环主线

- 状态估计、LQR/LQG、MPC、非线性自瞄;
- 路径/轨迹规划、行为树、动态规划、RL 与 VLM 启发式;
- 感知不确定性如何进入规划与控制。

### Phase D:赛季案例与发布

- 基于 2025/2026 官方规则重写雷达、哨兵、自瞄和协同案例;
- 完整实验、作业、验收 rubric;
- 图片授权、引用、术语、公式和构建的最终审计;
- 发布 PDF 与版本化勘误。
14 changes: 14 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
.PHONY: pdf clean watch

BOOK_DIR := book
BUILD_DIR := build

pdf:
cd $(BOOK_DIR) && latexmk -xelatex -interaction=nonstopmode -halt-on-error -file-line-error -outdir=$(BUILD_DIR) main.tex

watch:
cd $(BOOK_DIR) && latexmk -pvc -xelatex -interaction=nonstopmode -file-line-error -outdir=$(BUILD_DIR) main.tex

clean:
cd $(BOOK_DIR) && latexmk -C -outdir=$(BUILD_DIR) main.tex

65 changes: 61 additions & 4 deletions README.md
100755 → 100644
Original file line number Diff line number Diff line change
@@ -1,4 +1,61 @@
# Vision Tutorials
本文档是计算机视觉和RoboMaster入门手册和opencv基础api的练习代码仓库。
若您在阅读中有问题,可以通过email联系我。
欢迎pr与issue
# RoboMaster 机器人算法教程(LaTeX 重构版)

本分支将原来的单文件计算机视觉教程重构为一套面向 RoboMaster 算法组的系统教材。新版不再以“目标检测模型百科”为主线,而是围绕机器人闭环建立知识结构:

> 硬件与工具 → 数学与建模 → 2D 感知 → 3D 感知与 SLAM → 控制 → 规划与决策 → 系统集成 → 赛季案例

原始长篇 Markdown 暂时保留,作为历史资料与迁移来源;新内容统一位于 [`book/`](book/) 中。

## 构建 PDF

推荐使用 TeX Live 2024 或更新版本,并确保安装 XeLaTeX、latexmk 与 biber。

```bash
make pdf
```

生成文件位于 `book/build/main.pdf`。清理中间产物:

```bash
make clean
```

也可以直接进入 `book/`:

```bash
latexmk -xelatex -interaction=nonstopmode -halt-on-error -outdir=build main.tex
```

每次提交涉及书稿源文件时,GitHub Actions 会执行同样的构建并上传 PDF artifact。

## 当前阶段

- 已建立可编译的中文 LaTeX 书稿、分章结构、参考文献与 CI。
- 已写入系统总览、硬件原理、工程工具链和数学建模的首轮正文。
- 其余章节先固定学习目标、前置依赖和承转关系,再逐章迁移与重写。
- 2025/2026 赛季案例只采用官方规则中可核验的内容;未正式发布或仍可能修订的条目会明确标注版本和证据等级。

详细的删改与迁移矩阵见 [`MIGRATION_PLAN.md`](MIGRATION_PLAN.md),协作规范见 [`CONTRIBUTING.md`](CONTRIBUTING.md)。

## 目录约定

```text
book/
├── main.tex # 唯一书稿入口
├── config/ # 样式与命令
├── frontmatter/ # 前言与阅读指南
├── chapters/ # 每章一个 tex 文件
├── appendices/ # 附录
├── assets/ # 新版筛选后的静态插图
└── references.bib # 可追溯参考文献
```

## 内容原则

1. 以机器人任务中的变量、接口、误差和闭环为组织中心。
2. 首次出现的符号必须定义,结论必须说明适用前提。
3. 传统图像处理只保留后续几何、标定、特征匹配和工程调试真正需要的部分。
4. 目标检测只讲统一问题形式、数据与指标、代表性架构和部署决策,不再罗列过时模型族。
5. 将图像滤波、状态估计和控制器严格区分,再通过概率模型和状态空间统一起来。
6. AI/agent 工具用于加速检索、编码、测试与复盘,但生成结果必须经过来源核验、构建测试和人工审查。

40 changes: 40 additions & 0 deletions RULES_SOURCES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# RoboMaster 规则证据登记

本文件记录教材引用的赛季资料快照。它不是规则摘要的替代品;比赛实现必须回到官方原文核对。

核查截止日期:2026-08-24。

## 证据等级

1. 比赛规则、机器人制作规范、裁判系统通信协议:规范性事实。
2. 官方完整形态考核、规则测评与裁判系统考核:资格或评分要求,不自动等同于赛场机制。
3. 正式规则中的“未来规则规划”:方向性信号,不是当前强制条款。
4. 社区开源项目与论坛经验:工程案例,不作为规则证据。

## 版本快照

| 赛季资料 | 当前核查版本 | 日期 | 官方入口 |
|---|---:|---:|---|
| RMUC 2025 比赛规则 | V2.1.0 | 2025-08-02 | [2025 比赛规范发布公告](https://www.robomaster.com/zh-CN/resource/pages/announcement/1768) |
| RMUC 2025 裁判系统通信协议 | V1.9.0 | 2025-07-03 | 同上方官方索引 |
| RMUC 2026 比赛规则 | V2.2.0 | 2026-08-07 | [2026 官方资料索引](https://bbs.robomaster.com/wiki/20204847/809871?source=7) |
| RMUC 2026 机器人制作规范 | V2.0.0 | 2026-06-26 | [2026 官方资料索引](https://bbs.robomaster.com/wiki/20204847/809871?source=7) |
| RMUC 2026 裁判系统通信协议 | V2.0.0 | 2026-06-26 | [通信协议索引](https://bbs.robomaster.com/wiki/20204847/811363?source=7) |
| RMUC 2026 全国总决赛参赛手册 | V2.1.0 | 2026-07-16 | [2026 官方资料索引](https://bbs.robomaster.com/wiki/20204847/809871?source=7) |

RMUC 2026 比赛规则 V2.2.0 的官方文件名为 `RoboMaster 2026 机甲大师超级对抗赛比赛规则手册V2.2.0(20260807).pdf`,可从[官方 PDF](https://hz-rm-bbs-web-prod.oss-cn-hangzhou.aliyuncs.com/e354d2750e17485e8f67e5b5a9d1a2891786094242879/RoboMaster%202026%20机甲大师超级对抗赛比赛规则手册V2.2.0(20260807).pdf)下载,官方 MD5 为 `d4808d8f91575d89e2fe4f7ba2f4fb3f`。V2.2.0 相对 V2.1.0 只新增 R55;2026 全国赛的主要机制变化来自 V2.0.0,教材写作时必须同时记录“首次引入版本”和“当前核查版本”。

## 官方考核入口

- [规则测评](https://bbs.robomaster.com/wiki/20204847/812042?source=7)
- [裁判系统考核](https://bbs.robomaster.com/wiki/20204847/812043?source=7)
- [完整形态考核](https://bbs.robomaster.com/wiki/20204847/812045?source=7)
- [完整形态考核细则](https://bbs.robomaster.com/wiki/20204847/812048?source=7)

## 更新流程

1. 下载官方文件,记录赛事、语言、版本、发布日期、下载地址与哈希。
2. 对上一教材快照做逐条差异检查,先形成候选表,再人工回到原文核验。
3. 将规则事实、官方评分项、工程推导与研究前瞻分列,不混写。
4. 更新 `book/references.bib`、第 31 章、受影响的案例章和规则配置测试。
5. 重新构建 PDF,并在提交说明中列出新增、修改和失效条款。
10 changes: 10 additions & 0 deletions book/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Book source

`main.tex` is the only full-book entry point. Build from this directory with:

```bash
latexmk -xelatex -interaction=nonstopmode -halt-on-error -file-line-error -outdir=build main.tex
```

The template intentionally uses `listings` instead of `minted`, so the build does not require `--shell-escape`. New figures should use ASCII filenames and must have a source/license record before publication.

14 changes: 14 additions & 0 deletions book/appendices/app_a_notation.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
\chapter{符号、单位与接口检查表}
\label{app:notation}

本附录将在正文稳定后生成完整符号索引。当前提交先固定最容易造成系统性错误的检查项:

\begin{enumerate}
\item 每个向量注明坐标系;每个变换明确方向,例如 $\mat{T}_{AB}$ 将 $B$ 系坐标表示到 $A$ 系;
\item 角度内部统一使用 rad,距离使用 m,时间使用 s;边界协议若采用 degree/mm/ms 必须显式转换;
\item 区分传感器采样时间、消息到达时间、处理结束时间和执行器生效时间;
\item 区分真实状态 $\vect{x}$、估计 $\hat{\vect{x}}$、量测 $\vect{y}$、参考 $\vect{r}$ 与控制输入 $\vect{u}$;
\item 协方差必须对应明确误差定义和局部参数化,不能跨坐标系直接复制;
\item 所有矩阵乘法在实现中用维度、frame type 或单元测试约束。
\end{enumerate}

29 changes: 29 additions & 0 deletions book/appendices/app_b_legacy_map.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
\chapter{旧稿迁移索引}
\label{app:legacy-map}

旧稿暂时保留在仓库根目录。本附录只作为导航,不把旧结论视为新版事实来源。

\begin{longtable}{p{0.22\textwidth}p{0.30\textwidth}p{0.38\textwidth}}
\toprule
旧稿主题 & 新版章节 & 迁移状态 \\
\midrule
\endfirsthead
\toprule
旧稿主题 & 新版章节 & 迁移状态 \\
\midrule
\endhead
软件与开发工具 & 第 2--3 章 & 原理重写;旧软件版本和危险操作不迁移 \\
相机/IMU/雷达/通信 & 第 1、7、15 章 & 重写物理与误差模型;旧产品清单仅作历史资料 \\
目标检测与模型史 & 第 9--11 章 & 压缩为任务、数据、指标、代表性结构与部署 \\
传统滤波 & 第 7--8 章 & 仅保留采样、卷积、抗混叠和必要图像操作 \\
状态估计与跟踪 & 第 14 章 & 从 Bayes/KF/EKF 与关联重新推导 \\
特征点与匹配 & 第 8、12--13 章 & 保留主题并严格连接多视图几何 \\
三维视觉与 SLAM & 第 12--16 章 & 重写坐标、可观性、因子图、融合和评测 \\
路径/控制/决策概览 & 第 17--26 章 & 从原来的简短概览扩展为全书主干 \\
装甲/大符/雷达应用 & 第 22、28--31 章 & 按 2025/2026 官方规则和端到端指标重写 \\
个人经历与 Q\&A & 前言或历史档案 & 只保留对学习仍有长期价值的部分 \\
\bottomrule
\end{longtable}

详细的文件级处置与图片策略见仓库根目录的 \texttt{MIGRATION\_PLAN.md}。

22 changes: 22 additions & 0 deletions book/appendices/app_c_experiment_contract.tex
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
\chapter{实验、规则与复现契约}
\label{app:experiment-contract}

每个实验或赛季案例至少记录:

\begin{longtable}{p{0.23\textwidth}p{0.67\textwidth}}
\toprule
项目 & 要求 \\
\midrule
问题与假设 & 状态、量测、动作、约束、噪声和适用场景 \\
数据 & 来源、许可、版本、切分、采集设备和时间 \\
代码 & commit SHA、配置、依赖、随机种子和模型 hash \\
硬件 & CPU/GPU/NPU、功耗模式、传感器和固件版本 \\
指标 & 算法精度、系统成功率、P50/P99 延迟、资源与失败率 \\
消融 & 一次改变一个因素,并解释不能独立改变的耦合项 \\
规则 & 赛事、文件名、版本、发布日期、条款位置和访问日期 \\
AI 使用 & AI 参与环节、人工核验来源、执行测试和未解决风险 \\
\bottomrule
\end{longtable}

只有“输入、代码、环境和评价”四者同时可追溯,实验才足以支撑教材结论。

Loading
Loading