Skip to content
Snippets Groups Projects
default.py 8.87 KiB
Newer Older
  • Learn to ignore specific revisions
  • Facebook Community Bot's avatar
    Facebook Community Bot committed
    #!/usr/bin/env python3
    
    # Copyright (c) Facebook, Inc. and its affiliates.
    # This source code is licensed under the MIT license found in the
    # LICENSE file in the root directory of this source tree.
    
    
    from typing import List, Optional, Union
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    
    from habitat.config import Config as CN  # type: ignore
    
    DEFAULT_CONFIG_DIR = "configs/"
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    
    # -----------------------------------------------------------------------------
    # Config definition
    # -----------------------------------------------------------------------------
    _C = CN()
    _C.SEED = 100
    # -----------------------------------------------------------------------------
    # ENVIRONMENT
    # -----------------------------------------------------------------------------
    _C.ENVIRONMENT = CN()
    _C.ENVIRONMENT.MAX_EPISODE_STEPS = 1000
    _C.ENVIRONMENT.MAX_EPISODE_SECONDS = 10000000
    
    _C.ENVIRONMENT.ITERATOR_OPTIONS = CN()
    _C.ENVIRONMENT.ITERATOR_OPTIONS.CYCLE = True
    _C.ENVIRONMENT.ITERATOR_OPTIONS.SHUFFLE = False
    _C.ENVIRONMENT.ITERATOR_OPTIONS.GROUP_BY_SCENE = True
    _C.ENVIRONMENT.ITERATOR_OPTIONS.NUM_EPISODE_SAMPLE = -1
    _C.ENVIRONMENT.ITERATOR_OPTIONS.MAX_SCENE_REPEAT = -1
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    # -----------------------------------------------------------------------------
    # TASK
    # -----------------------------------------------------------------------------
    _C.TASK = CN()
    _C.TASK.TYPE = "Nav-v0"
    _C.TASK.SUCCESS_DISTANCE = 0.2
    _C.TASK.SENSORS = []
    _C.TASK.MEASUREMENTS = []
    
    _C.TASK.GOAL_SENSOR_UUID = "pointgoal"
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    # -----------------------------------------------------------------------------
    # # POINTGOAL SENSOR
    # -----------------------------------------------------------------------------
    _C.TASK.POINTGOAL_SENSOR = CN()
    _C.TASK.POINTGOAL_SENSOR.TYPE = "PointGoalSensor"
    _C.TASK.POINTGOAL_SENSOR.GOAL_FORMAT = "POLAR"
    
    _C.TASK.POINTGOAL_SENSOR.DIMENSIONALITY = 2
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    # -----------------------------------------------------------------------------
    
    # # POINTGOAL WITH GPS+COMPASS SENSOR
    
    # -----------------------------------------------------------------------------
    
    _C.TASK.POINTGOAL_WITH_GPS_COMPASS_SENSOR = _C.TASK.POINTGOAL_SENSOR.clone()
    _C.TASK.POINTGOAL_WITH_GPS_COMPASS_SENSOR.TYPE = (
        "PointGoalWithGPSCompassSensor"
    )
    
    # -----------------------------------------------------------------------------
    
    # # HEADING SENSOR
    # -----------------------------------------------------------------------------
    _C.TASK.HEADING_SENSOR = CN()
    _C.TASK.HEADING_SENSOR.TYPE = "HeadingSensor"
    # -----------------------------------------------------------------------------
    
    # # COMPASS SENSOR
    # -----------------------------------------------------------------------------
    _C.TASK.COMPASS_SENSOR = CN()
    _C.TASK.COMPASS_SENSOR.TYPE = "CompassSensor"
    # -----------------------------------------------------------------------------
    # # GPS SENSOR
    # -----------------------------------------------------------------------------
    _C.TASK.GPS_SENSOR = CN()
    _C.TASK.GPS_SENSOR.TYPE = "GPSSensor"
    _C.TASK.GPS_SENSOR.DIMENSIONALITY = 2
    # -----------------------------------------------------------------------------
    
    # # PROXIMITY SENSOR
    # -----------------------------------------------------------------------------
    _C.TASK.PROXIMITY_SENSOR = CN()
    _C.TASK.PROXIMITY_SENSOR.TYPE = "ProximitySensor"
    _C.TASK.PROXIMITY_SENSOR.MAX_DETECTION_RADIUS = 2.0
    # -----------------------------------------------------------------------------
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    # # SPL MEASUREMENT
    # -----------------------------------------------------------------------------
    _C.TASK.SPL = CN()
    _C.TASK.SPL.TYPE = "SPL"
    _C.TASK.SPL.SUCCESS_DISTANCE = 0.2
    # -----------------------------------------------------------------------------
    
    # # TopDownMap MEASUREMENT
    # -----------------------------------------------------------------------------
    _C.TASK.TOP_DOWN_MAP = CN()
    _C.TASK.TOP_DOWN_MAP.TYPE = "TopDownMap"
    _C.TASK.TOP_DOWN_MAP.MAX_EPISODE_STEPS = _C.ENVIRONMENT.MAX_EPISODE_STEPS
    _C.TASK.TOP_DOWN_MAP.MAP_PADDING = 3
    _C.TASK.TOP_DOWN_MAP.NUM_TOPDOWN_MAP_SAMPLE_POINTS = 20000
    _C.TASK.TOP_DOWN_MAP.MAP_RESOLUTION = 1250
    _C.TASK.TOP_DOWN_MAP.DRAW_SOURCE_AND_TARGET = True
    _C.TASK.TOP_DOWN_MAP.DRAW_BORDER = True
    
    _C.TASK.TOP_DOWN_MAP.DRAW_SHORTEST_PATH = True
    
    Erik Wijmans's avatar
    Erik Wijmans committed
    _C.TASK.TOP_DOWN_MAP.FOG_OF_WAR = CN()
    _C.TASK.TOP_DOWN_MAP.FOG_OF_WAR.DRAW = True
    _C.TASK.TOP_DOWN_MAP.FOG_OF_WAR.VISIBILITY_DIST = 5.0
    _C.TASK.TOP_DOWN_MAP.FOG_OF_WAR.FOV = 90
    
    # -----------------------------------------------------------------------------
    
    # # COLLISIONS MEASUREMENT
    # -----------------------------------------------------------------------------
    _C.TASK.COLLISIONS = CN()
    _C.TASK.COLLISIONS.TYPE = "Collisions"
    # -----------------------------------------------------------------------------
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    # SIMULATOR
    # -----------------------------------------------------------------------------
    _C.SIMULATOR = CN()
    _C.SIMULATOR.TYPE = "Sim-v0"
    
    _C.SIMULATOR.ACTION_SPACE_CONFIG = "v0"
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    _C.SIMULATOR.FORWARD_STEP_SIZE = 0.25  # in metres
    _C.SIMULATOR.SCENE = (
        "data/scene_datasets/habitat-test-scenes/" "van-gogh-room.glb"
    )
    _C.SIMULATOR.SEED = _C.SEED
    
    _C.SIMULATOR.TURN_ANGLE = 10  # angle to rotate left or right in degrees
    _C.SIMULATOR.TILT_ANGLE = 15  # angle to tilt the camera up or down in degrees
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    _C.SIMULATOR.DEFAULT_AGENT_ID = 0
    # -----------------------------------------------------------------------------
    # # SENSORS
    # -----------------------------------------------------------------------------
    SENSOR = CN()
    SENSOR.HEIGHT = 480
    SENSOR.WIDTH = 640
    SENSOR.HFOV = 90  # horizontal field of view in degrees
    SENSOR.POSITION = [0, 1.25, 0]
    # -----------------------------------------------------------------------------
    # # RGB SENSOR
    # -----------------------------------------------------------------------------
    _C.SIMULATOR.RGB_SENSOR = SENSOR.clone()
    _C.SIMULATOR.RGB_SENSOR.TYPE = "HabitatSimRGBSensor"
    # -----------------------------------------------------------------------------
    # DEPTH SENSOR
    # -----------------------------------------------------------------------------
    _C.SIMULATOR.DEPTH_SENSOR = SENSOR.clone()
    _C.SIMULATOR.DEPTH_SENSOR.TYPE = "HabitatSimDepthSensor"
    _C.SIMULATOR.DEPTH_SENSOR.MIN_DEPTH = 0
    _C.SIMULATOR.DEPTH_SENSOR.MAX_DEPTH = 10
    _C.SIMULATOR.DEPTH_SENSOR.NORMALIZE_DEPTH = True
    # -----------------------------------------------------------------------------
    # SEMANTIC SENSOR
    # -----------------------------------------------------------------------------
    _C.SIMULATOR.SEMANTIC_SENSOR = SENSOR.clone()
    _C.SIMULATOR.SEMANTIC_SENSOR.TYPE = "HabitatSimSemanticSensor"
    # -----------------------------------------------------------------------------
    # AGENT
    # -----------------------------------------------------------------------------
    _C.SIMULATOR.AGENT_0 = CN()
    _C.SIMULATOR.AGENT_0.HEIGHT = 1.5
    _C.SIMULATOR.AGENT_0.RADIUS = 0.1
    _C.SIMULATOR.AGENT_0.MASS = 32.0
    _C.SIMULATOR.AGENT_0.LINEAR_ACCELERATION = 20.0
    _C.SIMULATOR.AGENT_0.ANGULAR_ACCELERATION = 4 * 3.14
    _C.SIMULATOR.AGENT_0.LINEAR_FRICTION = 0.5
    _C.SIMULATOR.AGENT_0.ANGULAR_FRICTION = 1.0
    _C.SIMULATOR.AGENT_0.COEFFICIENT_OF_RESTITUTION = 0.0
    _C.SIMULATOR.AGENT_0.SENSORS = ["RGB_SENSOR"]
    _C.SIMULATOR.AGENT_0.IS_SET_START_STATE = False
    _C.SIMULATOR.AGENT_0.START_POSITION = [0, 0, 0]
    _C.SIMULATOR.AGENT_0.START_ROTATION = [0, 0, 0, 1]
    _C.SIMULATOR.AGENTS = ["AGENT_0"]
    # -----------------------------------------------------------------------------
    # SIMULATOR HABITAT_SIM_V0
    # -----------------------------------------------------------------------------
    _C.SIMULATOR.HABITAT_SIM_V0 = CN()
    _C.SIMULATOR.HABITAT_SIM_V0.GPU_DEVICE_ID = 0
    # -----------------------------------------------------------------------------
    # DATASET
    # -----------------------------------------------------------------------------
    _C.DATASET = CN()
    _C.DATASET.TYPE = "PointNav-v1"
    _C.DATASET.SPLIT = "train"
    
    _C.DATASET.SCENES_DIR = "data/scene_datasets"
    
    _C.DATASET.CONTENT_SCENES = ["*"]
    _C.DATASET.DATA_PATH = (
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
        "data/datasets/pointnav/habitat-test-scenes/v1/{split}/{split}.json.gz"
    )
    
    
    # -----------------------------------------------------------------------------
    
    
    def get_config(
    
        config_paths: Optional[Union[List[str], str]] = None,
        opts: Optional[list] = None,
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
    ) -> CN:
    
        r"""Create a unified config with default values overwritten by values from
    
        `config_paths` and overwritten by options from `opts`.
        Args:
            config_paths: List of config paths or string that contains comma
            separated list of config paths.
            opts: Config options (keys, values) in a list (e.g., passed from
            command line into the config. For example, `opts = ['FOO.BAR',
            0.5]`. Argument can be used for parameter sweeping or quick tests.
        """
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
        config = _C.clone()
    
        if config_paths:
            if isinstance(config_paths, str):
                if CONFIG_FILE_SEPARATOR in config_paths:
                    config_paths = config_paths.split(CONFIG_FILE_SEPARATOR)
                else:
                    config_paths = [config_paths]
    
            for config_path in config_paths:
                config.merge_from_file(config_path)
    
        if opts:
            config.merge_from_list(opts)
    
    
    Facebook Community Bot's avatar
    Facebook Community Bot committed
        config.freeze()
        return config