|
| 1 | +--- |
| 2 | +paths: [khronos, khronos_ros] |
| 3 | +map_window: |
| 4 | + type: spatial |
| 5 | + max_radius_m: &spatial_window 8.0 |
| 6 | + window_sec: &temporal_window 3.0 |
| 7 | +active_window: |
| 8 | + type: ActiveWindow |
| 9 | + full_update_separation_s: 0.2 |
| 10 | + volumetric_map: |
| 11 | + voxels_per_side: 16 |
| 12 | + voxel_size: 0.1 |
| 13 | + truncation_distance: 0.3 |
| 14 | + with_semantics: true # Enable semantic layer for object detection |
| 15 | + projective_integrator: |
| 16 | + semantic_integrator: {type: SingleLabelIntegrator} |
| 17 | + object_detector: |
| 18 | + type: ConnectedSemantics |
| 19 | + min_cluster_size: 50 # pixels |
| 20 | + use_full_connectivity: true |
| 21 | + use_3d: true |
| 22 | + grid_size: 0.1 # m |
| 23 | + max_range: 5 # m, 0 for infinite. |
| 24 | + tracker: |
| 25 | + type: MaxIouTracker |
| 26 | + track_by: voxels # 'pixels', 'voxels', 'bounding_box' |
| 27 | + active_window_mode: spatial # "temporal", "spatial" |
| 28 | + min_semantic_iou: 0.25 |
| 29 | + min_cross_iou: 0.1 |
| 30 | + voxel_size: 0.2 # m |
| 31 | + min_num_observations: 15 |
| 32 | + object_extractor: |
| 33 | + type: MeshObjectExtractor |
| 34 | + min_object_allocation_confidence: 0.5 |
| 35 | + min_object_volume: 0.005 # m^3 |
| 36 | + max_object_volume: 10.0 # m^3 |
| 37 | + only_extract_reconstructed_objects: true # used to be false |
| 38 | + min_object_reconstruction_confidence: 0.5 |
| 39 | + min_object_reconstruction_observations: 0 # Can use higher for very noisy detections. |
| 40 | + object_reconstruction_resolution: -0.02 # Positive: voxel size in meters. Negative: fraction of the extent. 0: Skip. (-0.02) |
| 41 | + projective_integrator: |
| 42 | + num_threads: 8 # NOTE(lschmid): Test less threads for parallel object extraction. |
| 43 | + map_window: |
| 44 | + type: spatial |
| 45 | + max_radius_m: *spatial_window |
| 46 | + window_sec: *temporal_window |
| 47 | +frontend: |
| 48 | + enable_mesh_objects: false |
| 49 | + pgmo: |
| 50 | + time_horizon: 15.0 |
| 51 | + d_graph_resolution: 2.5 |
| 52 | + mesh_resolution: 0.005 |
| 53 | + objects: |
| 54 | + min_cluster_size: 40 |
| 55 | + cluster_tolerance: 0.25 |
| 56 | + graph_updater: |
| 57 | + layer_updates: |
| 58 | + OBJECTS: |
| 59 | + prefix: O |
| 60 | + matcher: {type: IoUNodeMatcher, min_same_iou: 0.2, min_cross_iou: 0.5} |
| 61 | + merger: {type: LatestAttributeMerger} |
| 62 | + surface_places: |
| 63 | + type: place_2d |
| 64 | + prefix: P |
| 65 | + pure_final_place_size: 1 |
| 66 | + cluster_tolerance: .3 |
| 67 | + min_cluster_size: 50 |
| 68 | + max_cluster_size: 100000 |
| 69 | + min_final_place_points: 10 |
| 70 | + place_max_neighbor_z_diff: .5 |
| 71 | + place_overlap_threshold: 0.0 |
| 72 | + traversability_places: |
| 73 | + type: traversability |
| 74 | + estimator: |
| 75 | + type: HeightTraversabilityEstimator |
| 76 | + height_below: 0 |
| 77 | + height_above: 0.5 |
| 78 | + min_confidence: 1.0 |
| 79 | + min_traversability: 1.0 |
| 80 | + pessimistic: true |
| 81 | + clustering: |
| 82 | + type: BlockTraversabilityClustering |
| 83 | + min_place_width: &min_place_width 0.5 # m |
| 84 | + max_place_width: &max_place_width 1.0 # m |
| 85 | + recursive: true |
| 86 | + simplify_boundary_traversability: false |
| 87 | + sinks: |
| 88 | + - type: TraversabilityVisualizer |
| 89 | + freespace_places: |
| 90 | + type: gvd |
| 91 | + filter_places: true |
| 92 | + min_places_component_size: 3 |
| 93 | + filter_ground: false |
| 94 | + gvd: |
| 95 | + max_distance_m: 4.5 |
| 96 | + min_distance_m: 0.2 |
| 97 | + min_diff_m: 0.1 |
| 98 | + voronoi_config: |
| 99 | + mode: L1_THEN_ANGLE |
| 100 | + min_distance_m: 0.30 |
| 101 | + parent_l1_separation: 20 |
| 102 | + parent_cos_angle_separation: 0.2 |
| 103 | + graph: |
| 104 | + type: CompressionGraphExtractor |
| 105 | + compression_distance_m: 1.5 |
| 106 | + min_node_distance_m: 0.4 |
| 107 | + min_edge_distance_m: 0.25 |
| 108 | + node_merge_distance_m: 0.7 |
| 109 | + merge_policy: distance |
| 110 | + tsdf_interpolator: |
| 111 | + type: downsample |
| 112 | + ratio: 2 |
| 113 | + frontier_places: |
| 114 | + # type: voxel_clustering |
| 115 | + cluster_tolerance: 0.3 |
| 116 | + min_cluster_size: 10 |
| 117 | + max_cluster_size: 100000 |
| 118 | + max_place_radius: 5 |
| 119 | + dense_frontiers: false |
| 120 | + frontier_splitting_threshold: 0.2 |
| 121 | + point_threshold: 10 |
| 122 | + recent_block_distance: 25 |
| 123 | + minimum_relative_z: -1. |
| 124 | + maximum_relative_z: 1 |
| 125 | +backend: |
| 126 | + add_places_to_deformation_graph: true |
| 127 | + optimize_on_lc: true |
| 128 | + enable_node_merging: true |
| 129 | + update_functors: |
| 130 | + agents: |
| 131 | + type: UpdateAgentsFunctor |
| 132 | + objects: |
| 133 | + type: GenericUpdateFunctor |
| 134 | + layer: OBJECTS |
| 135 | + matcher: |
| 136 | + type: DistanceNodeMatcher |
| 137 | + pos_threshold_m: 1.5 |
| 138 | + merge_proposer: |
| 139 | + type: SemanticNearestNode |
| 140 | + pos_threshold_m: 1.5 |
| 141 | + surface_places: |
| 142 | + type: Update2dPlacesFunctor |
| 143 | + places: |
| 144 | + type: UpdatePlacesFunctor |
| 145 | + traversability: |
| 146 | + type: UpdateBlockTraversabilityFunctor |
| 147 | + min_place_size: *min_place_width |
| 148 | + # m |
| 149 | + max_place_size: *max_place_width |
| 150 | + # m |
| 151 | + use_metric_distance: false |
| 152 | + tolerance: 0.1 # m |
| 153 | + frontiers: |
| 154 | + type: UpdateFrontiersFunctor |
| 155 | + rooms: |
| 156 | + type: UpdateRoomsFunctor |
| 157 | + room_finder: |
| 158 | + min_dilation_m: 0.5 |
| 159 | + max_dilation_m: 1.2 |
| 160 | + min_component_size: 10 |
| 161 | + min_room_size: 10 |
| 162 | + dilation_threshold_mode: PLATEAU |
| 163 | + min_lifetime_length_m: 0.1 |
| 164 | + plateau_ratio: 0.15 |
| 165 | + clustering_mode: NEIGHBORS |
| 166 | + dilation_diff_threshold_m: -1.0 |
| 167 | + buildings: |
| 168 | + type: UpdateBuildingsFunctor |
| 169 | + zmq_labels: |
| 170 | + type: ZmqRoomLabelUpdater |
| 171 | + pgmo: |
| 172 | + run_mode: FULL # kimera_pgmo run mode FULL is required |
| 173 | + embed_trajectory_delta_t: 5.0 |
| 174 | + num_interp_pts: 3 |
| 175 | + interp_horizon: 10.0 |
| 176 | + optimizer: |
| 177 | + type: KimeraRpgoOptimizer |
| 178 | + solver: LM |
| 179 | + gnc: |
| 180 | + inlier_probability: 0.9 |
| 181 | + mu_step: 1.6 |
| 182 | + max_iterations: 100 |
| 183 | + add_initial_prior: true |
| 184 | + covariance: |
| 185 | + odom: 1.0e-02 |
| 186 | + loop_close: 5.0e-02 |
| 187 | + sg_loop_close: 1.0e-01 |
| 188 | + prior: 1.0e-02 |
| 189 | + mesh_mesh: 1.0e-02 |
| 190 | + pose_mesh: 1.0e-02 |
| 191 | + place_mesh: 1.0e-02 |
| 192 | + place_edge: 10.0 |
| 193 | + place_merge: 10.0 |
| 194 | + object_merge: 10.0 |
0 commit comments