贯通车队运行链并支持轨迹自动推导β
This commit is contained in:
@@ -47,6 +47,28 @@
|
||||
|
||||
该接口是纯几何计算,调用者必须在外部保证成员位姿处于同一世界坐标系,并完成夹紧、静止、数据新鲜度和时间对齐检查;布局的存储与原子激活也不属于该类。
|
||||
|
||||
## 车队通信与安全接口
|
||||
|
||||
`Shared/Fleet/FleetProtocol.cs` 只定义与具体无线模块无关的值类型:
|
||||
|
||||
- `FleetCommand`:任务号、主车命令序号、目标车号、命令类型、成员β、成员车体系速度、有效期和原因码。目标车号0表示广播。
|
||||
- `FleetMemberReport`:车号、任务号、本车报告序号、来源采样时间、公共世界系位姿/速度、状态有效性、本地任务阶段、最近执行命令序号和故障码;它同时承担心跳和命令确认。
|
||||
- `FleetCommandKind` 当前覆盖滚动准备、自转准备、激活、运动和停止;`FleetMemberState` 覆盖空闲、准备、就绪、活动和故障。
|
||||
|
||||
`MultiWheelC/Fleet/IFleetTransport.cs` 仅提供 `SendCommand`、`SendReport`、`TryReceiveCommand` 和 `TryReceiveReport`。它不负责串口初始化、字节序列化、任务/序列校验、安全判定或时钟同步;测试项目的 `InMemoryFleetTransport` 按车号路由FIFO消息,广播只送从车,主车本地命令由 `FleetRuntime` 直接执行。
|
||||
|
||||
时间语义分层:报告的 `SampleTimestampSeconds` 是来源车的采样时刻,真实跨机接收层必须换算到主车时间轴后才能用于 `FleetMemberStateSample` 对齐;`FleetMemberSafetyStatus.LastAcceptedReportTimeSeconds` 必须使用主车本地单调接收时间;`FleetMemberAgent` 的命令接收时间和截止时间必须使用本车本地单调时钟。Detour `tick` 不能直接替代这三类时间。
|
||||
|
||||
`FleetSafetySupervisor` 只在主车侧检查成员缺失、任务不一致、通信超时、状态不可用和故障,并锁存首个 `ShouldStop` 原因;它不直接操作底盘。`FleetMemberAgent.UpdateCommandWatchdog()` 是每车本地最后一道失联保护,活动状态下命令过期或本地时钟倒退会立即 `StopImmediately()` 并进入 `Faulted`。运行循环即使没有收到新命令也必须周期调用该方法。
|
||||
|
||||
### `FleetRuntime`
|
||||
|
||||
- 构造时传入本车ID、主车ID、`IFleetTransport`、本车 `FleetMemberAgent` 和 `IVehicleStateProvider`;本车ID等于主车ID时,还必须传入 `FleetPreparationCoordinator`、`FleetCoordinator` 和 `FleetSafetySupervisor`。
|
||||
- `StartRollingPlan(planId, layout, trajectory)` 只允许主车调用;成员准备β直接取自 `FleetCoordinator.MotionDirectionInFleetRadians`,避免准备方向与控制方向出现两份配置。
|
||||
- `Update(currentTimeSeconds, deltaTimeSeconds)` 使用本机单调时间驱动准备超时、主车报告新鲜度和本地命令看门狗。主车缓存的远端报告采样时间必须已经换算到主车时间轴,当前运行层不会自行估计跨机时钟偏移。
|
||||
- `Stop(reason)` 正常取消本车任务;主车同时广播当前任务停止。运行状态覆盖 `Idle`、`Preparing`、`Ready`、`Active`、`Completed` 和锁存的 `Faulted`。
|
||||
- 第一版公开启动入口只支持固定布局滚动轨迹;协议和从车执行器虽已保留 `PrepareSpin`,但整队自转尚无对应主车任务入口。
|
||||
|
||||
## 轨迹契约
|
||||
|
||||
文件:`MultiWheelC/Trajectory/`。
|
||||
|
||||
Reference in New Issue
Block a user