fix: correct EM observation painter geometry
This commit is contained in:
@@ -23,6 +23,7 @@ internal static class TrajectoryObservationChecks
|
||||
{
|
||||
TrajectoryObservationSettingsChecks.Run();
|
||||
TrajectoryObservationSegmentChecks.Run();
|
||||
VerifiesPainterPoseGeometryReplacesLargeArrow();
|
||||
TrajectoryObservationVisualizationChecks.Run();
|
||||
VerifiesObservationSourceHasNoActuatorCalls();
|
||||
VerifiesObservationSourceUsesRequiredOperatorText();
|
||||
@@ -48,6 +49,7 @@ internal static class TrajectoryObservationChecks
|
||||
VerifiesPublishedPlanningDiagnosticsIncludeTrajectorySummary();
|
||||
VerifiesEmptyChartsReceivePersistentPlanningDiagnostic();
|
||||
VerifiesLsPresentationUsesPathSOnHorizontalAxis();
|
||||
VerifiesPainterStAxesUsePathSAndTimeUnits();
|
||||
VerifiesRollingRequestUsesOnePublishedTrajectorySnapshot();
|
||||
VerifiesActiveSegmentControllerDoesNotCrossSeedTrajectories();
|
||||
VerifiesLoopDefersSegmentAdvanceUntilPlanningIsConsumed();
|
||||
@@ -982,14 +984,52 @@ internal static class TrajectoryObservationChecks
|
||||
|
||||
TrajectoryObservationLsPresentationModel model = TrajectoryObservationLsPresentationModel.Create(charts);
|
||||
|
||||
Verification.Equal("path-S (m)", model.HorizontalAxisLabel, "observer LS horizontal axis label");
|
||||
Verification.Equal("lateral offset (m)", model.VerticalAxisLabel, "observer LS vertical axis label");
|
||||
Verification.Equal("ReferenceS (m)", model.HorizontalAxisLabel, "observer LS horizontal axis label");
|
||||
Verification.Equal("l (m)", model.VerticalAxisLabel, "observer LS vertical axis label");
|
||||
Verification.NearlyEqual(10.25d, model.Samples[0].HorizontalPathS,
|
||||
"observer LS path-S is horizontal");
|
||||
"observer LS shared ReferenceS is horizontal");
|
||||
Verification.NearlyEqual(0.10d, model.Samples[0].VerticalLateralOffset,
|
||||
"observer LS lateral offset is vertical");
|
||||
}
|
||||
|
||||
private static void VerifiesPainterPoseGeometryReplacesLargeArrow()
|
||||
{
|
||||
string presentationPath = Path.Combine(Directory.GetCurrentDirectory(), "ClumsyPilot",
|
||||
"ParkrobTrajplanner", "tarjplanner_movementtest", "TrajectoryObservationPresentation.cs");
|
||||
string source = new UTF8Encoding(false, true).GetString(File.ReadAllBytes(presentationPath));
|
||||
|
||||
Verification.True(!source.Contains("endArrow: true"),
|
||||
"observer painter removes the large terminal arrow");
|
||||
Verification.True(source.Contains("endArrow: false"),
|
||||
"observer painter uses a thin heading ray without an arrow");
|
||||
foreach (string corner in new[]
|
||||
{
|
||||
"frontLeftX", "frontLeftY", "frontRightX", "frontRightY",
|
||||
"rearRightX", "rearRightY", "rearLeftX", "rearLeftY",
|
||||
})
|
||||
{
|
||||
Verification.True(source.Contains(corner), "observer pose outline includes " + corner);
|
||||
}
|
||||
Verification.True(source.Contains("VehicleParameters vehicle"),
|
||||
"observer pose outline is scaled from vehicle parameters");
|
||||
Verification.True(source.Contains("MillimetersPerMeter = 1000f") &&
|
||||
source.Contains("ToMillimeters(path[index - 1].X)") &&
|
||||
source.Contains("ToMillimeters(path[index - 1].Y)") &&
|
||||
source.Contains("ToMillimeters(path[index].X)") &&
|
||||
source.Contains("ToMillimeters(path[index].Y)"),
|
||||
"observer world paths use one millimetres-per-metre factor for x and y");
|
||||
}
|
||||
|
||||
private static void VerifiesPainterStAxesUsePathSAndTimeUnits()
|
||||
{
|
||||
string presentationPath = Path.Combine(Directory.GetCurrentDirectory(), "ClumsyPilot",
|
||||
"ParkrobTrajplanner", "tarjplanner_movementtest", "TrajectoryObservationPresentation.cs");
|
||||
string source = new UTF8Encoding(false, true).GetString(File.ReadAllBytes(presentationPath));
|
||||
|
||||
Verification.True(source.Contains("\"t (s)\""), "observer ST horizontal axis uses seconds");
|
||||
Verification.True(source.Contains("\"PathS (m)\""), "observer ST vertical axis uses true PathS");
|
||||
}
|
||||
|
||||
private static void FreezesBootstrapVehicleForRollingRequests()
|
||||
{
|
||||
DateTimeOffset effectiveAt = new DateTimeOffset(2026, 8, 4, 2, 0, 0, TimeSpan.Zero);
|
||||
|
||||
+20
@@ -4,6 +4,7 @@ using System.Globalization;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using MultiWheelC.TrajectoryPlanning.CoarsePath;
|
||||
using MultiWheelC.TrajectoryPlanning.CoarsePath.Facade;
|
||||
@@ -22,6 +23,7 @@ internal static class TrajectoryObservationVisualizationChecks
|
||||
VerifiesHandoffUsesSharedReferenceSAndSurvivesProjectionFailure();
|
||||
VerifiesDynamicSnapshotContainsObservationEvidenceWithoutCyclePoints();
|
||||
VerifiesFullModeSnapshotPublishesSingleCurrentTrajectoryAndBoundaryMarkers();
|
||||
VerifiesPainterBoundarySemanticsMatchWeb();
|
||||
VerifiesWebPublisherFusesFaultWithoutStoppingObserverTicks();
|
||||
VerifiesWebPublisherGatesAtConfiguredCadenceAndSkipsDisabledOutput();
|
||||
}
|
||||
@@ -386,6 +388,24 @@ internal static class TrajectoryObservationVisualizationChecks
|
||||
Verification.Equal(0, factoryCalls, "disabled web visualization does not build dynamic snapshots");
|
||||
}
|
||||
|
||||
private static void VerifiesPainterBoundarySemanticsMatchWeb()
|
||||
{
|
||||
string presentationPath = Path.Combine(Directory.GetCurrentDirectory(), "ClumsyPilot",
|
||||
"ParkrobTrajplanner", "tarjplanner_movementtest", "TrajectoryObservationPresentation.cs");
|
||||
string source = new UTF8Encoding(false, true).GetString(File.ReadAllBytes(presentationPath));
|
||||
|
||||
Verification.True(source.Contains("DrawBoundaryMarkers"),
|
||||
"observer painter draws shared boundary markers");
|
||||
foreach (string expected in new[]
|
||||
{
|
||||
"计划起点", "车辆", "换向点 ", " / s_end", "终点 / s_end",
|
||||
})
|
||||
{
|
||||
Verification.True(source.Contains(expected),
|
||||
"observer painter boundary semantics include " + expected);
|
||||
}
|
||||
}
|
||||
|
||||
private static PlanningVisualizationStaticSnapshot CreateStaticSnapshot(TrajectoryObservationSettings settings)
|
||||
{
|
||||
TrajectoryObservationBootstrapResult bootstrap = Bootstrap(settings);
|
||||
|
||||
Reference in New Issue
Block a user