namespace RobotNet10.NavigationTune.Shared.Models; /// /// Complete test metrics calculated from telemetry data after a tuning test run. /// Groups: Tracking Accuracy (bám đường), Smoothness (độ mượt), Efficiency (hiệu quả), and Scores (0–100). /// public class TestMetrics { /// Unique identifier for this metrics record. public Guid Id { get; set; } = Guid.NewGuid(); /// Id of the test run this metrics belong to. public Guid TestRunId { get; set; } // --- Tracking Accuracy (độ chính xác bám đường) --- /// Root-mean-square of cross-track error (CTE) in meters. Khoảng cách vuông góc từ robot tới reference path. Mục tiêu < 0.10 m (10 cm). public double CrossTrackErrorRMS { get; set; } /// Peak (max) cross-track error in meters. Giá trị CTE lớn nhất trong test. Mục tiêu < 0.20 m. public double CrossTrackErrorPeak { get; set; } /// Mean cross-track error in meters. public double CrossTrackErrorMean { get; set; } /// Standard deviation of cross-track error in meters. Độ phân tán của lỗi bám đường. public double CrossTrackErrorStdDev { get; set; } /// Root-mean-square of heading error in radians. Lỗi góc hướng (rad). Mục tiêu tương đương < 10°. public double HeadingErrorRMS { get; set; } /// Peak (max) heading error in radians. public double HeadingErrorPeak { get; set; } /// Position error at goal in meters (average over last ~10% of trajectory). Lỗi vị trí tại điểm đích. Mục tiêu < 0.05 m (5 cm). public double GoalPositionError { get; set; } /// Heading error at goal in radians. Lỗi góc tại điểm đích. Mục tiêu tương đương < 5°. public double GoalHeadingError { get; set; } // --- Smoothness (độ mượt chuyển động) --- /// Standard deviation of linear velocity (m/s). Biến động tốc độ dọc đường. Mục tiêu < 0.1 m/s. public double VelocityStdDev { get; set; } /// Standard deviation of linear acceleration (m/s²). Biến động gia tốc. Mục tiêu < 0.5 m/s². public double AccelerationStdDev { get; set; } // --- Efficiency (hiệu quả) --- /// Ratio actual path length / reference path length. > 1 = đi dài hơn đường chuẩn. Mục tiêu < 1.15 (115%). public double PathLengthRatio { get; set; } /// Total time to complete the test in seconds. public double CompletionTime { get; set; } /// Average linear speed during test in m/s. public double AverageSpeed { get; set; } /// Maximum linear speed during test in m/s. public double MaxSpeed { get; set; } // --- Scores (0–100) --- /// Overall score 0–100. Weighted: Tracking 50%, Smoothness 30%, Efficiency 20%. public double OverallScore { get; set; } /// Tracking accuracy score 0–100 (CTE, heading, goal error). public double TrackingScore { get; set; } /// Smoothness score 0–100 (velocity stddev, acceleration stddev). public double SmoothnessScore { get; set; } /// Efficiency score 0–100 (path length ratio). public double EfficiencyScore { get; set; } /// True if all acceptance criteria are met (CTE RMS/peak, heading, goal error, path length ratio). public bool PassedCriteria { get; set; } } /// /// Tracking accuracy metrics: độ chính xác bám đường (CTE, heading, goal error). /// public class TrackingAccuracyMetrics { /// RMS cross-track error (m). public double CrossTrackErrorRMS { get; set; } /// Peak cross-track error (m). public double CrossTrackErrorPeak { get; set; } /// Mean cross-track error (m). public double CrossTrackErrorMean { get; set; } /// Std dev cross-track error (m). public double CrossTrackErrorStdDev { get; set; } /// RMS heading error (rad). public double HeadingErrorRMS { get; set; } /// Peak heading error (rad). public double HeadingErrorPeak { get; set; } /// Position error at goal (m). public double GoalPositionError { get; set; } /// Heading error at goal (rad). public double GoalHeadingError { get; set; } } /// /// Smoothness metrics: độ mượt chuyển động (biến động vận tốc, gia tốc). /// public class SmoothnessMetrics { /// Std dev of linear velocity (m/s). public double VelocityStdDev { get; set; } /// Std dev of linear acceleration (m/s²). public double AccelerationStdDev { get; set; } } /// /// Efficiency metrics: hiệu quả (quãng đường, thời gian, tốc độ). /// public class EfficiencyMetrics { /// Actual path length / reference path length. public double PathLengthRatio { get; set; } /// Completion time (s). public double CompletionTime { get; set; } /// Average speed (m/s). public double AverageSpeed { get; set; } /// Max speed (m/s). public double MaxSpeed { get; set; } }