Skip to content

Commit a0ac04f

Browse files
committed
Introduce transformPointCloud(WithNormals)
1 parent 7e83a03 commit a0ac04f

File tree

3 files changed

+95
-35
lines changed

3 files changed

+95
-35
lines changed

libraries/YarpCloudUtils/README.md

+37-35
Original file line numberDiff line numberDiff line change
@@ -28,41 +28,43 @@ Both `roboticslab::YarpCloudUtils::meshFromCloud` and `roboticslab::YarpCloudUti
2828
implement a set of [Point Cloud Library (PCL)](https://pointclouds.org/) algorithms.
2929
A variety of PCL classes are exposed in a highly configurable pipeline:
3030

31-
| PCL class | usage | point types | notes |
32-
|-------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|---------------------------|------------------------------|
33-
| [`pcl::ApproximateVoxelGrid`](https://pointclouds.org/documentation/classpcl_1_1_approximate_voxel_grid.html) | cloud resampling | any | |
34-
| [`pcl::BilateralFilter`](https://pointclouds.org/documentation/classpcl_1_1_bilateral_filter.html) | cloud filtering | XYZI(Normal) | |
35-
| [`pcl::BilateralUpsampling`](https://pointclouds.org/documentation/classpcl_1_1_bilateral_upsampling.html) | cloud processing | XYZRGBA | organized clouds only |
36-
| [`pcl::ConcaveHull`](https://pointclouds.org/documentation/classpcl_1_1_concave_hull.html) | mesh construction | any | |
37-
| [`pcl::ConvexHull`](https://pointclouds.org/documentation/classpcl_1_1_convex_hull.html) | mesh construction | any | |
38-
| [`pcl::CropBox`](https://pointclouds.org/documentation/classpcl_1_1_crop_box.html) | cloud filtering | any | |
39-
| [`pcl::FastBilateralFilter`](https://pointclouds.org/documentation/classpcl_1_1_fast_bilateral_filter.html) | cloud filtering | XYZ(RGBA) | organized clouds only |
40-
| [`pcl::FastBilateralFilterOMP`](https://pointclouds.org/documentation/classpcl_1_1_fast_bilateral_filter_o_m_p.html) | cloud filtering | XYZ(RGBA) | organized clouds only |
41-
| [`pcl::GreedyProjectionTriangulation`](https://pointclouds.org/documentation/classpcl_1_1_greedy_projection_triangulation.html) | mesh construction | XYZ/XYZI/XYZRGBA + Normal | |
42-
| [`pcl::GridMinimum`](https://pointclouds.org/documentation/classpcl_1_1_grid_minimum.html) | cloud resampling | any | |
43-
| [ `pcl::GridProjection` ](https://pointclouds.org/documentation/classpcl_1_1_grid_projection.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | |
44-
| [`pcl::LocalMaximum`](https://pointclouds.org/documentation/classpcl_1_1_local_maximum.html) | cloud resampling | any | |
45-
| [`pcl::MarchingCubesHoppe`](https://pointclouds.org/documentation/classpcl_1_1_marching_cubes_hoppe.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | |
46-
| [`pcl::MarchingCubesRBF`](https://pointclouds.org/documentation/classpcl_1_1_marching_cubes_r_b_f.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | |
47-
| [`pcl::MedianFilter`](https://pointclouds.org/documentation/classpcl_1_1_median_filter.html) | cloud filtering | any | organized clouds only |
48-
| [`pcl::MeshQuadricDecimationVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_quadric_decimation_v_t_k.html) | mesh processing | (mesh) | |
49-
| [`pcl::MeshSmoothingLaplacianVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_smoothing_laplacian_v_t_k.html) | mesh processing | (mesh) | |
50-
| [`pcl::MeshSmoothingWindowedSincVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_smoothing_windowed_sinc_v_t_k.html) | mesh processing | (mesh) | |
51-
| [`pcl::MeshSubdivisionVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_subdivision_v_t_k.html) | mesh processing | (mesh) | |
52-
| [`pcl::MovingLeastSquares`](https://pointclouds.org/documentation/classpcl_1_1_moving_least_squares.html) | cloud processing | any | requires PCL 1.9+ |
53-
| [`pcl::NormalEstimation`](https://pointclouds.org/documentation/classpcl_1_1_normal_estimation.html) | normal estimation | any | |
54-
| [`pcl::NormalEstimationOMP`](https://pointclouds.org/documentation/classpcl_1_1_normal_estimation_o_m_p.html) | normal estimation | any | |
55-
| [`pcl::OrganizedFastMesh`](https://pointclouds.org/documentation/classpcl_1_1_organized_fast_mesh.html) | mesh construction | XYZ(RGBA) | organized clouds only |
56-
| [`pcl::PassThrough`](https://pointclouds.org/documentation/classpcl_1_1_pass_through.html) | cloud filtering | any | |
57-
| [`pcl::Poisson`](https://pointclouds.org/documentation/classpcl_1_1_poisson.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | `threads` requires PCL 1.12+ |
58-
| [`pcl::RadiusOutlierRemoval`](https://pointclouds.org/documentation/classpcl_1_1_radius_outlier_removal.html) | cloud filtering | any | |
59-
| [`pcl::RandomSample`](https://pointclouds.org/documentation/classpcl_1_1_random_sample.html) | cloud resampling | any | |
60-
| [`pcl::SamplingSurfaceNormal`](https://pointclouds.org/documentation/classpcl_1_1_sampling_surface_normal.html) | cloud resampling | XYZ/XYZI/XYZRGBA + Normal | |
61-
| [`pcl::ShadowPoints`](https://pointclouds.org/documentation/classpcl_1_1_shadow_points.html) | cloud filtering | any normal type | only normal types |
62-
| [`pcl::SimplificationRemoveUnusedVertices`](https://pointclouds.org/documentation/classpcl_1_1surface_1_1_simplification_remove_unused_vertices.html) | mesh simplification | (mesh) | |
63-
| [`pcl::StatisticalOutlierRemoval`](https://pointclouds.org/documentation/classpcl_1_1_statistical_outlier_removal.html) | cloud filtering | any | |
64-
| [`pcl::UniformSampling`](https://pointclouds.org/documentation/classpcl_1_1_uniform_sampling.html) | cloud resampling | any | |
65-
| [`pcl::VoxelGrid`](https://pointclouds.org/documentation/classpcl_1_1_voxel_grid.html) | cloud resampling | any | |
31+
| PCL class | usage | point types | notes |
32+
|-------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------|---------------------------|--------------------------------------------------------------------|
33+
| [`pcl::transformPointCloud`](https://pointclouds.org/documentation/group__common.html#gac841d05d13c925f3a3a8090d9d7ff24d) | affine transformation | any | `translation` (meters) and `rotation` (scaled axis-angle, radians) |
34+
| [`pcl::transformPointCloudWithNormals`](https://pointclouds.org/documentation/group__common.html#ga01dcf9e24dec3109a0c8a8b8f2e24bcc) | affine transformation | any normal type | see above |
35+
| [`pcl::ApproximateVoxelGrid`](https://pointclouds.org/documentation/classpcl_1_1_approximate_voxel_grid.html) | cloud resampling | any | |
36+
| [`pcl::BilateralFilter`](https://pointclouds.org/documentation/classpcl_1_1_bilateral_filter.html) | cloud filtering | XYZI(Normal) | |
37+
| [`pcl::BilateralUpsampling`](https://pointclouds.org/documentation/classpcl_1_1_bilateral_upsampling.html) | cloud processing | XYZRGBA | organized clouds only |
38+
| [`pcl::ConcaveHull`](https://pointclouds.org/documentation/classpcl_1_1_concave_hull.html) | mesh construction | any | |
39+
| [`pcl::ConvexHull`](https://pointclouds.org/documentation/classpcl_1_1_convex_hull.html) | mesh construction | any | |
40+
| [`pcl::CropBox`](https://pointclouds.org/documentation/classpcl_1_1_crop_box.html) | cloud filtering | any | |
41+
| [`pcl::FastBilateralFilter`](https://pointclouds.org/documentation/classpcl_1_1_fast_bilateral_filter.html) | cloud filtering | XYZ(RGBA) | organized clouds only |
42+
| [`pcl::FastBilateralFilterOMP`](https://pointclouds.org/documentation/classpcl_1_1_fast_bilateral_filter_o_m_p.html) | cloud filtering | XYZ(RGBA) | organized clouds only |
43+
| [`pcl::GreedyProjectionTriangulation`](https://pointclouds.org/documentation/classpcl_1_1_greedy_projection_triangulation.html) | mesh construction | XYZ/XYZI/XYZRGBA + Normal | |
44+
| [`pcl::GridMinimum`](https://pointclouds.org/documentation/classpcl_1_1_grid_minimum.html) | cloud resampling | any | |
45+
| [ `pcl::GridProjection` ](https://pointclouds.org/documentation/classpcl_1_1_grid_projection.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | |
46+
| [`pcl::LocalMaximum`](https://pointclouds.org/documentation/classpcl_1_1_local_maximum.html) | cloud resampling | any | |
47+
| [`pcl::MarchingCubesHoppe`](https://pointclouds.org/documentation/classpcl_1_1_marching_cubes_hoppe.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | |
48+
| [`pcl::MarchingCubesRBF`](https://pointclouds.org/documentation/classpcl_1_1_marching_cubes_r_b_f.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | |
49+
| [`pcl::MedianFilter`](https://pointclouds.org/documentation/classpcl_1_1_median_filter.html) | cloud filtering | any | organized clouds only |
50+
| [`pcl::MeshQuadricDecimationVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_quadric_decimation_v_t_k.html) | mesh processing | (mesh) | |
51+
| [`pcl::MeshSmoothingLaplacianVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_smoothing_laplacian_v_t_k.html) | mesh processing | (mesh) | |
52+
| [`pcl::MeshSmoothingWindowedSincVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_smoothing_windowed_sinc_v_t_k.html) | mesh processing | (mesh) | |
53+
| [`pcl::MeshSubdivisionVTK`](https://pointclouds.org/documentation/classpcl_1_1_mesh_subdivision_v_t_k.html) | mesh processing | (mesh) | |
54+
| [`pcl::MovingLeastSquares`](https://pointclouds.org/documentation/classpcl_1_1_moving_least_squares.html) | cloud processing | any | requires PCL 1.9+ |
55+
| [`pcl::NormalEstimation`](https://pointclouds.org/documentation/classpcl_1_1_normal_estimation.html) | normal estimation | any | |
56+
| [`pcl::NormalEstimationOMP`](https://pointclouds.org/documentation/classpcl_1_1_normal_estimation_o_m_p.html) | normal estimation | any | |
57+
| [`pcl::OrganizedFastMesh`](https://pointclouds.org/documentation/classpcl_1_1_organized_fast_mesh.html) | mesh construction | XYZ(RGBA) | organized clouds only |
58+
| [`pcl::PassThrough`](https://pointclouds.org/documentation/classpcl_1_1_pass_through.html) | cloud filtering | any | |
59+
| [`pcl::Poisson`](https://pointclouds.org/documentation/classpcl_1_1_poisson.html) | surface reconstruction | XYZ/XYZI/XYZRGBA + Normal | `threads` requires PCL 1.12+ |
60+
| [`pcl::RadiusOutlierRemoval`](https://pointclouds.org/documentation/classpcl_1_1_radius_outlier_removal.html) | cloud filtering | any | |
61+
| [`pcl::RandomSample`](https://pointclouds.org/documentation/classpcl_1_1_random_sample.html) | cloud resampling | any | |
62+
| [`pcl::SamplingSurfaceNormal`](https://pointclouds.org/documentation/classpcl_1_1_sampling_surface_normal.html) | cloud resampling | XYZ/XYZI/XYZRGBA + Normal | |
63+
| [`pcl::ShadowPoints`](https://pointclouds.org/documentation/classpcl_1_1_shadow_points.html) | cloud filtering | any normal type | only normal types |
64+
| [`pcl::SimplificationRemoveUnusedVertices`](https://pointclouds.org/documentation/classpcl_1_1surface_1_1_simplification_remove_unused_vertices.html) | mesh simplification | (mesh) | |
65+
| [`pcl::StatisticalOutlierRemoval`](https://pointclouds.org/documentation/classpcl_1_1_statistical_outlier_removal.html) | cloud filtering | any | |
66+
| [`pcl::UniformSampling`](https://pointclouds.org/documentation/classpcl_1_1_uniform_sampling.html) | cloud resampling | any | |
67+
| [`pcl::VoxelGrid`](https://pointclouds.org/documentation/classpcl_1_1_voxel_grid.html) | cloud resampling | any | |
6668

6769
Mesh construction methods preserve the original point cloud as the surface vertices
6870
and simply construct the mesh on top, while surface reconstruction changes the topology

0 commit comments

Comments
 (0)