(Ground Removal + Sub Clustering) * Ground Removal + Subclustering * @param pcPtr */
| 271 | * @param pcPtr |
| 272 | */ |
| 273 | void segmentCloud(const pcl::PointCloud<PointType>::Ptr pcPtr) { |
| 274 | // 1. Copy pcl point cloud |
| 275 | copyPointCloud(pcPtr); |
| 276 | // 2. Start and end angle of a scan |
| 277 | findStartEndAngle(); |
| 278 | // 3. Range image projection |
| 279 | projectPointCloud(); |
| 280 | // 4. Mark ground points |
| 281 | /*** |
| 282 | * If groundSegMode == "Patchwork", |
| 283 | * then the ground points are already rejected by Patchwork |
| 284 | * i.e. srcPtr does not contain ground points |
| 285 | * Thus, only masking labelMat is performed |
| 286 | */ |
| 287 | if (groundSegMode == "LeGO-LOAM") { |
| 288 | groundRemoval(); |
| 289 | } else if (groundSegMode == "Patchwork") { |
| 290 | maskGround(); |
| 291 | } |
| 292 | // 5. Point cloud segmentation |
| 293 | cloudSegmentation(); |
| 294 | } |
| 295 | |
| 296 | void findStartEndAngle() { |
| 297 | // start and end orientation of this cloud |
nothing calls this directly
no outgoing calls
no test coverage detected