// This file is @generated by prost-build.
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Link {
    #[prost(int32, tag = "1")]
    pub from_id: i32,
    #[prost(int32, tag = "2")]
    pub to_id: i32,
    #[prost(int32, tag = "3")]
    pub r#type: i32,
    #[prost(message, optional, tag = "4")]
    pub transform: ::core::option::Option<super::super::geometry_msgs::msg::Transform>,
    #[prost(double, repeated, tag = "5")]
    pub information: ::prost::alloc::vec::Vec<f64>,
}
impl ::prost::Name for Link {
    const NAME: &'static str = "Link";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Link".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Link".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MapGraph {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "2")]
    pub map_to_odom: ::core::option::Option<super::super::geometry_msgs::msg::Transform>,
    #[prost(int32, repeated, tag = "3")]
    pub poses_id: ::prost::alloc::vec::Vec<i32>,
    #[prost(message, repeated, tag = "4")]
    pub poses: ::prost::alloc::vec::Vec<super::super::geometry_msgs::msg::Pose>,
    #[prost(message, repeated, tag = "5")]
    pub links: ::prost::alloc::vec::Vec<Link>,
}
impl ::prost::Name for MapGraph {
    const NAME: &'static str = "MapGraph";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.MapGraph".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.MapGraph".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Point2f {
    #[prost(float, tag = "1")]
    pub x: f32,
    #[prost(float, tag = "2")]
    pub y: f32,
}
impl ::prost::Name for Point2f {
    const NAME: &'static str = "Point2f";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Point2f".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Point2f".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KeyPoint {
    #[prost(message, optional, tag = "1")]
    pub pt: ::core::option::Option<Point2f>,
    #[prost(float, tag = "2")]
    pub size: f32,
    #[prost(float, tag = "3")]
    pub angle: f32,
    #[prost(float, tag = "4")]
    pub response: f32,
    #[prost(int32, tag = "5")]
    pub octave: i32,
    #[prost(int32, tag = "6")]
    pub class_id: i32,
}
impl ::prost::Name for KeyPoint {
    const NAME: &'static str = "KeyPoint";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.KeyPoint".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.KeyPoint".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Point3f {
    #[prost(float, tag = "1")]
    pub x: f32,
    #[prost(float, tag = "2")]
    pub y: f32,
    #[prost(float, tag = "3")]
    pub z: f32,
}
impl ::prost::Name for Point3f {
    const NAME: &'static str = "Point3f";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Point3f".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Point3f".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EnvSensor {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(int32, tag = "2")]
    pub r#type: i32,
    #[prost(double, tag = "3")]
    pub value: f64,
}
impl ::prost::Name for EnvSensor {
    const NAME: &'static str = "EnvSensor";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.EnvSensor".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.EnvSensor".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GlobalDescriptor {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(int32, tag = "2")]
    pub r#type: i32,
    #[prost(uint32, repeated, tag = "3")]
    pub info: ::prost::alloc::vec::Vec<u32>,
    #[prost(uint32, repeated, tag = "4")]
    pub data: ::prost::alloc::vec::Vec<u32>,
}
impl ::prost::Name for GlobalDescriptor {
    const NAME: &'static str = "GlobalDescriptor";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.GlobalDescriptor".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.GlobalDescriptor".into()
    }
}
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct Gps {
    #[prost(double, tag = "1")]
    pub stamp: f64,
    #[prost(double, tag = "2")]
    pub longitude: f64,
    #[prost(double, tag = "3")]
    pub latitude: f64,
    #[prost(double, tag = "4")]
    pub altitude: f64,
    #[prost(double, tag = "5")]
    pub error: f64,
    #[prost(double, tag = "6")]
    pub bearing: f64,
}
impl ::prost::Name for Gps {
    const NAME: &'static str = "GPS";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.GPS".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.GPS".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LandmarkDetection {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(string, tag = "2")]
    pub landmark_frame_id: ::prost::alloc::string::String,
    #[prost(int32, tag = "3")]
    pub id: i32,
    #[prost(float, tag = "4")]
    pub size: f32,
    #[prost(message, optional, tag = "5")]
    pub pose: ::core::option::Option<
        super::super::geometry_msgs::msg::PoseWithCovariance,
    >,
}
impl ::prost::Name for LandmarkDetection {
    const NAME: &'static str = "LandmarkDetection";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.LandmarkDetection".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.LandmarkDetection".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SensorData {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "2")]
    pub left: ::core::option::Option<super::super::sensor_msgs::msg::Image>,
    #[prost(message, optional, tag = "3")]
    pub right: ::core::option::Option<super::super::sensor_msgs::msg::Image>,
    #[prost(uint32, repeated, tag = "4")]
    pub left_compressed: ::prost::alloc::vec::Vec<u32>,
    #[prost(uint32, repeated, tag = "5")]
    pub right_compressed: ::prost::alloc::vec::Vec<u32>,
    #[prost(message, repeated, tag = "6")]
    pub left_camera_info: ::prost::alloc::vec::Vec<
        super::super::sensor_msgs::msg::CameraInfo,
    >,
    #[prost(message, repeated, tag = "7")]
    pub right_camera_info: ::prost::alloc::vec::Vec<
        super::super::sensor_msgs::msg::CameraInfo,
    >,
    #[prost(message, repeated, tag = "8")]
    pub local_transform: ::prost::alloc::vec::Vec<
        super::super::geometry_msgs::msg::Transform,
    >,
    #[prost(message, optional, tag = "9")]
    pub laser_scan: ::core::option::Option<super::super::sensor_msgs::msg::PointCloud2>,
    #[prost(uint32, repeated, tag = "10")]
    pub laser_scan_compressed: ::prost::alloc::vec::Vec<u32>,
    #[prost(int32, tag = "11")]
    pub laser_scan_max_pts: i32,
    #[prost(float, tag = "12")]
    pub laser_scan_max_range: f32,
    #[prost(int32, tag = "13")]
    pub laser_scan_format: i32,
    #[prost(message, optional, tag = "14")]
    pub laser_scan_local_transform: ::core::option::Option<
        super::super::geometry_msgs::msg::Transform,
    >,
    #[prost(uint32, repeated, tag = "15")]
    pub user_data: ::prost::alloc::vec::Vec<u32>,
    #[prost(uint32, repeated, tag = "16")]
    pub grid_ground: ::prost::alloc::vec::Vec<u32>,
    #[prost(uint32, repeated, tag = "17")]
    pub grid_obstacles: ::prost::alloc::vec::Vec<u32>,
    #[prost(uint32, repeated, tag = "18")]
    pub grid_empty_cells: ::prost::alloc::vec::Vec<u32>,
    #[prost(float, tag = "19")]
    pub grid_cell_size: f32,
    #[prost(message, optional, tag = "20")]
    pub grid_view_point: ::core::option::Option<Point3f>,
    #[prost(message, repeated, tag = "21")]
    pub key_points: ::prost::alloc::vec::Vec<KeyPoint>,
    #[prost(message, repeated, tag = "22")]
    pub points: ::prost::alloc::vec::Vec<Point3f>,
    #[prost(uint32, repeated, tag = "23")]
    pub descriptors: ::prost::alloc::vec::Vec<u32>,
    #[prost(message, repeated, tag = "24")]
    pub global_descriptors: ::prost::alloc::vec::Vec<GlobalDescriptor>,
    #[prost(message, repeated, tag = "25")]
    pub env_sensors: ::prost::alloc::vec::Vec<EnvSensor>,
    #[prost(message, optional, tag = "26")]
    pub imu: ::core::option::Option<super::super::sensor_msgs::msg::Imu>,
    #[prost(message, optional, tag = "27")]
    pub imu_local_transform: ::core::option::Option<
        super::super::geometry_msgs::msg::Transform,
    >,
    #[prost(message, repeated, tag = "28")]
    pub landmarks: ::prost::alloc::vec::Vec<LandmarkDetection>,
    #[prost(message, optional, tag = "29")]
    pub ground_truth_pose: ::core::option::Option<
        super::super::geometry_msgs::msg::Pose,
    >,
    #[prost(message, optional, tag = "30")]
    pub gps: ::core::option::Option<Gps>,
}
impl ::prost::Name for SensorData {
    const NAME: &'static str = "SensorData";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.SensorData".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.SensorData".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Node {
    #[prost(int32, tag = "1")]
    pub id: i32,
    #[prost(int32, tag = "2")]
    pub map_id: i32,
    #[prost(int32, tag = "3")]
    pub weight: i32,
    #[prost(double, tag = "4")]
    pub stamp: f64,
    #[prost(string, tag = "5")]
    pub label: ::prost::alloc::string::String,
    #[prost(message, optional, tag = "6")]
    pub pose: ::core::option::Option<super::super::geometry_msgs::msg::Pose>,
    #[prost(int32, repeated, tag = "7")]
    pub word_id_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "8")]
    pub word_id_values: ::prost::alloc::vec::Vec<i32>,
    #[prost(message, repeated, tag = "9")]
    pub word_kpts: ::prost::alloc::vec::Vec<KeyPoint>,
    #[prost(message, repeated, tag = "10")]
    pub word_pts: ::prost::alloc::vec::Vec<Point3f>,
    #[prost(uint32, repeated, tag = "11")]
    pub word_descriptors: ::prost::alloc::vec::Vec<u32>,
    #[prost(message, optional, tag = "12")]
    pub data: ::core::option::Option<SensorData>,
}
impl ::prost::Name for Node {
    const NAME: &'static str = "Node";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Node".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Node".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct MapData {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "2")]
    pub graph: ::core::option::Option<MapGraph>,
    #[prost(message, repeated, tag = "3")]
    pub nodes: ::prost::alloc::vec::Vec<Node>,
}
impl ::prost::Name for MapData {
    const NAME: &'static str = "MapData";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.MapData".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.MapData".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Path {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(int32, repeated, tag = "2")]
    pub node_ids: ::prost::alloc::vec::Vec<i32>,
    #[prost(message, repeated, tag = "3")]
    pub poses: ::prost::alloc::vec::Vec<super::super::geometry_msgs::msg::Pose>,
}
impl ::prost::Name for Path {
    const NAME: &'static str = "Path";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Path".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Path".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CameraModel {
    #[prost(message, optional, tag = "1")]
    pub camera_info: ::core::option::Option<super::super::sensor_msgs::msg::CameraInfo>,
    #[prost(message, optional, tag = "2")]
    pub local_transform: ::core::option::Option<
        super::super::geometry_msgs::msg::Transform,
    >,
}
impl ::prost::Name for CameraModel {
    const NAME: &'static str = "CameraModel";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.CameraModel".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.CameraModel".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CameraModels {
    #[prost(message, repeated, tag = "1")]
    pub models: ::prost::alloc::vec::Vec<CameraModel>,
}
impl ::prost::Name for CameraModels {
    const NAME: &'static str = "CameraModels";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.CameraModels".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.CameraModels".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct LandmarkDetections {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, repeated, tag = "2")]
    pub landmarks: ::prost::alloc::vec::Vec<LandmarkDetection>,
}
impl ::prost::Name for LandmarkDetections {
    const NAME: &'static str = "LandmarkDetections";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.LandmarkDetections".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.LandmarkDetections".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RgbdImage {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "2")]
    pub rgb_camera_info: ::core::option::Option<
        super::super::sensor_msgs::msg::CameraInfo,
    >,
    #[prost(message, optional, tag = "3")]
    pub depth_camera_info: ::core::option::Option<
        super::super::sensor_msgs::msg::CameraInfo,
    >,
    #[prost(message, optional, tag = "4")]
    pub rgb: ::core::option::Option<super::super::sensor_msgs::msg::Image>,
    #[prost(message, optional, tag = "5")]
    pub depth: ::core::option::Option<super::super::sensor_msgs::msg::Image>,
    #[prost(message, optional, tag = "6")]
    pub rgb_compressed: ::core::option::Option<
        super::super::sensor_msgs::msg::CompressedImage,
    >,
    #[prost(message, optional, tag = "7")]
    pub depth_compressed: ::core::option::Option<
        super::super::sensor_msgs::msg::CompressedImage,
    >,
    #[prost(message, repeated, tag = "8")]
    pub key_points: ::prost::alloc::vec::Vec<KeyPoint>,
    #[prost(message, repeated, tag = "9")]
    pub points: ::prost::alloc::vec::Vec<Point3f>,
    #[prost(uint32, repeated, tag = "10")]
    pub descriptors: ::prost::alloc::vec::Vec<u32>,
    #[prost(message, optional, tag = "11")]
    pub global_descriptor: ::core::option::Option<GlobalDescriptor>,
}
impl ::prost::Name for RgbdImage {
    const NAME: &'static str = "RGBDImage";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.RGBDImage".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.RGBDImage".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct RgbdImages {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, repeated, tag = "2")]
    pub rgbd_images: ::prost::alloc::vec::Vec<RgbdImage>,
}
impl ::prost::Name for RgbdImages {
    const NAME: &'static str = "RGBDImages";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.RGBDImages".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.RGBDImages".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Goal {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(int32, tag = "2")]
    pub node_id: i32,
    #[prost(string, tag = "3")]
    pub node_label: ::prost::alloc::string::String,
    #[prost(string, tag = "4")]
    pub frame_id: ::prost::alloc::string::String,
}
impl ::prost::Name for Goal {
    const NAME: &'static str = "Goal";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Goal".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Goal".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct UserData {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(uint32, tag = "2")]
    pub rows: u32,
    #[prost(uint32, tag = "3")]
    pub cols: u32,
    #[prost(uint32, tag = "4")]
    pub r#type: u32,
    #[prost(uint32, repeated, tag = "5")]
    pub data: ::prost::alloc::vec::Vec<u32>,
}
impl ::prost::Name for UserData {
    const NAME: &'static str = "UserData";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.UserData".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.UserData".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct OdomInfo {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(bool, tag = "2")]
    pub lost: bool,
    #[prost(int32, tag = "3")]
    pub matches: i32,
    #[prost(int32, tag = "4")]
    pub inliers: i32,
    #[prost(float, tag = "5")]
    pub icp_inliers_ratio: f32,
    #[prost(float, tag = "6")]
    pub icp_rotation: f32,
    #[prost(float, tag = "7")]
    pub icp_translation: f32,
    #[prost(float, tag = "8")]
    pub icp_structural_complexity: f32,
    #[prost(float, tag = "9")]
    pub icp_structural_distribution: f32,
    #[prost(int32, tag = "10")]
    pub icp_correspondences: i32,
    #[prost(double, repeated, tag = "11")]
    pub covariance: ::prost::alloc::vec::Vec<f64>,
    #[prost(int32, tag = "12")]
    pub features: i32,
    #[prost(int32, tag = "13")]
    pub local_map_size: i32,
    #[prost(int32, tag = "14")]
    pub local_scan_map_size: i32,
    #[prost(int32, tag = "15")]
    pub local_key_frames: i32,
    #[prost(int32, tag = "16")]
    pub local_bundle_outliers: i32,
    #[prost(int32, tag = "17")]
    pub local_bundle_constraints: i32,
    #[prost(float, tag = "18")]
    pub local_bundle_time: f32,
    #[prost(bool, tag = "19")]
    pub key_frame_added: bool,
    #[prost(float, tag = "20")]
    pub time_estimation: f32,
    #[prost(float, tag = "21")]
    pub time_particle_filtering: f32,
    #[prost(float, tag = "22")]
    pub stamp: f32,
    #[prost(float, tag = "23")]
    pub interval: f32,
    #[prost(float, tag = "24")]
    pub distance_travelled: f32,
    #[prost(int32, tag = "25")]
    pub memory_usage: i32,
    #[prost(float, tag = "26")]
    pub gravity_roll_error: f32,
    #[prost(float, tag = "27")]
    pub gravity_pitch_error: f32,
    #[prost(int32, repeated, tag = "28")]
    pub local_bundle_ids: ::prost::alloc::vec::Vec<i32>,
    #[prost(message, repeated, tag = "29")]
    pub local_bundle_models: ::prost::alloc::vec::Vec<CameraModels>,
    #[prost(message, repeated, tag = "30")]
    pub local_bundle_poses: ::prost::alloc::vec::Vec<
        super::super::geometry_msgs::msg::Pose,
    >,
    #[prost(message, optional, tag = "31")]
    pub transform: ::core::option::Option<super::super::geometry_msgs::msg::Transform>,
    #[prost(message, optional, tag = "32")]
    pub transform_filtered: ::core::option::Option<
        super::super::geometry_msgs::msg::Transform,
    >,
    #[prost(message, optional, tag = "33")]
    pub transform_ground_truth: ::core::option::Option<
        super::super::geometry_msgs::msg::Transform,
    >,
    #[prost(message, optional, tag = "34")]
    pub guess: ::core::option::Option<super::super::geometry_msgs::msg::Transform>,
    #[prost(int32, tag = "35")]
    pub r#type: i32,
    #[prost(int32, repeated, tag = "36")]
    pub words_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(message, repeated, tag = "37")]
    pub words_values: ::prost::alloc::vec::Vec<KeyPoint>,
    #[prost(int32, repeated, tag = "38")]
    pub word_matches: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "39")]
    pub word_inliers: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "40")]
    pub local_map_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(message, repeated, tag = "41")]
    pub local_map_values: ::prost::alloc::vec::Vec<Point3f>,
    #[prost(message, optional, tag = "42")]
    pub local_scan_map: ::core::option::Option<
        super::super::sensor_msgs::msg::PointCloud2,
    >,
    #[prost(message, repeated, tag = "43")]
    pub ref_corners: ::prost::alloc::vec::Vec<Point2f>,
    #[prost(message, repeated, tag = "44")]
    pub new_corners: ::prost::alloc::vec::Vec<Point2f>,
    #[prost(int32, repeated, tag = "45")]
    pub corner_inliers: ::prost::alloc::vec::Vec<i32>,
}
impl ::prost::Name for OdomInfo {
    const NAME: &'static str = "OdomInfo";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.OdomInfo".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.OdomInfo".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScanDescriptor {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(message, optional, tag = "2")]
    pub scan: ::core::option::Option<super::super::sensor_msgs::msg::LaserScan>,
    #[prost(message, optional, tag = "3")]
    pub scan_cloud: ::core::option::Option<super::super::sensor_msgs::msg::PointCloud2>,
    #[prost(message, optional, tag = "4")]
    pub global_descriptor: ::core::option::Option<GlobalDescriptor>,
}
impl ::prost::Name for ScanDescriptor {
    const NAME: &'static str = "ScanDescriptor";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.ScanDescriptor".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.ScanDescriptor".into()
    }
}
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct Info {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<super::super::std_msgs::msg::Header>,
    #[prost(int32, tag = "2")]
    pub ref_id: i32,
    #[prost(int32, tag = "3")]
    pub loop_closure_id: i32,
    #[prost(int32, tag = "4")]
    pub proximity_detection_id: i32,
    #[prost(int32, tag = "5")]
    pub landmark_id: i32,
    #[prost(message, optional, tag = "6")]
    pub loop_closure_transform: ::core::option::Option<
        super::super::geometry_msgs::msg::Transform,
    >,
    #[prost(int32, repeated, tag = "7")]
    pub wm_state: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "8")]
    pub posterior_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(float, repeated, tag = "9")]
    pub posterior_values: ::prost::alloc::vec::Vec<f32>,
    #[prost(int32, repeated, tag = "10")]
    pub likelihood_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(float, repeated, tag = "11")]
    pub likelihood_values: ::prost::alloc::vec::Vec<f32>,
    #[prost(int32, repeated, tag = "12")]
    pub raw_likelihood_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(float, repeated, tag = "13")]
    pub raw_likelihood_values: ::prost::alloc::vec::Vec<f32>,
    #[prost(int32, repeated, tag = "14")]
    pub weights_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "15")]
    pub weights_values: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, repeated, tag = "16")]
    pub labels_keys: ::prost::alloc::vec::Vec<i32>,
    #[prost(string, repeated, tag = "17")]
    pub labels_values: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(string, repeated, tag = "18")]
    pub stats_keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
    #[prost(float, repeated, tag = "19")]
    pub stats_values: ::prost::alloc::vec::Vec<f32>,
    #[prost(int32, repeated, tag = "20")]
    pub local_path: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, tag = "21")]
    pub current_goal_id: i32,
    #[prost(message, optional, tag = "22")]
    pub odom_cache: ::core::option::Option<MapGraph>,
}
impl ::prost::Name for Info {
    const NAME: &'static str = "Info";
    const PACKAGE: &'static str = "make87_messages_ros2.jazzy.rtabmap_msgs.msg";
    fn full_name() -> ::prost::alloc::string::String {
        "make87_messages_ros2.jazzy.rtabmap_msgs.msg.Info".into()
    }
    fn type_url() -> ::prost::alloc::string::String {
        "/make87_messages_ros2.jazzy.rtabmap_msgs.msg.Info".into()
    }
}
