habitat 问题记录

1.

在执行example.py时出现找不到habitat,而我之前已经安装,故又在原来的基础上重新执行pip install -e.

通过conda list -n habitat查看可以看到habitat这个模块了

 

2.

~/habitat-sim/build$ ./viewer /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb

StageAttributesManager::registerAttributesTemplateFinalize : Render asset template handle : /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb specified in stage template with handle : /path/to/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb does not correspond to any existing file or primitive render asset. Aborting.
Segmentation fault (core dumped)

这里的/path/to/data需要换成你下载的路径

 ./viewer /home/xxx/habitat-test-scenes/data/scene_datasets/habitat-test-scenes/skokloster-castle.glb

 

3.

执行此部分时/habitat-lab$ python setup.py test
遇到

E       RuntimeError: No ffmpeg exe could be found. Install ffmpeg on your system, or set the IMAGEIO_FFMPEG_EXE environment variable.

../miniconda3/envs/habitat/lib/python3.6/site-packages/imageio_ffmpeg-0.4.2-py3.6-linux-x86_64.egg/imageio_ffmpeg/_utils.py:50: RuntimeError

然后通过pip install ffmpeg以及imageio_ffmpeg安装

conda list -n habitat

ffmpeg                    1.4                      pypi_0    pypi
gitdb                     4.0.5                    pypi_0    pypi
gitpython                 3.1.11                   pypi_0    pypi
gym                       0.10.9                   pypi_0    pypi
habitat                   0.1.6                     dev_0    <develop>
habitat-sim               0.1.6                    pypi_0    pypi
imageio-ffmpeg            0.4.2                    pypi_0    pypi
 

接着执行python setup.py test 还是存在相同的问题

于是sudo apt install ffmpeg

再次执行解决了

 

5.

when i run
python -u habitat_baselines/run.py --exp-config habitat_baselines/config/pointnav/ppo_pointnav_example.yaml --run-type train,
it happened assert cls.check_config_paths_exist(config) AssertionError.,and when i exchanged the --exp-config yaml ,it also displayed the same problem. But it succeed before, the example i have changed has been recovered according to the file in the github. I can't find problem until now.

~/habitat-lab$ python -u habitat_baselines/run.py --exp-config habitat_baselines/config/pointnav/ppo_pointnav_example.yaml --run-type train,
2020-11-25 14:06:17,302 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
POLICY:
OBS_TRANSFORMS:
CENTER_CROPPER:
HEIGHT: 256
WIDTH: 256
CUBE2EQ:
CUBE_LENGTH: 256
HEIGHT: 256
SENSOR_UUIDS: []
WIDTH: 512
ENABLED_TRANSFORMS: ()
RESIZE_SHORTEST_EDGE:
SIZE: 256
name: PointNavBaselinePolicy
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: 1024
MAX_EPISODE_STEPS: 1000
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-11-25 14:06:17,302 Initializing dataset PointNav-v1
Traceback (most recent call last):
File "habitat_baselines/run.py", line 79, in
main()
File "habitat_baselines/run.py", line 40, in main
run_exp(**vars(args))
File "habitat_baselines/run.py", line 75, in run_exp
execute_exp(config, run_type)
File "habitat_baselines/run.py", line 58, in execute_exp
trainer.train()
File "/home/oot/habitat-lab/habitat_baselines/rl/ppo/ppo_trainer.py", line 287, in train
self.config, get_env_class(self.config.ENV_NAME)
File "/home/oot/habitat-lab/habitat_baselines/utils/env_utils.py", line 59, in construct_envs
scenes = dataset.get_scenes_to_load(config.TASK_CONFIG.DATASET)
File "/home/oot/habitat-lab/habitat/datasets/pointnav/pointnav_dataset.py", line 43, in get_scenes_to_load
assert cls.check_config_paths_exist(config)
AssertionError

如大佬所说,dataset位置不对.可以通过终端打印的配置信息看出,

TASK_CONFIG:
  DATASET:
    CONTENT_SCENES: ['*']
    DATA_PATH: data/datasets/pointnav/habitat-test-scenes/v1/{split}/{split}.json.gz
    SCENES_DIR: data/scene_datasets
上面的黑体部分确实没有,位置放错了:(

 

6.在解决上面的问题也出现了:

BrokenPipeError: [Errno 32] Broken pipe

不过是因为data_path指定的路径是data/datasets/pointnav/gibson/v1/{split}/{split}.json.gz,导致了上面的问题.

但是此路径中确实有文件.问题暂时参考:

BrokenPipeError: [Errno 32] Broken pipe is usually cause by other error with environment running as separate processes. Try to check memory occupation on the GPU as well as decrease number of processes. MP3D 3D scenes take more memory than Gibson's ones.[link]

 

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

error:

Traceback (most recent call last):
  File "habitat_baselines/run.py", line 91, in <module>
    main()
  File "habitat_baselines/run.py", line 40, in main
    run_exp(**vars(args))#读取参数
  File "habitat_baselines/run.py", line 87, in run_exp
    execute_exp(config, run_type)#执行参数,config包含了exp_config,opts
  File "habitat_baselines/run.py", line 69, in execute_exp
    trainer.train()
  File "/home//habitat-lab/habitat_baselines/rl/ppo/ppo_trainer.py", line 291, in train
    self.config, get_env_class(self.config.ENV_NAME)
  File "/home//habitat-lab/habitat_baselines/utils/env_utils.py", line 102, in construct_envs
    workers_ignore_signals=workers_ignore_signals,
  File "/home//habitat-lab/habitat/core/vector_env.py", line 146, in __init__
    read_fn() for read_fn in self._connection_read_fns
  File "/home//habitat-lab/habitat/core/vector_env.py", line 146, in <listcomp>
    read_fn() for read_fn in self._connection_read_fns
  File "/home//miniconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 250, in recv
    buf = self._recv_bytes()
  File "/home//miniconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 407, in _recv_bytes
    buf = self._recv(4)
  File "/home//miniconda3/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: <bound method VectorEnv.__del__ of <habitat.core.vector_env.VectorEnv object at 0x7fc140e646a0>>
Traceback (most recent call last):
  File "/home//habitat-lab/habitat/core/vector_env.py", line 529, in __del__
    self.close()
  File "/home//habitat-lab/habitat/core/vector_env.py", line 413, in close
    write_fn((CLOSE_COMMAND, None))
  File "/home//miniconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 206, in send
    self._send_bytes(_ForkingPickler.dumps(obj))
  File "/home//miniconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 404, in _send_bytes
    self._send(header + buf)
  File "/home//miniconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 368, in _send
    n = write(self._handle, buf)
BrokenPipeError: [Errno 32] Broken pipe
 

ppo_pointnav.yaml中的base_task_config为*gibson.yaml,因为没有相关的dataset,故改为pointnav.yaml默认读取habitat-scene-test数据.出现了下面这个问题.将其中的num_process改为2或以上就好了

Traceback (most recent call last):
  File "habitat_baselines/run.py", line 79, in <module>
    main()
  File "habitat_baselines/run.py", line 40, in main
    run_exp(**vars(args))
  File "habitat_baselines/run.py", line 75, in run_exp
    execute_exp(config, run_type)
  File "habitat_baselines/run.py", line 58, in execute_exp
    trainer.train()
  File "/home//habitat-lab/habitat_baselines/rl/ppo/ppo_trainer.py", line 376, in train
    ) = self._update_agent(ppo_cfg, rollouts)
  File "/home//habitat-lab/habitat_baselines/rl/ppo/ppo_trainer.py", line 268, in _update_agent
    value_loss, action_loss, dist_entropy = self.agent.update(rollouts)
  File "/home//habitat-lab/habitat_baselines/rl/ppo/ppo.py", line 74, in update
    for sample in data_generator:
  File "/home//habitat-lab/habitat_baselines/common/rollout_storage.py", line 138, in recurrent_generator
    "trainer mini batches ({}).".format(num_processes, num_mini_batch)
AssertionError: Trainer requires the number of processes (1) to be greater than or equal to the number of trainer mini batches (2).
Exception ignored in: <bound method VectorEnv.__del__ of <habitat.core.vector_env.VectorEnv object at 0x7f41a8c17588>>
Traceback (most recent call last):
  File "/home//habitat-lab/habitat/core/vector_env.py", line 529, in __del__
  File "/home//habitat-lab/habitat/core/vector_env.py", line 413, in close
  File "/home//anaconda3/envs/habitat/lib/python3.6/multiprocessing/connection.py", line 206, in send
AttributeError: 'NoneType' object has no attribute 'dumps'
 


 

 


版权声明:本文为Lovemyse1f原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。