Files
Robot_Arm/docs/行程与干涉修复报告.md
T

69 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 行程与干涉修复报告(h2_v2 几何 · 2026-09-26)
## 用户实测问题
在网页查看器中随意调 4 个关节到极限角度,出现**严重干涉**(4 张截图:P08 切入 P07、
P07/P06 切入 P05、P05 切入 P04)。此前的"动态碰撞测试通过"结论是错误的。
## 根因(三层叠加)
1. **几何缺陷(主因)**:`make_pitch_to_roll_bracket`(P05 大臂旋转座 / P08 腕偏转座共用)
的 `top_fill` 顶部填充块与 `rear_spine` 后脊在 y≤155.5 带内一路填到关节轴平面
(z = z_pitch),与上游件(P04 肩叉 / P07 小臂)的底面**齐平贴合**。零位时测量体积为 0
(贴合面),但关节**一转立即切入**——这是截图 1/4 中 P08×P07、P05×P04 深度切入的直接原因。
2. **旧测试脚本失效**:`real_arm_collision_test.py` v1 的 J2~J5 关节轴定义是错的
(J3/J4 用错轴、J2/J5 方向反),且跳过"相邻关节零件对"和电机——而被跳过的
恰恰是全部出问题的对。
3. **travel.json 过期**:滑块范围是旧几何(9-25)扫描的(J2 -123..109 等),
V2 圆角几何(9-26)从未重扫,网页滑块让用户推到了实际不存在的行程。
## 几何修复(FIX-1)
`make_pitch_to_roll_bracket`(同时作用于 P05/P08):
- **删除** `rear_spine` 后脊(其连接功能由 Loft + 顶部填充的 y≥158.5 部分承担);
- **顶部填充块** 只保留 y≥158.5(与从动法兰盘对齐),切除与上游件贴面的部分;
- **旋转清让切除**:`y ≤ 157.5` 带内、轴平面以上及颈部以外的材料全部切除,
只保留半径 36mm 的**旋转颈部**(相对上游件最近材料半径 35mm 留径向余量,
侧向 2mm 间隙);
- **J1 从动定位凸台加长**(local z 54.942..59.5),跨过 y=156.5..158.5 间隙插入
法兰盘——否则切除填充后凸台悬空成第二实体。
修复后 9 个打印件全部单实体、零位干涉 0 对。
## 验证工具:sweep_v2.py(全新,权威)
针对旧工具的三个缺陷重写(`src/sweep_v2.py`,多进程并行):
- 进程内直接构建当前模型(杜绝 STEP/网格过期),轴取自 `human_layout`(与网页逐位一致);
- 检查**全部零件对**(含相邻对与 6 台电机);
- 单关节双向粗扫+二分 → 真实硬限位;干涉记录**质心定位**;
- 组合姿态扫描(某关节保持极限、扫其余关节)→ 折叠约束数据;
- 轴向/径向区间预剪枝 + 20 进程并行(用户要求提速;单关节阶段 8 分钟,旧版 22 分钟)。
## 最终行程(docs/travel.json,滑块即此范围)
| 关节 | 旧 travel.json(过期) | **新(验证)** | 限位机制(干涉质心) |
|------|----------------------|--------------|--------------------|
| J1 肩抬举 | -1.9..180 | **-2..179** | 反向:P09 工具法兰擦胸板侧面 (3.2, 61, 110)——手臂下垂时的结构硬极限 |
| J2 肩俯仰 | -123..108.8 | **-115..111** | P04 叉尖 (56.3, 143, 510) / P03 斜撑 (-59, 111, 556) |
| J3 大臂自转 | 360°连续 | **360°连续** | P06 扫掠半径 50 < 胸板最近 67,整周自由 |
| J4 肘部俯仰 | ±120 | **±54** | P07 肩部擦 P06 前脸边缘,3mm³ 擦碰(±55 处);为保 M4 定位环接受 |
| J5 腕俯仰 | ±108.9 | **±102** | P08 颈部擦 P07 侧缘 (60.2, 146, 232) |
| J6 腕自转 | 360°连续 | **360°连续** | P09 全部回转对称,整周自由 |
## 组合姿态(重要说明)
任意**单关节**推满滑块已验证零干涉。多关节同时打到极限的折叠姿态
(如 J1 翻顶 179° + J2 前摆 + J4 弯肘)物理上必然自碰——真实机器人同样如此,
由控制器避碰解决,不应把组合约束压进静态滑块(否则 J4 会被压成 0..5°,手臂锁死)。
组合卡死的具体角度与零件对保留在 `docs/travel_detail.json` 的 `combos` 字段。
## 文件清单
- `src/sweep_v2.py` — 权威行程/碰撞扫描(并行、全对全、干涉定位)
- `src/finalize_travel.py` — 用单关节硬限位重置 docs/travel.json
- `src/real_arm_collision_test.py` — 重写为 sweep_v2 封装(姿态网格抽查,修复错误轴)
- `docs/travel.json` — 网页滑块范围(已重建进查看器)
- `docs/travel_detail.json` — 单关节卡死明细 + 组合约束 + 干涉质心