// This file is @generated by prost-build.
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Box {
    #[prost(double, tag = "1")]
    pub x: f64,
    #[prost(double, tag = "2")]
    pub y: f64,
    #[prost(double, tag = "3")]
    pub z: f64,
}
impl ::prost::Name for Box {
    const NAME: &'static str = "Box";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Box".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Box".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Rectangle {
    #[prost(double, tag = "1")]
    pub x: f64,
    #[prost(double, tag = "2")]
    pub y: f64,
}
impl ::prost::Name for Rectangle {
    const NAME: &'static str = "Rectangle";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Rectangle".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Rectangle".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LoadCarrier {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub r#type: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub outer_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "4")]
    pub inner_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "5")]
    pub rim_thickness: ::core::option::Option<Rectangle>,
    #[prost(double, tag = "6")]
    pub rim_step_height: f64,
    #[prost(message, optional, tag = "7")]
    pub rim_ledge: ::core::option::Option<Rectangle>,
    #[prost(double, tag = "8")]
    pub height_open_side: f64,
    #[prost(message, optional, tag = "9")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(bool, tag = "10")]
    pub overfilled: bool,
}
impl ::prost::Name for LoadCarrier {
    const NAME: &'static str = "LoadCarrier";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.LoadCarrier".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.LoadCarrier".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CollisionDetection {
    #[prost(string, tag = "1")]
    pub gripper_id: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub pre_grasp_offset: ::core::option::Option<
        super::super::geometry_msgs::msg::Point,
    >,
}
impl ::prost::Name for CollisionDetection {
    const NAME: &'static str = "CollisionDetection";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.CollisionDetection".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.CollisionDetection".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Grasp {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub uuid: ::prost::alloc::string::String,
    #[prost(string, tag = "3")]
    pub match_uuid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "4")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(int32, tag = "5")]
    pub priority: i32,
    #[prost(string, tag = "6")]
    pub gripper_id: ::prost::alloc::string::String,
    #[prost(bool, tag = "7")]
    pub collision_checked: bool,
}
impl ::prost::Name for Grasp {
    const NAME: &'static str = "Grasp";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Grasp".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Grasp".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Match {
    #[prost(string, tag = "1")]
    pub template_id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub uuid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(string, repeated, tag = "4")]
    pub grasp_uuids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(double, tag = "5")]
    pub score: f64,
}
impl ::prost::Name for Match {
    const NAME: &'static str = "Match";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Match".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Match".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SilhouetteMatchObject {
    #[prost(string, tag = "1")]
    pub object_id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub region_of_interest_2d_id: ::prost::alloc::string::String,
}
impl ::prost::Name for SilhouetteMatchObject {
    const NAME: &'static str = "SilhouetteMatchObject";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.SilhouetteMatchObject".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.SilhouetteMatchObject".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LoadCarrierModel {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub r#type: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub outer_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "4")]
    pub inner_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "5")]
    pub rim_thickness: ::core::option::Option<Rectangle>,
    #[prost(double, tag = "6")]
    pub rim_step_height: f64,
    #[prost(message, optional, tag = "7")]
    pub rim_ledge: ::core::option::Option<Rectangle>,
    #[prost(double, tag = "8")]
    pub height_open_side: f64,
    #[prost(message, optional, tag = "9")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(string, tag = "10")]
    pub pose_type: ::prost::alloc::string::String,
}
impl ::prost::Name for LoadCarrierModel {
    const NAME: &'static str = "LoadCarrierModel";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.LoadCarrierModel".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.LoadCarrierModel".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Compartment {
    #[prost(message, optional, tag = "1")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose>,
    #[prost(message, optional, tag = "2")]
    pub r#box: ::core::option::Option<Box>,
}
impl ::prost::Name for Compartment {
    const NAME: &'static str = "Compartment";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Compartment".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Compartment".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Item {
    #[prost(string, tag = "1")]
    pub uuid: ::prost::alloc::string::String,
    #[prost(string, repeated, tag = "2")]
    pub grasp_uuids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(string, tag = "3")]
    pub r#type: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "4")]
    pub rectangle: ::core::option::Option<Rectangle>,
    #[prost(message, optional, tag = "5")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
}
impl ::prost::Name for Item {
    const NAME: &'static str = "Item";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Item".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Item".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RangeBox {
    #[prost(message, optional, tag = "1")]
    pub min_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "2")]
    pub max_dimensions: ::core::option::Option<Box>,
}
impl ::prost::Name for RangeBox {
    const NAME: &'static str = "RangeBox";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.RangeBox".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.RangeBox".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RangeRectangle {
    #[prost(message, optional, tag = "1")]
    pub min_dimensions: ::core::option::Option<Rectangle>,
    #[prost(message, optional, tag = "2")]
    pub max_dimensions: ::core::option::Option<Rectangle>,
}
impl ::prost::Name for RangeRectangle {
    const NAME: &'static str = "RangeRectangle";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.RangeRectangle".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.RangeRectangle".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ItemModel {
    #[prost(string, tag = "1")]
    pub r#type: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub unknown: ::core::option::Option<RangeBox>,
    #[prost(message, optional, tag = "3")]
    pub rectangle: ::core::option::Option<RangeRectangle>,
}
impl ::prost::Name for ItemModel {
    const NAME: &'static str = "ItemModel";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.ItemModel".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.ItemModel".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegionOfInterest2D {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(uint32, tag = "2")]
    pub offset_x: u32,
    #[prost(uint32, tag = "3")]
    pub offset_y: u32,
    #[prost(uint32, tag = "4")]
    pub width: u32,
    #[prost(uint32, tag = "5")]
    pub height: u32,
}
impl ::prost::Name for RegionOfInterest2D {
    const NAME: &'static str = "RegionOfInterest2D";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.RegionOfInterest2D".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.RegionOfInterest2D".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SuctionGrasp {
    #[prost(string, tag = "1")]
    pub uuid: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub item_uuid: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(double, tag = "4")]
    pub quality: f64,
    #[prost(double, tag = "5")]
    pub max_suction_surface_length: f64,
    #[prost(double, tag = "6")]
    pub max_suction_surface_width: f64,
}
impl ::prost::Name for SuctionGrasp {
    const NAME: &'static str = "SuctionGrasp";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.SuctionGrasp".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.SuctionGrasp".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RegionOfInterest3D {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "2")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(message, optional, tag = "3")]
    pub primitive: ::core::option::Option<super::super::shape_msgs::msg::SolidPrimitive>,
}
impl ::prost::Name for RegionOfInterest3D {
    const NAME: &'static str = "RegionOfInterest3D";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.RegionOfInterest3D".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.RegionOfInterest3D".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct GridSize {
    #[prost(uint32, tag = "1")]
    pub x: u32,
    #[prost(uint32, tag = "2")]
    pub y: u32,
}
impl ::prost::Name for GridSize {
    const NAME: &'static str = "GridSize";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.GridSize".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.GridSize".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct RangeValue {
    #[prost(double, tag = "1")]
    pub min: f64,
    #[prost(double, tag = "2")]
    pub max: f64,
    #[prost(double, tag = "3")]
    pub mean: f64,
}
impl ::prost::Name for RangeValue {
    const NAME: &'static str = "RangeValue";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.RangeValue".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.RangeValue".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct CellFillingLevel {
    #[prost(message, optional, tag = "1")]
    pub cell_size: ::core::option::Option<Rectangle>,
    #[prost(message, optional, tag = "2")]
    pub cell_position: ::core::option::Option<super::super::geometry_msgs::msg::Point>,
    #[prost(message, optional, tag = "3")]
    pub level_in_percent: ::core::option::Option<RangeValue>,
    #[prost(message, optional, tag = "4")]
    pub level_free_in_meters: ::core::option::Option<RangeValue>,
    #[prost(double, tag = "5")]
    pub coverage: f64,
}
impl ::prost::Name for CellFillingLevel {
    const NAME: &'static str = "CellFillingLevel";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.CellFillingLevel".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.CellFillingLevel".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LoadCarrierWithFillingLevel {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(string, tag = "2")]
    pub r#type: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "3")]
    pub outer_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "4")]
    pub inner_dimensions: ::core::option::Option<Box>,
    #[prost(message, optional, tag = "5")]
    pub rim_thickness: ::core::option::Option<Rectangle>,
    #[prost(double, tag = "6")]
    pub rim_step_height: f64,
    #[prost(message, optional, tag = "7")]
    pub rim_ledge: ::core::option::Option<Rectangle>,
    #[prost(double, tag = "8")]
    pub height_open_side: f64,
    #[prost(message, optional, tag = "9")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(bool, tag = "10")]
    pub overfilled: bool,
    #[prost(message, optional, tag = "11")]
    pub overall_filling_level: ::core::option::Option<CellFillingLevel>,
    #[prost(message, repeated, tag = "12")]
    pub cells_filling_levels: ::prost::alloc::vec::Vec<CellFillingLevel>,
    #[prost(message, optional, tag = "13")]
    pub filling_level_cell_count: ::core::option::Option<GridSize>,
}
impl ::prost::Name for LoadCarrierWithFillingLevel {
    const NAME: &'static str = "LoadCarrierWithFillingLevel";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.LoadCarrierWithFillingLevel"
            .into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.LoadCarrierWithFillingLevel"
            .into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Tag {
    #[prost(string, tag = "1")]
    pub id: ::prost::alloc::string::String,
    #[prost(double, tag = "2")]
    pub size: f64,
}
impl ::prost::Name for Tag {
    const NAME: &'static str = "Tag";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.Tag".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.Tag".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DetectedTag {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "2")]
    pub tag: ::core::option::Option<Tag>,
    #[prost(message, optional, tag = "3")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::PoseStamped>,
    #[prost(string, tag = "4")]
    pub instance_id: ::prost::alloc::string::String,
}
impl ::prost::Name for DetectedTag {
    const NAME: &'static str = "DetectedTag";
    const PACKAGE: &'static str = "make87_messages_ros2.rolling.rc_reason_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.rolling.rc_reason_msgs.msg.DetectedTag".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.rolling.rc_reason_msgs.msg.DetectedTag".into()
    }
}
