Skip to content

Commit 7fcc962

Browse files
committed
fix: the internal transform fuction expected a xyzi pointcloud to adjusted the code
Signed-off-by: Kenzo Lobos-Tsunekawa <kenzo.lobos@tier4.jp>
1 parent 4fa23be commit 7fcc962

File tree

1 file changed

+11
-17
lines changed
  • perception/lidar_apollo_instance_segmentation/src

1 file changed

+11
-17
lines changed

Diff for: perception/lidar_apollo_instance_segmentation/src/detector.cpp

+11-17
Original file line numberDiff line numberDiff line change
@@ -79,37 +79,31 @@ bool LidarApolloInstanceSegmentation::transformCloud(
7979
float z_offset)
8080
{
8181
// TODO(mitsudome-r): remove conversion once pcl_ros transform are available.
82-
pcl::PointCloud<pcl::PointXYZI> pcl_input, pcl_transformed_cloud;
83-
pcl::fromROSMsg(input, pcl_input);
82+
RCLCPP_INFO(
83+
node_->get_logger(), "input frame_id: %s input_points=%d", input.header.frame_id.c_str(),
84+
input.width * input.height);
8485

8586
// transform pointcloud to target_frame
8687
if (target_frame_ != input.header.frame_id) {
8788
try {
8889
geometry_msgs::msg::TransformStamped transform_stamped;
8990
transform_stamped = tf_buffer_.lookupTransform(
9091
target_frame_, input.header.frame_id, input.header.stamp, std::chrono::milliseconds(500));
91-
Eigen::Matrix4f affine_matrix =
92-
tf2::transformToEigen(transform_stamped.transform).matrix().cast<float>();
93-
autoware::universe_utils::transformPointCloud(
94-
pcl_input, pcl_transformed_cloud, affine_matrix);
95-
transformed_cloud.header.frame_id = target_frame_;
96-
pcl_transformed_cloud.header.frame_id = target_frame_;
92+
93+
tf2::doTransform(input, transformed_cloud, transform_stamped);
9794
} catch (tf2::TransformException & ex) {
9895
RCLCPP_WARN(node_->get_logger(), "%s", ex.what());
9996
return false;
10097
}
10198
} else {
102-
pcl_transformed_cloud = pcl_input;
99+
transformed_cloud = input;
103100
}
104101

105102
// move pointcloud z_offset in z axis
106-
pcl::PointCloud<pcl::PointXYZI> pointcloud_with_z_offset;
107-
Eigen::Affine3f z_up_translation(Eigen::Translation3f(0, 0, z_offset));
108-
Eigen::Matrix4f z_up_transform = z_up_translation.matrix();
109-
autoware::universe_utils::transformPointCloud(
110-
pcl_transformed_cloud, pcl_transformed_cloud, z_up_transform);
111-
112-
pcl::toROSMsg(pcl_transformed_cloud, transformed_cloud);
103+
for (sensor_msgs::PointCloud2Iterator<float> iter_z(transformed_cloud, "z");
104+
iter_z != iter_z.end(); ++iter_z) {
105+
*iter_z += z_offset;
106+
}
113107

114108
return true;
115109
}
@@ -134,7 +128,7 @@ bool LidarApolloInstanceSegmentation::detectDynamicObjects(
134128
pcl_pointcloud_raw.width = transformed_cloud.width;
135129
pcl_pointcloud_raw.height = transformed_cloud.height;
136130
pcl_pointcloud_raw.is_dense = transformed_cloud.is_dense == 1;
137-
pcl_pointcloud_raw.resize(transformed_cloud.width * transformed_cloud.height);
131+
pcl_pointcloud_raw.reserve(transformed_cloud.width * transformed_cloud.height);
138132

139133
sensor_msgs::PointCloud2ConstIterator<float> it_x(transformed_cloud, "x");
140134
sensor_msgs::PointCloud2ConstIterator<float> it_y(transformed_cloud, "y");

0 commit comments

Comments
 (0)