Files
FlyShotHost/README.md
yunxiao.zhu 390d066ece feat(runtime): 添加轨迹持久化与密集执行链路
* 新增飞拍轨迹文件存储,支持上传、加载与删除
* 接通 ControllerClientCompat 到运行时的轨迹编排
* 完善 FANUC 命令与 J519 客户端发送链路
* 补充密集轨迹执行、运行时编排和协议客户端测试
* 更新 README 与 AGENTS 中的当前实现状态
2026-04-26 17:14:17 +08:00

5.4 KiB
Raw Blame History

Flyshot Replacement

基于 .NET 8 的跨平台飞拍服务端重写项目。

当前目标:

  • 以新的 ASP.NET Core HTTP API 作为唯一上层接口
  • 重写轨迹生成、触发时序和 FANUC 实时控制链路
  • 提供 Web 状态监控页面
  • 在 Windows 和 Linux 上运行完整后台服务

说明:

  • 这是长期运行的无头后台服务,不是 GUI 桌面程序。
  • 第一版仅面向当前现场组合,后续再扩展机型与控制柜适配。
  • 当前仓库不再恢复旧 50001/TCP+JSON 监听入口;旧 ControllerClient 逆向资料只作为接口语义参考,不作为运行时目标。
  • 宿主只保留 ASP.NET Core HTTP 控制器层,以及其后端 Flyshot.ControllerClientCompat 兼容服务。
  • ExecuteTrajectoryExecuteFlyShotTraj 已经接入 Planning + Triggering + Runtime 链路Web 状态页已通过 /status/api/status/snapshot 暴露当前兼容层与运行时状态。
  • Flyshot.Core.Planning 的 ICSP / self-adapt-icsp 轨迹已经完成旧系统导出轨迹对齐;doubles 仍未实现。
  • Flyshot.Runtime.Fanuc 已固化 10010 / 10012 / 60015 基础协议帧编解码。10010 状态通道以 j519 协议.pcap 真机抓包确认为 90B 固定帧。
  • 真机 Socket 客户端已具备基础连接、程序启停和 J519 周期发送能力但速度倍率、TCP、IO、J519 闭环和现场联调仍需补齐。

开发约定:

  • 建议从 flyshot-replacement/ 根目录启动 IDE、终端和 Codex 会话。
  • 当前仓库内的 @ 引用主要覆盖本仓库文件;引用父目录资料时,请直接写相对路径,如 ../analysis/ICSP_algorithm_reverse_analysis.md
  • 父目录中的 analysis/FlyingShot/RobotController/RPS/ 主要作为逆向参考资料和样本来源,新实现默认只落地在当前仓库。

当前已完成:

  • 初始化独立仓库
  • 创建 dotnet 8 解决方案骨架
  • 打通最小宿主与 /healthz
  • 建立领域模型与模块边界
  • 落地配置兼容与机器人模型解析
  • 落地 ICSP / self-adapt-icsp 轨迹规划与飞拍触发时间轴
  • 完成 ICSP 轨迹导出结果与旧系统对齐
  • ExecuteTrajectory / ExecuteFlyShotTraj 接入 FANUC 运行时链路
  • 落地 Web 状态页
  • 固化 10010 / 10012 / 60015 FANUC 基础协议帧编解码,确认 10010 状态帧为 90B
  • 使用本地 TCP/UDP 模拟器覆盖命令通道、状态通道和 J519 基础收发
  • 保留新 HTTP 接口路线,明确不再实现旧 50001/TCP+JSON 网关

剩余 Todo

  1. 配置与测试基线

    • 修正 ConfigCompatibilityTests 当前样本路径漂移:Rvbust/EOL10_EAU_0/RobotConfig.json 不再包含 001,应改用稳定样本或更新断言。
    • RobotConfig.json 中的 use_doio_keep_cyclesacc_limitjerk_limitadapt_icsp_try_num 全部贯通到规划和执行链路。
    • 为新 HTTP API 补一份当前现场调用顺序文档,替代旧 ControllerClient 工作流。
  2. 轨迹规划

    • 补齐 ICSP 最终 global_scale > 1.0 失败判定,避免未收敛轨迹被当作有效结果执行。
    • 将 self-adapt-icsp 的补点次数改为使用配置中的 adapt_icsp_try_num
    • 如果现场仍需要 method="doubles",实现 TrajectoryDoubleS 等价规划;否则在 HTTP 文档中明确标为不支持。
    • 把已完成对齐的旧系统轨迹样本固化为 golden tests防止后续重构破坏轨迹一致性。
  3. FANUC TCP 10012 命令通道

    • 补齐 GetSpeedRatio / SetSpeedRatio 真机命令体与响应解析。
    • 补齐 GetTCP / SetTCP 真机命令体与响应解析。
    • 补齐 GetIO / SetIO 真机命令体与响应解析。
    • 所有命令响应必须检查 result_code,失败时返回可诊断错误,而不是只更新本地缓存。
  4. FANUC TCP 10010 状态通道

    • j519 协议.pcap 中的 90B 真机状态帧扩充状态解析测试样本。
    • 明确 pose[6]joint_or_ext[9]、尾部状态字的字段语义,并映射到 ControllerStateSnapshot
    • 补充断线、异常帧、超时和重连策略。
  5. FANUC UDP 60015 J519 运动链路

    • 重新确认 J519 发送循环与 FanucControllerRuntime 稠密轨迹循环的职责边界,避免双重节拍或命令覆盖。
    • 补齐 accept_cmdreceived_cmdsysrdyrbt_inmotion 状态位闭环检查。
    • 校验序号递增、响应滞后、丢包、停止包和最后一帧语义。
    • 将飞拍 IO 触发的 write_io_type/index/mask/value 与现场控制柜实际 IO 地址逐项对齐。
  6. 真机联调与运行安全

    • 在真实 R30iB + RVBUSTSM 程序上验证 Connect -> EnableRobot -> ExecuteFlyShotTraj -> StopMove -> DisableRobot -> Disconnect 全流程。
    • 增加急停、伺服未就绪、程序未启动、网络断开、控制柜拒收命令等故障路径处理。
    • 给 HTTP 执行接口增加运行互斥、执行中拒绝重复轨迹、取消和超时控制。
    • 增加运行日志、协议摘要日志和状态快照导出,便于现场排查。
  7. 发布与部署

    • 固化 Windows / Linux 启动脚本和 systemd 服务配置。
    • 补充生产配置模板、端口说明和现场部署检查表。
    • 给 Web 状态页增加真机连接、程序状态、J519 状态位和最近报警显示。