4.3 KiB
4.3 KiB
行程与干涉修复报告(h2_v2 几何 · 2026-09-26)
用户实测问题
在网页查看器中随意调 4 个关节到极限角度,出现严重干涉(4 张截图:P08 切入 P07、 P07/P06 切入 P05、P05 切入 P04)。此前的"动态碰撞测试通过"结论是错误的。
根因(三层叠加)
- 几何缺陷(主因):
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 深度切入的直接原因。 - 旧测试脚本失效:
real_arm_collision_test.pyv1 的 J2~J5 关节轴定义是错的 (J3/J4 用错轴、J2/J5 方向反),且跳过"相邻关节零件对"和电机——而被跳过的 恰恰是全部出问题的对。 - 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.jsonsrc/real_arm_collision_test.py— 重写为 sweep_v2 封装(姿态网格抽查,修复错误轴)docs/travel.json— 网页滑块范围(已重建进查看器)docs/travel_detail.json— 单关节卡死明细 + 组合约束 + 干涉质心