#![allow(clippy::too_many_arguments)]
#![allow(dead_code)]
use serde::{Deserialize, Serialize};
use std::time::Duration;
#[derive(Debug, Clone)]
pub struct HumanRobotInteractionMetrics {
pub safety_metrics: HriSafetyMetrics,
pub communication_metrics: CommunicationMetrics,
pub user_satisfaction: UserSatisfactionMetrics,
pub collaboration_efficiency: CollaborationEfficiencyMetrics,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct HriSafetyMetrics {
pub min_safe_distance: f64,
pub safety_violations: usize,
pub emergency_response_time: Duration,
pub collision_avoidance_rate: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CommunicationMetrics {
pub command_accuracy: f64,
pub response_time: Duration,
pub feedback_quality: f64,
pub multimodal_success_rate: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct UserSatisfactionMetrics {
pub overall_satisfaction: f64,
pub ease_of_use: f64,
pub trust_level: f64,
pub task_satisfaction: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct CollaborationEfficiencyMetrics {
pub time_improvement: f64,
pub workload_balance: f64,
pub coordination_effectiveness: f64,
pub cognitive_load: f64,
}
impl HumanRobotInteractionMetrics {
pub fn new() -> Self {
Self {
safety_metrics: HriSafetyMetrics::default(),
communication_metrics: CommunicationMetrics::default(),
user_satisfaction: UserSatisfactionMetrics::default(),
collaboration_efficiency: CollaborationEfficiencyMetrics::default(),
}
}
}
impl Default for HriSafetyMetrics {
fn default() -> Self {
Self {
min_safe_distance: 0.0,
safety_violations: 0,
emergency_response_time: Duration::from_millis(0),
collision_avoidance_rate: 1.0,
}
}
}
impl Default for CommunicationMetrics {
fn default() -> Self {
Self {
command_accuracy: 1.0,
response_time: Duration::from_millis(0),
feedback_quality: 1.0,
multimodal_success_rate: 1.0,
}
}
}
impl Default for UserSatisfactionMetrics {
fn default() -> Self {
Self {
overall_satisfaction: 1.0,
ease_of_use: 1.0,
trust_level: 1.0,
task_satisfaction: 1.0,
}
}
}
impl Default for CollaborationEfficiencyMetrics {
fn default() -> Self {
Self {
time_improvement: 0.0,
workload_balance: 1.0,
coordination_effectiveness: 1.0,
cognitive_load: 0.5,
}
}
}