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

4.3 KiB
Raw Blame History

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