diff --git a/src/kf_based_terrain_analysis.cpp b/src/kf_based_terrain_analysis.cpp index fca0392e92b737c7a1963fd16fde3b79fef91dbf..5f5d265c10fe7c1782a0e6214332c2c8f2055aa1 100644 --- a/src/kf_based_terrain_analysis.cpp +++ b/src/kf_based_terrain_analysis.cpp @@ -1089,6 +1089,9 @@ void CKf_Based_Terrain_Analysis::fastLabelPointcloudUsingGroundModel( // pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_KITTI_OBSTACLE; // We don't use score with obstacle points, if they are considered obstacles, we believe that their // probability of being ground is zero, the class label is used to distinguish between general obstacles @@ -1108,6 +1111,9 @@ void CKf_Based_Terrain_Analysis::fastLabelPointcloudUsingGroundModel( // pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_OVERHANGING_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_OVERHANGING_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_OVERHANGING_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_KITTI_OBSTACLE; pcl_cloud_ptr->points[*point_iterator].data_c[DATA_C_1_ID_CLASS] = (float)CLASS_OVERHANGING_OBSTACLE + 0.0; } @@ -1183,28 +1189,38 @@ void CKf_Based_Terrain_Analysis::fastLabelPointcloudUsingGroundModel( features(12, 0) = var_of_scores; int predicted_class = nn_.predict(features); - pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].data_c[DATA_C_1_ID_CLASS] = predicted_class; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].data_c[DATA_C_1_ID_CLASS] = (float)predicted_class + (float)scores[n]; switch(predicted_class) { case ROAD: - + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].r = R_CLASS_ROAD; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].g = G_CLASS_ROAD; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].b = B_CLASS_ROAD; break; case SIDEWALK: - + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].r = R_CLASS_SIDEWALK; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].g = G_CLASS_SIDEWALK; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].b = B_CLASS_SIDEWALK; break; case TERRAIN: - + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].r = R_CLASS_TERRAIN; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].g = G_CLASS_TERRAIN; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].b = B_CLASS_TERRAIN; break; case VEGETATION: - + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].r = R_CLASS_VEGETATION; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].g = G_CLASS_VEGETATION; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].b = B_CLASS_VEGETATION; break; case CLASS_OBSTACLE: - + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].r = R_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].g = G_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[features_indexes_in_pcl_cloud_ptr[n]].b = B_CLASS_KITTI_OBSTACLE; break; } } @@ -1335,6 +1351,9 @@ void CKf_Based_Terrain_Analysis::fastLabelPointcloudUsingGroundModel( // pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_GROUND; // We use instead the r g b channels directly // pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_GROUND; // pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_GROUND; + pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_ROAD; + pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_ROAD; + pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_ROAD; float score = 0.0; // we don't have too much confidence in these points, because they are not analyzed pcl_cloud_ptr->points[*point_iterator].data_c[DATA_C_1_ID_CLASS] = (float)CLASS_GROUND + score; @@ -1348,6 +1367,9 @@ void CKf_Based_Terrain_Analysis::fastLabelPointcloudUsingGroundModel( // pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_KITTI_OBSTACLE; float score = 0.0; pcl_cloud_ptr->points[*point_iterator].data_c[DATA_C_1_ID_CLASS] = (float)CLASS_OBSTACLE + score; @@ -1360,6 +1382,9 @@ void CKf_Based_Terrain_Analysis::fastLabelPointcloudUsingGroundModel( // pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_OVERHANGING_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_OVERHANGING_OBSTACLE; // pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_OVERHANGING_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].r = R_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].g = G_CLASS_KITTI_OBSTACLE; + pcl_cloud_ptr->points[*point_iterator].b = B_CLASS_KITTI_OBSTACLE; float score = 0.0; pcl_cloud_ptr->points[*point_iterator].data_c[DATA_C_1_ID_CLASS] = (float)CLASS_OVERHANGING_OBSTACLE