feat(compat): 补齐飞拍执行等待与 FANUC 状态驱动链路

- 为 ExecuteFlyShotTraj 补齐 wait 语义,并让 move_to_start
  先完成临时 PTP 运动后再启动正式飞拍轨迹
- 将 J519 命令发送改为由机器人 UDP status sequence 驱动,
  避免在未收到状态包时主动发周期命令
- 将 10010 状态通道关节字段统一按 JointRadians 命名,
  同步更新运行时读取逻辑与协议测试
- 新增 FANUC 10010 状态帧、流运动手册和 Python client
  逆向文档,并更新 README 与兼容需求说明
- 补充兼容层编排测试与 HTTP 集成测试,覆盖 wait 和
  move_to_start 串行化行为
This commit is contained in:
2026-05-03 19:29:31 +08:00
parent 91c1494cde
commit af65ca03a0
17 changed files with 1694 additions and 214 deletions

View File

@@ -564,8 +564,8 @@ public sealed class LegacyHttpApiController : ControllerBase
public IActionResult ExecuteFlyshot([FromBody] LegacyExecuteFlyshotRequest data)
{
_logger.LogInformation(
"ExecuteFlyshot 调用: name={Name}, method={Method}, move_to_start={MoveToStart}, use_cache={UseCache}",
data.name, data.method, data.move_to_start, data.use_cache);
"ExecuteFlyshot 调用: name={Name}, method={Method}, move_to_start={MoveToStart}, use_cache={UseCache}, wait={Wait}",
data.name, data.method, data.move_to_start, data.use_cache, data.wait);
try
{
_compatService.ExecuteTrajectoryByName(
@@ -574,7 +574,8 @@ public sealed class LegacyHttpApiController : ControllerBase
moveToStart: data.move_to_start,
method: data.method,
saveTrajectory: data.save_traj,
useCache: data.use_cache));
useCache: data.use_cache,
wait: data.wait));
_logger.LogInformation("ExecuteFlyshot 成功: name={Name}", data.name);
return Ok(new { status = "FlyShot executed", success = true });
}
@@ -944,6 +945,11 @@ public sealed class LegacyExecuteFlyshotRequest
/// 获取或设置是否复用轨迹缓存。
/// </summary>
public bool use_cache { get; init; } = true;
/// <summary>
/// 获取或设置是否等待机器人执行完整条飞拍轨迹后再返回。
/// </summary>
public bool wait { get; init; } = true;
}
/// <summary>