@@ -79,37 +79,31 @@ bool LidarApolloInstanceSegmentation::transformCloud(
79
79
float z_offset)
80
80
{
81
81
// 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 );
84
85
85
86
// transform pointcloud to target_frame
86
87
if (target_frame_ != input.header .frame_id ) {
87
88
try {
88
89
geometry_msgs::msg::TransformStamped transform_stamped;
89
90
transform_stamped = tf_buffer_.lookupTransform (
90
91
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);
97
94
} catch (tf2::TransformException & ex) {
98
95
RCLCPP_WARN (node_->get_logger (), " %s" , ex.what ());
99
96
return false ;
100
97
}
101
98
} else {
102
- pcl_transformed_cloud = pcl_input ;
99
+ transformed_cloud = input ;
103
100
}
104
101
105
102
// 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
+ }
113
107
114
108
return true ;
115
109
}
@@ -134,7 +128,7 @@ bool LidarApolloInstanceSegmentation::detectDynamicObjects(
134
128
pcl_pointcloud_raw.width = transformed_cloud.width ;
135
129
pcl_pointcloud_raw.height = transformed_cloud.height ;
136
130
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 );
138
132
139
133
sensor_msgs::PointCloud2ConstIterator<float > it_x (transformed_cloud, " x" );
140
134
sensor_msgs::PointCloud2ConstIterator<float > it_y (transformed_cloud, " y" );
0 commit comments