102 lines
5.5 KiB
C#
102 lines
5.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace TrajectoryPlanningVisualization;
|
|
|
|
public sealed class PlanningVisualizationStaticSnapshot
|
|
{
|
|
public PlanningVisualizationStaticSnapshot(string sessionNameChinese, VisualizationBounds worldBounds,
|
|
VisualizationOccupancyGrid occupancyGrid, IReadOnlyList<VisualizationPolyline> staticPolylines,
|
|
IReadOnlyList<VisualizationMarker> staticMarkers,
|
|
IReadOnlyList<VisualizationDirectionSegment> directionSegments,
|
|
IReadOnlyList<VisualizationConfigurationGroup> configurationGroups)
|
|
{
|
|
SessionNameChinese = VisualizationContract.RequireText(sessionNameChinese, nameof(sessionNameChinese));
|
|
WorldBounds = worldBounds ?? throw new ArgumentNullException(nameof(worldBounds));
|
|
OccupancyGrid = occupancyGrid;
|
|
StaticPolylines = VisualizationContract.Copy(staticPolylines, nameof(staticPolylines));
|
|
StaticMarkers = VisualizationContract.Copy(staticMarkers, nameof(staticMarkers));
|
|
DirectionSegments = VisualizationContract.Copy(directionSegments, nameof(directionSegments));
|
|
ConfigurationGroups = VisualizationContract.Copy(configurationGroups, nameof(configurationGroups));
|
|
}
|
|
|
|
public string SessionNameChinese { get; }
|
|
public VisualizationBounds WorldBounds { get; }
|
|
public VisualizationOccupancyGrid OccupancyGrid { get; }
|
|
public IReadOnlyList<VisualizationPolyline> StaticPolylines { get; }
|
|
public IReadOnlyList<VisualizationMarker> StaticMarkers { get; }
|
|
public IReadOnlyList<VisualizationDirectionSegment> DirectionSegments { get; }
|
|
public IReadOnlyList<VisualizationConfigurationGroup> ConfigurationGroups { get; }
|
|
}
|
|
|
|
public sealed class PlanningVisualizationDynamicSnapshot
|
|
{
|
|
public PlanningVisualizationDynamicSnapshot(long sequence, DateTimeOffset observedAtUtc,
|
|
string sessionStateChinese, int activeSegmentIndex, string activeDirection,
|
|
VisualizationPose vehiclePose, IReadOnlyList<VisualizationPolyline> dynamicPolylines,
|
|
IReadOnlyList<VisualizationMarker> dynamicMarkers, IReadOnlyList<VisualizationChart> charts,
|
|
IReadOnlyList<VisualizationValue> statusValues, VisualizationCycleSummary cycleSummary)
|
|
{
|
|
Sequence = sequence;
|
|
ObservedAtUtc = observedAtUtc;
|
|
SessionStateChinese = VisualizationContract.RequireText(sessionStateChinese, nameof(sessionStateChinese));
|
|
ActiveSegmentIndex = activeSegmentIndex;
|
|
ActiveDirection = VisualizationContract.RequireText(activeDirection, nameof(activeDirection));
|
|
VehiclePose = vehiclePose ?? throw new ArgumentNullException(nameof(vehiclePose));
|
|
DynamicPolylines = VisualizationContract.Copy(dynamicPolylines, nameof(dynamicPolylines));
|
|
DynamicMarkers = VisualizationContract.Copy(dynamicMarkers, nameof(dynamicMarkers));
|
|
Charts = VisualizationContract.Copy(charts, nameof(charts));
|
|
StatusValues = VisualizationContract.Copy(statusValues, nameof(statusValues));
|
|
CycleSummary = cycleSummary ?? throw new ArgumentNullException(nameof(cycleSummary));
|
|
}
|
|
|
|
public long Sequence { get; }
|
|
public DateTimeOffset ObservedAtUtc { get; }
|
|
public string SessionStateChinese { get; }
|
|
public int ActiveSegmentIndex { get; }
|
|
public string ActiveDirection { get; }
|
|
public VisualizationPose VehiclePose { get; }
|
|
public IReadOnlyList<VisualizationPolyline> DynamicPolylines { get; }
|
|
public IReadOnlyList<VisualizationMarker> DynamicMarkers { get; }
|
|
public IReadOnlyList<VisualizationChart> Charts { get; }
|
|
public IReadOnlyList<VisualizationValue> StatusValues { get; }
|
|
public VisualizationCycleSummary CycleSummary { get; }
|
|
}
|
|
|
|
public sealed class VisualizationCycleSummary
|
|
{
|
|
public VisualizationCycleSummary(long cycleVersion, DateTimeOffset occurredAtUtc, string status, bool published,
|
|
double planningElapsedMilliseconds, int segmentIndex, string direction, string longitudinalMode,
|
|
string terminalType, double? terminalVelocity, double? terminalAcceleration, string failureReason)
|
|
{
|
|
VisualizationContract.RequireFinite(planningElapsedMilliseconds, nameof(planningElapsedMilliseconds));
|
|
VisualizationContract.RequireFinite(terminalVelocity, nameof(terminalVelocity));
|
|
VisualizationContract.RequireFinite(terminalAcceleration, nameof(terminalAcceleration));
|
|
CycleVersion = cycleVersion;
|
|
OccurredAtUtc = occurredAtUtc;
|
|
Status = VisualizationContract.RequireText(status, nameof(status));
|
|
Published = published;
|
|
PlanningElapsedMilliseconds = planningElapsedMilliseconds;
|
|
SegmentIndex = segmentIndex;
|
|
Direction = VisualizationContract.RequireText(direction, nameof(direction));
|
|
LongitudinalMode = VisualizationContract.RequireText(longitudinalMode, nameof(longitudinalMode));
|
|
TerminalType = VisualizationContract.RequireText(terminalType, nameof(terminalType));
|
|
TerminalVelocity = terminalVelocity;
|
|
TerminalAcceleration = terminalAcceleration;
|
|
FailureReason = VisualizationContract.RequireText(failureReason, nameof(failureReason));
|
|
}
|
|
|
|
public long CycleVersion { get; }
|
|
public DateTimeOffset OccurredAtUtc { get; }
|
|
public string Status { get; }
|
|
public bool Published { get; }
|
|
public double PlanningElapsedMilliseconds { get; }
|
|
public int SegmentIndex { get; }
|
|
public string Direction { get; }
|
|
public string LongitudinalMode { get; }
|
|
public string TerminalType { get; }
|
|
public double? TerminalVelocity { get; }
|
|
public double? TerminalAcceleration { get; }
|
|
public string FailureReason { get; }
|
|
}
|