ROS message to Voxel
- ROS message를
pcl::VoxelGrid타입의voxel_grid_로 변환 voxel_grid_를 2D로 압축 (pointcloud_2dd_ptr_) (왜use_height_를 사용하지 않는가) (double check)
KDTree 생성
pointcloud_2dd_ptr_을 사용하여 KDTree (tree) 생성
클러스터링 실행
tree를 Euclidean Clustering 방법을 사용하여 클러스터링 수행- 결과는
cluster_indices에 저장되며, cluster index와 각 index에 해당되는 voxel grid의 voxel grid index가 저장됨
Index Map 생성
- 복셀 그리드 인덱스에서 클러스터 인덱스를 검색하기 위한 맵 생성
- key: 복셀 그리드 인덱스 value: 클러스터 인덱스
- voxel grid에 속한 각 포인트의
cluster_idx를 index map의 voxel grid index 위치에 저장
Vector Index 생성
- 클러스터 인덱스에서 해당 클러스터에 속하는 raw pointcloud의 포인트를 검색하기 위한 벡터 생성
- 모든
raw_pointcloud_ptr에 대하여 각 포인트들의 복셀 그리드 인덱스를 구한 뒤,v_cluster의 해당 인덱스 위치에 포인트 저장
cluster_pub 출력 메시지 구성
- 모든 cluster index에 대하여 각 인덱스마다 포함된 point index에 해당되는
raw_pointcloud_ptr_의 point를cloud_cluster에 저장- cluster index 하나당 하나의
cloud_cluster생성 cloud_cluster의 width는 포함된 points의 개수로 설정하고, height는 1로 설정
- cluster index 하나당 하나의
feature_object에cloud_cluster를 저장하고, 해당 클러스터에 포함된 포인트들의 평균 좌표값을 구하여feature_object.object.state.pose_covariance.pose.position에 저장feature_object는output.feature_objects에 저장되며, 모든 cluster index에 대해 수행된 후 publish
Flow From ...
Flow To ..