feat: configure MovementTest OSQP iterations

This commit is contained in:
梁薄云
2026-08-05 12:03:28 +08:00
parent 30234d42df
commit 1a94cc2a6b
4 changed files with 23 additions and 1 deletions
@@ -32,6 +32,7 @@ public sealed class TrajectoryObservationMovementTest : MovementTest
public double ReplanPeriodSeconds = 0.20d;
public double ObserverPeriodSeconds = 0.05d;
public double SolverTimeoutSeconds = 0.50d;
public int MaximumOsqpIterations = 12000;
public double VehicleLengthMeters = 0.80d;
public double VehicleWidthMeters = 0.60d;
public double SafetyMarginMeters = 0.05d;
@@ -61,6 +62,7 @@ public sealed class TrajectoryObservationMovementTest : MovementTest
ReplanPeriodSeconds = ReplanPeriodSeconds,
ObserverPeriodSeconds = ObserverPeriodSeconds,
SolverTimeoutSeconds = SolverTimeoutSeconds,
MaximumOsqpIterations = MaximumOsqpIterations,
VehicleLengthMeters = VehicleLengthMeters,
VehicleWidthMeters = VehicleWidthMeters,
SafetyMarginMeters = SafetyMarginMeters,
@@ -13,6 +13,7 @@ public sealed class TrajectoryObservationSettings
public double ReplanPeriodSeconds { get; set; } = 0.20d;
public double ObserverPeriodSeconds { get; set; } = 0.05d;
public double SolverTimeoutSeconds { get; set; } = 0.50d;
public int MaximumOsqpIterations { get; set; } = 12000;
public double VehicleLengthMeters { get; set; } = 0.80d;
public double VehicleWidthMeters { get; set; } = 0.60d;
public double SafetyMarginMeters { get; set; } = 0.05d;
@@ -27,6 +28,7 @@ public sealed class TrajectoryObservationSettings
ReplanPeriodSeconds = ReplanPeriodSeconds,
ObserverPeriodSeconds = ObserverPeriodSeconds,
SolverTimeoutSeconds = SolverTimeoutSeconds,
MaximumOsqpIterations = MaximumOsqpIterations,
VehicleLengthMeters = VehicleLengthMeters,
VehicleWidthMeters = VehicleWidthMeters,
SafetyMarginMeters = SafetyMarginMeters,
@@ -43,6 +45,8 @@ public sealed class TrajectoryObservationSettings
EnsurePositiveFinite(ReplanPeriodSeconds, nameof(ReplanPeriodSeconds));
EnsurePositiveFinite(ObserverPeriodSeconds, nameof(ObserverPeriodSeconds));
EnsurePositiveFinite(SolverTimeoutSeconds, nameof(SolverTimeoutSeconds));
if (MaximumOsqpIterations <= 0)
throw new ArgumentOutOfRangeException(nameof(MaximumOsqpIterations), "Value must be positive.");
EnsurePositiveFinite(VehicleLengthMeters, nameof(VehicleLengthMeters));
EnsurePositiveFinite(VehicleWidthMeters, nameof(VehicleWidthMeters));
EnsurePositiveFinite(SafetyMarginMeters, nameof(SafetyMarginMeters));
@@ -208,6 +208,7 @@ public sealed class TrajectoryObservationController
configuration = EmPlannerConfiguration.CreateDefault();
configuration.Scheduling.ReplanPeriodSeconds = settings.ReplanPeriodSeconds;
configuration.Scheduling.SolverTimeoutSeconds = settings.SolverTimeoutSeconds;
configuration.Solver.MaximumOsqpIterations = settings.MaximumOsqpIterations;
coordinator = new EmPlanningCoordinator(planningService);
executor = new TrajectoryExecutor(configuration);
this.sessionId = sessionId;