# 行程与干涉修复报告(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` — 单关节卡死明细 + 组合约束 + 干涉质心