Files
FlyShotHost/docs/legacy-fit-uttc-ms11-plan.md
yunxiao.zhu c6829d214a feat(*): 添加 J519 实发重采样与 JSON 机型模型
* 新增 J519 实发采样器,按 8ms 周期生成 timing/jerk 诊断行并完成 rad->deg 转换
* 兼容层产物导出补充 speedRatio,规划编排补齐 smoothStartStopTiming 与日志透传
* 配置与机型加载切换到运行目录 JSON 模型,并补齐 7L 展开模型与相关单元测试
2026-05-07 17:08:32 +08:00

3.1 KiB

UTTC_MS11 Legacy Fit 计划

目标

Rvbust/前两个点正常 飞拍失败的运行 中的旧 1x 轨迹拟合逻辑收敛到当前 replacement 实现里,让 UTTC_MS11 在新系统中尽量复现旧系统的轨迹时间轴和中间点形状。

当前已确认的事实:

  • Config/RobotConfig.json 里的 UTTC_MS11 示教点与旧样本一致。
  • 1倍速度 角度坐标点/waypoint.txt 已给出 20 个示教点的 legacy 时间节点。
  • 旧 1x 的节点时间与当前规划时间存在稳定比例,约为 0.742277
  • 当前运行时 ApplySmoothStartStopTiming 会再次改写时间轴,这会破坏旧 waypoint time 的拟合结果。

拟合策略

优先分两层处理,不把不同问题混成一个旋钮:

  1. 时间轴拟合

    • 先把 UTTC_MS11 的规划时间拉回旧 1x 的节点时间。
    • 通过 planning_speed_scale 复现旧 waypoint.txt 的时间比例。
    • 对 legacy-fit 轨迹,禁止运行时二次平滑起停时间重映射。
  2. 空间曲线拟合

    • 保持原始示教点不变。
    • 先用当前插补器 + legacy 时间轴做第一版对齐。
    • 如果中间点仍和旧轨迹差异明显,再用旧 JointDetialTraj.txt 在 knot 附近反推速度/加速度,升级为 Hermite 拟合。

计划分解

1. 配置层

  • RobotConfig.json 增加明确的 legacy-fit 运行开关。
  • 当前现场的 UTTC_MS11 显式启用:
    • planning_speed_scale = 0.742277
    • smooth_start_stop_timing = false
  • 保留默认行为为兼容旧实现,以免影响其他轨迹。

2. 编排层

  • ControllerClientTrajectoryOrchestrator 读取运行配置后,按开关决定是否调用 ApplySmoothStartStopTiming
  • 缓存键必须包含该开关,避免 legacy-fit 和普通飞拍共用一份结果。
  • saveTrajectory / IsFlyshotTrajectoryValid 仍然输出规划结果,只是 legacy-fit 轨迹不再被二次改写时间轴。

3. 运行层

  • FanucControllerRuntime 继续使用 8ms 物理发送周期。
  • DenseSend 实发点数仍按 duration / (8ms * speedRatio) 计算。
  • 终点要保留完整落点,不因为非整周期而丢掉最后一个点。

4. 测试层

  • 增加配置测试,确认新开关可解析,默认值不破坏旧行为。
  • 增加编排测试,确认 UTTC_MS11 的规划时刻与旧 waypoint.txt 一致。
  • 增加运行测试,确认 legacy-fit 目录能写出稳定的 DenseSend 诊断文件。
  • 继续保留原有平滑起停测试,作为“显式开启平滑时”的回归保护。

验收标准

  • UTTC_MS11 的 waypoint time 与旧 waypoint.txt 对齐。
  • UTTC_MS11 运行时不再额外套一层平滑重映射。
  • DenseSend 输出稳定,且不再受旧 bin 目录残留影响。
  • 现有默认轨迹和非 UTTC 场景不被破坏。

后续可能的第二阶段

如果时间轴对齐后,中间点仍和旧轨迹有明显偏差,再做第二阶段:

  • 从旧 JointDetialTraj.txt 提取 knot 附近速度/加速度。
  • 用 Hermite / quintic Hermite 继续逼近旧曲线形状。
  • 将空间曲线拟合与时间轴拟合分开验收。