From 66ae56764549d5cd2badf12ca32a20069b3d31be Mon Sep 17 00:00:00 2001 From: Vincent Richard Date: Sat, 8 Apr 2023 10:30:43 +0900 Subject: [PATCH] add "name" field check cleaning Signed-off-by: Vincent Richard --- .../src/utility/utilities.cpp | 39 ++++++++++++------- 1 file changed, 26 insertions(+), 13 deletions(-) diff --git a/sensing/pointcloud_preprocessor/src/utility/utilities.cpp b/sensing/pointcloud_preprocessor/src/utility/utilities.cpp index 9245970a68fee..fe9fde7301fd7 100644 --- a/sensing/pointcloud_preprocessor/src/utility/utilities.cpp +++ b/sensing/pointcloud_preprocessor/src/utility/utilities.cpp @@ -158,19 +158,23 @@ bool is_data_layout_compatible_with_PointXYZI(const sensor_msgs::msg::PointCloud } bool same_layout = true; const auto & field_x = input.fields.at(static_cast(PointIndex::X)); - same_layout &= offsetof(PointXYZI, x) == field_x.offset; + same_layout &= field_x.name == "x"; + same_layout &= field_x.offset == offsetof(PointXYZI, x); same_layout &= field_x.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_x.count == 1; const auto & field_y = input.fields.at(static_cast(PointIndex::Y)); - same_layout &= offsetof(PointXYZI, y) == field_y.offset; + same_layout &= field_y.name == "y"; + same_layout &= field_y.offset == offsetof(PointXYZI, y); same_layout &= field_y.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_y.count == 1; const auto & field_z = input.fields.at(static_cast(PointIndex::Z)); - same_layout &= offsetof(PointXYZI, z) == field_z.offset; + same_layout &= field_z.name == "z"; + same_layout &= field_z.offset == offsetof(PointXYZI, z); same_layout &= field_z.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_z.count == 1; const auto & field_intensity = input.fields.at(static_cast(PointIndex::Intensity)); - same_layout &= offsetof(PointXYZI, intensity) == field_intensity.offset; + same_layout &= field_intensity.name == "intensity"; + same_layout &= field_intensity.offset == offsetof(PointXYZI, intensity); same_layout &= field_intensity.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_intensity.count == 1; return same_layout; @@ -185,39 +189,48 @@ bool is_data_layout_compatible_with_PointXYZIRADRT(const sensor_msgs::msg::Point } bool same_layout = true; const auto & field_x = input.fields.at(static_cast(PointIndex::X)); - same_layout &= offsetof(PointXYZIRADRT, x) == field_x.offset; + same_layout &= field_x.name == "x"; + same_layout &= field_x.offset == offsetof(PointXYZIRADRT, x); same_layout &= field_x.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_x.count == 1; const auto & field_y = input.fields.at(static_cast(PointIndex::Y)); - same_layout &= offsetof(PointXYZIRADRT, y) == field_y.offset; + same_layout &= field_y.name == "y"; + same_layout &= field_y.offset == offsetof(PointXYZIRADRT, y); same_layout &= field_y.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_y.count == 1; const auto & field_z = input.fields.at(static_cast(PointIndex::Z)); - same_layout &= offsetof(PointXYZIRADRT, z) == field_z.offset; + same_layout &= field_z.name == "z"; + same_layout &= field_z.offset == offsetof(PointXYZIRADRT, z); same_layout &= field_z.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_z.count == 1; const auto & field_intensity = input.fields.at(static_cast(PointIndex::Intensity)); - same_layout &= offsetof(PointXYZIRADRT, intensity) == field_intensity.offset; + same_layout &= field_intensity.name == "intensity"; + same_layout &= field_intensity.offset == offsetof(PointXYZIRADRT, intensity); same_layout &= field_intensity.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_intensity.count == 1; const auto & field_ring = input.fields.at(static_cast(PointIndex::Ring)); - same_layout &= offsetof(PointXYZIRADRT, ring) == field_ring.offset; + same_layout &= field_ring.name == "ring"; + same_layout &= field_ring.offset == offsetof(PointXYZIRADRT, ring); same_layout &= field_ring.datatype == sensor_msgs::msg::PointField::UINT16; same_layout &= field_ring.count == 1; const auto & field_azimuth = input.fields.at(static_cast(PointIndex::Azimuth)); - same_layout &= offsetof(PointXYZIRADRT, azimuth) == field_azimuth.offset; + same_layout &= field_azimuth.name == "azimuth"; + same_layout &= field_azimuth.offset == offsetof(PointXYZIRADRT, azimuth); same_layout &= field_azimuth.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_azimuth.count == 1; const auto & field_distance = input.fields.at(static_cast(PointIndex::Distance)); - same_layout &= offsetof(PointXYZIRADRT, distance) == field_distance.offset; + same_layout &= field_distance.name == "distance"; + same_layout &= field_distance.offset == offsetof(PointXYZIRADRT, distance); same_layout &= field_distance.datatype == sensor_msgs::msg::PointField::FLOAT32; same_layout &= field_distance.count == 1; const auto & field_return_type = input.fields.at(static_cast(PointIndex::ReturnType)); - same_layout &= offsetof(PointXYZIRADRT, return_type) == field_return_type.offset; + same_layout &= field_return_type.name == "return_type"; + same_layout &= field_return_type.offset == offsetof(PointXYZIRADRT, return_type); same_layout &= field_return_type.datatype == sensor_msgs::msg::PointField::UINT8; same_layout &= field_return_type.count == 1; const auto & field_time_stamp = input.fields.at(static_cast(PointIndex::TimeStamp)); - same_layout &= offsetof(PointXYZIRADRT, time_stamp) == field_time_stamp.offset; + same_layout &= field_time_stamp.name == "time_stamp"; + same_layout &= field_time_stamp.offset == offsetof(PointXYZIRADRT, time_stamp); same_layout &= field_time_stamp.datatype == sensor_msgs::msg::PointField::FLOAT64; same_layout &= field_time_stamp.count == 1; return same_layout;