Initial commit

This commit is contained in:
2026-07-03 16:31:37 +07:00
commit 899c7c637d
1939 changed files with 641750 additions and 0 deletions

View File

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