Skip to content

Commit

Permalink
fix intensity of PointXYZIRC from float to uint8
Browse files Browse the repository at this point in the history
  • Loading branch information
a-maumau committed May 7, 2024
1 parent 501a124 commit ab5777b
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 23 deletions.
16 changes: 4 additions & 12 deletions common/autoware_point_types/include/autoware_point_types/types.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -59,20 +59,13 @@ struct PointXYZIRC
float x{0.0F};
float y{0.0F};
float z{0.0F};
float intensity{0.0F};
union { // for memory alignment
uint16_t _data;
struct
{
uint8_t padding{0U};
uint8_t return_type{0U};
};
};
uint8_t intensity{0.0F};
uint8_t return_type{0U};
uint16_t channel{0U};
friend bool operator==(const PointXYZIRC & p1, const PointXYZIRC & p2) noexcept
{
return float_eq<float>(p1.x, p2.x) && float_eq<float>(p1.y, p2.y) &&
float_eq<float>(p1.z, p2.z) && float_eq<float>(p1.intensity, p2.intensity) &&
float_eq<float>(p1.z, p2.z) && p1.intensity == p2.intensity &&
p1.return_type == p2.return_type && p1.channel == p2.channel;
}
};
Expand Down Expand Up @@ -121,8 +114,7 @@ using PointXYZIRADRTGenerator = std::tuple<

POINT_CLOUD_REGISTER_POINT_STRUCT(
autoware_point_types::PointXYZIRC,
(float, x,
x)(float, y, y)(float, z, z)(float, intensity, intensity)(std::uint8_t, padding, padding)(
(float, x, x)(float, y, y)(float, z, z)(std::uint8_t, intensity, intensity)(
std::uint8_t, return_type, return_type)(std::uint16_t, channel, channel))

POINT_CLOUD_REGISTER_POINT_STRUCT(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ void PointCloudConcatenateDataSynchronizerComponent::convertToXYZICloud(
sensor_msgs::PointCloud2Iterator<float> it_z(*input_ptr, "z");

if (has_intensity) {
sensor_msgs::PointCloud2Iterator<float> it_i(*input_ptr, "intensity");
sensor_msgs::PointCloud2Iterator<uint8_t> it_i(*input_ptr, "intensity");
for (; it_x != it_x.end(); ++it_x, ++it_y, ++it_z, ++it_i) {
PointXYZI point;
point.x = *it_x;
Expand All @@ -527,7 +527,7 @@ void PointCloudConcatenateDataSynchronizerComponent::convertToXYZICloud(
point.x = *it_x;
point.y = *it_y;
point.z = *it_z;
point.intensity = 0.0f;
point.intensity = 0U;
output_modifier.push_back(std::move(point));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ void RingOutlierFilterComponent::faster_filter(
}
const float & intensity =
*reinterpret_cast<const float *>(&input->data[indices[i] + intensity_offset]);
output_ptr->intensity = intensity;
output_ptr->intensity = static_cast<uint8_t>(intensity);
const uint8_t & return_type =
*reinterpret_cast<const uint8_t *>(&input->data[indices[i] + return_type_offset]);
output_ptr->return_type = return_type;
Expand Down Expand Up @@ -190,7 +190,7 @@ void RingOutlierFilterComponent::faster_filter(
}
const float & intensity = *reinterpret_cast<const float *>(
&input->data[indices[walk_first_idx] + intensity_offset]);
outlier_ptr->intensity = intensity;
outlier_ptr->intensity = static_cast<uint8_t>(intensity);
const uint8_t & return_type = *reinterpret_cast<const uint8_t *>(
&input->data[indices[walk_first_idx] + return_type_offset]);
outlier_ptr->return_type = return_type;
Expand Down Expand Up @@ -227,7 +227,7 @@ void RingOutlierFilterComponent::faster_filter(
}
const float & intensity =
*reinterpret_cast<const float *>(&input->data[indices[i] + intensity_offset]);
output_ptr->intensity = intensity;
output_ptr->intensity = static_cast<uint8_t>(intensity);
const uint8_t & return_type =
*reinterpret_cast<const uint8_t *>(&input->data[indices[i] + return_type_offset]);
output_ptr->return_type = return_type;
Expand Down Expand Up @@ -255,7 +255,7 @@ void RingOutlierFilterComponent::faster_filter(
}
const float & intensity =
*reinterpret_cast<const float *>(&input->data[indices[i] + intensity_offset]);
outlier_ptr->intensity = intensity;
outlier_ptr->intensity = static_cast<uint8_t>(intensity);
const uint8_t & return_type =
*reinterpret_cast<const uint8_t *>(&input->data[indices[i] + return_type_offset]);
outlier_ptr->return_type = return_type;
Expand All @@ -267,10 +267,10 @@ void RingOutlierFilterComponent::faster_filter(
}
}

setUpPointCloudFormat(input, output, output_size, /*num_fields=*/7);
setUpPointCloudFormat(input, output, output_size, /*num_fields=*/6);

if (publish_outlier_pointcloud_) {
setUpPointCloudFormat(input, outlier_points, outlier_points_size, /*num_fields=*/7);
setUpPointCloudFormat(input, outlier_points, outlier_points_size, /*num_fields=*/6);
outlier_pointcloud_publisher_->publish(outlier_points);
}

Expand Down Expand Up @@ -351,9 +351,8 @@ void RingOutlierFilterComponent::setUpPointCloudFormat(
pcd_modifier.setPointCloud2Fields(
num_fields, "x", 1, sensor_msgs::msg::PointField::FLOAT32, "y", 1,
sensor_msgs::msg::PointField::FLOAT32, "z", 1, sensor_msgs::msg::PointField::FLOAT32,
"intensity", 1, sensor_msgs::msg::PointField::FLOAT32, "padding", 1,
sensor_msgs::msg::PointField::UINT8, "return_type", 1, sensor_msgs::msg::PointField::UINT8,
"channel", 1, sensor_msgs::msg::PointField::UINT16);
"intensity", 1, sensor_msgs::msg::PointField::UINT8, "return_type", 1,
sensor_msgs::msg::PointField::UINT8, "channel", 1, sensor_msgs::msg::PointField::UINT16);
}

} // namespace pointcloud_preprocessor
Expand Down

0 comments on commit ab5777b

Please sign in to comment.