From 61af1b666bf082000280e407870fd42aa73da6a9 Mon Sep 17 00:00:00 2001 From: Oleksandr <maksymets.o@gmail.com> Date: Wed, 5 Jun 2019 18:13:19 -0700 Subject: [PATCH] CI setup that runs tests e2e testing using GPU machines (#97) * Builds and installs habitat-sim with python setup.py install * Added pytorch installation and running habitat baseline test in prediction mode. That maybe too much of testing, but decided to keep it for now. * Have ideas how to speed up and parallelize jobs. Will follow up in next PRs. * Run isort and black on whole code to make it happy. * Includes parallelization of installation steps and use files as flags that step is finished. CircleCI has no good way to parallelize steps and have dependencies one the same machine. * Cache is used to save conda dependencies installed and build simulator based on commit SHA. --- .circleci/config.yml | 174 ++++++++++++++++++ examples/shortest_path_follower_example.py | 3 +- habitat/core/dataset.py | 8 +- habitat/core/embodied_task.py | 4 +- habitat/core/env.py | 5 +- habitat/core/simulator.py | 3 +- habitat/core/vector_env.py | 7 +- habitat/datasets/pointnav/pointnav_dataset.py | 2 +- .../datasets/pointnav/pointnav_generator.py | 2 +- habitat/sims/habitat_simulator.py | 19 +- habitat/tasks/eqa/eqa_task.py | 6 +- habitat/tasks/nav/nav_task.py | 10 +- habitat/tasks/nav/shortest_path_follower.py | 6 +- habitat/utils/geometry_utils.py | 1 - habitat/utils/visualizations/maps.py | 3 +- habitat/utils/visualizations/utils.py | 4 +- habitat_baselines/agents/ppo_agents.py | 6 +- habitat_baselines/agents/slam_agents.py | 45 ++--- habitat_baselines/config/default.py | 4 +- habitat_baselines/evaluate_ppo.py | 5 +- habitat_baselines/rl/ppo/policy.py | 5 +- habitat_baselines/rl/ppo/ppo.py | 1 - habitat_baselines/slambased/mappers.py | 1 + habitat_baselines/slambased/monodepth.py | 20 +- habitat_baselines/slambased/path_planners.py | 5 +- habitat_baselines/slambased/reprojection.py | 3 +- habitat_baselines/slambased/utils.py | 3 +- habitat_baselines/train_ppo.py | 13 +- setup.py | 4 +- test/test_baseline_agents.py | 4 +- test/test_habitat_example.py | 3 +- test/test_pointnav_dataset.py | 2 +- test/test_sensors.py | 9 +- test/test_trajectory_sim.py | 1 + 34 files changed, 288 insertions(+), 103 deletions(-) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 000000000..d99760119 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,174 @@ +version: 2 +gpu: &gpu + machine: + image: ubuntu-1604:201903-01 + resource_class: gpu.small + environment: + FPS_THRESHOLD: 900 + +jobs: + python_lint: + docker: + - image: circleci/python:3.6 + steps: + - checkout + - run: + name: setup + command: | + sudo pip install black isort + - run: + name: run black + command: | + black . --line-length 79 --check --diff + - run: + name: run isort + command: | + isort . -rc --multi-line 3 --trailing-comma --force-grid-wrap 0 --line-width 79 --combine-as + + install_and_test_ubuntu: + <<: *gpu + steps: + - checkout: + path: ./habitat-api + - run: + name: Install cmake + no_output_timeout: 5m + command: | + echo $(git ls-remote https://github.com/facebookresearch/habitat-sim.git HEAD | awk '{ print $1}') > ./hsim_sha + wget https://github.com/Kitware/CMake/releases/download/v3.13.4/cmake-3.13.4-Linux-x86_64.sh + sudo mkdir /opt/cmake + sudo sh ./cmake-3.13.4-Linux-x86_64.sh --prefix=/opt/cmake --skip-license + sudo ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake + - run: + name: Install dependencies + no_output_timeout: 20m + command: | + sudo apt-get update || true + sudo apt-get install -y --no-install-recommends \ + build-essential \ + git \ + curl \ + vim \ + ca-certificates \ + libjpeg-dev \ + libglm-dev \ + libegl1-mesa-dev \ + xorg-dev \ + freeglut3-dev \ + pkg-config \ + wget \ + zip \ + unzip || true + - run: + name: Install cuda + no_output_timeout: 20m + background: true + command: | + wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1604/x86_64/cuda-repo-ubuntu1604_8.0.44-1_amd64.deb + sudo dpkg -i cuda-repo-ubuntu1604_8.0.44-1_amd64.deb + sudo apt-get update || true + sudo apt-get --yes --force-yes install cuda + touch ./cuda_installed + nvidia-smi + - restore_cache: + keys: + - conda-{{ checksum "habitat-api/.circleci/config.yml" }} + - run: + name: Install conda and dependencies + no_output_timeout: 20m + command: | + if [ ! -d ~/miniconda ] + then + curl -o ~/miniconda.sh -O https://repo.continuum.io/miniconda/Miniconda3-latest-Linux-x86_64.sh + chmod +x ~/miniconda.sh + ~/miniconda.sh -b -p $HOME/miniconda + rm ~/miniconda.sh + export PATH=$HOME/miniconda/bin:$PATH + conda create -y -n habitat python=3.6 + . activate habitat + conda install -q -y -c conda-forge ninja numpy pytest + fi + - run: + name: Install pytorch + no_output_timeout: 20m + background: true + command: | + if [ ! -f ~/miniconda/pytorch_installed ] + then + export PATH=$HOME/miniconda/bin:$PATH + . activate habitat; + conda install -c conda-forge opencv -y + conda install -y pytorch torchvision cudatoolkit=10.0 -c pytorch + fi + touch ~/miniconda/pytorch_installed + - restore_cache: + keys: + - habitat-sim-{{ checksum "./hsim_sha" }} + - run: + name: Build, install habitat-sim and run benchmark + no_output_timeout: 20m + command: | + export PATH=$HOME/miniconda/bin:$PATH + . activate habitat; + if [ ! -d ./habitat-sim ] + then + git clone https://github.com/facebookresearch/habitat-sim.git + cd habitat-sim + python setup.py install --headless + else + if [ ! -f ~/miniconda/pip_deps_installed ] + then + cd habitat-sim + python setup.py install --headless + fi + fi + - save_cache: + key: conda-{{ checksum "habitat-api/.circleci/config.yml" }} + background: true + paths: + - ~/miniconda + - run: + name: Download test data + command: | + + if [ ! -d ./habitat-sim/data ] + then + cd habitat-sim + wget http://dl.fbaipublicfiles.com/habitat/habitat-test-scenes.zip + unzip habitat-test-scenes.zip + rm habitat-test-scenes.zip + fi + - run: + name: Run sim benchmark + command: | + while [ ! -f ./cuda_installed ]; do sleep 2; done # wait for CUDA + export PATH=$HOME/miniconda/bin:$PATH + . activate habitat; cd habitat-sim + python examples/example.py --scene data/scene_datasets/habitat-test-scenes/van-gogh-room.glb --silent --test_fps_regression $FPS_THRESHOLD + - save_cache: + key: habitat-sim-{{ checksum "./hsim_sha" }} + paths: + - ./habitat-sim + - run: + name: Run api tests + command: | + export PATH=$HOME/miniconda/bin:$PATH + . activate habitat; cd habitat-api + while [ ! -f ~/miniconda/pytorch_installed ]; do sleep 2; done # wait for Pytorch + ln -s ../habitat-sim/data data + pip install -r requirements.txt --progress-bar off + touch ~/miniconda/pip_deps_installed + python setup.py test + python setup.py develop --all + python -u habitat_baselines/train_ppo.py --log-file "train.log" --checkpoint-folder "data/checkpoints" --sim-gpu-id 0 --pth-gpu-id 0 --num-processes 1 --num-mini-batch 1 --num-updates 10 + - save_cache: + key: conda-{{ checksum "habitat-api/.circleci/config.yml" }} + paths: + - ~/miniconda + +workflows: + version: 2 + install_and_test: + jobs: + - python_lint + - install_and_test_ubuntu \ No newline at end of file diff --git a/examples/shortest_path_follower_example.py b/examples/shortest_path_follower_example.py index 2cd170f36..e78cdd363 100644 --- a/examples/shortest_path_follower_example.py +++ b/examples/shortest_path_follower_example.py @@ -8,8 +8,9 @@ import os import shutil import cv2 -import habitat import numpy as np + +import habitat from habitat.tasks.nav.shortest_path_follower import ShortestPathFollower from habitat.utils.visualizations import maps from habitat.utils.visualizations.utils import images_to_video diff --git a/habitat/core/dataset.py b/habitat/core/dataset.py index 200c98afc..e0219bfd7 100644 --- a/habitat/core/dataset.py +++ b/habitat/core/dataset.py @@ -4,15 +4,15 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import attr import copy import json -from typing import Dict, List, Type, TypeVar, Generic, Optional, Callable - -from habitat.core.utils import not_none_validator +from typing import Callable, Dict, Generic, List, Optional, Type, TypeVar +import attr import numpy as np +from habitat.core.utils import not_none_validator + @attr.s(auto_attribs=True, kw_only=True) class Episode: diff --git a/habitat/core/embodied_task.py b/habitat/core/embodied_task.py index aa38576a1..775c1c09b 100644 --- a/habitat/core/embodied_task.py +++ b/habitat/core/embodied_task.py @@ -4,11 +4,11 @@ # 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 Any, List, Type, Optional, Dict from collections import OrderedDict +from typing import Any, Dict, List, Optional, Type from habitat.config import Config -from habitat.core.dataset import Episode, Dataset +from habitat.core.dataset import Dataset, Episode from habitat.core.simulator import SensorSuite, Simulator diff --git a/habitat/core/env.py b/habitat/core/env.py index cfa3438c2..874e69c25 100644 --- a/habitat/core/env.py +++ b/habitat/core/env.py @@ -5,18 +5,19 @@ # LICENSE file in the root directory of this source tree. import time -from typing import Dict, Type, List, Any, Optional, Tuple +from typing import Any, Dict, List, Optional, Tuple, Type import gym import numpy as np from gym.spaces.dict_space import Dict as SpaceDict + from habitat.config import Config from habitat.core.dataset import Dataset, Episode from habitat.core.embodied_task import EmbodiedTask, Metrics from habitat.core.simulator import Observations, Simulator +from habitat.datasets import make_dataset from habitat.sims import make_sim from habitat.tasks import make_task -from habitat.datasets import make_dataset class Env: diff --git a/habitat/core/simulator.py b/habitat/core/simulator.py index fddd6bfdd..69320bcc3 100644 --- a/habitat/core/simulator.py +++ b/habitat/core/simulator.py @@ -5,11 +5,12 @@ # LICENSE file in the root directory of this source tree. from collections import OrderedDict -from typing import Any, Dict, List, Optional from enum import Enum +from typing import Any, Dict, List, Optional from gym import Space from gym.spaces.dict_space import Dict as SpaceDict + from habitat.config import Config diff --git a/habitat/core/vector_env.py b/habitat/core/vector_env.py index 7cccd8cdc..d5fc6d387 100644 --- a/habitat/core/vector_env.py +++ b/habitat/core/vector_env.py @@ -8,16 +8,17 @@ import multiprocessing as mp from multiprocessing.connection import Connection from queue import Queue from threading import Thread -from typing import Iterable, List, Tuple, Callable, Union, Any, Set, Optional +from typing import Any, Callable, Iterable, List, Optional, Set, Tuple, Union -import habitat +import gym import numpy as np from gym.spaces.dict_space import Dict as SpaceDict + +import habitat from habitat.config import Config from habitat.core.env import Env, Observations from habitat.core.logging import logger from habitat.core.utils import tile_images -import gym STEP_COMMAND = "step" RESET_COMMAND = "reset" diff --git a/habitat/datasets/pointnav/pointnav_dataset.py b/habitat/datasets/pointnav/pointnav_dataset.py index 2795b2ebf..c2ce3cbe2 100644 --- a/habitat/datasets/pointnav/pointnav_dataset.py +++ b/habitat/datasets/pointnav/pointnav_dataset.py @@ -12,9 +12,9 @@ from typing import List, Optional from habitat.config import Config from habitat.core.dataset import Dataset from habitat.tasks.nav.nav_task import ( + NavigationEpisode, NavigationGoal, ShortestPathPoint, - NavigationEpisode, ) ALL_SCENES_MASK = "*" diff --git a/habitat/datasets/pointnav/pointnav_generator.py b/habitat/datasets/pointnav/pointnav_generator.py index 99cb542a2..2fbd79108 100644 --- a/habitat/datasets/pointnav/pointnav_generator.py +++ b/habitat/datasets/pointnav/pointnav_generator.py @@ -4,7 +4,7 @@ import numpy as np from habitat.core.simulator import Simulator from habitat.datasets.utils import get_action_shortest_path -from habitat.tasks.nav.nav_task import NavigationGoal, NavigationEpisode +from habitat.tasks.nav.nav_task import NavigationEpisode, NavigationGoal """ A minimum radius of a plane that a point should be part of to be diff --git a/habitat/sims/habitat_simulator.py b/habitat/sims/habitat_simulator.py index e60ca5518..8050ca023 100644 --- a/habitat/sims/habitat_simulator.py +++ b/habitat/sims/habitat_simulator.py @@ -4,18 +4,23 @@ # 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, Any, Optional from enum import Enum +from typing import Any, List, Optional + +import numpy as np +from gym import Space, spaces import habitat import habitat_sim -import numpy as np -from gym import spaces, Space -from habitat import SensorSuite, Config +from habitat import Config, SensorSuite from habitat.core.logging import logger -from habitat.core.simulator import AgentState, ShortestPathPoint -from habitat.core.simulator import RGBSensor, DepthSensor, SemanticSensor - +from habitat.core.simulator import ( + AgentState, + DepthSensor, + RGBSensor, + SemanticSensor, + ShortestPathPoint, +) RGBSENSOR_DIMENSION = 3 diff --git a/habitat/tasks/eqa/eqa_task.py b/habitat/tasks/eqa/eqa_task.py index 66d67e47e..6898db2a2 100644 --- a/habitat/tasks/eqa/eqa_task.py +++ b/habitat/tasks/eqa/eqa_task.py @@ -7,14 +7,14 @@ from typing import Dict, Optional import attr - import numpy as np from gym import spaces + from habitat.core.simulator import ( + Observations, Sensor, - SensorTypes, SensorSuite, - Observations, + SensorTypes, ) from habitat.core.utils import not_none_validator from habitat.tasks.nav.nav_task import NavigationEpisode, NavigationTask diff --git a/habitat/tasks/nav/nav_task.py b/habitat/tasks/nav/nav_task.py index c0c03b8d1..c46cf2e8b 100644 --- a/habitat/tasks/nav/nav_task.py +++ b/habitat/tasks/nav/nav_task.py @@ -6,20 +6,20 @@ from typing import Any, List, Optional, Type -import cv2 import attr +import cv2 import numpy as np from gym import spaces import habitat from habitat.config import Config -from habitat.core.dataset import Episode, Dataset +from habitat.core.dataset import Dataset, Episode from habitat.core.embodied_task import Measurements from habitat.core.simulator import ( - Simulator, - ShortestPathPoint, - SensorTypes, SensorSuite, + SensorTypes, + ShortestPathPoint, + Simulator, ) from habitat.core.utils import not_none_validator from habitat.tasks.utils import cartesian_to_polar, quaternion_rotate_vector diff --git a/habitat/tasks/nav/shortest_path_follower.py b/habitat/tasks/nav/shortest_path_follower.py index 12fdb3b1d..7d6da161b 100644 --- a/habitat/tasks/nav/shortest_path_follower.py +++ b/habitat/tasks/nav/shortest_path_follower.py @@ -6,17 +6,15 @@ from typing import Union -import habitat_sim import numpy as np -from habitat.sims.habitat_simulator import HabitatSim -from habitat.sims.habitat_simulator import SimulatorActions +import habitat_sim +from habitat.sims.habitat_simulator import HabitatSim, SimulatorActions from habitat.utils.geometry_utils import ( angle_between_quaternions, quaternion_from_two_vectors, ) - EPSILON = 1e-6 diff --git a/habitat/utils/geometry_utils.py b/habitat/utils/geometry_utils.py index 7249333bb..ac454f4d9 100644 --- a/habitat/utils/geometry_utils.py +++ b/habitat/utils/geometry_utils.py @@ -7,7 +7,6 @@ import numpy as np import quaternion - EPSILON = 1e-8 diff --git a/habitat/utils/visualizations/maps.py b/habitat/utils/visualizations/maps.py index c44302acd..fbd7eb6fe 100644 --- a/habitat/utils/visualizations/maps.py +++ b/habitat/utils/visualizations/maps.py @@ -5,12 +5,13 @@ # LICENSE file in the root directory of this source tree. import os -from typing import List, Tuple, Optional +from typing import List, Optional, Tuple import cv2 import imageio import numpy as np import scipy.ndimage + from habitat.core.simulator import Simulator from habitat.utils.visualizations import utils diff --git a/habitat/utils/visualizations/utils.py b/habitat/utils/visualizations/utils.py index 474b980a5..47a21a84c 100644 --- a/habitat/utils/visualizations/utils.py +++ b/habitat/utils/visualizations/utils.py @@ -5,10 +5,10 @@ # LICENSE file in the root directory of this source tree. import os -from typing import Tuple, Optional, List +from typing import List, Optional, Tuple -import numpy as np import imageio +import numpy as np import tqdm diff --git a/habitat_baselines/agents/ppo_agents.py b/habitat_baselines/agents/ppo_agents.py index ea0b53773..26f59a944 100644 --- a/habitat_baselines/agents/ppo_agents.py +++ b/habitat_baselines/agents/ppo_agents.py @@ -10,13 +10,13 @@ import random import numpy as np import torch -from gym.spaces import Discrete, Dict, Box +from gym.spaces import Box, Dict, Discrete import habitat -from habitat_baselines.rl.ppo import Policy -from habitat_baselines.rl.ppo.utils import batch_obs from habitat import Config from habitat.core.agent import Agent +from habitat_baselines.rl.ppo import Policy +from habitat_baselines.rl.ppo.utils import batch_obs def get_defaut_config(): diff --git a/habitat_baselines/agents/slam_agents.py b/habitat_baselines/agents/slam_agents.py index c90ecb5f2..b7694e826 100644 --- a/habitat_baselines/agents/slam_agents.py +++ b/habitat_baselines/agents/slam_agents.py @@ -1,39 +1,34 @@ import argparse -import numpy as np -import torch +import os import random +import sys import time -import os -import PIL from math import pi + +import numpy as np +import PIL +import requests +import torch import torch.nn.functional as F -import orbslam2 + import habitat -from habitat_baselines.slambased.utils import generate_2dgrid +import orbslam2 +from habitat.config.default import get_config +from habitat.sims.habitat_simulator import SimulatorActions +from habitat_baselines.config.default import get_config as cfg_baseline +from habitat_baselines.slambased.mappers import DirectDepthMapper +from habitat_baselines.slambased.monodepth import MonoDepthEstimator +from habitat_baselines.slambased.path_planners import DifferentiableStarPlanner from habitat_baselines.slambased.reprojection import ( - homogenize_p, - get_distance, - project_tps_into_worldmap, + angle_to_pi_2_minus_pi_2 as norm_ang, get_direction, + get_distance, habitat_goalpos_to_mapgoal_pos, + homogenize_p, planned_path2tps, - angle_to_pi_2_minus_pi_2, -) -from habitat_baselines.slambased.reprojection import ( - angle_to_pi_2_minus_pi_2 as norm_ang, + project_tps_into_worldmap, ) -from habitat.sims.habitat_simulator import SimulatorActions -from habitat_baselines.slambased.mappers import DirectDepthMapper -from habitat_baselines.slambased.path_planners import DifferentiableStarPlanner - -from habitat_baselines.config.default import get_config as cfg_baseline -from habitat.config.default import get_config - -from habitat_baselines.slambased.monodepth import MonoDepthEstimator - -# https://sumit-ghosh.com/articles/python-download-progress-bar/ -import sys -import requests +from habitat_baselines.slambased.utils import generate_2dgrid def download(url, filename): diff --git a/habitat_baselines/config/default.py b/habitat_baselines/config/default.py index 39a9cc377..ee9c62d7d 100644 --- a/habitat_baselines/config/default.py +++ b/habitat_baselines/config/default.py @@ -4,8 +4,10 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import numpy as np from typing import List, Optional, Union + +import numpy as np + from habitat import get_config from habitat.config import Config as CN diff --git a/habitat_baselines/evaluate_ppo.py b/habitat_baselines/evaluate_ppo.py index 43f340797..ef496589b 100644 --- a/habitat_baselines/evaluate_ppo.py +++ b/habitat_baselines/evaluate_ppo.py @@ -9,12 +9,11 @@ import argparse import torch import habitat -from habitat.config.default import get_config from config.default import get_config as cfg_baseline - -from train_ppo import make_env_fn +from habitat.config.default import get_config from rl.ppo import PPO, Policy from rl.ppo.utils import batch_obs +from train_ppo import make_env_fn def main(): diff --git a/habitat_baselines/rl/ppo/policy.py b/habitat_baselines/rl/ppo/policy.py index 0fa2adca6..5c9e72563 100644 --- a/habitat_baselines/rl/ppo/policy.py +++ b/habitat_baselines/rl/ppo/policy.py @@ -4,12 +4,11 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. +import numpy as np import torch import torch.nn as nn -from habitat_baselines.rl.ppo.utils import Flatten, CategoricalNet - -import numpy as np +from habitat_baselines.rl.ppo.utils import CategoricalNet, Flatten class Policy(nn.Module): diff --git a/habitat_baselines/rl/ppo/ppo.py b/habitat_baselines/rl/ppo/ppo.py index 6f46ab225..78f113f89 100644 --- a/habitat_baselines/rl/ppo/ppo.py +++ b/habitat_baselines/rl/ppo/ppo.py @@ -8,7 +8,6 @@ import torch import torch.nn as nn import torch.optim as optim - EPS_PPO = 1e-5 diff --git a/habitat_baselines/slambased/mappers.py b/habitat_baselines/slambased/mappers.py index 527b37cd9..90b16cd3b 100644 --- a/habitat_baselines/slambased/mappers.py +++ b/habitat_baselines/slambased/mappers.py @@ -1,6 +1,7 @@ import numpy as np import torch import torch.nn as nn + from habitat_baselines.slambased.reprojection import ( get_map_size_in_cells, project2d_pcl_into_worldmap, diff --git a/habitat_baselines/slambased/monodepth.py b/habitat_baselines/slambased/monodepth.py index 38c7269c5..a1f87b793 100644 --- a/habitat_baselines/slambased/monodepth.py +++ b/habitat_baselines/slambased/monodepth.py @@ -6,26 +6,26 @@ WACV 2019 """ +import math +import os +import pdb + +import numpy as np import torch +import torch.nn as nn +import torch.nn.functional as F import torch.nn.parallel +import torch.utils.model_zoo as model_zoo +from PIL import Image +from torchvision import transforms, utils """ ResNet code gently borrowed from https://github.com/pytorch/vision/blob/master/torchvision/models/py """ -import torch.nn as nn -import math -import torch.utils.model_zoo as model_zoo -import torch.nn.functional as F -import torch -import numpy as np -import pdb -import os -from PIL import Image accimage = None -from torchvision import transforms, utils __all__ = [ diff --git a/habitat_baselines/slambased/path_planners.py b/habitat_baselines/slambased/path_planners.py index eebaebfad..9e15e1574 100644 --- a/habitat_baselines/slambased/path_planners.py +++ b/habitat_baselines/slambased/path_planners.py @@ -1,8 +1,9 @@ +import matplotlib.pyplot as plt import numpy as np import torch -import torch.nn.functional as F import torch.nn as nn -import matplotlib.pyplot as plt +import torch.nn.functional as F + from habitat_baselines.slambased.utils import generate_2dgrid diff --git a/habitat_baselines/slambased/reprojection.py b/habitat_baselines/slambased/reprojection.py index e71074b55..7d79f6d74 100644 --- a/habitat_baselines/slambased/reprojection.py +++ b/habitat_baselines/slambased/reprojection.py @@ -1,6 +1,7 @@ +from math import ceil, floor + import numpy as np import torch -from math import ceil, floor def p_zx(p): diff --git a/habitat_baselines/slambased/utils.py b/habitat_baselines/slambased/utils.py index 8b39671c7..73acc862d 100644 --- a/habitat_baselines/slambased/utils.py +++ b/habitat_baselines/slambased/utils.py @@ -1,6 +1,7 @@ +import time + import numpy as np import torch -import time from PIL import Image diff --git a/habitat_baselines/train_ppo.py b/habitat_baselines/train_ppo.py index b71238263..90ecc0d82 100644 --- a/habitat_baselines/train_ppo.py +++ b/habitat_baselines/train_ppo.py @@ -5,20 +5,21 @@ # LICENSE file in the root directory of this source tree. import os -from time import time -from collections import deque import random -import numpy as np +from collections import deque +from time import time +import numpy as np import torch + import habitat +from config.default import get_config as cfg_baseline from habitat import logger -from habitat.sims.habitat_simulator import SimulatorActions from habitat.config.default import get_config as cfg_env -from config.default import get_config as cfg_baseline from habitat.datasets.pointnav.pointnav_dataset import PointNavDatasetV1 +from habitat.sims.habitat_simulator import SimulatorActions from rl.ppo import PPO, Policy, RolloutStorage -from rl.ppo.utils import update_linear_schedule, ppo_args, batch_obs +from rl.ppo.utils import batch_obs, ppo_args, update_linear_schedule class NavRLEnv(habitat.RLEnv): diff --git a/setup.py b/setup.py index bec05a1f7..a95bae9b4 100644 --- a/setup.py +++ b/setup.py @@ -7,12 +7,14 @@ import glob import os.path import sys + import setuptools from setuptools.command.develop import develop as DefaultDevelopCommand from setuptools.command.install import install as DefaultInstallCommand sys.path.insert(0, os.path.join(os.path.dirname(__file__), "habitat")) -from version import VERSION # noqa +from version import VERSION # isort:skip noqa + with open("README.md", encoding="utf8") as f: readme = f.read() diff --git a/test/test_baseline_agents.py b/test/test_baseline_agents.py index fcb6283f0..b69bc8220 100644 --- a/test/test_baseline_agents.py +++ b/test/test_baseline_agents.py @@ -4,9 +4,11 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import habitat import os + import pytest + +import habitat from habitat_baselines.agents import simple_agents try: diff --git a/test/test_habitat_example.py b/test/test_habitat_example.py index 39131be24..1f95c35f4 100644 --- a/test/test_habitat_example.py +++ b/test/test_habitat_example.py @@ -7,10 +7,9 @@ import pytest import habitat +from examples import shortest_path_follower_example, visualization_examples from examples.example import example from habitat.datasets.pointnav.pointnav_dataset import PointNavDatasetV1 -from examples import visualization_examples -from examples import shortest_path_follower_example def test_readme_example(): diff --git a/test/test_pointnav_dataset.py b/test/test_pointnav_dataset.py index dbc4b9053..1701b981f 100644 --- a/test/test_pointnav_dataset.py +++ b/test/test_pointnav_dataset.py @@ -18,8 +18,8 @@ from habitat.core.embodied_task import Episode from habitat.core.logging import logger from habitat.datasets import make_dataset from habitat.datasets.pointnav.pointnav_dataset import ( - PointNavDatasetV1, DEFAULT_SCENE_PATH_PREFIX, + PointNavDatasetV1, ) from habitat.utils.geometry_utils import quaternion_xyzw_to_wxyz diff --git a/test/test_sensors.py b/test/test_sensors.py index 6b6cc3868..771704089 100644 --- a/test/test_sensors.py +++ b/test/test_sensors.py @@ -4,19 +4,20 @@ # This source code is licensed under the MIT license found in the # LICENSE file in the root directory of this source tree. -import numpy as np import os -import pytest import random +import numpy as np +import pytest + import habitat from habitat.config.default import get_config +from habitat.sims.habitat_simulator import SimulatorActions from habitat.tasks.nav.nav_task import ( - NavigationEpisode, COLLISION_PROXIMITY_TOLERANCE, + NavigationEpisode, NavigationGoal, ) -from habitat.sims.habitat_simulator import SimulatorActions NON_STOP_ACTIONS = [ v for v in range(len(SimulatorActions)) if v != SimulatorActions.STOP.value diff --git a/test/test_trajectory_sim.py b/test/test_trajectory_sim.py index f3e02f1be..8d2302cba 100644 --- a/test/test_trajectory_sim.py +++ b/test/test_trajectory_sim.py @@ -9,6 +9,7 @@ import os import numpy as np import pytest + from habitat.config.default import get_config from habitat.sims import make_sim from habitat.sims.habitat_simulator import SimulatorActions -- GitLab