facebookresearch / habitat-lab

A modular high-level library to train embodied AI agents across a variety of tasks and environments.
https://aihabitat.org/
MIT License
1.89k stars 475 forks source link

Error: 'Configuration' object has no attribute 'SCENE' #429

Closed mukulkhanna closed 4 years ago

mukulkhanna commented 4 years ago

🐛 Bug

I am unable to train the PPO pointnav baseline with the test-scene dataset. Here is the main part of the error message ->

File "/home/mukul/habitat-api/habitat/sims/habitat_simulator/habitat_simulator.py", line 291, in reconfigure
    is_same_scene = habitat_config.SCENE == self._current_scene
AttributeError: 'Configuration' object has no attribute 'SCENE'

Command

python -u habitat_baselines/run.py --exp-config habitat_baselines/config/pointnav/ppo_pointnav_example.yaml --run-type train

To Reproduce

Steps to reproduce the behavior:

Same as mentioned in habitat_baselines README.

  1. Download test data for PPO pointnav baseline example.
  2. Run trainer.
Complete error log ``` python -u habitat_baselines/run.py --exp-config habitat_baselines/config/pointnav/ppo_pointnav_example.yaml --run-type train 2020-07-15 06:29:36,575 config: BASE_TASK_CONFIG_PATH: configs/tasks/pointnav.yaml CHECKPOINT_FOLDER: data/new_checkpoints CHECKPOINT_INTERVAL: 50 CMD_TRAILING_OPTS: [] ENV_NAME: NavRLEnv EVAL: SPLIT: val USE_CKPT_CONFIG: True EVAL_CKPT_PATH_DIR: data/new_checkpoints FORCE_BLIND_POLICY: False LOG_FILE: train.log LOG_INTERVAL: 10 NUM_PROCESSES: 1 NUM_UPDATES: 10000 ORBSLAM2: ANGLE_TH: 0.2617993877991494 BETA: 100 CAMERA_HEIGHT: 1.25 DEPTH_DENORM: 10.0 DIST_REACHED_TH: 0.15 DIST_TO_STOP: 0.05 D_OBSTACLE_MAX: 4.0 D_OBSTACLE_MIN: 0.1 H_OBSTACLE_MAX: 1.25 H_OBSTACLE_MIN: 0.375 MAP_CELL_SIZE: 0.1 MAP_SIZE: 40 MIN_PTS_IN_OBSTACLE: 320.0 NEXT_WAYPOINT_TH: 0.5 NUM_ACTIONS: 3 PLANNER_MAX_STEPS: 500 PREPROCESS_MAP: True SLAM_SETTINGS_PATH: habitat_baselines/slambased/data/mp3d3_small1k.yaml SLAM_VOCAB_PATH: habitat_baselines/slambased/data/ORBvoc.txt RL: DDPPO: backbone: resnet50 distrib_backend: GLOO num_recurrent_layers: 2 pretrained: False pretrained_encoder: False pretrained_weights: data/ddppo-models/gibson-2plus-resnet50.pth reset_critic: True rnn_type: LSTM sync_frac: 0.6 train_encoder: True PPO: clip_param: 0.1 entropy_coef: 0.01 eps: 1e-05 gamma: 0.99 hidden_size: 512 lr: 0.00025 max_grad_norm: 0.5 num_mini_batch: 1 num_steps: 128 ppo_epoch: 4 reward_window_size: 50 tau: 0.95 use_gae: True use_linear_clip_decay: True use_linear_lr_decay: True use_normalized_advantage: True value_loss_coef: 0.5 REWARD_MEASURE: distance_to_goal SLACK_REWARD: -0.01 SUCCESS_MEASURE: spl SUCCESS_REWARD: 10.0 SENSORS: ['RGB_SENSOR', 'DEPTH_SENSOR'] SIMULATOR_GPU_ID: 0 TASK_CONFIG: DATASET: CONTENT_SCENES: ['*'] DATA_PATH: data/datasets/pointnav/habitat-test-scenes/v1/{split}/{split}.json.gz SCENES_DIR: data/scene_datasets SPLIT: train TYPE: PointNav-v1 ENVIRONMENT: ITERATOR_OPTIONS: CYCLE: True GROUP_BY_SCENE: True MAX_SCENE_REPEAT_EPISODES: -1 MAX_SCENE_REPEAT_STEPS: 10000 NUM_EPISODE_SAMPLE: -1 SHUFFLE: True STEP_REPETITION_RANGE: 0.2 MAX_EPISODE_SECONDS: 10000000 MAX_EPISODE_STEPS: 500 PYROBOT: BASE_CONTROLLER: proportional BASE_PLANNER: none BUMP_SENSOR: TYPE: PyRobotBumpSensor DEPTH_SENSOR: CENTER_CROP: False HEIGHT: 480 MAX_DEPTH: 5.0 MIN_DEPTH: 0.0 NORMALIZE_DEPTH: True TYPE: PyRobotDepthSensor WIDTH: 640 LOCOBOT: ACTIONS: ['BASE_ACTIONS', 'CAMERA_ACTIONS'] BASE_ACTIONS: ['go_to_relative', 'go_to_absolute'] CAMERA_ACTIONS: ['set_pan', 'set_tilt', 'set_pan_tilt'] RGB_SENSOR: CENTER_CROP: False HEIGHT: 480 TYPE: PyRobotRGBSensor WIDTH: 640 ROBOT: locobot ROBOTS: ['locobot'] SENSORS: ['RGB_SENSOR', 'DEPTH_SENSOR', 'BUMP_SENSOR'] SEED: 100 SIMULATOR: ACTION_SPACE_CONFIG: v0 AGENTS: ['AGENT_0'] AGENT_0: ANGULAR_ACCELERATION: 12.56 ANGULAR_FRICTION: 1.0 COEFFICIENT_OF_RESTITUTION: 0.0 HEIGHT: 1.5 IS_SET_START_STATE: False LINEAR_ACCELERATION: 20.0 LINEAR_FRICTION: 0.5 MASS: 32.0 RADIUS: 0.1 SENSORS: ['RGB_SENSOR'] START_POSITION: [0, 0, 0] START_ROTATION: [0, 0, 0, 1] DEFAULT_AGENT_ID: 0 DEPTH_SENSOR: HEIGHT: 256 HFOV: 90 MAX_DEPTH: 10.0 MIN_DEPTH: 0.0 NORMALIZE_DEPTH: True ORIENTATION: [0.0, 0.0, 0.0] POSITION: [0, 1.25, 0] TYPE: HabitatSimDepthSensor WIDTH: 256 FORWARD_STEP_SIZE: 0.25 HABITAT_SIM_V0: ALLOW_SLIDING: True ENABLE_PHYSICS: False GPU_DEVICE_ID: 0 GPU_GPU: False PHYSICS_CONFIG_FILE: ./data/default.phys_scene_config.json RGB_SENSOR: HEIGHT: 256 HFOV: 90 ORIENTATION: [0.0, 0.0, 0.0] POSITION: [0, 1.25, 0] TYPE: HabitatSimRGBSensor WIDTH: 256 SCENE: data/scene_datasets/habitat-test-scenes/van-gogh-room.glb SEED: 100 SEMANTIC_SENSOR: HEIGHT: 480 HFOV: 90 ORIENTATION: [0.0, 0.0, 0.0] POSITION: [0, 1.25, 0] TYPE: HabitatSimSemanticSensor WIDTH: 640 TILT_ANGLE: 15 TURN_ANGLE: 10 TYPE: Sim-v0 TASK: ACTIONS: ANSWER: TYPE: AnswerAction LOOK_DOWN: TYPE: LookDownAction LOOK_UP: TYPE: LookUpAction MOVE_FORWARD: TYPE: MoveForwardAction STOP: TYPE: StopAction TELEPORT: TYPE: TeleportAction TURN_LEFT: TYPE: TurnLeftAction TURN_RIGHT: TYPE: TurnRightAction ANSWER_ACCURACY: TYPE: AnswerAccuracy COLLISIONS: TYPE: Collisions COMPASS_SENSOR: TYPE: CompassSensor CORRECT_ANSWER: TYPE: CorrectAnswer DISTANCE_TO_GOAL: DISTANCE_TO: POINT TYPE: DistanceToGoal EPISODE_INFO: TYPE: EpisodeInfo GOAL_SENSOR_UUID: pointgoal_with_gps_compass GPS_SENSOR: DIMENSIONALITY: 2 TYPE: GPSSensor HEADING_SENSOR: TYPE: HeadingSensor IMAGEGOAL_SENSOR: TYPE: ImageGoalSensor INSTRUCTION_SENSOR: TYPE: InstructionSensor INSTRUCTION_SENSOR_UUID: instruction MEASUREMENTS: ['DISTANCE_TO_GOAL', 'SUCCESS', 'SPL'] OBJECTGOAL_SENSOR: GOAL_SPEC: TASK_CATEGORY_ID GOAL_SPEC_MAX_VAL: 50 TYPE: ObjectGoalSensor POINTGOAL_SENSOR: DIMENSIONALITY: 2 GOAL_FORMAT: POLAR TYPE: PointGoalSensor POINTGOAL_WITH_GPS_COMPASS_SENSOR: DIMENSIONALITY: 2 GOAL_FORMAT: POLAR TYPE: PointGoalWithGPSCompassSensor POSSIBLE_ACTIONS: ['STOP', 'MOVE_FORWARD', 'TURN_LEFT', 'TURN_RIGHT'] PROXIMITY_SENSOR: MAX_DETECTION_RADIUS: 2.0 TYPE: ProximitySensor QUESTION_SENSOR: TYPE: QuestionSensor SENSORS: ['POINTGOAL_WITH_GPS_COMPASS_SENSOR'] SOFT_SPL: TYPE: SoftSPL SPL: TYPE: SPL SUCCESS: SUCCESS_DISTANCE: 0.2 TYPE: Success SUCCESS_DISTANCE: 0.2 TOP_DOWN_MAP: DRAW_BORDER: True DRAW_GOAL_AABBS: True DRAW_GOAL_POSITIONS: True DRAW_SHORTEST_PATH: True DRAW_SOURCE: True DRAW_VIEW_POINTS: True FOG_OF_WAR: DRAW: True FOV: 90 VISIBILITY_DIST: 5.0 MAP_PADDING: 3 MAP_RESOLUTION: 1250 MAX_EPISODE_STEPS: 1000 NUM_TOPDOWN_MAP_SAMPLE_POINTS: 20000 TYPE: TopDownMap TYPE: Nav-v0 TENSORBOARD_DIR: tb TEST_EPISODE_COUNT: 2 TORCH_GPU_ID: 0 TRAINER_NAME: ppo VIDEO_DIR: video_dir VIDEO_OPTION: ['disk', 'tensorboard'] 2020-07-15 06:29:36,585 Initializing dataset PointNav-v1 2020-07-15 06:29:39,143 Initializing dataset PointNav-v1 2020-07-15 06:29:39,390 initializing sim Sim-v0 Process ForkServerProcess-1: Traceback (most recent call last): File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/process.py", line 258, in _bootstrap self.run() File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/process.py", line 93, in run self._target(*self._args, **self._kwargs) File "/home/mukul/habitat-api/habitat/core/vector_env.py", line 186, in _worker_env env = env_fn(*env_fn_args) File "/home/mukul/habitat-api/habitat_baselines/common/env_utils.py", line 33, in make_env_fn env = env_class(config=config, dataset=dataset) File "/home/mukul/habitat-api/habitat_baselines/common/environments.py", line 42, in __init__ super().__init__(self._core_env_config, dataset) File "/home/mukul/habitat-api/habitat/core/env.py", line 334, in __init__ self._env = Env(config, dataset) File "/home/mukul/habitat-api/habitat/core/env.py", line 105, in __init__ id_sim=self._config.SIMULATOR.TYPE, config=self._config.SIMULATOR File "/home/mukul/habitat-api/habitat/sims/registration.py", line 19, in make_sim return _sim(**kwargs) File "/home/mukul/habitat-api/habitat/sims/habitat_simulator/habitat_simulator.py", line 185, in __init__ super().__init__(self.sim_config) File "", line 9, in __init__ self.__attrs_post_init__() File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/site-packages/habitat_sim-0.1.4-py3.6-linux-x86_64.egg/habitat_sim/simulator.py", line 64, in __attrs_post_init__ self.reconfigure(config) File "/home/mukul/habitat-api/habitat/sims/habitat_simulator/habitat_simulator.py", line 291, in reconfigure is_same_scene = habitat_config.SCENE == self._current_scene AttributeError: 'Configuration' object has no attribute 'SCENE' Traceback (most recent call last): File "habitat_baselines/run.py", line 70, in main() File "habitat_baselines/run.py", line 39, in main run_exp(**vars(args)) File "habitat_baselines/run.py", line 64, in run_exp trainer.train() File "/home/mukul/habitat-api/habitat_baselines/rl/ppo/ppo_trainer.py", line 274, in train self.config, get_env_class(self.config.ENV_NAME) File "/home/mukul/habitat-api/habitat_baselines/common/env_utils.py", line 104, in construct_envs workers_ignore_signals=workers_ignore_signals, File "/home/mukul/habitat-api/habitat/core/vector_env.py", line 146, in __init__ read_fn() for read_fn in self._connection_read_fns File "/home/mukul/habitat-api/habitat/core/vector_env.py", line 146, in read_fn() for read_fn in self._connection_read_fns File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 250, in recv buf = self._recv_bytes() File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 407, in _recv_bytes buf = self._recv(4) File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 379, in _recv chunk = read(handle, remaining) ConnectionResetError: [Errno 104] Connection reset by peer Exception ignored in: > Traceback (most recent call last): File "/home/mukul/habitat-api/habitat/core/vector_env.py", line 534, in __del__ self.close() File "/home/mukul/habitat-api/habitat/core/vector_env.py", line 416, in close write_fn((CLOSE_COMMAND, None)) File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 206, in send self._send_bytes(_ForkingPickler.dumps(obj)) File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 404, in _send_bytes self._send(header + buf) File "/home/mukul/anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 368, in _send n = write(self._handle, buf) BrokenPipeError: [Errno 32] Broken pipe (habitat) mukul@instance-1:~/habitat-api$ python -u habitat_baselines/run.py --exp-config habitat_baselines/config/pointnav/ppo_pointnav_example.yaml --run-type train ```

Expected behavior

Expected training to start.

Additional context

Thank you for your help!

mukulkhanna commented 4 years ago

Figured it out - I hadn't pulled habitat_sim sim changes. Thank you.

LORRY137 commented 9 months ago

Figured it out - I hadn't pulled habitat_sim sim changes. Thank you.

Could you please tell me how was this issue finally resolved?Thank you!

mukulkhanna commented 9 months ago

@LORRY137 As mentioned, I hadn't pulled habitat_sim changes. Your issue could be due to a version mismatch between hab-lab and hab-sim. Some more info in the issue mentioned above.