#![allow(clippy::too_many_arguments)]
#![allow(dead_code)]
use super::core::{RealTimePerformanceMetrics, BoundingBox};
use serde::{Deserialize, Serialize};
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct RoboticPerceptionMetrics {
pub object_detection: ObjectDetectionMetrics,
pub scene_understanding: SceneUnderstandingMetrics,
pub sensor_fusion: SensorFusionMetrics,
pub real_time_performance: RealTimePerformanceMetrics,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct ObjectDetectionMetrics {
pub detection_accuracy: f64,
pub false_positive_rate: f64,
pub false_negative_rate: f64,
pub localization_accuracy: f64,
pub detection_latency: Duration,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SceneUnderstandingMetrics {
pub segmentation_accuracy: f64,
pub depth_accuracy: f64,
pub classification_accuracy: f64,
pub spatial_understanding: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SensorFusionMetrics {
pub accuracy_improvement: f64,
pub sensor_agreement: f64,
pub uncertainty_quality: f64,
pub failure_robustness: f64,
}
impl RoboticPerceptionMetrics {
pub fn new() -> Self {
Self {
object_detection: ObjectDetectionMetrics::default(),
scene_understanding: SceneUnderstandingMetrics::default(),
sensor_fusion: SensorFusionMetrics::default(),
real_time_performance: RealTimePerformanceMetrics::default(),
}
}
}
impl Default for ObjectDetectionMetrics {
fn default() -> Self {
Self {
detection_accuracy: 0.9,
false_positive_rate: 0.05,
false_negative_rate: 0.05,
localization_accuracy: 0.85,
detection_latency: Duration::from_millis(100),
}
}
}
impl Default for SceneUnderstandingMetrics {
fn default() -> Self {
Self {
segmentation_accuracy: 0.85,
depth_accuracy: 0.8,
classification_accuracy: 0.9,
spatial_understanding: 0.75,
}
}
}
impl Default for SensorFusionMetrics {
fn default() -> Self {
Self {
accuracy_improvement: 0.1,
sensor_agreement: 0.9,
uncertainty_quality: 0.8,
failure_robustness: 0.7,
}
}
}