fix: accelerate EM trajectories from rest
This commit is contained in:
@@ -19,6 +19,7 @@ internal static class EmPlanningServiceChecks
|
||||
VerifiesFullScopePublishesItsRequestScope();
|
||||
VerifiesRequestAndStateFailuresPublishNoTrajectory();
|
||||
VerifiesProjectionCorridorAndOptimizationFailuresPublishNoTrajectory();
|
||||
VerifiesNoProgressPublishesNoTrajectory();
|
||||
VerifiesTimeoutFallbackAndCancellationSemantics();
|
||||
VerifiesPublicationFailureAndDebugIsolation();
|
||||
}
|
||||
@@ -396,6 +397,22 @@ internal static class EmPlanningServiceChecks
|
||||
}
|
||||
}
|
||||
|
||||
private static void VerifiesNoProgressPublishesNoTrajectory()
|
||||
{
|
||||
EmPlanningRequest request = CreateRequest(TravelDirection.Forward, 0d, false, false,
|
||||
CreateReferencePath(TravelDirection.Forward, false, 0.10d), null,
|
||||
EmPlanningScope.FullDirectionSegment);
|
||||
request.Configuration.Scheduling.MaximumOptimizationSpatialStepMeters = 1d;
|
||||
request.Configuration.Scheduling.MaximumOptimizationTimeStepSeconds = 1d;
|
||||
|
||||
EmPlanningResult result = new EmPlanningService(new ScriptedPipelineSolver(PipelineSolverMode.NoProgress)).Plan(
|
||||
request, CancellationToken.None);
|
||||
|
||||
VerifyFailure(result, EmPlanningStatus.NoProgress, "full nonterminal no progress");
|
||||
Verification.True(result.FailureReason.IndexOf("NoProgress", StringComparison.Ordinal) >= 0,
|
||||
"no-progress failure preserves its diagnostic");
|
||||
}
|
||||
|
||||
private static void VerifiesPublicationFailureAndDebugIsolation()
|
||||
{
|
||||
EmPlanningRequest validationFailure = CreateRequest(TravelDirection.Forward, 0d, false, false);
|
||||
@@ -610,6 +627,7 @@ internal static class EmPlanningServiceChecks
|
||||
SolverUnavailable,
|
||||
TimeoutWithoutFallback,
|
||||
TimeoutWithFallback,
|
||||
NoProgress,
|
||||
PublicationValidationFailure,
|
||||
}
|
||||
|
||||
@@ -647,6 +665,8 @@ internal static class EmPlanningServiceChecks
|
||||
LastLongitudinalProblem = problem;
|
||||
if (mode == PipelineSolverMode.LongitudinalInfeasible)
|
||||
return Result(QpSolveStatus.PrimalInfeasible, Array.Empty<double>());
|
||||
if (mode == PipelineSolverMode.NoProgress)
|
||||
return Result(QpSolveStatus.Solved, new double[problem.VariableCount]);
|
||||
if (strictFullPrimal != null && strictFullPrimal.Count == problem.VariableCount)
|
||||
{
|
||||
longitudinalCallCount++;
|
||||
|
||||
Reference in New Issue
Block a user