feat: add EM planner contracts

This commit is contained in:
梁薄云
2026-08-03 22:14:37 +08:00
parent 882f80bca0
commit e12eb31205
16 changed files with 477 additions and 0 deletions
@@ -0,0 +1,28 @@
using System;
namespace MultiWheelC.TrajectoryPlanning.EMPlanner;
public sealed class EmPlanningResult
{
public EmPlanningResult(EmPlanningStatus status, EmTrajectory trajectory, string failureReason)
{
if (!Enum.IsDefined(typeof(EmPlanningStatus), status))
throw new ArgumentOutOfRangeException(nameof(status));
bool isSuccess = status == EmPlanningStatus.Success || status == EmPlanningStatus.SuccessWithFallback;
if (isSuccess && trajectory == null)
throw new ArgumentException("Successful results require a trajectory.", nameof(trajectory));
if (!isSuccess && trajectory != null)
throw new ArgumentException("Only successful results may contain a trajectory.", nameof(trajectory));
Status = status;
Trajectory = trajectory;
FailureReason = failureReason ?? string.Empty;
}
public EmPlanningStatus Status { get; }
public EmTrajectory Trajectory { get; }
public string FailureReason { get; }
}