P5b 新手手册:这台机器在干什么 / 改哪里 / 怎么验 / 出问题查哪
此前仓库有规则文档(FRAMEWORK_RULES)、有目录表(WORKSPACE)、有各模块说明,
但**缺一份"从零进来的人读什么"**:业务目标没有一处讲清("通止规装配"散落在
7 个文件里各提一句),测试怎么跑在 docs/ 里一次都没写过,改一个东西该动哪个文件
要靠翻源码猜。
docs/HANDBOOK.md(416 行,新增)
1. 这台机器在干什么 —— 通止规是检验螺纹的量具(通端应旋到底、止端应旋不进);
为什么值得自动化(留下可追溯的力曲线);三段主线的数据流;日志三行判进度。
★ 1.4 节是**承诺书**:逐项标 ✅/⚠️/❌,并给出"哪条命令能证明它已就绪"。
如实写明还没做的四项:自动拉起全部服务、夹爪持规自检、D435 手眼标定、
装配合格判定。指不出验证命令的,就老实标 ❌(R6.1)。
2. 系统长什么样 —— 三层各有硬边界;两块**独占资源**(RDK、D405 USB)
以及各自的冲突表现;从像素到关节的全链路加上"每步的口径写错会怎么表现"。
3. 我要改东西,改哪里 —— 决策表(改 X → 动 Y → 用 Z 验),覆盖换臂/悬高/夹爪/
入孔/触觉/相机/仿真场景/权重/新品牌设备/命名位姿。每行都外链权威文档,
不复制内容(M2)。
4. 怎么验 —— 三层验收(不报错不算验收 / 物理量命中真值 / 任务成功)+ 命令清单 +
**单元测试怎么跑**(此前 docs/ 里没有任何一处写过)。含 608 项分包清单。
4.4 节专讲"验收工具自己也会失效",把 M1/R5.3/R6.6 串成一条线。
5. 出问题按现象查 —— 三处权威文档的分工表 + 15 行"现象 → 先怀疑什么",
覆盖 8 条仿真坑与全部触觉坑(坑 1/2/5/6/7/9/10)。
6. 术语表 + 未做的事(按优先级)+ 往下读的路线。
顺带写进规则的(docs/FRAMEWORK_RULES.md)
R6.7 验收命令必须真跑过 —— 本仓库已经因此踩过两次(CRLF 死脚本被五处文档推荐)
R6.8 install/ 构建产物会互相污染 —— 见下面这个发现
第 7 节清单加两条(第 10 条真跑过命令、第 11 条构建环境对不对)
第 8 节反例表加三行症状
★ 顺带发现一个哑弹(R6.8,**已记录未修**)
colcon build 会把当时激活的那个 python 的绝对路径写进每个入口脚本的 shebang。
实测:install/ 里 31/59 条指向仿真环境 ros_gz_sim,install_sim/ 里 31/55 条
(后者是对的)—— 说明真机 install/ 是在仿真 conda 环境里构建出来的,违反 R5.7。
$ head -1 install/arm_interfaces/lib/arm_interfaces/device_check
#!/home/cc/anaconda3/envs/ros_gz_sim/bin/python3.11
为什么现在没炸:两个 conda 环境的 Python 依赖当前完全相同(pyrealsense2 / serial /
cv2 / numpy / torch / ultralytics / tensorrt 都在),指错了也照样 import 成功。
这是一颗哑弹 —— 哪天某个环境多装或少装一个包,真机栈就会以"模块找不到"的形式炸,
而人是不会想到去查 shebang 的。
修法(写进 R6.8,待执行):在真机 conda 环境里重建 install/,再
`grep -l ros_gz_sim install/*/lib/*/* | wc -l` 应当变成 0。
预防:构建脚本开头应断言当前 conda 环境与目标一致(待补)。
验收
- 文档内所有相对链接与反引号路径引用均存在(脚本检查,0 坏链)
- 文档里给的每条命令都实际执行过:
ros2 run arm_interfaces device_check 通过
device_check --list-brands 列出 5 类设备
scripts/show_site_config.sh 存在
check_sim_cameras.py / check_sim_scene.py / check_text_only.py 存在
for d in src/*/test ... pytest 循环 608 passed
- 单测 608 passed,与改动前一致(本次只改文档)
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,6 +8,9 @@ alwaysApply: true
|
||||
这不是风格建议。违反它们的改动会在真机上以**不报错但结果是错的**方式失败,
|
||||
而防这件事是这个仓库花最多代价在做的事。要绕开某条规则,先改文档并写清理由。
|
||||
|
||||
**不知道从哪进入这个仓库**:先看 `docs/HANDBOOK.md`(这台机器在干什么 / 改哪里 /
|
||||
怎么验 / 出问题查哪)。它和本文档分工:手册讲"怎么做",本文档讲"不许怎么做"。
|
||||
|
||||
## 三条元规则
|
||||
|
||||
1. **静默失效是头号敌人。** 任何检查/校验都必须**能真的失败** ——
|
||||
@@ -34,10 +37,24 @@ alwaysApply: true
|
||||
- 把"降级跳过"写成"通过"。
|
||||
- 在中文路径下 `colcon build`。
|
||||
- 提交信息只写"改了什么"而不写"为什么"(中文,附实测验收数据)。
|
||||
- 把**没跑过**的命令写进文档(R6.7)。文档里的命令要能复制粘贴直接跑;
|
||||
外链先确认目标文件存在;说"已就绪"要能指出用哪条命令证明。
|
||||
- 在 `src/arm_*/**`、`scripts/**` 里写英文注释 / docstring / 提示信息(R6.5)。
|
||||
注释和给人看的句子**一律中文**;标识符、话题名、字段名、命令名**保留英文原文**
|
||||
(写在中文句子里时用 `` `` 包起来)。`src/flexiv_*/` 是厂商上游代码,不许翻译(R4.4)。
|
||||
|
||||
## 构建产物:真机与仿真必须隔离(R6.8,已知污染)
|
||||
|
||||
`colcon build` 会把**当时激活的 python 绝对路径**写进每个入口脚本的 shebang。
|
||||
真机 `install/` 现在有 **31/59** 条指向仿真环境 `ros_gz_sim` —— 哑弹,
|
||||
两边依赖哪天不一样了就会以"模块找不到"的形式炸。检测:
|
||||
|
||||
```bash
|
||||
grep -l ros_gz_sim install/*/lib/*/* | wc -l # 正常应为 0
|
||||
```
|
||||
|
||||
修法是在真机 conda 环境里重建 `install/`。**动手构建前先确认当前 conda 环境对不对。**
|
||||
|
||||
## 只改文字时,必须自证没碰逻辑
|
||||
|
||||
翻译注释、补文档这类"纯文本"改动最容易出事(漏掉 f-string 插值、顺手改个变量名),
|
||||
|
||||
Reference in New Issue
Block a user