{"id":19963298,"url":"https://github.com/advrhumanoids/point_cloud2_filters","last_synced_at":"2025-05-03T22:31:58.642Z","repository":{"id":174237400,"uuid":"651601680","full_name":"ADVRHumanoids/point_cloud2_filters","owner":"ADVRHumanoids","description":null,"archived":false,"fork":false,"pushed_at":"2024-08-06T13:49:19.000Z","size":66,"stargazers_count":8,"open_issues_count":1,"forks_count":3,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-06T19:34:16.626Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ADVRHumanoids.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-06-09T15:53:09.000Z","updated_at":"2024-08-06T13:49:21.000Z","dependencies_parsed_at":"2024-07-26T14:44:24.551Z","dependency_job_id":null,"html_url":"https://github.com/ADVRHumanoids/point_cloud2_filters","commit_stats":null,"previous_names":["torydebra/pass_through_filter","advrhumanoids/point_cloud2_filters"],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fpoint_cloud2_filters","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fpoint_cloud2_filters/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fpoint_cloud2_filters/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ADVRHumanoids%2Fpoint_cloud2_filters/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ADVRHumanoids","download_url":"https://codeload.github.com/ADVRHumanoids/point_cloud2_filters/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":224374650,"owners_count":17300691,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-13T02:15:31.845Z","updated_at":"2024-11-13T02:15:32.488Z","avatar_url":"https://github.com/ADVRHumanoids.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# point_cloud_2_filters\n[![Build Status](https://build.ros.org/buildStatus/icon?job=Ndev__point_cloud2_filters__ubuntu_focal_amd64\u0026subject=Noetic%20Build)](https://build.ros.org/job/Ndev__point_cloud2_filters__ubuntu_focal_amd64/)\n\nWrappers for some of the [pcl filters](https://pointclouds.org/documentation/group__filters.html) for `sensor_msgs/PointCloud2` ROS messages. The implementation and usage is based on the [filter](https://wiki.ros.org/filters) and [sensor_filter](https://wiki.ros.org/sensor_filters) packages, so it is different from the wrappers of the PCL filters provided by the package [pcl_ros](https://wiki.ros.org/pcl_ros/Tutorials/filters).\n\nAll the parameters are settable from the config file, but also online through the `dynamic_reconfigure` server. \nNote that changing params with the `dynamic_reconfigure` server may take some seconds to have effect.\n\nNo ROS2 version (yet).\n\n## Usage example\nSee launch and config folders\n\n## Filters list\n### PassThroughFilterPointCloud2\nWrapper for the [pcl::PassThrough](https://pointclouds.org/documentation/classpcl_1_1_pass_through_3_01pcl_1_1_p_c_l_point_cloud2_01_4.html) filter \n#### Params\n-  `active`*(bool, default: true)* Activate the filter or not.\n-  `input_frame`*(str, default: \"\")* The input TF frame the data should be transformed into before processing\n-  `output_frame`*(str, default: \"\")* The output TF frame the data should be transformed into after processing\n-  `pub_cloud`*(bool, default: false)* Publish the cloud immediately after this filter. Note that this is a duplicate if the filter is the last in the chain. Useful for debug purposes and it will publish even if `active` is *false*.\n-  `keep_organized`*(bool, default: true)* Keep the point cloud organized ([`pcl::FilterIndices\u003cPointT\u003e::setKeepOrganized\t(bool keep_organized)`](https://pointclouds.org/documentation/classpcl_1_1_filter_indices.html#a21eb00357056c0cc432cd03afa84d08c)\n-  `negative`*(bool, default: false)* Set to true to return the data outside the min max limits\n-  `filter_field_name`*(str, default: z)* The field to be used for filtering data\n-  `filter_limit_min`*(double, default: 0)* The minimum allowed field value a point will be considered\n-  `filter_limit_max`*(double, default: 1)* The maximum allowed field value a point will be considered\n\n### CropBoxFilterPointCloud2\nWrapper for the [pcl::CropBox](https://pointclouds.org/documentation/classpcl_1_1_crop_box_3_01pcl_1_1_p_c_l_point_cloud2_01_4.html) filter.  \n**Warning** `pcl::CrobBox` parameter `keep_organized` is broken on ROS melodic (on noetic it is ok).\n#### Params\n-  `active`*(bool, default: true)* Activate the filter or not.\n-  `input_frame`*(str, default: \"\")* The input TF frame the data should be transformed into before processing\n-  `output_frame`*(str, default: \"\")* The output TF frame the data should be transformed into after processing\n-  `pub_cloud`*(bool, default: false)* Publish the cloud immediately after this filter. Note that this is a duplicate if the filter is the last in the chain. Useful for debug purposes and it will publish even if `active` is *false*.\n-  `keep_organized`*(bool, default: true)* Keep the point cloud organized ([`pcl::FilterIndices\u003cPointT\u003e::setKeepOrganized\t(bool keep_organized)`](https://pointclouds.org/documentation/classpcl_1_1_filter_indices.html#a21eb00357056c0cc432cd03afa84d08c)\n-  `negative`*(bool, default: false)* Set to true to return the data outside the min max limits\n-  `min_x`*(double, default: -1.0)* The minimum allowed x value a point will be considered from. Range: -1000.0 to 1000.0\n-  `max_x`*(double, default: -1.0)* The maximum allowed x value a point will be considered from. Range: -1000.0 to 1000.0\n-  `min_y`*(double, default: -1.0)* The minimum allowed y value a point will be considered from. Range: -1000.0 to 1000.0\n-  `max_y`*(double, default: -1.0)* The maximum allowed y value a point will be considered from. Range: -1000.0 to 1000.0\n-  `min_z`*(double, default: -1.0)* The minimum allowed z value a point will be considered from. Range: -1000.0 to 1000.0\n-  `max_z`*(double, default: -1.0)* The maximum allowed z value a point will be considered from. Range: -1000.0 to 1000.0\n\n### VoxelGridFilterPointCloud2\nWrapper for the [pcl::VoxelGrid](https://pointclouds.org/documentation/classpcl_1_1_voxel_grid.html) filter.  \n#### Params\n-  `active`*(bool, default: true)* Activate the filter or not.\n-  `input_frame`*(str, default: \"\")* The input TF frame the data should be transformed into before processing\n-  `output_frame`*(str, default: \"\")* The output TF frame the data should be transformed into after processing\n-  `pub_cloud`*(bool, default: false)* Publish the cloud immediately after this filter. Note that this is a duplicate if the filter is the last in the chain. Useful for debug purposes and it will publish even if `active` is *false*.\n-  `negative`*(bool, default: false)* Set to true to return the data outside the min max limits\n-  `leaf_size_x`*(double, default: 0.01)* The size of a leaf (on x) used for downsampling. Range: 0.0 to 1.0\n-  `leaf_size_y`*(double, default: 0.01)* The size of a leaf (on y) used for downsampling. Range: 0.0 to 1.0\n-  `leaf_size_z`*(double, default: 0.01)* The size of a leaf (on z) used for downsampling. Range: 0.0 to 1.0\n-  `min_points_per_voxel`*(int, default:0)* Set the minimum number of points required for a voxel to be used\n-  `downsample_all_data`*(int, default:0)* Set to true if all fields need to be downsampled, or false if just XYZ\n-  `filter_field_name`*(str, default: \"\")* The field to be used for filtering data, acting like a passthrough. Empty for not using\n-  `filter_limit_min`*(double, default: -FLT_MAX)* The minimum allowed field value a point will be considered\n-  `filter_limit_max`*(double, default: FLT_MAX)* The maximum allowed field value a point will be considered\n\n### SacSegmentationExtractFilterPointCloud2\nWrapper to extract a geometric model with [pcl::SACSegmentation](https://pointclouds.org/documentation/classpcl_1_1_s_a_c_segmentation.html) and [pcl::ExtractIndices](https://pointclouds.org/documentation/classpcl_1_1_extract_indices.html).\n#### Params\n-  `active`*(bool, default: true)* Activate the filter or not.\n-  `input_frame`*(str, default: \"\")* The input TF frame the data should be transformed into before processing\n-  `output_frame`*(str, default: \"\")* The output TF frame the data should be transformed into after processing\n-  `pub_cloud`*(bool, default: false)* Publish the cloud immediately after this filter. Note that this is a duplicate if the filter is the last in the chain. Useful for debug purposes and it will publish even if `active` is *false*.\n-  `negative`*(bool, default: false)* Set whether to filter out (remove) the model (true) or all the rest (false).\n- `model_type` *(int, default: 16)* Geometric model to look for. Default to `SACMODEL_NORMAL_PARALLEL_PLANE`. Check [pcl official doc](https://pointclouds.org/documentation/group__sample__consensus.html). Please use integers according to the linked enum\n- `method_type` *(int, default: 0)* Segmentation model to use for. Default to `SAC_RANSAC` . Check [pcl official doc](https://pointclouds.org/documentation/group__sample__consensus.html). Please use integers according to the linked enum\n-  `axis_x`*(double, default: 0.0)* The x component of the normal to the model to be removed. Range: 0.0 to 1.0\n-  `axis_y`*(double, default: 0.0)* The y component of the normal to the model to be removed. Range: 0.0 to 1.0\n-  `axis_z`*(double, default: 1.0)* The z component of the normal to the model to be removed. Range: 0.0 to 1.0\n-  `eps_angle`*(double, default: 0.15)* Tolerance angle (rad) to the model to be considered normal to the axis. Range: -3.15 to 3.15\n-  `distance_threshold`*(double, default: 0.01)*  Range: 0 to 10\n-  `optimize_coefficents`*(bool, default: 0.01)* Optimize the coefficents or not.\n-  `max_iterations`*(bool, default: 50)* \n-  `probability`*(bool, default: 0.99)* \n-  `min_radius`*(bool, default: -1)* \n-  `max_radius`*(bool, default: 1000)* \n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvrhumanoids%2Fpoint_cloud2_filters","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fadvrhumanoids%2Fpoint_cloud2_filters","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fadvrhumanoids%2Fpoint_cloud2_filters/lists"}