Exploration Planner Tuning ========================== Exploration planner configurations are in the `'src/exploration_planner/tare_planner/config' `_ folder. The default configuration file is in the 'indoor_small.yaml' file. To switch the configuration file, go to the `'src/base_autonomy/vehicle_simulator/launch' `_ folder find ``exploration_planner_config`` in the 'system_unity_with_exploration_planner.launch', 'system_real_robot_with_exploration_planner.launch', and 'system_bagfile_with_exploration_planner.launch' files, change it from 'indoor_small' to 'indoor_large' or 'outdoor'. The parameter ``kSurfaceCloudDwzLeafSize : 0.4 (m)`` adjusts the resolution of the point cloud representing object surfaces. For smaller spaces, it is desirable to have finer resolution for the point cloud. Empirically, we can determine an appropriate point cloud resolution based on the openness and complexity of the environment. When the environment is tight, a resolution of 0.3 is used. In more open and 3D environments, a resolution of 0.5 is used. In very open environments, e.g. outdoor, a resolution of 0.6 is used. Once the point cloud resolution is determined, users can adjust the number of viewpoint candidates to maintain a reasonable runtime (approximately 1s) while maximizing the number of viewpoint candidates. Typically, 2025 (45 x 45) viewpoint candidates is effective. These two parameters adjust the number of viewpoint candidates: ``viewpoint_manager/number_x : 45`` and ``viewpoint_manager/number_y : 45``. And these two parameters adjust the resolution of viewpoint candidates, determining how far apart the candidates are from each other: ``viewpoint_manager/resolution_x : 0.2 (m)`` and ``viewpoint_manager/resolution_y : 0.2 (m)``. Together they determine the size of the local planning horizon. In the example above, the local planning horizon has a size of 9m x 9m. For small spaces, it is desirable to have fine resolution for viewpoint candidates so viewpoints can be sampled through narrow passages. The computation runtime is primarily determined by the number of viewpoint candidates and the resolution of the point cloud. If the runtime is high, consider reducing either the number of viewpoint candidates or the point cloud resolution. To have a tighter collision margin so that viewpoint candidates can be sampled in narrow spaces, make ``kViewPointCollisionMargin : 0.35 (m)`` smaller. Note that this denotes the radius of the viewpoint, so a viewpoint in this case has a diameter of 0.7m. To have the robot get close to surfaces, e.g., walls, make ``kSensorRange : 3.0 (m)`` smaller. This is the distance range within which a point will be marked as "covered" by the robot. To have the robot more willing to go to new spaces that are narrow, e.g., small openings, make ``kMinAddPointNumSmall : 8`` and ``kMinAddFrontierPointNum : 8`` smaller (one for object surface points, one for frontier points). These two parameters define the minimum number of object surface or frontier points a viewpoint must observe for the robot to choose it as a destination. For instance, if no viewpoint can see more than 8 object surfaces or 8 frontier points, the robot will not continue to explore. These two parameters may need to be adjusted accordingly when ``kSurfaceCloudDwzLeafSize`` changes.