using RobotNet10.NavigationTune.Shared.Models;
namespace RobotNet10.NavigationTune.Shared.Interfaces;
///
/// Metrics calculator interface
///
public interface IMetricsCalculator
{
///
/// Calculate complete test metrics
///
TestMetrics CalculateMetrics(
List telemetryData,
ReferencePath referencePath
);
///
/// Calculate tracking accuracy metrics
///
TrackingAccuracyMetrics CalculateTrackingAccuracy(
List telemetryData,
ReferencePath referencePath
);
///
/// Calculate smoothness metrics
///
SmoothnessMetrics CalculateSmoothness(
List telemetryData
);
///
/// Calculate efficiency metrics
///
EfficiencyMetrics CalculateEfficiency(
List telemetryData,
ReferencePath referencePath
);
///
/// Calculate overall score
///
double CalculateOverallScore(
TestMetrics metrics,
ScoringWeights weights
);
}
///
/// Scoring weights for different metric categories
///
public class ScoringWeights
{
public double TrackingAccuracy { get; set; } = 0.5; // 50%
public double Smoothness { get; set; } = 0.3; // 30%
public double Efficiency { get; set; } = 0.2; // 20%
}