feat: add EM planner contracts
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using MultiWheelC.TrajectoryPlanning.CoarsePath;
|
||||
|
||||
namespace MultiWheelC.TrajectoryPlanning.EMPlanner;
|
||||
|
||||
public sealed class VehicleMotionState
|
||||
{
|
||||
public VehicleMotionState(
|
||||
Pose2D pose,
|
||||
double signedLongitudinalSpeedMetersPerSecond,
|
||||
double? longitudinalAccelerationMetersPerSecondSquared,
|
||||
DateTimeOffset capturedAtUtc,
|
||||
long sequenceId)
|
||||
{
|
||||
if (pose == null)
|
||||
throw new ArgumentNullException(nameof(pose));
|
||||
ContractNumeric.RequireFinite(pose.X, nameof(pose));
|
||||
ContractNumeric.RequireFinite(pose.Y, nameof(pose));
|
||||
ContractNumeric.RequireFinite(pose.Heading, nameof(pose));
|
||||
ContractNumeric.RequireFinite(signedLongitudinalSpeedMetersPerSecond, nameof(signedLongitudinalSpeedMetersPerSecond));
|
||||
if (longitudinalAccelerationMetersPerSecondSquared.HasValue)
|
||||
ContractNumeric.RequireFinite(longitudinalAccelerationMetersPerSecondSquared.Value, nameof(longitudinalAccelerationMetersPerSecondSquared));
|
||||
if (sequenceId < 0)
|
||||
throw new ArgumentOutOfRangeException(nameof(sequenceId));
|
||||
|
||||
Pose = pose;
|
||||
SignedLongitudinalSpeedMetersPerSecond = signedLongitudinalSpeedMetersPerSecond;
|
||||
LongitudinalAccelerationMetersPerSecondSquared = longitudinalAccelerationMetersPerSecondSquared;
|
||||
CapturedAtUtc = capturedAtUtc;
|
||||
SequenceId = sequenceId;
|
||||
}
|
||||
|
||||
public Pose2D Pose { get; }
|
||||
|
||||
public double SignedLongitudinalSpeedMetersPerSecond { get; }
|
||||
|
||||
public double? LongitudinalAccelerationMetersPerSecondSquared { get; }
|
||||
|
||||
public DateTimeOffset CapturedAtUtc { get; }
|
||||
|
||||
public long SequenceId { get; }
|
||||
}
|
||||
Reference in New Issue
Block a user