Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add euclidean cluster #68

Closed
wants to merge 28 commits into from
Closed
Changes from 1 commit
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
548941c
release v0.4.0
mitsudome-r Sep 18, 2020
dc0d6a9
remove ROS1 packages temporarily
mitsudome-r Sep 29, 2020
ddd69f0
Revert "remove ROS1 packages temporarily"
mitsudome-r Oct 8, 2020
6bd43be
add COLCON_IGNORE to ros1 packages
mitsudome-r Oct 8, 2020
a8601e8
Rename launch files to launch.xml (#28)
nnmm Oct 15, 2020
1ab07dd
Rename h files to hpp (#142)
nnmm Dec 3, 2020
15f346a
Adjust copyright notice on 532 out of 699 source files (#143)
nnmm Dec 3, 2020
1b02475
Use quotes for includes where appropriate (#144)
nnmm Dec 7, 2020
2871591
Port euclidean cluster (#120)
nik-tier4 Dec 23, 2020
790d79f
Fix perception launches (#240)
TakaHoribe Dec 24, 2020
311601c
Ros2 v0.8.0 euclidean cluster (#310)
tkimura4 Feb 8, 2021
96250c0
add use_sim-time option (#454)
tkimura4 Mar 26, 2021
249696f
Format launch files (#1219)
kenji-miyake Mar 30, 2021
16fc7e0
Unify Apache-2.0 license name (#1242)
kmiya Apr 15, 2021
23d9867
Remove use_sim_time for set_parameter (#1260)
wep21 Apr 26, 2021
cefd126
Fix lint errors (#1378)
kenji-miyake May 25, 2021
7710510
Porting euclidean cluster (#1291)
KeisukeShima Jul 6, 2021
13beecf
Fix -Wunused-parameter (#1836)
kenji-miyake Aug 14, 2021
e0d6c2a
Invoke code formatter at pre-commit (#1935)
IshitaTakeshi Sep 1, 2021
47b4c9f
add sort-package-xml hook in pre-commit (#1881)
KeisukeShima Sep 9, 2021
e7d3a5c
Feature/clustering lib (#1914)
yukkysaito Sep 3, 2021
3989e4c
Detection by tracker (#1910)
yukkysaito Sep 29, 2021
eb41bad
Change formatter to clang-format and black (#2332)
kenji-miyake Nov 2, 2021
08c52c6
Add COLCON_IGNORE (#500)
kenji-miyake Nov 4, 2021
1d15137
port euclidean_cluster (#533)
yukke42 Nov 10, 2021
81a2857
add README of euclidean_cluster (#614)
yukke42 Nov 15, 2021
154422a
auto fix no ground pointcloud topic name (#704)
satoshi-ota Nov 18, 2021
d8af5f1
fix/rename segmentation namespace (#742)
satoshi-ota Nov 29, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
add README of euclidean_cluster (#614)
* add README of euclidean_cluster

* add period

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>

* update README

Co-authored-by: Kazuki Miyahara <kmiya@outlook.com>
  • Loading branch information
2 people authored and YoheiMishina committed Dec 1, 2021
commit 81a28575b713fdbbbd4bd124209ba14211276db5
102 changes: 102 additions & 0 deletions perception/euclidean_cluster/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# euclidean_cluster

## Purpose

euclidean_cluster is a package for clustering points into smaller parts to classify objects.

This package has two clustering methods: `euclidean_cluster` and `voxel_grid_based_euclidean_cluster`.

## Inner-workings / Algorithms

### euclidean_cluster

`pcl::EuclideanClusterExtraction` is applied to points. See [official document](https://pcl.readthedocs.io/en/latest/cluster_extraction.html) for details.

### voxel_grid_based_euclidean_cluster

1. A centroid in each voxel is calculated by `pcl::VoxelGrid`.
2. The centroids are clustered by `pcl::EuclideanClusterExtraction`.
3. The input points are clustered based on the clustered centroids.

## Inputs / Outputs

### Input

| Name | Type | Description |
| ------- | ------------------------------- | ---------------- |
| `input` | `sensor_msgs::msg::PointCloud2` | input pointcloud |

### Output

| Name | Type | Description |
| ---------------- | ----------------------------------------------------------- | -------------------------------------------- |
| `output` | `autoware_perception_msgs::msg::DetectedObjectsWithFeature` | cluster pointcloud |
| `debug/clusters` | `sensor_msgs::msg::PointCloud2` | colored cluster pointcloud for visualization |

## Parameters

### Core Parameters

#### euclidean_cluster

| Name | Type | Description |
| ------------------ | ----- | -------------------------------------------------------------------------------------------- |
| `use_height` | bool | use point.z for clustering |
| `min_cluster_size` | int | the minimum number of points that a cluster needs to contain in order to be considered valid |
| `max_cluster_size` | int | the maximum number of points that a cluster needs to contain in order to be considered valid |
| `tolerance` | float | the spatial cluster tolerance as a measure in the L2 Euclidean space |

#### voxel_grid_based_euclidean_cluster

| Name | Type | Description |
| ----------------------------- | ----- | -------------------------------------------------------------------------------------------- |
| `use_height` | bool | use point.z for clustering |
| `min_cluster_size` | int | the minimum number of points that a cluster needs to contain in order to be considered valid |
| `max_cluster_size` | int | the maximum number of points that a cluster needs to contain in order to be considered valid |
| `tolerance` | float | the spatial cluster tolerance as a measure in the L2 Euclidean space |
| `voxel_leaf_size` | float | the voxel leaf size of x and y |
| `min_points_number_per_voxel` | int | the minimum number of points for a voxel |

## Assumptions / Known limits

<!-- Write assumptions and limitations of your implementation.

Example:
This algorithm assumes obstacles are not moving, so if they rapidly move after the vehicle started to avoid them, it might collide with them.
Also, this algorithm doesn't care about blind spots. In general, since too close obstacles aren't visible due to the sensing performance limit, please take enough margin to obstacles.
-->

## (Optional) Error detection and handling

<!-- Write how to detect errors and how to recover from them.

Example:
This package can handle up to 20 obstacles. If more obstacles found, this node will give up and raise diagnostic errors.
-->

## (Optional) Performance characterization

<!-- Write performance information like complexity. If it wouldn't be the bottleneck, not necessary.

Example:
### Complexity

This algorithm is O(N).

### Processing time

...
-->

## (Optional) References/External links

<!-- Write links you referred to when you implemented.

Example:
[1] {link_to_a_thesis}
[2] {link_to_an_issue}
-->

## (Optional) Future extensions / Unimplemented parts

The `use_height` option of `voxel_grid_based_euclidean_cluster` isn't implemented yet.