Files
BQP/srcs/RobotNet10/Shared/RobotNet10.NavigationTune.Shared/Interfaces/IMetricsCalculator.cs
2026-07-13 09:25:40 +07:00

59 lines
1.5 KiB
C#

using RobotNet10.NavigationTune.Shared.Models;
namespace RobotNet10.NavigationTune.Shared.Interfaces;
/// <summary>
/// Metrics calculator interface
/// </summary>
public interface IMetricsCalculator
{
/// <summary>
/// Calculate complete test metrics
/// </summary>
TestMetrics CalculateMetrics(
List<TelemetryData> telemetryData,
ReferencePath referencePath
);
/// <summary>
/// Calculate tracking accuracy metrics
/// </summary>
TrackingAccuracyMetrics CalculateTrackingAccuracy(
List<TelemetryData> telemetryData,
ReferencePath referencePath
);
/// <summary>
/// Calculate smoothness metrics
/// </summary>
SmoothnessMetrics CalculateSmoothness(
List<TelemetryData> telemetryData
);
/// <summary>
/// Calculate efficiency metrics
/// </summary>
EfficiencyMetrics CalculateEfficiency(
List<TelemetryData> telemetryData,
ReferencePath referencePath
);
/// <summary>
/// Calculate overall score
/// </summary>
double CalculateOverallScore(
TestMetrics metrics,
ScoringWeights weights
);
}
/// <summary>
/// Scoring weights for different metric categories
/// </summary>
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%
}