using Flyshot.Core.Domain; using Flyshot.Core.Planning; using Flyshot.Core.Triggering; namespace Flyshot.ControllerClientCompat; /// /// 表示兼容层执行轨迹前生成的完整规划结果包。 /// public sealed class PlannedExecutionBundle { /// /// 初始化一份执行规划结果包。 /// /// 规划后的原始连续轨迹。 /// 飞拍触发时间轴。 /// 对运行时和监控层暴露的规划结果。 /// 飞拍链路预先准备好的最终发送队列。 /// 与运行时结果同口径的连续执行轨迹;为空时复用 plannedTrajectory。 public PlannedExecutionBundle( PlannedTrajectory plannedTrajectory, ShotTimeline shotTimeline, TrajectoryResult result, FlyshotPreparedExecution? preparedExecution = null, PlannedTrajectory? executionTrajectory = null) { PlannedTrajectory = plannedTrajectory ?? throw new ArgumentNullException(nameof(plannedTrajectory)); ShotTimeline = shotTimeline ?? throw new ArgumentNullException(nameof(shotTimeline)); Result = result ?? throw new ArgumentNullException(nameof(result)); PreparedExecution = preparedExecution; ExecutionTrajectory = executionTrajectory ?? plannedTrajectory; } /// /// 获取规划后的原始连续轨迹。 /// public PlannedTrajectory PlannedTrajectory { get; } /// /// 获取与运行时结果同口径的连续执行轨迹,用于构建最终 8ms 发送队列。 /// public PlannedTrajectory ExecutionTrajectory { get; } /// /// 获取飞拍触发时间轴。 /// public ShotTimeline ShotTimeline { get; } /// /// 获取运行时可消费的规划结果。 /// public TrajectoryResult Result { get; } /// /// 获取飞拍链路预先准备好的最终发送队列;普通轨迹与 move_joint 为 null。 /// public FlyshotPreparedExecution? PreparedExecution { get; } }