feat(fanuc): 改为按状态包驱动 J519 队列发送

* 预生成稠密轨迹 J519 命令队列,等待机器人状态包逐帧出队
* 让 ExecuteTrajectory 在队列实际取完后返回,避免后台发送提前结束
* 新增 ActualSendTiming.txt,区分实发时间与 speed_ratio 采样时间
* 补充 J519 队列、等待完成和实发时间映射相关单元测试
* 同步文档中的 t_send / t_traj / speed_ratio 说明

Co-authored-by: Copilot <copilot@github.com>
This commit is contained in:
2026-05-06 12:57:56 +08:00
parent b1710e5d01
commit 783716ff44
15 changed files with 403 additions and 92 deletions

View File

@@ -48,13 +48,13 @@
## 3. ActualSendJerkStats 的单位边界
`ActualSendJerkStats.txt`代码注释写的是 `rad/s^3`,但当前实现里真实输入不是弧度,而是角度
`ActualSendJerkStats.txt`真实输入不是弧度,而是 J519 下发用的角度制关节目标
1. `SampleDenseJointTrajectoryDegrees(...)` 先把轨迹点从 `rad` 转成 `deg`
2. `BuildDenseSendJointRow(...)` 把这组角度制关节写入 `ActualSendJointTraj.txt`
3. `BuildDenseSendJerkRow(...)` 再直接基于这组角度制关节做三阶差分
因此当前这份 `ActualSendJerkStats.txt` 的逐轴跃度应按以下方式理解:
2026-05-06 之后,`ActualSendJointTraj.txt` 第一列和 `ActualSendJerkStats.txt``dt` 都使用 J519 实发时间;若需要查看被 `speed_ratio` 缩放后的原轨迹采样时间,应读取同目录的 `ActualSendTiming.txt`因此当前这份 `ActualSendJerkStats.txt` 的逐轴跃度应按以下方式理解:
- 文本中的数值口径:`deg/s^3`
- 若要与 `.robot` / `RobotProfile` 中的 jerk limit 比较,需要先换算为 `rad/s^3`