use serde::{Deserialize, Serialize};
use serde_with::serde_as;
#[serde_as]
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OdomInfo {
pub header: crate::std_msgs::msg::Header,
pub lost: bool,
pub matches: i32,
pub inliers: i32,
pub icp_inliers_ratio: f32,
pub icp_rotation: f32,
pub icp_translation: f32,
pub icp_structural_complexity: f32,
pub icp_structural_distribution: f32,
pub icp_correspondences: i32,
#[serde_as(as = "[_; 36]")]
pub covariance: [f64; 36],
pub features: i32,
pub local_map_size: i32,
pub local_scan_map_size: i32,
pub local_key_frames: i32,
pub local_bundle_outliers: i32,
pub local_bundle_constraints: i32,
pub local_bundle_time: f32,
pub key_frame_added: bool,
pub time_estimation: f32,
pub time_particle_filtering: f32,
pub stamp: f32,
pub interval: f32,
pub distance_travelled: f32,
pub memory_usage: i32,
pub gravity_roll_error: f32,
pub gravity_pitch_error: f32,
pub local_bundle_ids: Vec<i32>,
pub local_bundle_models: Vec<crate::rtabmap_msgs::msg::CameraModels>,
pub local_bundle_poses: Vec<crate::geometry_msgs::msg::Pose>,
pub transform: crate::geometry_msgs::msg::Transform,
pub transform_filtered: crate::geometry_msgs::msg::Transform,
pub transform_ground_truth: crate::geometry_msgs::msg::Transform,
pub guess: crate::geometry_msgs::msg::Transform,
#[serde(rename = "type")] pub type_: i32,
pub words_keys: Vec<i32>,
pub words_values: Vec<crate::rtabmap_msgs::msg::KeyPoint>,
pub word_matches: Vec<i32>,
pub word_inliers: Vec<i32>,
pub local_map_keys: Vec<i32>,
pub local_map_values: Vec<crate::rtabmap_msgs::msg::Point3f>,
pub local_scan_map: crate::sensor_msgs::msg::PointCloud2,
pub ref_corners: Vec<crate::rtabmap_msgs::msg::Point2f>,
pub new_corners: Vec<crate::rtabmap_msgs::msg::Point2f>,
pub corner_inliers: Vec<i32>,
}
impl Default for OdomInfo {
fn default() -> Self {
OdomInfo {
header: crate::std_msgs::msg::Header::default(),
lost: false,
matches: 0,
inliers: 0,
icp_inliers_ratio: 0.0,
icp_rotation: 0.0,
icp_translation: 0.0,
icp_structural_complexity: 0.0,
icp_structural_distribution: 0.0,
icp_correspondences: 0,
covariance: [0.0; 36],
features: 0,
local_map_size: 0,
local_scan_map_size: 0,
local_key_frames: 0,
local_bundle_outliers: 0,
local_bundle_constraints: 0,
local_bundle_time: 0.0,
key_frame_added: false,
time_estimation: 0.0,
time_particle_filtering: 0.0,
stamp: 0.0,
interval: 0.0,
distance_travelled: 0.0,
memory_usage: 0,
gravity_roll_error: 0.0,
gravity_pitch_error: 0.0,
local_bundle_ids: Vec::new(),
local_bundle_models: Vec::new(),
local_bundle_poses: Vec::new(),
transform: crate::geometry_msgs::msg::Transform::default(),
transform_filtered: crate::geometry_msgs::msg::Transform::default(),
transform_ground_truth: crate::geometry_msgs::msg::Transform::default(),
guess: crate::geometry_msgs::msg::Transform::default(),
type_: 0,
words_keys: Vec::new(),
words_values: Vec::new(),
word_matches: Vec::new(),
word_inliers: Vec::new(),
local_map_keys: Vec::new(),
local_map_values: Vec::new(),
local_scan_map: crate::sensor_msgs::msg::PointCloud2::default(),
ref_corners: Vec::new(),
new_corners: Vec::new(),
corner_inliers: Vec::new(),
}
}
}
impl ros2_client::Message for OdomInfo {}