use alloc::string::String;
use alloc::vec::Vec;
use chrono::{DateTime, Utc};
pub type HeaderId = u64;
pub type Timestamp = DateTime<Utc>;
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct AgvPosition {
pub x: f32,
pub y: f32,
pub theta: f32,
pub map_id: String,
pub map_description: Option<String>,
pub position_initialized: bool,
pub localization_score: Option<f32>,
pub deviation_range: Option<f32>
}
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct BoundingBoxReference {
pub x: f32,
pub y: f32,
pub z: f32,
pub theta: Option<f32>
}
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct ControlPoint {
pub x: f32,
pub y: f32,
pub weight: Option<f32>,
pub orientation: Option<f32>
}
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct LoadDimensions {
pub length: f32,
pub width: f32,
pub height: Option<f32>
}
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct NodePosition {
pub x: f32,
pub y: f32,
pub theta: Option<f32>,
pub allowed_deviation_xy: Option<f32>,
pub allowed_deviation_theta: Option<f32>,
pub map_id: String,
pub map_description: Option<String>
}
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct Trajectory {
pub degree: i64,
pub knot_vector: Vec<f32>,
pub control_points: Vec<ControlPoint>
}
#[cfg_attr(feature = "fmt", derive(Debug))]
#[cfg_attr(feature = "serde",
derive(serde::Serialize, serde::Deserialize),
serde(rename_all = "camelCase")
)]
pub struct Velocity {
pub vx: Option<f32>,
pub vy: Option<f32>,
pub omega: Option<f32>
}