From ea3cf29fb11086eeb843d5cdaa31b536a53e615e Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Tue, 11 Jun 2024 23:58:35 -0400 Subject: [PATCH 01/14] Add goals to readme --- README.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/README.md b/README.md index f491045f..3f08fb9f 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,17 @@ # Evolution Gym +
+ Warning: This branch is under active development! +
+ + +Version 2 of `evogym` aims to make the following improvements: +- Pip-installable, with wheels for common builds +- Pip-installable, with wheels for common builds +- Separation of requirements between core `evogym` library and `examples` +- Modernize requirements (python, gym, numpy) +- Tests + A large-scale benchmark for co-optimizing the design and control of soft robots. As seen in [Evolution Gym: A Large-Scale Benchmark for Evolving Soft Robots](https://evolutiongym.github.io/) (**NeurIPS 2021**). [//]: # (teaser) From 15bc3c7dd997e855a1c29763d32e4b2f91ecaf41 Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Wed, 12 Jun 2024 00:05:00 -0400 Subject: [PATCH 02/14] Improve warning formatting --- README.md | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index 3f08fb9f..601fdbb0 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,13 @@ # Evolution Gym -
- Warning: This branch is under active development! -
- - -Version 2 of `evogym` aims to make the following improvements: -- Pip-installable, with wheels for common builds -- Pip-installable, with wheels for common builds -- Separation of requirements between core `evogym` library and `examples` -- Modernize requirements (python, gym, numpy) -- Tests +> [!CAUTION] +> This branch is under active development! +> +> Version 2 of `evogym` aims to make the following improvements: +> - Separation of requirements between core `evogym` library and `examples` +> - Modernize requirements (python, gym, numpy) +> - Pip-installable, with wheels for common builds +> - Tests A large-scale benchmark for co-optimizing the design and control of soft robots. As seen in [Evolution Gym: A Large-Scale Benchmark for Evolving Soft Robots](https://evolutiongym.github.io/) (**NeurIPS 2021**). From 65d45c22d5cd87d908e1cddeeb26b11fb1ec0e3f Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Wed, 12 Jun 2024 00:21:04 -0400 Subject: [PATCH 03/14] Modernize build in favor of pyproject.toml --- MANIFEST.in | 1 + pyproject.toml | 40 ++++++++++++++++++++++++++++++++++++++-- setup.cfg | 19 ------------------- setup.py | 10 +--------- 4 files changed, 40 insertions(+), 30 deletions(-) create mode 100644 MANIFEST.in delete mode 100644 setup.cfg diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 00000000..856a9285 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +graft evogym/simulator diff --git a/pyproject.toml b/pyproject.toml index d7036f80..14117b6c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,3 +1,39 @@ [build-system] -requires = ["setuptools", "wheel", "pybind11>=2.6.0"] -build-backend = "setuptools.build_meta" \ No newline at end of file +requires = ["setuptools", "wheel"] +build-backend = "setuptools.build_meta" # Setuptools used because compiling C++ code requires CMake + +# Manually specify packages and their directories +[tool.setuptools.package-dir] +evogym = "evogym" +"evogym.envs" = "evogym/envs" +"evogym.simulator_cpp" = "evogym/simulator" # C++ simulator package renamed + +# Manually specify package data +[tool.setuptools.package-data] +"evogym.envs" = ["sim_files/*.json"] + +[project] +name = "evogym" +version = "2.0.0" +authors = [ + { name="Jagdeep Singh Bhatia", email="jagdeep@mit.edu" }, +] +description = "Evolution Gym: A benchmark for developing and evaluating soft robot co-design algorithms." +readme = "README.md" +license = {file = "LICENSE"} +keywords = ["evolution", "gym", "evolution gym", "soft robotics", "benchmark", "co-design"] +requires-python = ">=3.7" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +dependencies = [ + "gym==0.22.0", + "numpy", +] + +[project.urls] +Homepage = "https://github.com/EvolutionGym/evogym" +Issues = "https://github.com/EvolutionGym/evogym/issues" +Documentation = "https://evolutiongym.github.io/" \ No newline at end of file diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 2bcfaeaa..00000000 --- a/setup.cfg +++ /dev/null @@ -1,19 +0,0 @@ -[metadata] -name = evogym -version = 1.0.0 -author = Jagdeep Bhatia -author_email = jagdeep@mit.edu -description = Evolution Gym: A benchmark for developing and comparing soft robot co-design algorithms. -long_description = file: README.md -long_description_content_type = text/markdown -url = https://github.com/EvolutionGym -project_urls = - Bug Tracker = https://github.com/EvolutionGym - Docs = http://evogym.csail.mit.edu/ -classifiers = - Programming Language :: Python :: 3 - License :: OSI Approved :: MIT License - Operating System :: OS Independent - -[options] -python_requires = >=3.6 \ No newline at end of file diff --git a/setup.py b/setup.py index 2e096fa5..4d19b549 100644 --- a/setup.py +++ b/setup.py @@ -57,16 +57,8 @@ def build_extension(self, ext): subprocess.check_call(['cmake', ext.sourcedir] + cmake_args, cwd=self.build_temp, env=env) subprocess.check_call(['cmake', '--build', '.'] + build_args, cwd=self.build_temp) - +# Install c++ package via cmake setup( - name="evogym", - packages=['evogym', 'evogym.envs'], - package_dir={ - 'evogym': 'evogym', - 'evogym.envs': 'evogym/envs'}, - package_data={ - "evogym.envs": [os.path.join('sim_files', '*.json')] #["*.json", "*.sob"], - }, ext_modules=[CMakeExtension('evogym.simulator_cpp', 'evogym/simulator')], cmdclass=dict(build_ext=CMakeBuild), zip_safe=False, From 716b8ba3c3bbf4bf1af15bebb97a92908efc058b Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Wed, 12 Jun 2024 00:30:10 -0400 Subject: [PATCH 04/14] Fix bug in windows install --- evogym/simulator/SimulatorCPP/Environment.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/evogym/simulator/SimulatorCPP/Environment.h b/evogym/simulator/SimulatorCPP/Environment.h index b1b6302d..8ab01ae6 100644 --- a/evogym/simulator/SimulatorCPP/Environment.h +++ b/evogym/simulator/SimulatorCPP/Environment.h @@ -17,12 +17,12 @@ using namespace std; using namespace Eigen; -#ifdef __APPLE__ +// #ifdef __APPLE__ +// using RefMatrixXd = Matrix ; +// #else +// using RefMatrixXd = Ref ; +// #endif using RefMatrixXd = Matrix ; -#else -using RefMatrixXd = Ref ; -#endif - class Environment { private: From 6033cbea3da4776de46569c388d8d1a14e7f3fac Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Wed, 12 Jun 2024 00:42:43 -0400 Subject: [PATCH 05/14] Update gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 2b99c80e..d66759ca 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ build_scripts .DS_Store exported/ req_ns.txt +backup/ From 45aa1604920d72c70b3341796fffa32540fc4030 Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Wed, 12 Jun 2024 00:43:09 -0400 Subject: [PATCH 06/14] Update install instructions --- README.md | 61 +++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 601fdbb0..df3559eb 100644 --- a/README.md +++ b/README.md @@ -16,21 +16,36 @@ A large-scale benchmark for co-optimizing the design and control of soft robots. # Installation -Clone the repo and submodules: +You can install evogym from PyPi or from source. + +## From PyPi + +To use evogym in your projects, simply run: ```shell -git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git +pip install --upgrade evogym ``` +> [!CAUTION] +> This doesn't work yet -- coming soon! + +## From Source + +If your platform is not supported, you may try building from source: + ### Requirements -* Python 3.7/3.8 +* Python 3.7+ * Linux, macOS, or Windows with [Visual Studios 2017](https://visualstudio.microsoft.com/vs/older-downloads/) * [OpenGL](https://www.opengl.org//) * [CMake](https://cmake.org/download/) * [PyTorch](http://pytorch.org/) - +Clone the repo and submodules: + +```shell +git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git +``` On **Linux only**: @@ -38,33 +53,43 @@ On **Linux only**: sudo apt-get install xorg-dev libglu1-mesa-dev ``` -Either install Python dependencies with conda: +To build the C++ simulation, build all the submodules, and install `evogym` run the following command in the environment of your choice: ```shell -conda env create -f environment.yml -conda activate evogym +pip install -e . ``` -or with pip: +## Test Installation + +If you have the repo cloned, `cd` to the `examples` folder and run the following script: ```shell -pip install -r requirements.txt +python gym_test.py ``` -### Build and Install Package +Alternatively, you can run the following snippet: -To build the C++ simulation, build all the submodules, and install `evogym` run the following command: +```python +import gym +import evogym.envs +from evogym import sample_robot -```shell -python setup.py install -``` -### Test Installation +if __name__ == '__main__': -cd to the `examples` folder and run the following script: + body, connections = sample_robot((5,5)) + env = gym.make('Walker-v0', body=body) + env.reset() -```shell -python gym_test.py + while True: + action = env.action_space.sample()-1 + ob, reward, done, info = env.step(action) + env.render() + + if done: + env.reset() + + env.close() ``` This script creates a random `5x5` robot in the `Walking-v0` environment. The robot is taking random actions. A window should open with a visualization of the environment -- kill the process from the terminal to close it. From 79de3fe32b8b6d8fb39102d93dcc6bfcb4ac420f Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Wed, 12 Jun 2024 23:20:00 -0400 Subject: [PATCH 07/14] Update in favor of modern numpy and gym/gymnasium versions (#38) * Switch to new gym api, compatible with latest numpy version * Update test * gym to gymnasium * Update test --- README.md | 9 +- evogym/envs/__init__.py | 2 +- evogym/envs/balance.py | 57 ++++++---- evogym/envs/base.py | 88 ++++++++++----- evogym/envs/change_shape.py | 97 ++++++++++------ evogym/envs/climb.py | 86 +++++++++----- evogym/envs/flip.py | 33 +++--- evogym/envs/jump.py | 33 +++--- evogym/envs/manipulate.py | 218 +++++++++++++++++++++++------------- evogym/envs/multi_goal.py | 43 ++++--- evogym/envs/traverse.py | 187 ++++++++++++++++++++----------- evogym/envs/walk.py | 81 +++++++++----- evogym/viewer.py | 24 ++-- pyproject.toml | 2 +- tests/test_render.py | 9 +- 15 files changed, 614 insertions(+), 355 deletions(-) diff --git a/README.md b/README.md index df3559eb..1acc5eb6 100644 --- a/README.md +++ b/README.md @@ -70,7 +70,7 @@ python gym_test.py Alternatively, you can run the following snippet: ```python -import gym +import gymnasium as gym import evogym.envs from evogym import sample_robot @@ -78,15 +78,14 @@ from evogym import sample_robot if __name__ == '__main__': body, connections = sample_robot((5,5)) - env = gym.make('Walker-v0', body=body) + env = gym.make('Walker-v0', body=body, render_mode='human') env.reset() while True: action = env.action_space.sample()-1 - ob, reward, done, info = env.step(action) - env.render() + ob, reward, terminated, truncated, info = env.step(action) - if done: + if terminated or truncated: env.reset() env.close() diff --git a/evogym/envs/__init__.py b/evogym/envs/__init__.py index 6484d8c6..49e7efd3 100644 --- a/evogym/envs/__init__.py +++ b/evogym/envs/__init__.py @@ -10,7 +10,7 @@ from evogym.envs.traverse import * from evogym.envs.walk import * -from gym.envs.registration import register +from gymnasium.envs.registration import register ## SIMPLE ## register( diff --git a/evogym/envs/balance.py b/evogym/envs/balance.py index 61a8b6b7..8589fe35 100644 --- a/evogym/envs/balance.py +++ b/evogym/envs/balance.py @@ -1,7 +1,7 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -10,24 +10,31 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class Balance(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Balancer-v0.json')) self.world.add_from_array('robot', body, 15, 3, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=float) def get_obs(self, pos_final): com_final = np.mean(pos_final, 1) @@ -71,12 +78,12 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -84,26 +91,32 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class BalanceJump(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Balancer-v1.json')) self.world.add_from_array('robot', body, 10, 1, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=float) def get_obs(self, pos_final): com_final = np.mean(pos_final, 1) @@ -148,12 +161,12 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -161,4 +174,4 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs \ No newline at end of file + return obs, {} \ No newline at end of file diff --git a/evogym/envs/base.py b/evogym/envs/base.py index 7d007b18..7d35752e 100644 --- a/evogym/envs/base.py +++ b/evogym/envs/base.py @@ -1,10 +1,10 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding -from typing import Dict, Optional, List +from typing import Dict, Optional, List, Any from evogym import * import random @@ -19,20 +19,34 @@ class EvoGymBase(gym.Env): Args: world (EvoWorld): object specifying the voxel layout of the environment. + render_mode (Optional[str]): values of `screen` and `human` will automatically render to a debug window every `step()`. If set to `img` or `rgb_array`, `render()` will return an image array. No rendering by default (default = None) + render_options (Optional[Dict[str, Any]]): dictionary of rendering options. See EvoGymBase.render() for details (default = None) """ - def __init__(self, world: EvoWorld) -> None: + + metadata = {'render_modes': ['screen', 'human', 'img', 'rgb_array']} + + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ) -> None: # sim - self._sim = EvoSim(self.world) + self._sim = EvoSim(world) self._default_viewer = EvoViewer(self._sim) + + # render + self._render_mode = render_mode + self._render_options = render_options def step(self, action: Dict[str, np.ndarray]) -> bool: """ - Step the environment by running physcis computations. + Step the environment by running physics computations. Args: action (Dict[str, np.ndarray]): dictionary mapping robot names to actions. Actions are `(n,)` arrays, where `n` is the number of actuators in the target robot. - + Returns: bool: whether or not the simulation has reached an unstable state and cannot be recovered (`True` = unstable). """ @@ -42,10 +56,13 @@ def step(self, action: Dict[str, np.ndarray]) -> bool: a[abs(a) < 1e-8] = 0 self._sim.set_action(robot_name, a) done = self._sim.step() + + if self._render_mode == 'human' or self._render_mode == 'screen': + self.render() return done - def reset(self,) -> None: + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> None: """ Reset the simulation to the initial state. """ @@ -71,27 +88,31 @@ def default_viewer(self,) -> EvoViewer: """ return self._default_viewer - def render(self, - mode: str ='screen', - verbose: bool = False, - hide_background: bool = False, - hide_grid: bool = False, - hide_edges: bool = False, - hide_voxels: bool = False) -> Optional[np.ndarray]: - """ - Render the simulation. - - Args: - mode (str): values of 'screen' and 'human' will render to a debug window. If set to 'img' will return an image array. - verbose (bool): whether or not to print the rendering speed (rps) every second. - hide_background (bool): whether or not to render the cream-colored background. If shut off background will be white. - hide_grid (bool): whether or not to render the grid. - hide_edges (bool): whether or not to render edges around all objects. - hide_voxels (bool): whether or not to render voxels. - + def render( + self, + ) -> Optional[np.ndarray]: + """ + Render the simulation according to the `render_mode` and `render_options` specified at initialization. + The following rendering options are available as key-value pairs in the `render_options` dictionary: + - `verbose` (bool): whether or not to print the rendering speed (rps) every second. (default = False) + - `hide_background` (bool): whether or not to render the cream-colored background. If shut off background will be white. (default = False) + - `hide_grid` (bool): whether or not to render the grid. (default = False) + - `hide_edges` (bool): whether or not to render edges around all objects. (default = False) + - `hide_voxels` (bool): whether or not to render voxels. (default = False) + Returns: - Optional[np.ndarray]: if `mode` is set to `img`, will return an image array. + Optional[np.ndarray]: if `mode` is set to `img` or `rgb_array`, will return an image array. Otherwise, will return `None`. """ + mode, render_options = self._render_mode, {} if self._render_options is None else self._render_options + if mode is None: + return None + + verbose = render_options.get('verbose', False) + hide_background = render_options.get('hide_background', False) + hide_grid = render_options.get('hide_grid', False) + hide_edges = render_options.get('hide_edges', False) + hide_voxels = render_options.get('hide_voxels', False) + return self.default_viewer.render(mode, verbose, hide_background, hide_grid, hide_edges, hide_voxels) def close(self) -> None: @@ -360,9 +381,14 @@ class BenchmarkBase(EvoGymBase): DATA_PATH = pkg_resources.resource_filename('evogym.envs', os.path.join('sim_files')) VOXEL_SIZE = 0.1 - def __init__(self, world): + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): - EvoGymBase.__init__(self, world) + EvoGymBase.__init__(self, world=world, render_mode=render_mode, render_options=render_options) self.default_viewer.track_objects('robot') def step(self, action): diff --git a/evogym/envs/change_shape.py b/evogym/envs/change_shape.py index c782edc6..14b98872 100644 --- a/evogym/envs/change_shape.py +++ b/evogym/envs/change_shape.py @@ -1,7 +1,7 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -10,22 +10,29 @@ from math import * import numpy as np import os +from typing import Dict, Any, Optional class ShapeBase(BenchmarkBase): - def __init__(self, world): - super().__init__(world) + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): - def reset(self): + super().__init__(world=world, render_mode=render_mode, render_options=render_options) + + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} ### ---------------------------------------------------------------------- @@ -77,21 +84,27 @@ def convex_poly_area(self, pts_cw): class MaximizeShape(ShapeBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json')) self.world.add_from_array('robot', body, 7, 1, connections=connections) # init sim - ShapeBase.__init__(self, self.world) + ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float) def step(self, action): @@ -117,8 +130,8 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} def get_reward(self, robot_pos_init, robot_pos_final): @@ -136,21 +149,27 @@ def get_reward(self, robot_pos_init, robot_pos_final): class MinimizeShape(ShapeBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json')) self.world.add_from_array('robot', body, 7, 1, connections=connections) # init sim - ShapeBase.__init__(self, self.world) + ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float) def step(self, action): @@ -176,8 +195,8 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} def get_reward(self, robot_pos_init, robot_pos_final): @@ -195,21 +214,27 @@ def get_reward(self, robot_pos_init, robot_pos_final): class MaximizeXShape(ShapeBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json')) self.world.add_from_array('robot', body, 7, 1, connections=connections) # init sim - ShapeBase.__init__(self, self.world) + ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float) def step(self, action): @@ -235,8 +260,8 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} def get_reward(self, robot_pos_init, robot_pos_final): @@ -255,21 +280,27 @@ def get_reward(self, robot_pos_init, robot_pos_final): class MaximizeYShape(ShapeBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ShapeChange.json')) self.world.add_from_array('robot', body, 7, 1, connections=connections) # init sim - ShapeBase.__init__(self, self.world) + ShapeBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(num_robot_points,), dtype=float) def step(self, action): @@ -295,8 +326,8 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} def get_reward(self, robot_pos_init, robot_pos_final): diff --git a/evogym/envs/climb.py b/evogym/envs/climb.py index 72377f9c..a71eb7d3 100644 --- a/evogym/envs/climb.py +++ b/evogym/envs/climb.py @@ -1,7 +1,7 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -10,16 +10,22 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class ClimbBase(BenchmarkBase): - def __init__(self, world): - - super().__init__(world) + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): + + super().__init__(world=world, render_mode=render_mode, render_options=render_options) - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -27,26 +33,32 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class Climb0(ClimbBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Climber-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - ClimbBase.__init__(self, self.world) + ClimbBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=float) def step(self, action): @@ -79,26 +91,32 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class Climb1(ClimbBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Climber-v1.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - ClimbBase.__init__(self, self.world) + ClimbBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=float) def step(self, action): @@ -131,27 +149,33 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class Climb2(ClimbBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Climber-v2.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - ClimbBase.__init__(self, self.world) + ClimbBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 3 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -182,12 +206,12 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -197,4 +221,4 @@ def reset(self): self.get_ceil_obs("robot", ["pipe"], self.sight_dist), )) - return obs \ No newline at end of file + return obs, {} \ No newline at end of file diff --git a/evogym/envs/flip.py b/evogym/envs/flip.py index 994e35db..d529d1e6 100644 --- a/evogym/envs/flip.py +++ b/evogym/envs/flip.py @@ -1,7 +1,7 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -10,25 +10,32 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class Flipping(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Flipper-v0.json')) self.world.add_from_array('robot', body, 60, 1, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(1 + num_robot_points,), dtype=float) # reward self.num_flips = 0 @@ -78,12 +85,12 @@ def step(self, action): done = True - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) self.num_flips = 0 @@ -93,4 +100,4 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs \ No newline at end of file + return obs, {} \ No newline at end of file diff --git a/evogym/envs/jump.py b/evogym/envs/jump.py index 0fab281e..ac528cc4 100644 --- a/evogym/envs/jump.py +++ b/evogym/envs/jump.py @@ -1,7 +1,7 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -10,25 +10,32 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class StationaryJump(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Jumper-v0.json')) self.world.add_from_array('robot', body, 32, 1, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 2 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points + (self.sight_dist*2 +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points + (self.sight_dist*2 +1),), dtype=float) def step(self, action): @@ -58,12 +65,12 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -72,4 +79,4 @@ def reset(self): self.get_floor_obs("robot", ["ground"], self.sight_dist), )) - return obs + return obs, {} diff --git a/evogym/envs/manipulate.py b/evogym/envs/manipulate.py index 083d3c5d..1c7b257c 100644 --- a/evogym/envs/manipulate.py +++ b/evogym/envs/manipulate.py @@ -1,8 +1,8 @@ from evogym.envs.base import EvoGymBase -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -11,15 +11,22 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class PackageBase(BenchmarkBase): - def __init__(self, world): - super().__init__(world) + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): + + super().__init__(world=world, render_mode=render_mode, render_options=render_options) self.default_viewer.track_objects('robot', 'package') - def get_obs(self, robot_pos_final, robot_vel_final, package_pos_final, package_vel_final): + def get_obs(self, robot_pos_final, robot_vel_final, package_pos_final, package_vel_final) -> np.ndarray: robot_com_pos = np.mean(robot_pos_final, axis=1) robot_com_vel = np.mean(robot_vel_final, axis=1) @@ -55,9 +62,9 @@ def get_reward(self, package_pos_init, package_pos_final, robot_pos_init, robot_ return reward - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation robot_pos_final = self.object_pos_at_time(self.get_time(), "robot") @@ -71,26 +78,32 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class CarrySmallRect(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Carrier-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 3.0*self.VOXEL_SIZE @@ -149,26 +162,32 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class CarrySmallRectToTable(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Carrier-v1.json')) self.world.add_from_array('robot', body, 1, 4, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 6.0*self.VOXEL_SIZE @@ -225,26 +244,32 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class PushSmallRect(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Pusher-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 0.0*self.VOXEL_SIZE @@ -285,26 +310,32 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class PushSmallRectOnOppositeSide(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Pusher-v1.json')) self.world.add_from_array('robot', body, 13, 1, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 0.0*self.VOXEL_SIZE @@ -345,26 +376,32 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class ThrowSmallRect(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Thrower-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(6 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 0.0*self.VOXEL_SIZE @@ -415,15 +452,24 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class CatchSmallRect(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): self.robot_body = body self.robot_connections = connections + + self.render_mode = render_mode + self.render_options = render_options self.random_init() @@ -452,7 +498,7 @@ def random_init(self): self.world.add_object(peg2) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=self.render_mode, render_options=self.render_options) self.default_viewer.track_objects('robot', 'package') @@ -460,13 +506,13 @@ def random_init(self): num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 5.0*self.VOXEL_SIZE - def get_obs_catch(self, robot_pos_final, package_pos_final): + def get_obs_catch(self, robot_pos_final, package_pos_final) -> np.ndarray: robot_com_pos = np.mean(robot_pos_final, axis=1) package_com_pos = np.mean(package_pos_final, axis=1) @@ -525,12 +571,12 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - EvoGymBase.reset(self) + EvoGymBase.reset(self, seed=seed, options=options) self.default_viewer.hide_debug_window() self.random_init() @@ -558,25 +604,31 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class ToppleBeam(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BeamToppler-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 0.0*self.VOXEL_SIZE @@ -651,12 +703,12 @@ def step(self, action): reward += 1.0 done = True - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - EvoGymBase.reset(self) + EvoGymBase.reset(self, seed=seed, options=options) # observation robot_pos_final = self.object_pos_at_time(self.get_time(), "robot") @@ -671,25 +723,31 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class SlideBeam(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BeamSlider-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float) # threshhold height self.thresh_height = 0.0*self.VOXEL_SIZE @@ -760,12 +818,12 @@ def step(self, action): reward += 1.0 done = True - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - EvoGymBase.reset(self) + EvoGymBase.reset(self, seed=seed, options=options) # observation robot_pos_final = self.object_pos_at_time(self.get_time(), "robot") @@ -780,25 +838,31 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class LiftSmallRect(PackageBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Lifter-v0.json')) self.world.add_from_array('robot', body, 2, 3, connections=connections) # init sim - PackageBase.__init__(self, self.world) + PackageBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(7 + num_robot_points,), dtype=float) def get_reward_lift(self, robot_pos_init, robot_pos_final, package_pos_init, package_pos_final): @@ -852,12 +916,12 @@ def step(self, action): print("SIMULATION UNSTABLE... TERMINATING") reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - EvoGymBase.reset(self) + EvoGymBase.reset(self, seed=seed, options=options) # observation robot_pos_final = self.object_pos_at_time(self.get_time(), "robot") @@ -872,5 +936,5 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} \ No newline at end of file diff --git a/evogym/envs/multi_goal.py b/evogym/envs/multi_goal.py index 9be0e38b..2243d68b 100644 --- a/evogym/envs/multi_goal.py +++ b/evogym/envs/multi_goal.py @@ -1,7 +1,7 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -10,6 +10,7 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class Goal(): def __init__(self, name, requirements = None): @@ -20,8 +21,14 @@ def evaluate_reward(self, args): class GoalBase(BenchmarkBase): - def __init__(self, world): - super().__init__(world) + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): + + super().__init__(world=world, render_mode=render_mode, render_options=render_options) def init_reward_goals(self, goals): @@ -90,21 +97,27 @@ def get_obs(self, args): class BiWalk(GoalBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BidirectionalWalker-v0.json')) self.world.add_from_array('robot', body, 33, 1, connections=connections) # init sim - GoalBase.__init__(self, self.world) + GoalBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(5 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(5 + num_robot_points,), dtype=float) self.set_random_goals(20, 50, 100) @@ -171,12 +184,12 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) self.current_goal = 0 self.set_random_goals(20, 50, 100) @@ -196,4 +209,4 @@ def reset(self): }) )) - return obs + return obs, {} diff --git a/evogym/envs/traverse.py b/evogym/envs/traverse.py index faeb8bec..1cfcbdb9 100644 --- a/evogym/envs/traverse.py +++ b/evogym/envs/traverse.py @@ -1,8 +1,8 @@ from evogym.envs.base import EvoGymBase -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding from evogym import * from evogym.envs import BenchmarkBase @@ -11,11 +11,18 @@ import math import numpy as np import os +from typing import Dict, Any, Optional class StairsBase(BenchmarkBase): - def __init__(self, world): - super().__init__(world) + def __init__( + self, + world: EvoWorld, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): + + super().__init__(world=world, render_mode=render_mode, render_options=render_options) def get_reward(self, robot_pos_init, robot_pos_final): @@ -25,9 +32,9 @@ def get_reward(self, robot_pos_init, robot_pos_final): reward = (robot_com_pos_final[0] - robot_com_pos_init[0]) return reward - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation robot_ort = self.object_orientation_at_time(self.get_time(), "robot") @@ -38,27 +45,33 @@ def reset(self): self.get_floor_obs("robot", ["ground"], self.sight_dist), )) - return obs + return obs, {} class StepsUp(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'UpStepper-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -97,27 +110,33 @@ def step(self, action): done = True reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class StepsDown(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'DownStepper-v0.json')) self.world.add_from_array('robot', body, 1, 11, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -156,27 +175,33 @@ def step(self, action): done = True reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class WalkingBumpy(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ObstacleTraverser-v0.json')) self.world.add_from_array('robot', body, 2, 1, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -216,27 +241,33 @@ def step(self, action): done = True reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class WalkingBumpy2(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'ObstacleTraverser-v1.json')) self.world.add_from_array('robot', body, 2, 4, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -273,27 +304,33 @@ def step(self, action): done = True reward += 2.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class VerticalBarrier(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Hurdler-v0.json')) self.world.add_from_array('robot', body, 2, 4, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -328,27 +365,33 @@ def step(self, action): done = True reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} class FloatingPlatform(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'PlatformJumper-v0.json')) self.world.add_from_array('robot', body, 1, 6, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) # terrain self.terrain_list = ["platform_1", "platform_2", "platform_3", "platform_4", "platform_5", "platform_6", "platform_7"] @@ -392,12 +435,12 @@ def step(self, action): reward -= 3.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - EvoGymBase.reset(self) + EvoGymBase.reset(self, seed=seed, options=options) # observation robot_ort = self.object_orientation_at_time(self.get_time(), "robot") @@ -408,26 +451,32 @@ def reset(self): self.get_floor_obs("robot", self.terrain_list, self.sight_dist), )) - return obs + return obs, {} class Gaps(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'GapJumper-v0.json')) self.world.add_from_array('robot', body, 1, 6, connections=connections) # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) # terrain self.terrain_list = ["platform_1", "platform_2", "platform_3", "platform_4", "platform_5"] @@ -466,12 +515,12 @@ def step(self, action): reward -= 3.0 done = True - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - EvoGymBase.reset(self) + EvoGymBase.reset(self, seed=seed, options=options) # observation robot_ort = self.object_orientation_at_time(self.get_time(), "robot") @@ -482,11 +531,17 @@ def reset(self): self.get_floor_obs("robot", self.terrain_list, self.sight_dist), )) - return obs + return obs, {} class BlockSoup(StairsBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Traverser-v0.json')) @@ -526,15 +581,15 @@ def __init__(self, body, connections=None): count += 1 # init sim - StairsBase.__init__(self, self.world) + StairsBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(3 + num_robot_points + (2*self.sight_dist +1),), dtype=float) def step(self, action): @@ -570,12 +625,12 @@ def step(self, action): done = True reward += 2.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation robot_ort = self.object_orientation_at_time(self.get_time(), "robot") @@ -586,4 +641,4 @@ def reset(self): self.get_floor_obs("robot", self.terrain_list, self.sight_dist), )) - return obs \ No newline at end of file + return obs, {} \ No newline at end of file diff --git a/evogym/envs/walk.py b/evogym/envs/walk.py index d02a4f68..c753529b 100644 --- a/evogym/envs/walk.py +++ b/evogym/envs/walk.py @@ -1,7 +1,8 @@ -import gym -from gym import error, spaces -from gym import utils -from gym.utils import seeding +import gymnasium as gym +from gymnasium import error, spaces +from gymnasium import utils +from gymnasium.utils import seeding +from typing import Optional, Dict, Any from evogym import * from evogym.envs import BenchmarkBase @@ -13,21 +14,27 @@ class WalkingFlat(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'Walker-v0.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points,), dtype=float) def step(self, action): @@ -61,12 +68,12 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -74,25 +81,31 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class SoftBridge(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'BridgeWalker-v0.json')) self.world.add_from_array('robot', body, 2, 5, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + 1 + num_robot_points,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + 1 + num_robot_points,), dtype=float) def step(self, action): @@ -127,12 +140,12 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -141,26 +154,32 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs + return obs, {} class Duck(BenchmarkBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join(self.DATA_PATH, 'CaveCrawler-v0.json')) self.world.add_from_array('robot', body, 1, 2, connections=connections) # init sim - BenchmarkBase.__init__(self, self.world) + BenchmarkBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size num_robot_points = self.object_pos_at_time(self.get_time(), "robot").size self.sight_dist = 5 - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points + 2*(self.sight_dist*2 +1),), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(2 + num_robot_points + 2*(self.sight_dist*2 +1),), dtype=float) def step(self, action): @@ -196,12 +215,12 @@ def step(self, action): done = True reward += 1.0 - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -211,4 +230,4 @@ def reset(self): self.get_ceil_obs("robot", ["terrain"], self.sight_dist), )) - return obs + return obs, {} diff --git a/evogym/viewer.py b/evogym/viewer.py index 20cb787a..14f4c539 100644 --- a/evogym/viewer.py +++ b/evogym/viewer.py @@ -187,18 +187,20 @@ def set_tracking_settings(self, **settings) -> None: parsed_arg = arg.split('_')[1] self._tracking_lock[arg] = parsed_arg - def render(self, - mode: str ='screen', - verbose: bool = False, - hide_background: bool = False, - hide_grid: bool = False, - hide_edges: bool = False, - hide_voxels: bool = False) -> Optional[np.ndarray]: + def render( + self, + mode: str = 'screen', + verbose: bool = False, + hide_background: bool = False, + hide_grid: bool = False, + hide_edges: bool = False, + hide_voxels: bool = False + ) -> Optional[np.ndarray]: """ Render the simulation. Args: - mode (str): values of 'screen' and 'human' will render to a debug window. If set to 'img' will return an image array. + mode (str): values of `screen` and `human` will render to a debug window. If set to `img` or `rgb_array` will return an image array. verbose (bool): whether or not to print the rendering speed (rps) every second. hide_background (bool): whether or not to render the cream-colored background. If shut off background will be white. hide_grid (bool): whether or not to render the grid. @@ -206,10 +208,10 @@ def render(self, hide_voxels (bool): whether or not to render voxels. Returns: - Optional[np.ndarray]: if `mode` is set to `img`, will return an image array. + Optional[np.ndarray]: if `mode` is set to `img` or `rgb_array`, will return an image array. """ - accepted_modes = ['screen', 'human', 'img'] + accepted_modes = ['screen', 'human', 'img', 'rgb_array'] if not mode in accepted_modes: raise ValueError( f'mode {mode} is not a valid mode. The valid modes are {accepted_modes}' @@ -236,7 +238,7 @@ def render(self, self._has_init_screen_camera = True self._viewer.render(self.screen_camera, *render_settings) - if mode == 'img': + if mode == 'img' or mode == 'rgb_array': if not self._has_init_img_camera: self._init_img_camera() self._has_init_img_camera = True diff --git a/pyproject.toml b/pyproject.toml index 14117b6c..b453189b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -29,7 +29,7 @@ classifiers = [ "Operating System :: OS Independent", ] dependencies = [ - "gym==0.22.0", + "gymnasium", "numpy", ] diff --git a/tests/test_render.py b/tests/test_render.py index f0d26cab..7ec26227 100644 --- a/tests/test_render.py +++ b/tests/test_render.py @@ -1,22 +1,21 @@ from unittest import TestCase import evogym.envs -import gym +import gymnasium as gym from evogym import sample_robot class RenderTest(TestCase): def test_it(self): body, connections = sample_robot((5, 5)) - env = gym.make("Walker-v0", body=body) + env = gym.make("Walker-v0", body=body, render_mode="human") env.reset() for _ in range(100): action = env.action_space.sample() - 1 - ob, reward, done, info = env.step(action) - env.render() + ob, reward, terminated, truncated, info = env.step(action) - if done: + if terminated or truncated: env.reset() env.close() From 59ecb3f5b8090994e94d958bf02f4d26f10649a0 Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Thu, 13 Jun 2024 15:27:20 -0400 Subject: [PATCH 08/14] Testing workflow with basic tests (#39) * Setup pytest * Tests for new api * Tests and updates for utils * Update testing workflow * Update testing workflow * Better env close implementation * Attempt to isolate error * Create a lite test suite which uses less memory --- .github/workflows/test.yml | 2 +- evogym/envs/base.py | 4 +- evogym/simulator/SimulatorCPP/Interface.cpp | 5 + evogym/simulator/SimulatorCPP/Interface.h | 1 + .../simulator/SimulatorCPP/PythonBindings.cpp | 1 + evogym/utils.py | 32 ++- evogym/viewer.py | 7 + pytest.ini | 4 + requirements.txt | 2 + .../test_screen_render_modes.py | 78 +++++++ tests/screen_free/test_baseline_envs.py | 62 +++++ tests/screen_free/test_img_render_modes.py | 58 +++++ tests/screen_free/test_utils.py | 214 ++++++++++++++++++ tests/test_render.py | 21 -- tests/utils.py | 5 + 15 files changed, 467 insertions(+), 29 deletions(-) create mode 100644 pytest.ini create mode 100644 tests/requires_screen/test_screen_render_modes.py create mode 100644 tests/screen_free/test_baseline_envs.py create mode 100644 tests/screen_free/test_img_render_modes.py create mode 100644 tests/screen_free/test_utils.py delete mode 100644 tests/test_render.py create mode 100644 tests/utils.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5719c5e6..b395378f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -43,4 +43,4 @@ jobs: - name: Install evolution gym run: pip install -e . - name: Run test - run: xvfb-run python -m unittest tests/test_render.py + run: xvfb-run python -m pytest -s -v -n auto -m lite diff --git a/evogym/envs/base.py b/evogym/envs/base.py index 7d35752e..41ba7333 100644 --- a/evogym/envs/base.py +++ b/evogym/envs/base.py @@ -119,7 +119,9 @@ def close(self) -> None: """ Close the simulation. """ - self.default_viewer.hide_debug_window() + self.default_viewer.close() + del self._default_viewer + del self._sim def get_actuator_indices(self, robot_name: str) -> np.ndarray: """ diff --git a/evogym/simulator/SimulatorCPP/Interface.cpp b/evogym/simulator/SimulatorCPP/Interface.cpp index cbf0bd0d..ee7bbcb9 100644 --- a/evogym/simulator/SimulatorCPP/Interface.cpp +++ b/evogym/simulator/SimulatorCPP/Interface.cpp @@ -582,6 +582,11 @@ void Interface::hide_debug_window() { debug_window_showing = false; } +void Interface::close() { + glfwDestroyWindow(debug_window); + glfwTerminate(); +} + vector Interface::get_debug_window_pos() { int xpos, ypos; diff --git a/evogym/simulator/SimulatorCPP/Interface.h b/evogym/simulator/SimulatorCPP/Interface.h index fa79d631..37a47519 100644 --- a/evogym/simulator/SimulatorCPP/Interface.h +++ b/evogym/simulator/SimulatorCPP/Interface.h @@ -68,6 +68,7 @@ class Interface void show_debug_window(); void hide_debug_window(); + void close(); vector get_debug_window_pos(); GLFWwindow* get_debug_window_ref(); diff --git a/evogym/simulator/SimulatorCPP/PythonBindings.cpp b/evogym/simulator/SimulatorCPP/PythonBindings.cpp index 27fcddaa..80b84145 100644 --- a/evogym/simulator/SimulatorCPP/PythonBindings.cpp +++ b/evogym/simulator/SimulatorCPP/PythonBindings.cpp @@ -21,6 +21,7 @@ PYBIND11_MODULE(simulator_cpp, m) { .def("render", &Interface::render, py::arg("camera"), py::arg("hide_background") = false, py::arg("hide_grid") = false, py::arg("hide_edges") = false, py::arg("hide_boxels") = false, py::arg("dont_clear") = false) .def("show_debug_window", &Interface::show_debug_window) .def("hide_debug_window", &Interface::hide_debug_window) + .def("close", &Interface::close) .def("get_debug_window_pos", &Interface::get_debug_window_pos, py::return_value_policy::copy); py::class_(m, "Sim") diff --git a/evogym/utils.py b/evogym/utils.py index f046a265..8a5b040d 100644 --- a/evogym/utils.py +++ b/evogym/utils.py @@ -57,11 +57,12 @@ def get_uniform(x: int) -> np.ndarray: Return a uniform distribution of a given size. Args: - x (int): size of distribution. + x (int): size of distribution. Must be positive. Returns: np.ndarray: array representing the probability distribution. """ + assert x > 0, f"Invalid size {x} for uniform distribution. Must be positive." return np.ones((x)) / x def draw(pd: np.ndarray) -> int: @@ -69,14 +70,19 @@ def draw(pd: np.ndarray) -> int: Sample from a probability distribution. Args: - pd (np.ndarray): array representing the probability of sampling each element. + pd (np.ndarray): array representing the relative probability of sampling each element. Entries must be non-negative and sum to a non-zero value. Must contain at least one element. Returns: int: sampled index. """ pd_copy = pd.copy() - if (type(pd_copy) != type(np.array([]))): + if not isinstance(pd_copy, np.ndarray): pd_copy = np.array(pd_copy) + + assert pd_copy.size > 0, f"Invalid size {pd_copy.size} for probability distribution. Must contain at least one element." + assert np.all(pd_copy >= 0), f"Invalid probability distribution {pd_copy}. Entries must be non-negative." + assert np.sum(pd_copy) > 0, f"Invalid probability distribution {pd_copy}. Entries must sum to a non-zero value." + pd_copy = pd_copy / pd_copy.sum() rand = random.uniform(0, 1) @@ -88,17 +94,31 @@ def draw(pd: np.ndarray) -> int: def sample_robot( robot_shape: Tuple[int, int], - pd: np.ndarray = None) -> Tuple[np.ndarray, np.ndarray]: + pd: Optional[np.ndarray] = None +) -> Tuple[np.ndarray, np.ndarray]: """ Return a randomly sampled robot of a particular size. Args: robot_shape (Tuple(int, int)): robot shape to sample `(h, w)`. - pd (np.ndarray): `(5,)` array representing the probability of sampling each robot voxel (empty, rigid, soft, h_act, v_act). Defaults to a custom distribution. (default = None) + pd (np.ndarray): `(5,)` array representing the relative probability of sampling each robot voxel (empty, rigid, soft, h_act, v_act). Defaults to a custom distribution. (default = None) Returns: Tuple[np.ndarray, np.ndarray]: randomly sampled (valid) robot voxel array and its associated connections array. + + Throws: + If it is not possible to sample a connected robot with at least one actuator. """ + + h_act, v_act, empty = VOXEL_TYPES['H_ACT'], VOXEL_TYPES['V_ACT'], VOXEL_TYPES['EMPTY'] + + if pd is not None: + assert pd.shape == (5,), f"Invalid probability distribution {pd}. Must have shape (5,)." + if pd[h_act] + pd[v_act] == 0: + raise ValueError(f"Invalid probability distribution {pd}. Must have a non-zero probability of sampling an actuator.") + if sum(pd) - pd[empty] == 0: + raise ValueError(f"Invalid probability distribution {pd}. Must have a non-zero probability of sampling a non-empty voxel.") + done = False while (not done): @@ -219,7 +239,7 @@ def has_actuator(robot: np.ndarray) -> bool: def get_full_connectivity(robot: np.ndarray) -> np.ndarray: """ - Returns a connections array given a connected robot structure. Assumes all adjacent voxels are connected. + Returns a connections array given a structure. Assumes all adjacent voxels are connected. Args: robot (np.ndarray): array specifing the voxel structure of the robot. diff --git a/evogym/viewer.py b/evogym/viewer.py index 14f4c539..5e7b18c4 100644 --- a/evogym/viewer.py +++ b/evogym/viewer.py @@ -134,6 +134,13 @@ def hide_debug_window(self,) -> None: if self._has_init_viewer: self._viewer.hide_debug_window() + def close(self,) -> None: + """ + Close the viewer. + """ + if self._has_init_viewer: + self._viewer.close() + def track_objects(self, *objects: Tuple[str]) -> None: """ Set objects for the viewer to automatically track. The viewer tracks objects by adjusting its `pos` and `view_size` automatically every time before rendering. diff --git a/pytest.ini b/pytest.ini new file mode 100644 index 00000000..310d7672 --- /dev/null +++ b/pytest.ini @@ -0,0 +1,4 @@ +[pytest] +addopts = --ignore=examples/externals --ignore=evogym/simulator/externals --ignore=evogym/examples/gym_test.py +markers = + lite: mark as part of the lite test suite \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index 1d687450..ee64a479 100644 --- a/requirements.txt +++ b/requirements.txt @@ -16,3 +16,5 @@ PyOpenGL-accelerate==3.1.5 torch==1.10.2 ttkbootstrap==1.5.1 typing==3.7.4.3 +pytest +pytest-xdist diff --git a/tests/requires_screen/test_screen_render_modes.py b/tests/requires_screen/test_screen_render_modes.py new file mode 100644 index 00000000..56583340 --- /dev/null +++ b/tests/requires_screen/test_screen_render_modes.py @@ -0,0 +1,78 @@ +import gymnasium as gym +import pytest +import warnings +import numpy as np +from itertools import product + +import evogym.envs +from evogym import sample_robot + +LITE_TEST_ENV_NAMES = [ + "Pusher-v0", + "Walker-v0", + "Traverser-v0", +] + +@pytest.mark.lite +@pytest.mark.parametrize( + "render_mode, add_options", + list(product( + ["human", "screen"], + [True, False], + )) +) +def test_render_modes(render_mode, add_options): + """ + - Env can render to screen + """ + + body, _ = sample_robot((5, 5)) + if add_options: + env = gym.make("Walker-v0", body=body, render_mode=render_mode, render_options={ + "verbose": False, + "hide_background": False, + "hide_grid": False, + "hide_edges": False, + "hide_voxels": False + }) + else: + env = gym.make("Walker-v0", body=body, render_mode=render_mode) + + # Reset + obs, info = env.reset(seed=None, options=None) + + for i in range(10): + + # Step -- we don't need to render explicitly + action = env.action_space.sample() - 1 + ob, reward, terminated, truncated, info = env.step(action) + + env.close() + +def get_all_env_render_params(): + return [ + env_name if env_name not in LITE_TEST_ENV_NAMES + else pytest.param(env_name, marks=pytest.mark.lite) + for env_name in evogym.BASELINE_ENV_NAMES + ] + +@pytest.mark.parametrize("env_name", get_all_env_render_params()) +def test_all_env_render(env_name): + """ + - Env can render to screen + """ + + body, _ = sample_robot((5, 5)) + env = gym.make(env_name, body=body, render_mode="human") + + # Reset + obs, info = env.reset(seed=None, options=None) + + for i in range(10): + + # Step -- we don't need to render explicitly + action = env.action_space.sample() - 1 + ob, reward, terminated, truncated, info = env.step(action) + + env.close() + \ No newline at end of file diff --git a/tests/screen_free/test_baseline_envs.py b/tests/screen_free/test_baseline_envs.py new file mode 100644 index 00000000..1550a19a --- /dev/null +++ b/tests/screen_free/test_baseline_envs.py @@ -0,0 +1,62 @@ +import gymnasium as gym +import pytest +import warnings + +import evogym.envs +from evogym import sample_robot + +LITE_TEST_ENV_NAMES = [ + "Pusher-v0", + "Walker-v0", + "Traverser-v0", +] + +def get_params(): + return [ + env_name if env_name not in LITE_TEST_ENV_NAMES + else pytest.param(env_name, marks=pytest.mark.lite) + for env_name in evogym.BASELINE_ENV_NAMES + ] + +@pytest.mark.parametrize("env_name", get_params()) +def test_env_creatable_and_has_correct_api(env_name): + """ + - Env is creatable + - Env steps for the correct number of steps + - Env follows the gym API + """ + + body, _ = sample_robot((5, 5)) + env = gym.make(env_name, body=body) + + target_steps = env.spec.max_episode_steps + assert isinstance(target_steps, int), f"Env {env_name} does not have a max_episode_steps attribute" + + # Reset + obs, info = env.reset(seed=None, options=None) + + # Rollout with random actions + n_steps = 0 + while True: + action = env.action_space.sample() - 1 + ob, reward, terminated, truncated, info = env.step(action) + + n_steps += 1 + + if terminated or truncated: + env.reset(seed=None, options=None) + break + + if n_steps > target_steps: + break + + # Make sure we can still step after resetting + env.step(env.action_space.sample() - 1) + + # Check that the env terminated after the correct number of steps + assert n_steps <= target_steps, f"Env {env_name} terminated after {n_steps} steps, expected at most {target_steps}" + if n_steps < target_steps: + warnings.warn(f"Env {env_name} terminated early after {n_steps} steps, expected {target_steps}") + + env.close() + \ No newline at end of file diff --git a/tests/screen_free/test_img_render_modes.py b/tests/screen_free/test_img_render_modes.py new file mode 100644 index 00000000..b42e1e4e --- /dev/null +++ b/tests/screen_free/test_img_render_modes.py @@ -0,0 +1,58 @@ +import gymnasium as gym +import pytest +import warnings +import numpy as np +from itertools import product + +import evogym.envs +from evogym import sample_robot + +LITE_TEST_ENV_NAMES = [ + "Pusher-v0", + "Walker-v0", + "Traverser-v0", +] + +def get_params(): + params = product( + evogym.BASELINE_ENV_NAMES, + [None, "img", "rgb_array"], + ) + return [ + param if param[0] not in LITE_TEST_ENV_NAMES + else pytest.param(*param, marks=pytest.mark.lite) + for param in params + ] + + +@pytest.mark.parametrize("env_name, render_mode", get_params()) +def test_render(env_name, render_mode): + """ + - Env can render to none and to image + """ + + body, _ = sample_robot((5, 5)) + env = gym.make(env_name, body=body, render_mode=render_mode) + + # Reset + obs, info = env.reset(seed=None, options=None) + + for i in range(10): + + # Render + result = env.render() + + if render_mode is None: + # Result should be None + assert result is None, f"Env returned {type(result)} instead of None" + else: + # Check img + assert isinstance(result, np.ndarray), f"Env returned {type(result)} instead of np.ndarray" + x, y, c = result.shape + assert c == 3, f"Env returned image with {c} channels, expected 3" + + # Step + action = env.action_space.sample() - 1 + ob, reward, terminated, truncated, info = env.step(action) + + env.close() \ No newline at end of file diff --git a/tests/screen_free/test_utils.py b/tests/screen_free/test_utils.py new file mode 100644 index 00000000..481d0963 --- /dev/null +++ b/tests/screen_free/test_utils.py @@ -0,0 +1,214 @@ +import numpy as np +import pytest +from pytest import raises +from typing import List, Tuple + +from evogym.utils import ( + VOXEL_TYPES, + get_uniform, draw, sample_robot, + is_connected, has_actuator, get_full_connectivity +) + +@pytest.mark.lite +def test_get_uniform(): + ones = get_uniform(1) + assert np.allclose(ones, np.ones(1)), ( + f"Expected {np.ones(1)}, got {ones}" + ) + + one_thirds = get_uniform(3) + assert np.allclose(one_thirds, np.ones(3) / 3), ( + f"Expected {np.ones(3) / 3}, got {one_thirds}" + ) + +@pytest.mark.lite +def test_draw(): + result = draw([0.2]) + assert result == 0, f"Expected 0, got {result}" + + result = draw([0.2, 0]) + assert result == 0, f"Expected 0, got {result}" + + result = draw([0, 15]) + assert result == 1, f"Expected 1, got {result}" + + pd = np.zeros(10) + pd[5] = 1 + result = draw(pd) + assert result == 5, f"Expected 5, got {result}" + + pd = np.ones(10) + for i in range(10): + result = draw(pd) + assert result in list(range(10)), f"Expected result to be between 0 and 9, got {result}" + +@pytest.mark.lite +def test_has_actuator(): + h_act, v_act = VOXEL_TYPES['H_ACT'], VOXEL_TYPES['V_ACT'] + others = [ + i for i in VOXEL_TYPES.values() if i not in [h_act, v_act] + ] + + robot = np.zeros((1, 1)) + robot[:, :] = others[0] + assert not has_actuator(robot), "Expected no actuator" + + robot[:, :] = h_act + assert has_actuator(robot), "Expected actuator" + + robot[:, :] = v_act + assert has_actuator(robot), "Expected actuator" + + robot = np.random.choice(others, (10, 10), replace=True) + assert not has_actuator(robot), "Expected no actuator" + + robot[5, 5] = h_act + assert has_actuator(robot), "Expected actuator" + + robot[5, 5] = v_act + assert has_actuator(robot), "Expected actuator" + + robot[1, 1] = h_act + assert has_actuator(robot), "Expected actuator" + + robot = np.random.choice([h_act, v_act], (10, 10), replace=True) + assert has_actuator(robot), "Expected actuator" + +def test_is_connected(): + empty = VOXEL_TYPES['EMPTY'] + others = [ + i for i in VOXEL_TYPES.values() if i != empty + ] + + robot = np.zeros((1, 1)) + robot[:, :] = empty + assert not is_connected(robot), "Expected not connected" + + for val in others: + robot[:, :] = val + assert is_connected(robot), "Expected connected" + + robot = np.array([[others[0]], [empty], [others[1]]]) + assert not is_connected(robot), "Expected not connected" + assert not is_connected(robot.T), "Expected not connected" + + robot = np.array([ + [others[0], empty, others[0]], + [others[1], empty, others[3]], + [others[2], others[1], others[0]] + ]) + assert is_connected(robot), "Expected connected" + assert is_connected(robot.T), "Expected connected" + + robot = np.array([ + [empty, empty, empty], + [empty, others[2], empty], + [empty, empty, empty] + ]) + assert is_connected(robot), "Expected connected" + + robot = np.array([ + [others[0], others[1], empty], + [others[1], empty, others[1]], + [empty, others[1], others[0]] + ]) + assert not is_connected(robot), "Expected not connected" + +@pytest.mark.lite +def test_get_full_connectivity(): + empty = VOXEL_TYPES['EMPTY'] + others = [ + i for i in VOXEL_TYPES.values() if i != empty + ] + + robot = np.zeros((1, 1)) + robot[:, :] = empty + assert get_full_connectivity(robot).shape[1] == 0, "Expected no connections" + assert get_full_connectivity(robot).shape[0] == 2, "Expected 2" + + robot[:, :] = others[0] + assert get_full_connectivity(robot).shape[1] == 0, "Expected no connections" + assert get_full_connectivity(robot).shape[0] == 2, "Expected 2" + + robot = np.array([[others[0], empty, others[0]]]) + connections = get_full_connectivity(robot) + assert connections.shape[1] == 0, "Expected no connections" + + def connections_contains_all(connections: np.ndarray, expected: List[Tuple[int, int]]): + connections_as_tuples = [ + (c[0], c[1]) for c in connections.T + ] + for i, j in expected: + if (i, j) not in connections_as_tuples or (j, i) not in connections_as_tuples: + return False + return True + + robot = np.array([ + [others[0], empty, others[0]], + [others[1], empty, others[1]], + ]) + connections = get_full_connectivity(robot) + assert connections.shape[1] == 2, "Expected 2 connections" + assert connections.shape[0] == 2, "Expected 2" + connections_contains_all(connections, [(0, 3), (2, 5)]) + + + robot = np.array([ + [others[0], others[2], empty], + [empty, others[3], others[1]], + ]) + connections = get_full_connectivity(robot) + assert connections.shape[1] == 3, "Expected 2 connections" + assert connections.shape[0] == 2, "Expected 2" + connections_contains_all(connections, [(0, 1), (1, 4), (4, 5)]) + +@pytest.mark.lite +def test_sample_robot(): + + h_act, v_act, empty = VOXEL_TYPES['H_ACT'], VOXEL_TYPES['V_ACT'], VOXEL_TYPES['EMPTY'] + + bad_pd = np.ones(5) + bad_pd[h_act] = 0 + bad_pd[v_act] = 0 + with raises(Exception): + sample_robot((5,5), bad_pd) + + bad_pd = np.zeros(5) + bad_pd[empty] = 1 + with raises(Exception): + sample_robot((5,5), bad_pd) + + def check_robot(robot: np.ndarray, connections: np.ndarray): + assert robot.shape == (5, 5), f"Expected shape (5, 5), got {robot.shape}" + assert is_connected(robot), "Expected robot to be connected" + assert has_actuator(robot), "Expected robot to have an actuator" + assert np.allclose(get_full_connectivity(robot), connections), "Expected connections to be the same" + + robot, connections = sample_robot((5, 5)) + check_robot(robot, connections) + + pd = np.ones(5) + pd[h_act] = 0 + robot, connections = sample_robot((5, 5), pd=pd) + check_robot(robot, connections) + + pd = np.ones(5) + pd[v_act] = 0 + robot, connections = sample_robot((5, 5), pd=pd) + check_robot(robot, connections) + + pd = np.ones(5) + pd[empty] = 0 + robot, connections = sample_robot((5, 5), pd=pd) + check_robot(robot, connections) + + pd = np.zeros(5) + pd[v_act] = 1 + robot, connections = sample_robot((5, 5), pd=pd) + check_robot(robot, connections) + + pd = np.zeros(5) + pd[h_act] = 1 + robot, connections = sample_robot((5, 5), pd=pd) + check_robot(robot, connections) + \ No newline at end of file diff --git a/tests/test_render.py b/tests/test_render.py deleted file mode 100644 index 7ec26227..00000000 --- a/tests/test_render.py +++ /dev/null @@ -1,21 +0,0 @@ -from unittest import TestCase - -import evogym.envs -import gymnasium as gym -from evogym import sample_robot - - -class RenderTest(TestCase): - def test_it(self): - body, connections = sample_robot((5, 5)) - env = gym.make("Walker-v0", body=body, render_mode="human") - env.reset() - - for _ in range(100): - action = env.action_space.sample() - 1 - ob, reward, terminated, truncated, info = env.step(action) - - if terminated or truncated: - env.reset() - - env.close() diff --git a/tests/utils.py b/tests/utils.py new file mode 100644 index 00000000..53b1b913 --- /dev/null +++ b/tests/utils.py @@ -0,0 +1,5 @@ +LITE_TEST_ENV_NAMES = [ + "Pusher-v0", + "Walker-v0", + "Traverser-v0", +] \ No newline at end of file From bc6212e3e5bc5adb5802b0d28363fb62fb90a6d9 Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Thu, 13 Jun 2024 16:23:31 -0400 Subject: [PATCH 09/14] Update tutorials (#40) * Update tutorials * Update tutorials readme --- tutorials/README.md | 24 +++++++++++++++++++++++- tutorials/envs/__init__.py | 2 +- tutorials/envs/simple_env.py | 29 ++++++++++++++++++----------- tutorials/rendering_options.py | 25 ++++++++++++++++--------- tutorials/visualize_simple_env.py | 14 +++++++++----- 5 files changed, 67 insertions(+), 27 deletions(-) diff --git a/tutorials/README.md b/tutorials/README.md index 878b7cc0..1cde19a0 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -1,3 +1,25 @@ # Tutorials -This folder contains completed code for all tutorials on our [website](https://evolutiongym.github.io/tutorials). \ No newline at end of file +This folder contains completed code for all tutorials on our [website](https://evolutiongym.github.io/tutorials). + +## Custom Environment + +To see an example of custom environment creation, see `envs/simple_env.py`. This environment is registered in `envs/__init__.py`, and can be visualized by running `python .\visualize_simple_env.py` from this directory. + +## Evogym Simulator API + +See `basic_api.py` for a simple example of how to create, step, and render an Evogym simulator with objects of your choice. Evogym can be used to simulate any number of objects and robots (although simulation speed may slow with many objects). + +To see understand the different rendering options available in Evogym, see `rendering_options.py`. +You can run: + +```bash +python .\rendering_options.py --render-option to-debug-screen +``` + +| Option | Description | +|--------------------|------------------------------------------------------------------------| +| to-debug-screen | Render to Evogym's default viewer | +| to-numpy-array | Render to a numpy array (visualized with open cv) | +| special-options | Render with special flags (for pretty visualization) | +| very-fast | Render without fps limit | diff --git a/tutorials/envs/__init__.py b/tutorials/envs/__init__.py index 56719962..dd84f967 100644 --- a/tutorials/envs/__init__.py +++ b/tutorials/envs/__init__.py @@ -1,7 +1,7 @@ # import envs and necessary gym packages from envs.simple_env import SimpleWalkerEnvClass -from gym.envs.registration import register +from gymnasium.envs.registration import register # register the env using gym's interface register( diff --git a/tutorials/envs/simple_env.py b/tutorials/envs/simple_env.py index 85891069..51cc8f1f 100644 --- a/tutorials/envs/simple_env.py +++ b/tutorials/envs/simple_env.py @@ -1,27 +1,34 @@ -from gym import spaces +from gymnasium import spaces from evogym import EvoWorld from evogym.envs import EvoGymBase +from typing import Optional, Dict, Any, Tuple import numpy as np import os class SimpleWalkerEnvClass(EvoGymBase): - def __init__(self, body, connections=None): + def __init__( + self, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + render_options: Optional[Dict[str, Any]] = None, + ): # make world self.world = EvoWorld.from_json(os.path.join('world_data', 'simple_walker_env.json')) self.world.add_from_array('robot', body, 1, 1, connections=connections) # init sim - EvoGymBase.__init__(self, self.world) + EvoGymBase.__init__(self, world=self.world, render_mode=render_mode, render_options=render_options) # set action space and observation space num_actuators = self.get_actuator_indices('robot').size - obs_size = self.reset().size + obs_size = self.reset()[0].size - self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=np.float) - self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(obs_size,), dtype=np.float) + self.action_space = spaces.Box(low= 0.6, high=1.6, shape=(num_actuators,), dtype=float) + self.observation_space = spaces.Box(low=-100.0, high=100.0, shape=(obs_size,), dtype=float) # set viewer to track objects self.default_viewer.track_objects('robot') @@ -58,12 +65,12 @@ def step(self, action): self.get_relative_pos_obs("robot"), )) - # observation, reward, has simulation met termination conditions, debugging info - return obs, reward, done, {} + # observation, reward, has simulation met termination conditions, truncated, debugging info + return obs, reward, done, False, {} - def reset(self): + def reset(self, seed: Optional[int] = None, options: Optional[Dict[str, Any]] = None) -> Tuple[np.ndarray, Dict[str, Any]]: - super().reset() + super().reset(seed=seed, options=options) # observation obs = np.concatenate(( @@ -71,4 +78,4 @@ def reset(self): self.get_relative_pos_obs("robot"), )) - return obs \ No newline at end of file + return obs, {} \ No newline at end of file diff --git a/tutorials/rendering_options.py b/tutorials/rendering_options.py index 682a92dd..34c533f2 100644 --- a/tutorials/rendering_options.py +++ b/tutorials/rendering_options.py @@ -2,6 +2,7 @@ import os import numpy as np import cv2 +import argparse ### CREATE A SIMPLE ENVIRONMENT ### @@ -27,13 +28,18 @@ ### SELECT A RENDERING OPTION ### -options = ['to-debug-screen', 'to-numpy-array', 'special-options', 'very-fast'] -option = options[0] - -print(f'\nUsing rendering option {option}...\n') +parser = argparse.ArgumentParser() +parser.add_argument( + '--render-option', + choices=['to-debug-screen', 'to-numpy-array', 'special-options', 'very-fast'], + help='Select a rendering option from: to-debug-screen, to-numpy-array, special-options, very-fast', + default='to-debug-screen', +) +args = parser.parse_args() +print(f'\nUsing rendering option {args.render_option}...\n') # if the 'very-fast' option is chosen, set the rendering speed to be unlimited -if option == 'very-fast': +if args.render_option == 'very-fast': viewer.set_target_rps(None) for i in range(1000): @@ -48,19 +54,19 @@ sim.step() # step and render to a debug screen - if option == 'to-debug-screen': + if args.render_option == 'to-debug-screen': viewer.render('screen') # step and render to a numpy array # use open cv to visualize output - if option == 'to-numpy-array': + if args.render_option == 'to-numpy-array': img = viewer.render('img') img = cv2.cvtColor(img, cv2.COLOR_RGB2BGR) cv2.waitKey(1) cv2.imshow("Open CV Window", img) # rendering with more options - if option == 'special-options': + if args.render_option == 'special-options': img = viewer.render( 'screen', verbose = True, @@ -70,7 +76,8 @@ hide_voxels = False) # rendering as fast as possible - if option == 'very-fast': + if args.render_option == 'very-fast': viewer.render('screen', verbose=True) cv2.destroyAllWindows() +viewer.close() diff --git a/tutorials/visualize_simple_env.py b/tutorials/visualize_simple_env.py index 5ecc77e7..d74cde3e 100644 --- a/tutorials/visualize_simple_env.py +++ b/tutorials/visualize_simple_env.py @@ -1,4 +1,4 @@ -import gym +import gymnasium as gym from evogym import sample_robot # import envs from the envs folder and register them @@ -10,17 +10,21 @@ body, connections = sample_robot((5,5)) # make the SimpleWalkingEnv using gym.make and with the robot information - env = gym.make('SimpleWalkingEnv-v0', body=body) + env = gym.make( + 'SimpleWalkingEnv-v0', + body=body, + render_mode='human', + render_options={'verbose': True} + ) env.reset() # step the environment for 500 iterations for i in range(500): action = env.action_space.sample() - ob, reward, done, info = env.step(action) - env.render(verbose=True) + ob, reward, terminated, truncated, info = env.step(action) - if done: + if terminated or truncated: env.reset() env.close() From 7cdbae9d6d3847276a4af0970adb9ea507db06ce Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Sat, 15 Jun 2024 14:35:00 -0400 Subject: [PATCH 10/14] Rewrite ppo, update example scripts, clean up requirements (#41) * Rewrite ppo, update example scripts, clean up requirements * Update gym test script * Correct path * Update visualization scripts * Update readme --- evogym/envs/base.py | 9 -- examples/README.md | 101 ++++--------- examples/bo/run.py | 48 +++--- examples/cppn_neat/run.py | 42 +++--- examples/ga/run.py | 73 +++++----- examples/gym_test.py | 11 +- examples/make_gifs.py | 88 +++-------- examples/ppo/__init__.py | 2 - examples/ppo/args.py | 60 ++++++++ examples/ppo/arguments.py | 167 --------------------- examples/ppo/callback.py | 116 +++++++++++++++ examples/ppo/envs.py | 258 --------------------------------- examples/ppo/eval.py | 66 +++++++++ examples/ppo/evaluate.py | 59 -------- examples/ppo/group_ppo.py | 47 +++--- examples/ppo/run.py | 298 ++++++++------------------------------ examples/ppo/utils.py | 69 --------- examples/run_bo.py | 21 ++- examples/run_cppn_neat.py | 21 ++- examples/run_ga.py | 21 ++- examples/run_group_ppo.py | 2 - examples/run_ppo.py | 79 ++++++++++ examples/visualize.py | 198 ++++++++++--------------- pytest.ini | 2 +- requirements.txt | 42 +++--- 25 files changed, 671 insertions(+), 1229 deletions(-) delete mode 100644 examples/ppo/__init__.py create mode 100644 examples/ppo/args.py delete mode 100644 examples/ppo/arguments.py create mode 100644 examples/ppo/callback.py delete mode 100644 examples/ppo/envs.py create mode 100644 examples/ppo/eval.py delete mode 100644 examples/ppo/evaluate.py delete mode 100644 examples/ppo/utils.py create mode 100644 examples/run_ppo.py diff --git a/evogym/envs/base.py b/evogym/envs/base.py index 41ba7333..82022ce4 100644 --- a/evogym/envs/base.py +++ b/evogym/envs/base.py @@ -392,15 +392,6 @@ def __init__( EvoGymBase.__init__(self, world=world, render_mode=render_mode, render_options=render_options) self.default_viewer.track_objects('robot') - - def step(self, action): - - action_copy = {} - - for robot_name, a in action.items(): - action_copy[robot_name] = a + 1 - - return super().step(action_copy) def pos_at_time(self, time): return super().pos_at_time(time)*self.VOXEL_SIZE diff --git a/examples/README.md b/examples/README.md index d2f32238..5b800545 100644 --- a/examples/README.md +++ b/examples/README.md @@ -1,93 +1,45 @@ # Examples -This readme describes how to run several control optimization and co-design experiments and visualize the results. +This readme describes how to run several control optimization and co-design experiments and visualize the results. All scripts should be run from within the `examples` directory. Ensure that you have installed requirements: `pip install -r requirements.txt` and cloned the repo with submodules before running any of these scripts. -## PPO (control optimization) - -To set the parameters of group ppo, you can edit `run_group_ppo.py` and change the following: - -* `experiment_name` = all experiment files are saved to `saved_data/experiment_name` - -Create `SimJob`s to specify which robots to train and in which environments to train them. `SimJob`s are parameterized by the following: - -* `name` = all job files are saved to `saved_data/experiment_name/name` -* `robots` = array of robot names specifying which robots to train. Robot files must be of type `.json` (created using the EvoGym Design Tool) or `.npz` (saved from another experiment) and must be located in `examples/world_data` -* `envs` = array of environment names in which to train robots -* `train_iters` = number of iterations of ppo to train each robot's controller - -Each robot in `robots` will be trained in each environment in `envs` for `train_iters` iterations of ppo. - -From within `example`, you can run group ppo with the following command: - -```shell -python run_group_ppo.py --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 4 --num-steps 128 --num-mini-batch 4 --log-interval 100 --use-linear-lr-decay --entropy-coef 0.01 --eval-interval 50 -``` - -All ppo hyperparameters are specified through command line arguments. For more details please see [this repo](https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail). - - -## Genetic Algorithm (co-design) +> [!WARNING] +> Many of these scripts have been modified in favor of improved usability. If you wish to exactly recreate the results from the original evogym paper, please see the [original release](https://github.com/EvolutionGym/evogym/releases/tag/1.0.0). -To set the parameters of the genetic algorithm, you can edit `run_ga.py` and change the following: - -* `seed` = seed to control randomness -* `pop_size` = the algorithm evolves robots in populations of this size -* `structure_shape` = each robot is represented by `(m,n)` matrix of voxels -* `experiment_name` = all experiment files are saved to `saved_data/experiment_name` -* `max_evaluations` = maximum number of unique robots to evaluate -* `train_iters` = number of iterations of ppo to train each robot's controller -* `num_cores` = number of robots to train in parallel. Note: the total number of processes created will be `num_cores * num_processes` (as specified below in the command line) - -From within `example`, you can run the genetic algorithm with the following command: - -```shell -python run_ga.py --env-name "Walker-v0" --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 4 --num-steps 128 --num-mini-batch 4 --log-interval 100 --use-linear-lr-decay --entropy-coef 0.01 --eval-interval 50 -``` - -The environment name as well as all ppo hyperparameters are specified through command line arguments. For more details please see [this repo](https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail). - - -## Bayesian Optimization (co-design) - -To set the parameters of bayesian optimization, you can edit `run_bo.py` and change the following: - -* `seed` = seed to control randomness -* `pop_size` = the algorithm evolves robots in populations of this size -* `structure_shape` = each robot is represented by `(m,n)` matrix of voxels -* `experiment_name` = all experiment files are saved to `saved_data/experiment_name` -* `max_evaluations` = maximum number of unique robots to evaluate. Should be a multiple of `pop_size` -* `train_iters` = number of iterations of ppo to train each robot's controller -* `num_cores` = number of robots to train in parallel. Note: the total number of processes created will be `num_cores * num_processes` (as specified below in the command line) +## PPO (control optimization) -From within `example`, you can run bayesian optimization with the following command: +The script is set up to train a robot's policy in the `Walker-v0` environment: ```shell -python run_bo.py --env-name "Walker-v0" --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 4 --num-steps 128 --num-mini-batch 4 --log-interval 100 --use-linear-lr-decay --entropy-coef 0.01 --eval-interval 50 +python run_ppo.py --n-envs 4 --n-eval-envs 4 --n-evals 4 --eval-interval 10000 --total-timesteps 100000 ``` -The environment name as well as all ppo hyperparameters are specified through command line arguments. For more details please see [this repo](https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail). +Results saved to `saved_data/test_ppo`. See `python run_ppo.py --help` to see how training can be customized. We recommend setting `total-timesteps > 1e6` for a serious training run. +## Co-Design -## CPPN-NEAT (co-design) +All three co-design algorithms: the genetic algorithm, bayesian optimization, and CPPN-NEAT have the same core parameters: -To set the parameters of cppn-neat, you can edit `run_cppn_neat.py` and change the following: +* `exp-name` = all experiment files are saved to `saved_data/exp_name` +* `env-name` = environment on which to run co-design +* `pop-size` = the algorithm evolves robots in populations of this size +* `structure-shape` = each robot is represented by `(m,n)` matrix of voxels +* `max-evaluations` = maximum number of unique robots to evaluate +* `num-cores` = number of robots to train in parallel. Note: the total number of processes created will be `num-cores * n-envs` (as specified below in the command line) -* `seed` = seed to control randomness -* `pop_size` = the algorithm evolves robots in populations of this size -* `structure_shape` = each robot is represented by `(m,n)` matrix of voxels -* `experiment_name` = all experiment files are saved to `saved_data/experiment_name` -* `max_evaluations` = maximum number of unique robots to evaluate. Should be a multiple of `pop_size` -* `train_iters` = number of iterations of ppo to train each robot's controller -* `num_cores` = number of robots to train in parallel. Note: the total number of processes created will be `num_cores * num_processes` (as specified below in the command line) +See all options via +`python run_ga.py --help` +`python run_bo.py --help` +`python run_cppn_neat.py --help` -From within `example`, you can run cppn-neat with the following command: +From within `example`, you can run the co-design algorithms as follows: ```shell -python run_cppn_neat.py --env-name "Walker-v0" --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 4 --num-steps 128 --num-mini-batch 4 --log-interval 100 --use-linear-lr-decay --entropy-coef 0.01 --eval-interval 50 +python run_ga.py --eval-interval 10000 --total-timesteps 100000 +python run_bo.py --eval-interval 10000 --total-timesteps 100000 +python run_cppn_neat.py --eval-interval 10000 --total-timesteps 100000 ``` -The environment name as well as all ppo hyperparameters are specified through command line arguments. For more details please see [this repo](https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail). - +Note that the default parameters are set for testing purposes, and should not produce successful robots. Feel free to increase the co-design/PPO parameters based on your compute availability. ## Visualize @@ -99,14 +51,11 @@ python visualize.py --env-name "Walker-v0" Use the appropriate environment name and follow the on-screen instructions. -To visualize the results of a group ppo experiment you can use the same command -- the environment name is no longer necessary. - ## Make Gifs -To set the parameters of the gif generating script, you can edit `make_gifs.py` and change the following: +This script generates gifs from co-design experiments. To set the parameters of the gif generating script, you can edit `make_gifs.py` and change the following: * `GIF_RESOLUTION` = resolution of produced gifs -* `NUM_PROC` = number of gifs to produce in parallel * `name` = all files are saved to `saved_data/all_media/name` * `experiment_names`, `env_names` = arrays of experiments their corresponding environments to generate gifs for * `load_dir` = directory where experiments are stored diff --git a/examples/bo/run.py b/examples/bo/run.py index 7cc0707a..9cd5e6f4 100644 --- a/examples/bo/run.py +++ b/examples/bo/run.py @@ -1,9 +1,8 @@ -from distutils.command.config import config import os from re import X import shutil -import random import numpy as np +import argparse from GPyOpt.core.task.space import Design_space from GPyOpt.models import GPModel @@ -13,17 +12,9 @@ from GPyOpt.core.evaluators import ThompsonBatch from .optimizer import Objective, Optimization -import sys -curr_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.join(curr_dir, '..') -external_dir = os.path.join(root_dir, 'externals') -sys.path.insert(0, root_dir) -sys.path.insert(1, os.path.join(external_dir, 'pytorch_a2c_ppo_acktr_gail')) - +from ppo.run import run_ppo import evogym.envs from evogym import is_connected, has_actuator, get_full_connectivity -from utils.algo_utils import TerminationCondition -from ppo import run_ppo def get_robot_from_genome(genome, config): ''' @@ -36,6 +27,8 @@ def get_robot_from_genome(genome, config): def eval_genome_cost(genome, config, genome_id, generation): robot = get_robot_from_genome(genome, config) + args, env_name = config['args'], config['env_name'] + if not (is_connected(robot) and has_actuator(robot)): return 10 else: @@ -45,9 +38,7 @@ def eval_genome_cost(genome, config, genome_id, generation): save_path_controller = os.path.join(save_path_generation, 'controller') np.savez(save_path_structure, robot, connectivity) fitness = run_ppo( - structure=(robot, connectivity), - termination_condition=TerminationCondition(config['train_iters']), - saving_convention=(save_path_controller, genome_id), + args, robot, env_name, save_path_controller, f'{genome_id}', connectivity ) cost = -fitness return cost @@ -61,20 +52,23 @@ def eval_genome_constraint(genomes, config): return np.array(all_violation) def run_bo( - experiment_name, - structure_shape, - pop_size, - max_evaluations, - train_iters, - num_cores, - ): - - save_path = os.path.join(root_dir, 'saved_data', experiment_name) + args: argparse.Namespace, +): + exp_name, env_name, pop_size, structure_shape, max_evaluations, num_cores = ( + args.exp_name, + args.env_name, + args.pop_size, + args.structure_shape, + args.max_evaluations, + args.num_cores, + ) + + save_path = os.path.join('saved_data', exp_name) try: os.makedirs(save_path) except: - print(f'THIS EXPERIMENT ({experiment_name}) ALREADY EXISTS') + print(f'THIS EXPERIMENT ({exp_name}) ALREADY EXISTS') print('Override? (y/n): ', end='') ans = input() if ans.lower() == 'y': @@ -88,13 +82,13 @@ def run_bo( with open(save_path_metadata, 'w') as f: f.write(f'POP_SIZE: {pop_size}\n' \ f'STRUCTURE_SHAPE: {structure_shape[0]} {structure_shape[1]}\n' \ - f'MAX_EVALUATIONS: {max_evaluations}\n' \ - f'TRAIN_ITERS: {train_iters}\n') + f'MAX_EVALUATIONS: {max_evaluations}\n') config = { 'structure_shape': structure_shape, - 'train_iters': train_iters, 'save_path': save_path, + 'args': args, # args for run_ppo + 'env_name': env_name, } def constraint_func(genome): diff --git a/examples/cppn_neat/run.py b/examples/cppn_neat/run.py index 91c78f45..d0649793 100644 --- a/examples/cppn_neat/run.py +++ b/examples/cppn_neat/run.py @@ -1,9 +1,9 @@ import os import shutil -import random import numpy as np import torch import neat +import argparse import sys curr_dir = os.path.dirname(os.path.abspath(__file__)) @@ -11,16 +11,14 @@ external_dir = os.path.join(root_dir, 'externals') sys.path.insert(0, root_dir) sys.path.insert(1, os.path.join(external_dir, 'PyTorch-NEAT')) -sys.path.insert(1, os.path.join(external_dir, 'pytorch_a2c_ppo_acktr_gail')) from pytorch_neat.cppn import create_cppn from .parallel import ParallelEvaluator from .population import Population -from utils.algo_utils import TerminationCondition -from ppo import run_ppo -from evogym import is_connected, has_actuator, get_full_connectivity, hashable +from ppo.run import run_ppo import evogym.envs +from evogym import is_connected, has_actuator, get_full_connectivity, hashable def get_cppn_input(structure_shape): @@ -43,15 +41,16 @@ def get_robot_from_genome(genome, config): def eval_genome_fitness(genome, config, genome_id, generation): robot = get_robot_from_genome(genome, config) + args, env_name = config.extra_info['args'], config.extra_info['env_name'] + connectivity = get_full_connectivity(robot) save_path_generation = os.path.join(config.extra_info['save_path'], f'generation_{generation}') save_path_structure = os.path.join(save_path_generation, 'structure', f'{genome_id}') save_path_controller = os.path.join(save_path_generation, 'controller') np.savez(save_path_structure, robot, connectivity) + fitness = run_ppo( - structure=(robot, connectivity), - termination_condition=TerminationCondition(config.extra_info['train_iters']), - saving_convention=(save_path_controller, genome_id), + args, robot, env_name, save_path_controller, f'{genome_id}', connectivity ) return fitness @@ -93,20 +92,23 @@ def post_evaluate(self, config, population, species, best_genome): f.write(out) def run_cppn_neat( - experiment_name, - structure_shape, - pop_size, - max_evaluations, - train_iters, - num_cores, - ): + args: argparse.Namespace +): + exp_name, env_name, pop_size, structure_shape, max_evaluations, num_cores = ( + args.exp_name, + args.env_name, + args.pop_size, + args.structure_shape, + args.max_evaluations, + args.num_cores, + ) - save_path = os.path.join(root_dir, 'saved_data', experiment_name) + save_path = os.path.join('saved_data', exp_name) try: os.makedirs(save_path) except: - print(f'THIS EXPERIMENT ({experiment_name}) ALREADY EXISTS') + print(f'THIS EXPERIMENT ({exp_name}) ALREADY EXISTS') print('Override? (y/n): ', end='') ans = input() if ans.lower() == 'y': @@ -120,8 +122,7 @@ def run_cppn_neat( with open(save_path_metadata, 'w') as f: f.write(f'POP_SIZE: {pop_size}\n' \ f'STRUCTURE_SHAPE: {structure_shape[0]} {structure_shape[1]}\n' \ - f'MAX_EVALUATIONS: {max_evaluations}\n' \ - f'TRAIN_ITERS: {train_iters}\n') + f'MAX_EVALUATIONS: {max_evaluations}\n') structure_hashes = {} @@ -134,9 +135,10 @@ def run_cppn_neat( config_path, extra_info={ 'structure_shape': structure_shape, - 'train_iters': train_iters, 'save_path': save_path, 'structure_hashes': structure_hashes, + 'args': args, # args for run_ppo + 'env_name': env_name, }, custom_config=[ ('NEAT', 'pop_size', pop_size), diff --git a/examples/ga/run.py b/examples/ga/run.py index fdb98201..5d033f4b 100644 --- a/examples/ga/run.py +++ b/examples/ga/run.py @@ -3,34 +3,40 @@ import shutil import random import math +import argparse +from typing import List -import sys -curr_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.join(curr_dir, '..') -external_dir = os.path.join(root_dir, 'externals') -sys.path.insert(0, root_dir) -sys.path.insert(1, os.path.join(external_dir, 'pytorch_a2c_ppo_acktr_gail')) - -from ppo import run_ppo +from ppo.run import run_ppo +import evogym.envs from evogym import sample_robot, hashable import utils.mp_group as mp -from utils.algo_utils import get_percent_survival_evals, mutate, TerminationCondition, Structure +from utils.algo_utils import get_percent_survival_evals, mutate, Structure -def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_iters, num_cores): +def run_ga( + args: argparse.Namespace, +): print() - - ### STARTUP: MANAGE DIRECTORIES ### - home_path = os.path.join(root_dir, "saved_data", experiment_name) + + exp_name, env_name, pop_size, structure_shape, max_evaluations, num_cores = ( + args.exp_name, + args.env_name, + args.pop_size, + args.structure_shape, + args.max_evaluations, + args.num_cores, + ) + + ### MANAGE DIRECTORIES ### + home_path = os.path.join("saved_data", exp_name) start_gen = 0 - ### DEFINE TERMINATION CONDITION ### - tc = TerminationCondition(train_iters) + ### DEFINE TERMINATION CONDITION ### is_continuing = False try: os.makedirs(home_path) except: - print(f'THIS EXPERIMENT ({experiment_name}) ALREADY EXISTS') + print(f'THIS EXPERIMENT ({exp_name}) ALREADY EXISTS') print("Override? (y/n/c): ", end="") ans = input() if ans.lower() == "y": @@ -46,10 +52,10 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it ### STORE META-DATA ## if not is_continuing: - temp_path = os.path.join(root_dir, "saved_data", experiment_name, "metadata.txt") + temp_path = os.path.join("saved_data", exp_name, "metadata.txt") try: - os.makedirs(os.path.join(root_dir, "saved_data", experiment_name)) + os.makedirs(os.path.join("saved_data", exp_name)) except: pass @@ -57,11 +63,10 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it f.write(f'POP_SIZE: {pop_size}\n') f.write(f'STRUCTURE_SHAPE: {structure_shape[0]} {structure_shape[1]}\n') f.write(f'MAX_EVALUATIONS: {max_evaluations}\n') - f.write(f'TRAIN_ITERS: {train_iters}\n') f.close() else: - temp_path = os.path.join(root_dir, "saved_data", experiment_name, "metadata.txt") + temp_path = os.path.join("saved_data", exp_name, "metadata.txt") f = open(temp_path, "r") count = 0 for line in f: @@ -71,18 +76,15 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it structure_shape = (int(line.split()[1]), int(line.split()[2])) if count == 2: max_evaluations = int(line.split()[1]) - if count == 3: - train_iters = int(line.split()[1]) - tc.change_target(train_iters) count += 1 print(f'Starting training with pop_size {pop_size}, shape ({structure_shape[0]}, {structure_shape[1]}), ' + - f'max evals: {max_evaluations}, train iters {train_iters}.') + f'max evals: {max_evaluations}.') f.close() ### GENERATE // GET INITIAL POPULATION ### - structures = [] + structures: List[Structure] = [] population_structure_hashes = {} num_evaluations = 0 generation = 0 @@ -103,7 +105,7 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it else: for g in range(start_gen+1): for i in range(pop_size): - save_path_structure = os.path.join(root_dir, "saved_data", experiment_name, "generation_" + str(g), "structure", str(i) + ".npz") + save_path_structure = os.path.join("saved_data", exp_name, "generation_" + str(g), "structure", str(i) + ".npz") np_data = np.load(save_path_structure) structure_data = [] for key, value in np_data.items(): @@ -125,8 +127,8 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it ### MAKE GENERATION DIRECTORIES ### - save_path_structure = os.path.join(root_dir, "saved_data", experiment_name, "generation_" + str(generation), "structure") - save_path_controller = os.path.join(root_dir, "saved_data", experiment_name, "generation_" + str(generation), "controller") + save_path_structure = os.path.join("saved_data", exp_name, "generation_" + str(generation), "structure") + save_path_controller = os.path.join("saved_data", exp_name, "generation_" + str(generation), "controller") try: os.makedirs(save_path_structure) @@ -150,19 +152,20 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it for structure in structures: if structure.is_survivor: - save_path_controller_part = os.path.join(root_dir, "saved_data", experiment_name, "generation_" + str(generation), "controller", - "robot_" + str(structure.label) + "_controller" + ".pt") - save_path_controller_part_old = os.path.join(root_dir, "saved_data", experiment_name, "generation_" + str(generation-1), "controller", - "robot_" + str(structure.prev_gen_label) + "_controller" + ".pt") + save_path_controller_part = os.path.join("saved_data", exp_name, "generation_" + str(generation), "controller", + f"{structure.label}.zip") + save_path_controller_part_old = os.path.join("saved_data", exp_name, "generation_" + str(generation-1), "controller", + f"{structure.prev_gen_label}.zip") print(f'Skipping training for {save_path_controller_part}.\n') try: shutil.copy(save_path_controller_part_old, save_path_controller_part) except: print(f'Error coppying controller for {save_path_controller_part}.\n') - else: - ppo_args = ((structure.body, structure.connections), tc, (save_path_controller, structure.label)) + else: + ppo_args = (args, structure.body, env_name, save_path_controller, f'{structure.label}', structure.connections) group.add_job(run_ppo, ppo_args, callback=structure.set_reward) + group.run_jobs(num_cores) @@ -177,7 +180,7 @@ def run_ga(experiment_name, structure_shape, pop_size, max_evaluations, train_it structures = sorted(structures, key=lambda structure: structure.fitness, reverse=True) #SAVE RANKING TO FILE - temp_path = os.path.join(root_dir, "saved_data", experiment_name, "generation_" + str(generation), "output.txt") + temp_path = os.path.join("saved_data", exp_name, "generation_" + str(generation), "output.txt") f = open(temp_path, "w") out = "" diff --git a/examples/gym_test.py b/examples/gym_test.py index 2f39a3d0..d41d29bd 100644 --- a/examples/gym_test.py +++ b/examples/gym_test.py @@ -1,4 +1,4 @@ -import gym +import gymnasium as gym import evogym.envs from evogym import sample_robot @@ -6,15 +6,14 @@ if __name__ == '__main__': body, connections = sample_robot((5,5)) - env = gym.make('Walker-v0', body=body) + env = gym.make('Walker-v0', body=body, render_mode='human') env.reset() while True: - action = env.action_space.sample()-1 - ob, reward, done, info = env.step(action) - env.render() + action = env.action_space.sample() + ob, reward, terminated, truncated, info = env.step(action) - if done: + if terminated or truncated: env.reset() env.close() diff --git a/examples/make_gifs.py b/examples/make_gifs.py index 2a2a8efb..b79c22d8 100644 --- a/examples/make_gifs.py +++ b/examples/make_gifs.py @@ -1,20 +1,14 @@ - +import os import numpy as np import torch -import gym from PIL import Image import imageio from pygifsicle import optimize -import os, sys -root_dir = os.path.dirname(os.path.abspath(__file__)) -external_dir = os.path.join(root_dir, 'externals') -sys.path.insert(0, root_dir) -sys.path.insert(1, os.path.join(external_dir, 'pytorch_a2c_ppo_acktr_gail')) - +import evogym.envs +from stable_baselines3 import PPO +from stable_baselines3.common.env_util import make_vec_env from utils.algo_utils import * -from ppo.envs import make_vec_envs -from ppo.utils import get_vec_normalize import utils.mp_group as mp def get_generations(load_dir, exp_name): @@ -37,10 +31,7 @@ def get_exp_gen_data(exp_name, load_dir, gen): robot_data.append((int(line.split()[0]), float(line.split()[1]))) return robot_data -def dummy_callback(_): - pass - -def save_robot_gif(out_path, env_name, body_path, ctrl_path): +def save_robot_gif(out_path, env_name, body_path, ctrl_path, seed=42): global GIF_RESOLUTION structure_data = np.load(body_path) @@ -48,43 +39,23 @@ def save_robot_gif(out_path, env_name, body_path, ctrl_path): for key, value in structure_data.items(): structure.append(value) structure = tuple(structure) - - env = make_vec_envs(env_name, structure, 1000, 1, None, None, device='cpu', allow_early_resets=False) - env.get_attr("default_viewer", indices=None)[0].set_resolution(GIF_RESOLUTION) - - actor_critic, obs_rms = torch.load(ctrl_path, map_location='cpu') - - vec_norm = get_vec_normalize(env) - if vec_norm is not None: - vec_norm.eval() - vec_norm.obs_rms = obs_rms - - recurrent_hidden_states = torch.zeros(1, actor_critic.recurrent_hidden_state_size) - masks = torch.zeros(1, 1) - - obs = env.reset() - img = env.render(mode='img') - reward = None + + model = PPO.load(ctrl_path) + + # Parallel environments + vec_env = make_vec_env(env_name, n_envs=1, seed=seed, env_kwargs={ + 'body': structure[0], + 'connections': structure[1], + "render_mode": "img", + }) + + obs = vec_env.reset() + imgs = [vec_env.env_method('render')[0]] # vec env is stupid; .render() dosent work done = False - - imgs = [] - # arrays = [] while not done: - - with torch.no_grad(): - value, action, _, recurrent_hidden_states = actor_critic.act( - obs, recurrent_hidden_states, masks, deterministic=True) - - obs, reward, done, _ = env.step(action) - img = env.render(mode='img') - imgs.append(img) - - masks.fill_(0.0 if (done) else 1.0) - - if done == True: - env.reset() - - env.close() + action, _states = model.predict(obs, deterministic=True) + obs, reward, done, info = vec_env.step(action) + imgs.append(vec_env.env_method('render')[0]) imageio.mimsave(f'{out_path}.gif', imgs, duration=(1/50.0)) try: @@ -120,7 +91,6 @@ def __str__(self): out += f'{comp}_' return out[:-1] - class Job(): def __init__( self, @@ -212,7 +182,7 @@ def generate(self, load_dir, save_dir, depth=0): for idx, reward in get_exp_gen_data(exp_name, load_dir, gen): robots.append(Robot( body_path = os.path.join(load_dir, exp_name, f"generation_{gen}", "structure", f"{idx}.npz"), - ctrl_path = os.path.join(load_dir, exp_name, f"generation_{gen}", "controller", f"robot_{idx}_controller.pt"), + ctrl_path = os.path.join(load_dir, exp_name, f"generation_{gen}", "controller", f"{idx}.zip"), reward = reward, env_name = env_name, exp_name = exp_name if len(self.experiment_names) != 1 else None, @@ -231,25 +201,11 @@ def generate(self, load_dir, save_dir, depth=0): robot.body_path, robot.ctrl_path ) - - # multiprocessing is currently broken - - # group = mp.Group() - # for i, robot in zip(ranks, robots): - # gif_args = ( - # os.path.join(save_dir, f'{i}_{robot}'), - # robot.env_name, - # robot.body_path, - # robot.ctrl_path - # ) - # group.add_job(save_robot_gif, gif_args, callback=dummy_callback) - # group.run_jobs(NUM_PROC) GIF_RESOLUTION = (1280/5, 720/5) -# NUM_PROC = 8 if __name__ == '__main__': exp_root = os.path.join('saved_data') - save_dir = os.path.join(root_dir, 'saved_data', 'all_media') + save_dir = os.path.join('saved_data', 'all_media') my_job = Job( name = 'test_ga', diff --git a/examples/ppo/__init__.py b/examples/ppo/__init__.py deleted file mode 100644 index 9108e19a..00000000 --- a/examples/ppo/__init__.py +++ /dev/null @@ -1,2 +0,0 @@ -from ppo import arguments -from ppo.run import run_ppo \ No newline at end of file diff --git a/examples/ppo/args.py b/examples/ppo/args.py new file mode 100644 index 00000000..b0b2f8a6 --- /dev/null +++ b/examples/ppo/args.py @@ -0,0 +1,60 @@ +import argparse + +def add_ppo_args(parser: argparse.ArgumentParser) -> None: + """ + Add PPO arguments to the parser + """ + + ppo_parser: argparse.ArgumentParser = parser.add_argument_group('ppo arguments') + + ppo_parser.add_argument( + '--verbose-ppo', default=1, type=int, help='Verbosity level for PPO: 0 for no output, 1 for info messages (such as device or wrappers used), 2 for debug messages (default: 1)' + ) + ppo_parser.add_argument( + '--learning-rate', default=2.5e-4, type=float, help='Learning rate for PPO (default: 2.5e-4)' + ) + ppo_parser.add_argument( + '--n-steps', default=128, type=int, help='The number of steps to run for each environment per update for PPO (i.e. rollout buffer size is n_steps * n_envs where n_envs is number of environment copies running in parallel) (default: 128)' + ) + ppo_parser.add_argument( + '--batch-size', default=4, type=int, help='Mini-batch size for PPO (default: 4)' + ) + ppo_parser.add_argument( + '--n-epochs', default=4, type=int, help='Number of epochs when optimizing the surrogate objective for PPO (default: 4)' + ) + ppo_parser.add_argument( + '--gamma', default=0.99, type=float, help='Discount factor for PPO (default: 0.99)' + ) + ppo_parser.add_argument( + '--gae-lambda', default=0.95, type=float, help='Lambda parameter for Generalized Advantage Estimation for PPO (default: 0.95)' + ) + ppo_parser.add_argument( + '--vf-coef', default=0.5, type=float, help='Value function coefficient for PPO loss calculation (default: 0.5)' + ) + ppo_parser.add_argument( + '--max-grad-norm', default=0.5, type=float, help='The maximum value of the gradient clipping for PPO (default: 0.5)' + ) + ppo_parser.add_argument( + '--ent-coef', default=0.01, type=float, help='Entropy coefficient for PPO loss calculation (default: 0.01)' + ) + ppo_parser.add_argument( + '--clip-range', default=0.1, type=float, help='Clipping parameter for PPO (default: 0.1)' + ) + ppo_parser.add_argument( + '--total-timesteps', default=1e6, type=int, help='Total number of timesteps for PPO (default: 1e6)' + ) + ppo_parser.add_argument( + '--log-interval', default=50, type=int, help='Episodes before logging PPO (default: 50)' + ) + ppo_parser.add_argument( + '--n-envs', default=1, type=int, help='Number of parallel environments for PPO (default: 1)' + ) + ppo_parser.add_argument( + '--n-eval-envs', default=1, type=int, help='Number of parallel environments for PPO evaluation (default: 1)' + ) + ppo_parser.add_argument( + '--n-evals', default=1, type=int, help='Number of times to run the environment during each eval (default: 1)' + ) + ppo_parser.add_argument( + '--eval-interval', default=1e5, type=int, help='Number of steps before evaluating PPO model (default: 1e5)' + ) \ No newline at end of file diff --git a/examples/ppo/arguments.py b/examples/ppo/arguments.py deleted file mode 100644 index d99c6e6a..00000000 --- a/examples/ppo/arguments.py +++ /dev/null @@ -1,167 +0,0 @@ -import argparse -import torch - -# Derived from -# https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail - -def get_args(): - parser = argparse.ArgumentParser(description='RL') - parser.add_argument( - '--algo', default='ppo', help='algorithm to use: a2c | ppo | acktr') - parser.add_argument( - '--gail', - action='store_true', - default=False, - help='do imitation learning with gail') - parser.add_argument( - '--gail-experts-dir', - default='./gail_experts', - help='directory that contains expert demonstrations for gail') - parser.add_argument( - '--gail-batch-size', - type=int, - default=128, - help='gail batch size (default: 128)') - parser.add_argument( - '--gail-epoch', type=int, default=5, help='gail epochs (default: 5)') - parser.add_argument( - '--lr', type=float, default=2.5e-4, help='learning rate (default: 2.5e-4)') - parser.add_argument( - '--eps', - type=float, - default=1e-5, - help='RMSprop optimizer epsilon (default: 1e-5)') - parser.add_argument( - '--alpha', - type=float, - default=0.99, - help='RMSprop optimizer apha (default: 0.99)') - parser.add_argument( - '--gamma', - type=float, - default=0.99, - help='discount factor for rewards (default: 0.99)') - parser.add_argument( - '--use-gae', - action='store_true', - default=True, - help='use generalized advantage estimation') - parser.add_argument( - '--gae-lambda', - type=float, - default=0.95, - help='gae lambda parameter (default: 0.95)') - parser.add_argument( - '--entropy-coef', - type=float, - default=0.01, - help='entropy term coefficient (default: 0.01)') - parser.add_argument( - '--value-loss-coef', - type=float, - default=0.5, - help='value loss coefficient (default: 0.5)') - parser.add_argument( - '--max-grad-norm', - type=float, - default=0.5, - help='max norm of gradients (default: 0.5)') - parser.add_argument( - '--seed', type=int, default=1, help='random seed (default: 1)') - parser.add_argument( - '--cuda-deterministic', - action='store_true', - default=False, - help="sets flags for determinism when using CUDA (potentially slow!)") - parser.add_argument( - '--num-processes', - type=int, - default=1, - help='how many training CPU processes to use (default: 1)') - parser.add_argument( - '--num-steps', - type=int, - default=128, - help='number of forward steps in A2C / num steps to use in PPO (default: 128)') - parser.add_argument( - '--ppo-epoch', - type=int, - default=4, - help='number of ppo epochs (default: 4)') - parser.add_argument( - '--num-mini-batch', - type=int, - default=4, - help='number of batches for ppo (default: 4)') - parser.add_argument( - '--clip-param', - type=float, - default=0.1, - help='ppo clip parameter (default: 0.1)') - parser.add_argument( - '--log-interval', - type=int, - default=10, - help='log interval, one log per n updates (default: 10)') - parser.add_argument( - '--save-interval', - type=int, - default=100, - help='save interval, one save per n updates (default: 100)') - parser.add_argument( - '--num-evals', - type=int, - default=1, - help='number of times to evaluate each controller (for evaluation purposes not training). (default: 1) as most Evolution Gym environments are deterministic.') - parser.add_argument( - '--eval-interval', - type=int, - default=None, - help='eval interval, one eval per n updates (default: None)') - parser.add_argument( - '--num-env-steps', - type=int, - default=10e6, - help='number of environment steps to train (default: 10e6)') - parser.add_argument( - '--env-name', - default='roboticgamedesign-v0', - help='environment to train on (default: roboticgamedesign-v0)') - parser.add_argument( - '--log-dir', - default='/tmp/gym/', - help='directory to save agent logs (default: /tmp/gym)') - parser.add_argument( - '--save-dir', - default='./trained_models/', - help='directory to save agent logs (default: ./trained_models/)') - parser.add_argument( - '--no-cuda', - action='store_true', - default=False, - help='disables CUDA training') - parser.add_argument( - '--use-proper-time-limits', - action='store_true', - default=False, - help='compute returns taking into account time limits') - parser.add_argument( - '--recurrent-policy', - action='store_true', - default=False, - help='use a recurrent policy') - parser.add_argument( - '--use-linear-lr-decay', - action='store_true', - default=True, - help='use a linear schedule on the learning rate') - args = parser.parse_args() - - args.cuda = not args.no_cuda and torch.cuda.is_available() - - assert args.algo in ['a2c', 'ppo', 'acktr'] - if args.recurrent_policy: - assert args.algo in ['a2c', 'ppo'], \ - 'Recurrent policy is not implemented for ACKTR' - - return args diff --git a/examples/ppo/callback.py b/examples/ppo/callback.py new file mode 100644 index 00000000..a6e6b72b --- /dev/null +++ b/examples/ppo/callback.py @@ -0,0 +1,116 @@ +import os +from typing import List, Optional +import numpy as np +from ppo.eval import eval_policy +from stable_baselines3.common.callbacks import BaseCallback + +class EvalCallback(BaseCallback): + """ + A custom callback that derives from ``BaseCallback``. + + :param verbose: Verbosity level: 0 for no output, 1 for info messages, 2 for debug messages + """ + def __init__( + self, + body: np.ndarray, + env_name: str, + eval_every: int, + n_evals: int, + n_envs: int, + model_save_dir: str, + model_save_name: str, + connections: Optional[np.ndarray] = None, + verbose: int = 0 + ): + super().__init__(verbose) + # Those variables will be accessible in the callback + # (they are defined in the base class) + # The RL model + # self.model = None # type: BaseAlgorithm + # An alias for self.model.get_env(), the environment used for training + # self.training_env # type: VecEnv + # Number of time the callback was called + # self.n_calls = 0 # type: int + # num_timesteps = n_envs * n times env.step() was called + # self.num_timesteps = 0 # type: int + # local and global variables + # self.locals = {} # type: Dict[str, Any] + # self.globals = {} # type: Dict[str, Any] + # The logger object, used to report things in the terminal + # self.logger # type: stable_baselines3.common.logger.Logger + # Sometimes, for event callback, it is useful + # to have access to the parent object + # self.parent = None # type: Optional[BaseCallback] + + self.body = body + self.connections = connections + self.env_name = env_name + self.eval_every = eval_every + self.n_evals = n_evals + self.n_envs = n_envs + self.model_save_dir = model_save_dir + self.model_save_name = model_save_name + + if not os.path.exists(model_save_dir): + os.makedirs(model_save_dir) + + self.best_reward = -float('inf') + + def _on_training_start(self) -> None: + """ + This method is called before the first rollout starts. + """ + pass + + def _on_rollout_start(self) -> None: + """ + A rollout is the collection of environment interaction + using the current policy. + This event is triggered before collecting new samples. + """ + pass + + def _on_step(self) -> bool: + """ + This method will be called by the model after each call to `env.step()`. + + For child callback (of an `EventCallback`), this will be called + when the event is triggered. + + :return: If the callback returns False, training is aborted early. + """ + + if self.num_timesteps % self.eval_every == 0: + self._validate_and_save() + return True + + def _on_rollout_end(self) -> None: + """ + This event is triggered before updating the policy. + """ + pass + + def _on_training_end(self) -> None: + """ + This event is triggered before exiting the `learn()` method. + """ + self._validate_and_save() + + def _validate_and_save(self) -> None: + rewards = eval_policy( + model=self.model, + body=self.body, + connections=self.connections, + env_name=self.env_name, + n_evals=self.n_evals, + n_envs=self.n_envs, + ) + out = f"[{self.model_save_name}] Mean: {np.mean(rewards):.3}, Std: {np.std(rewards):.3}, Min: {np.min(rewards):.3}, Max: {np.max(rewards):.3}" + mean_reward = np.mean(rewards).item() + if mean_reward > self.best_reward: + out += f" NEW BEST ({mean_reward:.3} > {self.best_reward:.3})" + self.best_reward = mean_reward + self.model.save(os.path.join(self.model_save_dir, self.model_save_name)) + if self.verbose > 0: + print(out) + \ No newline at end of file diff --git a/examples/ppo/envs.py b/examples/ppo/envs.py deleted file mode 100644 index ab23424d..00000000 --- a/examples/ppo/envs.py +++ /dev/null @@ -1,258 +0,0 @@ -import os -import gym -import numpy as np -import torch -from gym.spaces.box import Box - -from stable_baselines3.common.monitor import Monitor -from stable_baselines3.common.atari_wrappers import ( - NoopResetEnv, MaxAndSkipEnv, EpisodicLifeEnv, FireResetEnv, WarpFrame, ClipRewardEnv) -from stable_baselines3.common.vec_env import VecEnvWrapper, DummyVecEnv, SubprocVecEnv -from stable_baselines3.common.vec_env.vec_normalize import \ - VecNormalize as VecNormalize_ - -try: - import dm_control2gym -except ImportError: - pass - -try: - import roboschool -except ImportError: - pass - -try: - import pybullet_envs -except ImportError: - pass - -# Derived from -# https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail - -def make_env(env_id, robot_structure, seed, rank, log_dir, allow_early_resets): - def _thunk(): - if env_id.startswith("dm"): - _, domain, task = env_id.split('.') - env = dm_control2gym.make(domain_name=domain, task_name=task) - else: - env = gym.make(env_id, body = robot_structure[0], connections = robot_structure[1]) - - is_atari = hasattr(gym.envs, 'atari') and isinstance( - env.unwrapped, gym.envs.atari.atari_env.AtariEnv) - if is_atari: - env = NoopResetEnv(env, noop_max=30) - env = MaxAndSkipEnv(env, skip=4) - - env.seed(seed + rank) - - if str(env.__class__.__name__).find('TimeLimit') >= 0: - env = TimeLimitMask(env) - - if log_dir is not None: - env = Monitor( - env, - os.path.join(log_dir, str(rank)), - allow_early_resets=allow_early_resets) - - if is_atari: - if len(env.observation_space.shape) == 3: - env = EpisodicLifeEnv(env) - if "FIRE" in env.unwrapped.get_action_meanings(): - env = FireResetEnv(env) - env = WarpFrame(env, width=84, height=84) - env = ClipRewardEnv(env) - elif len(env.observation_space.shape) == 3: - #ASK ABOUT THIS - pass - # raise NotImplementedError( - # "CNN models work only for atari,\n" - # "please use a custom wrapper for a custom pixel input env.\n" - # "See wrap_deepmind for an example.") - - # If the input has shape (W,H,3), wrap for PyTorch convolutions - obs_shape = env.observation_space.shape - if len(obs_shape) == 3 and obs_shape[2] in [1, 3]: - env = TransposeImage(env, op=[2, 0, 1]) - - return env - - return _thunk - - -def make_vec_envs(env_name, - robot_structure, - seed, - num_processes, - gamma, - log_dir, - device, - allow_early_resets, - num_frame_stack=None): - envs = [ - make_env(env_name, robot_structure, seed, i, log_dir, allow_early_resets) - for i in range(num_processes) - ] - - if len(envs) > 1: - envs = SubprocVecEnv(envs) - else: - envs = DummyVecEnv(envs) - - if len(envs.observation_space.shape) == 1: - if gamma is None: - envs = VecNormalize(envs, norm_reward=False) - else: - envs = VecNormalize(envs, gamma=gamma) - - envs = VecPyTorch(envs, device) - - if num_frame_stack is not None: - envs = VecPyTorchFrameStack(envs, num_frame_stack, device) - elif len(envs.observation_space.shape) == 3: - envs = VecPyTorchFrameStack(envs, 4, device) - - return envs - - -# Checks whether done was caused my timit limits or not -class TimeLimitMask(gym.Wrapper): - def step(self, action): - obs, rew, done, info = self.env.step(action) - if done and self.env._max_episode_steps == self.env._elapsed_steps: - info['bad_transition'] = True - - return obs, rew, done, info - - def reset(self, **kwargs): - return self.env.reset(**kwargs) - - -# Can be used to test recurrent policies for Reacher-v2 -class MaskGoal(gym.ObservationWrapper): - def observation(self, observation): - if self.env._elapsed_steps > 0: - observation[-2:] = 0 - return observation - - -class TransposeObs(gym.ObservationWrapper): - def __init__(self, env=None): - """ - Transpose observation space (base class) - """ - super(TransposeObs, self).__init__(env) - - -class TransposeImage(TransposeObs): - def __init__(self, env=None, op=[2, 0, 1]): - """ - Transpose observation space for images - """ - super(TransposeImage, self).__init__(env) - assert len(op) == 3, "Error: Operation, " + str(op) + ", must be dim3" - self.op = op - obs_shape = self.observation_space.shape - self.observation_space = Box( - self.observation_space.low[0, 0, 0], - self.observation_space.high[0, 0, 0], [ - obs_shape[self.op[0]], obs_shape[self.op[1]], - obs_shape[self.op[2]] - ], - dtype=self.observation_space.dtype) - - def observation(self, ob): - return ob.transpose(self.op[0], self.op[1], self.op[2]) - - -class VecPyTorch(VecEnvWrapper): - def __init__(self, venv, device): - """Return only every `skip`-th frame""" - super(VecPyTorch, self).__init__(venv) - self.device = device - # TODO: Fix data types - - def reset(self): - obs = self.venv.reset() - obs = torch.from_numpy(obs).float().to(self.device) - return obs - - def step_async(self, actions): - if isinstance(actions, torch.LongTensor): - # Squeeze the dimension for discrete actions - actions = actions.squeeze(1) - actions = actions.cpu().numpy() - self.venv.step_async(actions) - - def step_wait(self): - obs, reward, done, info = self.venv.step_wait() - obs = torch.from_numpy(obs).float().to(self.device) - reward = torch.from_numpy(reward).unsqueeze(dim=1).float() - return obs, reward, done, info - - -class VecNormalize(VecNormalize_): - def __init__(self, *args, **kwargs): - super(VecNormalize, self).__init__(*args, **kwargs) - self.training = True - - def _obfilt(self, obs, update=True): - if self.obs_rms: - if self.training and update: - self.obs_rms.update(obs) - obs = np.clip((obs - self.obs_rms.mean) / - np.sqrt(self.obs_rms.var + self.epsilon), - -self.clipob, self.clipob) - return obs - else: - return obs - - def train(self): - self.training = True - - def eval(self): - self.training = False - - -# Derived from -# https://github.com/openai/baselines/blob/master/baselines/common/vec_env/vec_frame_stack.py -class VecPyTorchFrameStack(VecEnvWrapper): - def __init__(self, venv, nstack, device=None): - self.venv = venv - self.nstack = nstack - - wos = venv.observation_space # wrapped ob space - self.shape_dim0 = wos.shape[0] - - low = np.repeat(wos.low, self.nstack, axis=0) - high = np.repeat(wos.high, self.nstack, axis=0) - - if device is None: - device = torch.device('cpu') - self.stacked_obs = torch.zeros((venv.num_envs, ) + - low.shape).to(device) - - observation_space = gym.spaces.Box( - low=low, high=high, dtype=venv.observation_space.dtype) - VecEnvWrapper.__init__(self, venv, observation_space=observation_space) - - def step_wait(self): - obs, rews, news, infos = self.venv.step_wait() - self.stacked_obs[:, :-self.shape_dim0] = \ - self.stacked_obs[:, self.shape_dim0:].clone() - for (i, new) in enumerate(news): - if new: - self.stacked_obs[i] = 0 - self.stacked_obs[:, -self.shape_dim0:] = obs - return self.stacked_obs, rews, news, infos - - def reset(self): - obs = self.venv.reset() - if torch.backends.cudnn.deterministic: - self.stacked_obs = torch.zeros(self.stacked_obs.shape) - else: - self.stacked_obs.zero_() - self.stacked_obs[:, -self.shape_dim0:] = obs - return self.stacked_obs - - def close(self): - self.venv.close() diff --git a/examples/ppo/eval.py b/examples/ppo/eval.py new file mode 100644 index 00000000..3d1f6e2b --- /dev/null +++ b/examples/ppo/eval.py @@ -0,0 +1,66 @@ +from typing import List, Optional +import numpy as np +from stable_baselines3 import PPO +from stable_baselines3.common.env_util import make_vec_env + +def eval_policy( + model: PPO, + body: np.ndarray, + env_name: str, + n_evals: int = 1, + n_envs: int = 1, + connections: Optional[np.ndarray] = None, + render_mode: Optional[str] = None, + deterministic_policy: bool = False, + seed: int = 42, + verbose: bool = False, +) -> List[float]: + """ + Evaluate the controller for the robot in the environment. + Returns the result of `n_evals` evaluations. + """ + + def run_evals(n: int) -> List[float]: + """ + Run `n` evaluations in parallel. + """ + + # Parallel environments + vec_env = make_vec_env(env_name, n_envs=n, seed=seed, env_kwargs={ + 'body': body, + 'connections': connections, + "render_mode": render_mode, + }) + + # Evaluate + rewards = [] + obs = vec_env.reset() + cum_done = np.array([False]*n) + while not np.all(cum_done): + action, _states = model.predict(obs, deterministic=deterministic_policy) + obs, reward, done, info = vec_env.step(action) + + # Track when environments terminate + if verbose: + for i, (d, cd) in enumerate(zip(done, cum_done)): + if d and not cd: + print(f"Environment {i} terminated after {len(rewards)} steps") + + # Keep track of done environments + cum_done = np.logical_or(cum_done, done) + + # Update rewards -- done environments will not be updated + reward[cum_done] = 0 + rewards.append(reward) + vec_env.close() + + # Sum rewards over time + rewards = np.asarray(rewards) + return np.sum(rewards, axis=0) + + # Run evaluations n_envs at a time + rewards = [] + for i in range(np.ceil(n_evals/n_envs).astype(int)): + rewards.extend(run_evals(min(n_envs, n_evals - i*n_envs))) + + return rewards diff --git a/examples/ppo/evaluate.py b/examples/ppo/evaluate.py deleted file mode 100644 index 7a138da6..00000000 --- a/examples/ppo/evaluate.py +++ /dev/null @@ -1,59 +0,0 @@ -import numpy as np -import torch -from ppo import utils -from ppo.envs import make_vec_envs - -# Derived from -# https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail - -def evaluate( - num_evals, - actor_critic, - obs_rms, - env_name, - robot_structure, - seed, - num_processes, - eval_log_dir, - device): - - num_processes = min(num_processes, num_evals) - - eval_envs = make_vec_envs(env_name, robot_structure, seed + num_processes, num_processes, - None, eval_log_dir, device, True) - - vec_norm = utils.get_vec_normalize(eval_envs) - if vec_norm is not None: - vec_norm.eval() - vec_norm.obs_rms = obs_rms - - eval_episode_rewards = [] - - obs = eval_envs.reset() - eval_recurrent_hidden_states = torch.zeros( - num_processes, actor_critic.recurrent_hidden_state_size, device=device) - eval_masks = torch.zeros(num_processes, 1, device=device) - - while len(eval_episode_rewards) < num_evals: - with torch.no_grad(): - _, action, _, eval_recurrent_hidden_states = actor_critic.act( - obs, - eval_recurrent_hidden_states, - eval_masks, - deterministic=True) - - # Obser reward and next obs - obs, _, done, infos = eval_envs.step(action) - - eval_masks = torch.tensor( - [[0.0] if done_ else [1.0] for done_ in done], - dtype=torch.float32, - device=device) - - for info in infos: - if 'episode' in info.keys(): - eval_episode_rewards.append(info['episode']['r']) - - eval_envs.close() - - return np.mean(eval_episode_rewards) diff --git a/examples/ppo/group_ppo.py b/examples/ppo/group_ppo.py index 4f815172..899c13bc 100644 --- a/examples/ppo/group_ppo.py +++ b/examples/ppo/group_ppo.py @@ -1,33 +1,24 @@ +import os import numpy as np import json import shutil -import random +import argparse -import sys -import os -curr_dir = os.path.dirname(os.path.abspath(__file__)) -root_dir = os.path.join(curr_dir, '..') -external_dir = os.path.join(root_dir, 'externals') -sys.path.insert(0, root_dir) -sys.path.insert(1, os.path.join(external_dir, 'PyTorch-NEAT')) -sys.path.insert(1, os.path.join(external_dir, 'pytorch_a2c_ppo_acktr_gail')) - -from ppo import run_ppo +from ppo.run import run_ppo +from ppo.args import add_ppo_args import utils.mp_group as mp -from utils.algo_utils import * - +import evogym.envs from evogym import WorldObject class SimJob(): - def __init__(self, name, robots, envs, train_iters): + def __init__(self, name, robots, envs): self.name = name self.robots = robots self.envs = envs - self.train_iters = train_iters def get_data(self,): - return {'robots': self.robots, 'envs': self.envs, 'train_iters': self.train_iters} + return {'robots': self.robots, 'envs': self.envs} class RunData(): @@ -41,14 +32,13 @@ def set_reward(self, reward): self.reward = reward def read_robot_from_file(file_name): - global root_dir possible_paths = [ os.path.join(file_name), os.path.join(f'{file_name}.npz'), os.path.join(f'{file_name}.json'), - os.path.join(root_dir, 'world_data', file_name), - os.path.join(root_dir, 'world_data', f'{file_name}.npz'), - os.path.join(root_dir, 'world_data', f'{file_name}.json'), + os.path.join('world_data', file_name), + os.path.join('world_data', f'{file_name}.npz'), + os.path.join('world_data', f'{file_name}.json'), ] best_path = None @@ -78,14 +68,18 @@ def clean_name(name): return name def run_group_ppo(experiment_name, sim_jobs): + ### ARGS ### + parser = argparse.ArgumentParser(description='Arguments for group PPO script') + add_ppo_args(parser) + args = parser.parse_args() - ### STARTUP: MANAGE DIRECTORIES ### - exp_path = os.path.join(root_dir, "saved_data", experiment_name) + ### MANAGE DIRECTORIES ### + exp_path = os.path.join("saved_data", experiment_name) try: os.makedirs(exp_path) except: print(f'THIS EXPERIMENT ({experiment_name}) ALREADY EXISTS') - print("Override? (y/n): ", end="") + print("Delete and override? (y/n): ", end="") ans = input() if ans.lower() == "y": shutil.rmtree(exp_path) @@ -114,8 +108,6 @@ def run_group_ppo(experiment_name, sim_jobs): except: pass - tc = TerminationCondition(job.train_iters) - count = 0 for env_name in job.envs: out[job.name][env_name] = {} @@ -127,9 +119,10 @@ def run_group_ppo(experiment_name, sim_jobs): temp_path = os.path.join(save_path_structure, f'{clean_name(robot_name)}_{env_name}.npz') np.savez(temp_path, structure[0], structure[1]) - - ppo_args = ((structure[0], structure[1]), tc, (save_path_controller, f'{clean_name(robot_name)}_{env_name}'), env_name, True) + + ppo_args = (args, structure[0], env_name, save_path_controller, f'{clean_name(robot_name)}_{env_name}', structure[1]) group.add_job(run_ppo, ppo_args, callback=run_data[-1].set_reward) + group.run_jobs(2) ### SAVE RANKING TO FILE ## diff --git a/examples/ppo/run.py b/examples/ppo/run.py index 5c017744..f054f360 100644 --- a/examples/ppo/run.py +++ b/examples/ppo/run.py @@ -1,242 +1,64 @@ -import os, sys -sys.path.insert(1, os.path.join(sys.path[0], 'externals', 'pytorch_a2c_ppo_acktr_gail')) - +import argparse +from typing import Optional import numpy as np -import time -from collections import deque -import torch - -from ppo import utils -from ppo.arguments import get_args -from ppo.evaluate import evaluate -from ppo.envs import make_vec_envs - -from a2c_ppo_acktr import algo -from a2c_ppo_acktr.algo import gail -from a2c_ppo_acktr.model import Policy -from a2c_ppo_acktr.storage import RolloutStorage +from stable_baselines3 import PPO +from stable_baselines3.common.env_util import make_vec_env -import evogym.envs - -# Derived from -# https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail +from ppo.eval import eval_policy +from ppo.callback import EvalCallback def run_ppo( - structure, - termination_condition, - saving_convention, - override_env_name = None, - verbose = True): - - assert (structure == None) == (termination_condition == None) and (structure == None) == (saving_convention == None) - - print(f'Starting training on \n{structure}\nat {saving_convention}...\n') - - args = get_args() - if override_env_name: - args.env_name = override_env_name - - torch.manual_seed(args.seed) - torch.cuda.manual_seed_all(args.seed) - - if args.cuda and torch.cuda.is_available() and args.cuda_deterministic: - torch.backends.cudnn.benchmark = False - torch.backends.cudnn.deterministic = True - - log_dir = args.log_dir - if saving_convention != None: - log_dir = os.path.join(saving_convention[0], log_dir, "robot_" + str(saving_convention[1])) - eval_log_dir = log_dir + "_eval" - utils.cleanup_log_dir(log_dir) - utils.cleanup_log_dir(eval_log_dir) - - torch.set_num_threads(1) - device = torch.device("cuda:0" if args.cuda else "cpu") - - envs = make_vec_envs(args.env_name, structure, args.seed, args.num_processes, - args.gamma, args.log_dir, device, False) - - actor_critic = Policy( - envs.observation_space.shape, - envs.action_space, - base_kwargs={'recurrent': args.recurrent_policy}) - actor_critic.to(device) - - if args.algo == 'a2c': - print('Warning: this code has only been tested with ppo.') - agent = algo.A2C_ACKTR( - actor_critic, - args.value_loss_coef, - args.entropy_coef, - lr=args.lr, - eps=args.eps, - alpha=args.alpha, - max_grad_norm=args.max_grad_norm) - elif args.algo == 'ppo': - agent = algo.PPO( - actor_critic, - args.clip_param, - args.ppo_epoch, - args.num_mini_batch, - args.value_loss_coef, - args.entropy_coef, - lr=args.lr, - eps=args.eps, - max_grad_norm=args.max_grad_norm) - elif args.algo == 'acktr': - print('Warning: this code has only been tested with ppo.') - agent = algo.A2C_ACKTR( - actor_critic, args.value_loss_coef, args.entropy_coef, acktr=True) - - if args.gail: - assert len(envs.observation_space.shape) == 1 - discr = gail.Discriminator( - envs.observation_space.shape[0] + envs.action_space.shape[0], 100, - device) - file_name = os.path.join( - args.gail_experts_dir, "trajs_{}.pt".format( - args.env_name.split('-')[0].lower())) - - expert_dataset = gail.ExpertDataset( - file_name, num_trajectories=4, subsample_frequency=20) - drop_last = len(expert_dataset) > args.gail_batch_size - gail_train_loader = torch.utils.data.DataLoader( - dataset=expert_dataset, - batch_size=args.gail_batch_size, - shuffle=True, - drop_last=drop_last) - - rollouts = RolloutStorage(args.num_steps, args.num_processes, - envs.observation_space.shape, envs.action_space, - actor_critic.recurrent_hidden_state_size) - - obs = envs.reset() - rollouts.obs[0].copy_(obs) - rollouts.to(device) - - episode_rewards = deque(maxlen=10) - - start = time.time() - num_updates = int( - args.num_env_steps) // args.num_steps // args.num_processes - - rewards_tracker = [] - avg_rewards_tracker = [] - sliding_window_size = 10 - max_determ_avg_reward = float('-inf') - - for j in range(num_updates): - - if args.use_linear_lr_decay: - # decrease learning rate linearly - utils.update_linear_schedule( - agent.optimizer, j, num_updates, - agent.optimizer.lr if args.algo == "acktr" else args.lr) - - for step in range(args.num_steps): - # Sample actions - with torch.no_grad(): - value, action, action_log_prob, recurrent_hidden_states = actor_critic.act( - rollouts.obs[step], rollouts.recurrent_hidden_states[step], - rollouts.masks[step]) - - # Obser reward and next obs - obs, reward, done, infos = envs.step(action) - - # track rewards - for info in infos: - if 'episode' in info.keys(): - episode_rewards.append(info['episode']['r']) - rewards_tracker.append(info['episode']['r']) - if len(rewards_tracker) < 10: - avg_rewards_tracker.append(np.average(np.array(rewards_tracker))) - else: - avg_rewards_tracker.append(np.average(np.array(rewards_tracker[-10:]))) - - # If done then clean the history of observations. - masks = torch.FloatTensor( - [[0.0] if done_ else [1.0] for done_ in done]) - bad_masks = torch.FloatTensor( - [[0.0] if 'bad_transition' in info.keys() else [1.0] - for info in infos]) - rollouts.insert(obs, recurrent_hidden_states, action, - action_log_prob, value, reward, masks, bad_masks) - - with torch.no_grad(): - next_value = actor_critic.get_value( - rollouts.obs[-1], rollouts.recurrent_hidden_states[-1], - rollouts.masks[-1]).detach() - - if args.gail: - if j >= 10: - envs.venv.eval() - - gail_epoch = args.gail_epoch - if j < 10: - gail_epoch = 100 # Warm up - for _ in range(gail_epoch): - discr.update(gail_train_loader, rollouts, - utils.get_vec_normalize(envs)._obfilt) - - for step in range(args.num_steps): - rollouts.rewards[step] = discr.predict_reward( - rollouts.obs[step], rollouts.actions[step], args.gamma, - rollouts.masks[step]) - - rollouts.compute_returns(next_value, args.use_gae, args.gamma, - args.gae_lambda, args.use_proper_time_limits) - - value_loss, action_loss, dist_entropy = agent.update(rollouts) - - rollouts.after_update() - - # print status - if j % args.log_interval == 0 and len(episode_rewards) > 1 and verbose: - total_num_steps = (j + 1) * args.num_processes * args.num_steps - end = time.time() - print( - "Updates {}, num timesteps {}, FPS {} \n Last {} training episodes: mean/median reward {:.1f}/{:.1f}, min/max reward {:.1f}/{:.1f}\n" - .format(j, total_num_steps, - int(total_num_steps / (end - start)), - len(episode_rewards), np.mean(episode_rewards), - np.median(episode_rewards), np.min(episode_rewards), - np.max(episode_rewards), dist_entropy, value_loss, - action_loss)) - - # evaluate the controller and save it if it does the best so far - if (args.eval_interval is not None and len(episode_rewards) > 1 - and j % args.eval_interval == 0): - - obs_rms = utils.get_vec_normalize(envs).obs_rms - determ_avg_reward = evaluate(args.num_evals, actor_critic, obs_rms, args.env_name, structure, args.seed, - args.num_processes, eval_log_dir, device) - - if verbose: - if saving_convention != None: - print(f'Evaluated {saving_convention[1]} using {args.num_evals} episodes. Mean reward: {np.mean(determ_avg_reward)}\n') - else: - print(f'Evaluated using {args.num_evals} episodes. Mean reward: {np.mean(determ_avg_reward)}\n') - - if determ_avg_reward > max_determ_avg_reward: - max_determ_avg_reward = determ_avg_reward - - temp_path = os.path.join(args.save_dir, args.algo, args.env_name + ".pt") - if saving_convention != None: - temp_path = os.path.join(saving_convention[0], "robot_" + str(saving_convention[1]) + "_controller" + ".pt") - - if verbose: - print(f'Saving {temp_path} with avg reward {max_determ_avg_reward}\n') - torch.save([ - actor_critic, - getattr(utils.get_vec_normalize(envs), 'obs_rms', None) - ], temp_path) - - # return upon reaching the termination condition - if not termination_condition == None: - if termination_condition(j): - if verbose: - print(f'{saving_convention} has met termination condition ({j})...terminating...\n') - return max_determ_avg_reward - -#python ppo_main_test.py --env-name "roboticgamedesign-v0" --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 1 --num-steps 128 --num-mini-batch 4 --log-interval 1 --use-linear-lr-decay --entropy-coef 0.01 -#python ppo.py --env-name "roboticgamedesign-v0" --algo ppo --use-gae --lr 2.5e-4 --clip-param 0.1 --value-loss-coef 0.5 --num-processes 8 --num-steps 128 --num-mini-batch 4 --log-interval 1 --use-linear-lr-decay --entropy-coef 0.01 --log-dir "logs/" + args: argparse.Namespace, + body: np.ndarray, + env_name: str, + model_save_dir: str, + model_save_name: str, + connections: Optional[np.ndarray] = None, + seed: int = 42, +) -> float: + """ + Run ppo and return the best reward achieved during evaluation. + """ + + # Parallel environments + vec_env = make_vec_env(env_name, n_envs=1, seed=seed, env_kwargs={ + 'body': body, + 'connections': connections, + }) + + # Eval Callback + callback = EvalCallback( + body=body, + connections=connections, + env_name=env_name, + eval_every=args.eval_interval, + n_evals=args.n_evals, + n_envs=args.n_eval_envs, + model_save_dir=model_save_dir, + model_save_name=model_save_name, + verbose=args.verbose_ppo, + ) + + # Train + model = PPO( + "MlpPolicy", + vec_env, + verbose=args.verbose_ppo, + learning_rate=args.learning_rate, + n_steps=args.n_steps, + batch_size=args.batch_size, + n_epochs=args.n_epochs, + gamma=args.gamma, + gae_lambda=args.gae_lambda, + vf_coef=args.vf_coef, + max_grad_norm=args.max_grad_norm, + ent_coef=args.ent_coef, + clip_range=args.clip_range + ) + model.learn( + total_timesteps=args.total_timesteps, + callback=callback, + log_interval=args.log_interval + ) + + return callback.best_reward \ No newline at end of file diff --git a/examples/ppo/utils.py b/examples/ppo/utils.py deleted file mode 100644 index a023c7bd..00000000 --- a/examples/ppo/utils.py +++ /dev/null @@ -1,69 +0,0 @@ -import glob -import os - -import torch -import torch.nn as nn - -from ppo.envs import VecNormalize - -# Derived from -# https://github.com/ikostrikov/pytorch-a2c-ppo-acktr-gail - -# Get a render function -def get_render_func(venv): - if hasattr(venv, 'envs'): - return venv.envs[0].render - elif hasattr(venv, 'venv'): - return get_render_func(venv.venv) - elif hasattr(venv, 'env'): - return get_render_func(venv.env) - - return None - - -def get_vec_normalize(venv): - if isinstance(venv, VecNormalize): - return venv - elif hasattr(venv, 'venv'): - return get_vec_normalize(venv.venv) - - return None - - -# Necessary for my KFAC implementation. -class AddBias(nn.Module): - def __init__(self, bias): - super(AddBias, self).__init__() - self._bias = nn.Parameter(bias.unsqueeze(1)) - - def forward(self, x): - if x.dim() == 2: - bias = self._bias.t().view(1, -1) - else: - bias = self._bias.t().view(1, -1, 1, 1) - - return x + bias - - -def update_linear_schedule(optimizer, epoch, total_num_epochs, initial_lr): - """Decreases the learning rate linearly""" - lr = initial_lr - (initial_lr * (epoch / float(total_num_epochs))) - for param_group in optimizer.param_groups: - param_group['lr'] = lr - - -def init(module, weight_init, bias_init, gain=1): - weight_init(module.weight.data, gain=gain) - bias_init(module.bias.data) - return module - - -def cleanup_log_dir(log_dir): - - try: - os.makedirs(log_dir) - except: - pass - # files = glob.glob(os.path.join(log_dir, '*.monitor.csv')) - # for f in files: - # os.remove(f) diff --git a/examples/run_bo.py b/examples/run_bo.py index 030c464e..65be6b79 100644 --- a/examples/run_bo.py +++ b/examples/run_bo.py @@ -1,21 +1,26 @@ import random import numpy as np +import argparse from bo.run import run_bo +from ppo.args import add_ppo_args if __name__ == '__main__': seed = 0 random.seed(seed) np.random.seed(seed) + + parser = argparse.ArgumentParser(description='Arguments for ga script') + parser.add_argument('--exp-name', type=str, default='test_bo', help='Name of the experiment (default: test_bo)') + parser.add_argument('--env-name', type=str, default='Walker-v0', help='Name of the environment (default: Walker-v0)') + parser.add_argument('--pop-size', type=int, default=3, help='Population size (default: 3)') + parser.add_argument('--structure-shape', type=tuple, default=(5,5), help='Shape of the structure (default: (5,5))') + parser.add_argument('--max-evaluations', type=int, default=6, help='Maximum number of robots that will be evaluated (default: 6)') + parser.add_argument('--num-cores', type=int, default=3, help='Number of robots to evaluate simultaneously (default: 3)') + add_ppo_args(parser) + args = parser.parse_args() - best_robot, best_fitness = run_bo( - experiment_name='test_bo', - structure_shape=(5, 5), - pop_size=3, - max_evaluations=6, - train_iters=50, - num_cores=3, - ) + best_robot, best_fitness = run_bo(args) print('Best robot:') print(best_robot) diff --git a/examples/run_cppn_neat.py b/examples/run_cppn_neat.py index 18437c85..d917c789 100644 --- a/examples/run_cppn_neat.py +++ b/examples/run_cppn_neat.py @@ -1,21 +1,26 @@ import random import numpy as np +import argparse from cppn_neat.run import run_cppn_neat +from ppo.args import add_ppo_args if __name__ == '__main__': seed = 0 random.seed(seed) np.random.seed(seed) + + parser = argparse.ArgumentParser(description='Arguments for ga script') + parser.add_argument('--exp-name', type=str, default='test_cppn', help='Name of the experiment (default: test_cppn)') + parser.add_argument('--env-name', type=str, default='Walker-v0', help='Name of the environment (default: Walker-v0)') + parser.add_argument('--pop-size', type=int, default=3, help='Population size (default: 3)') + parser.add_argument('--structure-shape', type=tuple, default=(5,5), help='Shape of the structure (default: (5,5))') + parser.add_argument('--max-evaluations', type=int, default=6, help='Maximum number of robots that will be evaluated (default: 6)') + parser.add_argument('--num-cores', type=int, default=3, help='Number of robots to evaluate simultaneously (default: 3)') + add_ppo_args(parser) + args = parser.parse_args() - best_robot, best_fitness = run_cppn_neat( - experiment_name='test_cppn', - structure_shape=(5, 5), - pop_size=3, - max_evaluations=6, - train_iters=50, - num_cores=3, - ) + best_robot, best_fitness = run_cppn_neat(args) print('Best robot:') print(best_robot) diff --git a/examples/run_ga.py b/examples/run_ga.py index 10e36450..b7116457 100644 --- a/examples/run_ga.py +++ b/examples/run_ga.py @@ -1,18 +1,23 @@ import random import numpy as np +import argparse from ga.run import run_ga +from ppo.args import add_ppo_args if __name__ == "__main__": seed = 0 random.seed(seed) np.random.seed(seed) - run_ga( - pop_size = 3, - structure_shape = (5,5), - experiment_name = "test_ga", - max_evaluations = 6, - train_iters = 50, - num_cores = 3, - ) \ No newline at end of file + parser = argparse.ArgumentParser(description='Arguments for ga script') + parser.add_argument('--exp-name', type=str, default='test_ga', help='Name of the experiment (default: test_ga)') + parser.add_argument('--env-name', type=str, default='Walker-v0', help='Name of the environment (default: Walker-v0)') + parser.add_argument('--pop-size', type=int, default=3, help='Population size (default: 3)') + parser.add_argument('--structure_shape', type=tuple, default=(5,5), help='Shape of the structure (default: (5,5))') + parser.add_argument('--max-evaluations', type=int, default=6, help='Maximum number of robots that will be evaluated (default: 6)') + parser.add_argument('--num-cores', type=int, default=3, help='Number of robots to evaluate simultaneously (default: 3)') + add_ppo_args(parser) + args = parser.parse_args() + + run_ga(args) \ No newline at end of file diff --git a/examples/run_group_ppo.py b/examples/run_group_ppo.py index 87c66e98..d00f8348 100644 --- a/examples/run_group_ppo.py +++ b/examples/run_group_ppo.py @@ -9,13 +9,11 @@ name = 'big', robots = ['speed_bot', 'carry_bot'], envs = ['Walker-v0', 'Carrier-v0'], - train_iters = 50 ), SimJob( name = 'small', robots = ['speed_bot'], envs = ['Walker-v0'], - train_iters = 50 ) ] ) \ No newline at end of file diff --git a/examples/run_ppo.py b/examples/run_ppo.py new file mode 100644 index 00000000..1edb037e --- /dev/null +++ b/examples/run_ppo.py @@ -0,0 +1,79 @@ +import os +import shutil +import json +import argparse +import numpy as np +from stable_baselines3 import PPO +import evogym.envs +from evogym import WorldObject + +from ppo.args import add_ppo_args +from ppo.run import run_ppo +from ppo.eval import eval_policy + +if __name__ == "__main__": + + # Args + parser = argparse.ArgumentParser(description='Arguments for PPO script') + parser.add_argument( + "--env-name", default="Walker-v0", type=str, help="Environment name (default: Walker-v0)" + ) + parser.add_argument( + "--save-dir", default="saved_data", type=str, help="Parent directory in which to save data(default: saved_data)" + ) + parser.add_argument( + "--exp-name", default="test_ppo", type=str, help="Name of experiment. Data saved to (default: test_ppo)" + ) + parser.add_argument( + "--robot-path", default=os.path.join("world_data", "speed_bot.json"), type=str, help="Path to the robot json file (default: world_data/speed_bot.json)" + ) + add_ppo_args(parser) + args = parser.parse_args() + + # Manage dirs + exp_dir = os.path.join(args.save_dir, args.exp_name) + if os.path.exists(exp_dir): + print(f'THIS EXPERIMENT ({args.exp_name}) ALREADY EXISTS') + print("Delete and override? (y/n): ", end="") + ans = input() + if ans.lower() != "y": + exit() + shutil.rmtree(exp_dir) + model_save_dir = os.path.join(args.save_dir, args.exp_name, "controller") + structure_save_dir = os.path.join(args.save_dir, args.exp_name, "structure") + save_name = f"{args.env_name}" + + # Get Robot + robot = WorldObject.from_json(args.robot_path) + os.makedirs(structure_save_dir, exist_ok=True) + np.savez(os.path.join(structure_save_dir, save_name), robot.get_structure(), robot.get_connections()) + + # Train + best_reward = run_ppo( + args=args, + body=robot.get_structure(), + connections=robot.get_connections(), + env_name=args.env_name, + model_save_dir=model_save_dir, + model_save_name=save_name, + ) + + # Save result file + with open(os.path.join(args.save_dir, args.exp_name, "ppo_result.json"), "w") as f: + json.dump({ + "best_reward": best_reward, + "env_name": args.env_name, + }, f, indent=4) + + # Evaluate + model = PPO.load(os.path.join(model_save_dir, save_name)) + rewards = eval_policy( + model=model, + body=robot.get_structure(), + connections=robot.get_connections(), + env_name=args.env_name, + n_evals=1, + n_envs=1, + render_mode="human", + ) + print(f"Mean reward: {np.mean(rewards)}") \ No newline at end of file diff --git a/examples/visualize.py b/examples/visualize.py index 57bb51db..ef6b6c86 100644 --- a/examples/visualize.py +++ b/examples/visualize.py @@ -1,23 +1,43 @@ -import os, sys -root_dir = os.path.dirname(os.path.abspath(__file__)) -external_dir = os.path.join(root_dir, 'externals') -sys.path.insert(0, root_dir) -sys.path.insert(1, os.path.join(external_dir, 'PyTorch-NEAT')) -sys.path.insert(1, os.path.join(external_dir, 'pytorch_a2c_ppo_acktr_gail')) +import os import json import argparse -import sys import numpy as np -import torch -import gym +from typing import Optional from utils.algo_utils import * -from ppo.envs import make_vec_envs -from ppo.utils import get_vec_normalize - +from stable_baselines3 import PPO +from stable_baselines3.common.env_util import make_vec_env import evogym.envs +def rollout( + env_name: str, + n_iters: int, + model: PPO, + body: np.ndarray, + connections: Optional[np.ndarray] = None, + seed: int = 42, +): + # Parallel environments + vec_env = make_vec_env(env_name, n_envs=1, seed=seed, env_kwargs={ + 'body': body, + 'connections': connections, + "render_mode": "human", + }) + + # Rollout + reward_sum = 0 + obs = vec_env.reset() + count = 0 + while count < n_iters: + action, _states = model.predict(obs, deterministic=True) + obs, reward, done, info = vec_env.step(action) + reward_sum += reward[0] + count += 1 + if done: + print(f'\nTotal reward: {reward_sum:.5f}\n') + vec_env.close() + def visualize_codesign(args, exp_name): global EXPERIMENT_PARENT_DIR gen_list = os.listdir(os.path.join(EXPERIMENT_PARENT_DIR, exp_name)) @@ -98,63 +118,10 @@ def visualize_codesign(args, exp_name): if num_iters == 0: continue - - env = make_vec_envs( - args.env_name, - structure, - 1000, - 1, - None, - None, - device='cpu', - allow_early_resets=False) - - # We need to use the same statistics for normalization as used in training - try: - save_path_controller = os.path.join(EXPERIMENT_PARENT_DIR, exp_name, "generation_" + str(gen_number), "controller", "robot_" + str(robot_index) + "_controller" + ".pt") - actor_critic, obs_rms = \ - torch.load(save_path_controller, - map_location='cpu') - except: - print(f'\nCould not load robot controller data at {save_path_controller}.\n') - continue - - vec_norm = get_vec_normalize(env) - if vec_norm is not None: - vec_norm.eval() - vec_norm.obs_rms = obs_rms - - recurrent_hidden_states = torch.zeros(1, - actor_critic.recurrent_hidden_state_size) - masks = torch.zeros(1, 1) - - obs = env.reset() - env.render('screen') - - total_steps = 0 - reward_sum = 0 - while total_steps < num_iters: - with torch.no_grad(): - value, action, _, recurrent_hidden_states = actor_critic.act( - obs, recurrent_hidden_states, masks, deterministic=args.det) - - - # Obser reward and next obs - obs, reward, done, _ = env.step(action) - masks.fill_(0.0 if (done) else 1.0) - reward_sum += reward - - if done == True: - env.reset() - reward_sum = float(reward_sum.numpy().flatten()[0]) - print(f'\ntotal reward: {round(reward_sum, 5)}\n') - reward_sum = 0 - - env.render('screen') - - total_steps += 1 - env.venv.close() + save_path_controller = os.path.join(EXPERIMENT_PARENT_DIR, exp_name, "generation_" + str(gen_number), "controller", f'{robot_index}.zip') + model = PPO.load(save_path_controller) + rollout(args.env_name, num_iters, model, structure[0], structure[1]) def visualize_group_ppo(args, exp_name): @@ -218,65 +185,45 @@ def visualize_group_ppo(args, exp_name): for key, value in structure_data.items(): structure.append(value) structure = tuple(structure) + + save_path_controller = os.path.join(exp_dir, job, "controller", f"{robot}_{env_name}.zip") + model = PPO.load(save_path_controller) + rollout(env_name, num_iters, model, structure[0], structure[1]) + +def visualize_ppo(args, exp_name): - env = make_vec_envs( - env_name, - structure, - 1000, - 1, - None, - None, - device='cpu', - allow_early_resets=False) - - # We need to use the same statistics for normalization as used in training - try: - save_path_controller = os.path.join(exp_dir, job, "controller", f"robot_{robot}_{env_name}_controller.pt") - actor_critic, obs_rms = \ - torch.load(save_path_controller, - map_location='cpu') - except: - print(f'\nCould not load robot controller data at {save_path_controller}.\n') - continue - - vec_norm = get_vec_normalize(env) - if vec_norm is not None: - vec_norm.eval() - vec_norm.obs_rms = obs_rms - - recurrent_hidden_states = torch.zeros(1, - actor_critic.recurrent_hidden_state_size) - masks = torch.zeros(1, 1) - - obs = env.reset() - env.render('screen') - - total_steps = 0 - reward_sum = 0 - while total_steps < num_iters: - with torch.no_grad(): - value, action, _, recurrent_hidden_states = actor_critic.act( - obs, recurrent_hidden_states, masks, deterministic=args.det) - - - # Obser reward and next obs - obs, reward, done, _ = env.step(action) - masks.fill_(0.0 if (done) else 1.0) - reward_sum += reward + exp_dir = os.path.join(EXPERIMENT_PARENT_DIR, exp_name) + out_file = os.path.join(exp_dir, 'ppo_result.json') + out = {} + with open(out_file, 'r') as f: + out = json.load(f) + + reward = out['best_reward'] + env_name = out['env_name'] + + print(f'\nEnvironment: {env_name}\nReward: {reward}') - if done == True: - env.reset() - reward_sum = float(reward_sum.numpy().flatten()[0]) - print(f'\ntotal reward: {round(reward_sum, 5)}\n') - reward_sum = 0 + while True: + print() + print("Enter num iters: ", end="") + num_iters = int(input()) + print() - env.render('screen') + if num_iters == 0: + continue - total_steps += 1 + save_path_structure = os.path.join(exp_dir, "structure", f"{env_name}.npz") + structure_data = np.load(save_path_structure) + structure = [] + for key, value in structure_data.items(): + structure.append(value) + structure = tuple(structure) - env.venv.close() + save_path_controller = os.path.join(exp_dir, "controller", f"{env_name}.zip") + model = PPO.load(save_path_controller) + rollout(env_name, num_iters, model, structure[0], structure[1]) -EXPERIMENT_PARENT_DIR = os.path.join(root_dir, 'saved_data') +EXPERIMENT_PARENT_DIR = os.path.join('saved_data') if __name__ == "__main__": parser = argparse.ArgumentParser(description='RL') @@ -301,9 +248,10 @@ def visualize_group_ppo(args, exp_name): exp_name = input() files_in_exp_dir = os.listdir(os.path.join(EXPERIMENT_PARENT_DIR, exp_name)) - # group ppo experiment - if 'output.json' in files_in_exp_dir: + + if 'output.json' in files_in_exp_dir: # group ppo experiment visualize_group_ppo(args, exp_name) - # codesign experiment - else: + elif 'ppo_result.json' in files_in_exp_dir: # ppo experiment + visualize_ppo(args, exp_name) + else: # codesign experiment visualize_codesign(args, exp_name) \ No newline at end of file diff --git a/pytest.ini b/pytest.ini index 310d7672..d9619212 100644 --- a/pytest.ini +++ b/pytest.ini @@ -1,4 +1,4 @@ [pytest] -addopts = --ignore=examples/externals --ignore=evogym/simulator/externals --ignore=evogym/examples/gym_test.py +addopts = --ignore=examples/externals --ignore=evogym/simulator/externals --ignore=examples/gym_test.py markers = lite: mark as part of the lite test suite \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index ee64a479..fff6cdaf 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,20 +1,26 @@ -glfw==2.5.0 -GPy==1.10.0 -GPyOpt @ git+https://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904 -gym==0.22.0 -h5py==3.6.0 -imageio==2.14.1 -matplotlib==3.5.1 +# glfw==2.5.0 +# GPy==1.10.0 +# gym==0.22.0 +# h5py==3.6.0 +# imageio==2.14.1 +# matplotlib==3.5.1 +# neat-python @ git+https://github.com/yunshengtian/neat-python@2762ab630838520ca6c03a866e8a158f592b0370 +# numpy==1.21.5 +# opencv-python==4.5.5.62 +# Pillow==9.0.0 +# pybind11==2.9.0 +# pygifsicle==1.0.5 +# PyOpenGL==3.1.5 +# PyOpenGL-accelerate==3.1.5 +# torch==1.10.2 +# ttkbootstrap==1.5.1 +# typing==3.7.4.3 + neat-python @ git+https://github.com/yunshengtian/neat-python@2762ab630838520ca6c03a866e8a158f592b0370 -numpy==1.21.5 -opencv-python==4.5.5.62 -Pillow==9.0.0 -pybind11==2.9.0 -pygifsicle==1.0.5 -PyOpenGL==3.1.5 -PyOpenGL-accelerate==3.1.5 -torch==1.10.2 -ttkbootstrap==1.5.1 -typing==3.7.4.3 +GPyOpt @ git+https://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904 +stable-baselines3 +imageio +pygifsicle + pytest -pytest-xdist +pytest-xdist \ No newline at end of file From 57cc877e027f9166b27a4a24fd4834d2cd552c2c Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Sat, 15 Jun 2024 15:48:09 -0400 Subject: [PATCH 11/14] Cleanup (#42) * Update requirements * Update readme --- .github/workflows/test.yml | 4 +- README.md | 83 +++++++++++++++++++++++++++---------- images/design-tool.gif | Bin 0 -> 769726 bytes requirements-dev.txt | 2 + requirements.txt | 23 +--------- 5 files changed, 66 insertions(+), 46 deletions(-) create mode 100644 images/design-tool.gif create mode 100644 requirements-dev.txt diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b395378f..deb79e21 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,12 +34,12 @@ jobs: - name: Install deb dependencies run: sudo apt-get install -y xorg-dev libglu1-mesa-dev libglew-dev xvfb - name: Install python dependencies - run: pip install -r requirements.txt + run: pip install -r requirements-dev.txt - name: Cache python wheel packages uses: actions/cache@v3 with: path: ~/.cache/pip - key: wheel-cache-${{ hashFiles('requirements.txt') }} + key: wheel-cache-${{ hashFiles('requirements-dev.txt') }} - name: Install evolution gym run: pip install -e . - name: Run test diff --git a/README.md b/README.md index 1acc5eb6..d904e745 100644 --- a/README.md +++ b/README.md @@ -9,18 +9,14 @@ > - Pip-installable, with wheels for common builds > - Tests -A large-scale benchmark for co-optimizing the design and control of soft robots. As seen in [Evolution Gym: A Large-Scale Benchmark for Evolving Soft Robots](https://evolutiongym.github.io/) (**NeurIPS 2021**). +Evolution Gym is a large-scale benchmark for co-optimizing the design and control of soft robots. It provides a lightweight soft-body simulator wrapped with a gym-like interface for developing learning algorithms. Evogym also includes a suite of 32 locomotion and manipulation tasks, detailed on our [website](https://evolutiongym.github.io/all-tasks). Task suite evaluations are described in our [NeurIPS 2021 paper](https://arxiv.org/pdf/2201.09863). [//]: # (teaser) ![teaser](images/teaser.gif) # Installation -You can install evogym from PyPi or from source. - -## From PyPi - -To use evogym in your projects, simply run: +To use evogym, simply run: ```shell pip install --upgrade evogym @@ -36,10 +32,8 @@ If your platform is not supported, you may try building from source: ### Requirements * Python 3.7+ -* Linux, macOS, or Windows with [Visual Studios 2017](https://visualstudio.microsoft.com/vs/older-downloads/) -* [OpenGL](https://www.opengl.org//) +* Linux, macOS, or Windows with [Visual Studios 2017](https://visualstudio.microsoft.com/vs/older-downloads/) build tools. * [CMake](https://cmake.org/download/) -* [PyTorch](http://pytorch.org/) Clone the repo and submodules: @@ -53,7 +47,7 @@ On **Linux only**: sudo apt-get install xorg-dev libglu1-mesa-dev ``` -To build the C++ simulation, build all the submodules, and install `evogym` run the following command in the environment of your choice: +Finally, to install `evogym`, run the following command in the environment of your choice: ```shell pip install -e . @@ -82,7 +76,7 @@ if __name__ == '__main__': env.reset() while True: - action = env.action_space.sample()-1 + action = env.action_space.sample() ob, reward, terminated, truncated, info = env.step(action) if terminated or truncated: @@ -93,24 +87,37 @@ if __name__ == '__main__': This script creates a random `5x5` robot in the `Walking-v0` environment. The robot is taking random actions. A window should open with a visualization of the environment -- kill the process from the terminal to close it. - -# Usage +## Tutorials + +You can find tutorials for getting started with the codebase on our [website](https://evolutiongym.github.io/tutorials). Completed code from all tutorials is also available in the `tutorials` folder, along with a `README`. Tutorials are included for: +- Using the [evogym API](https://evolutiongym.github.io/tutorials/basic-api.html) +- Making a [custom evogym environment](https://evolutiongym.github.io/tutorials/new-env.html) +- Supported [rendering options](https://github.com/EvolutionGym/evogym/blob/main/tutorials/rendering_options.py) ## Examples -To see example usage as well as to run co-design and control optimization experiments in EvoGym, please see the `examples` folder and its `README`. +To run co-design and control optimization experiments in EvoGym, please see the `examples` folder and its `README`. Included are scripts for: +- Running PPO +- Running a Genetic Algorithm +- Running Bayesian Optimization +- Running CPPN-NEAT +- Visualizing results +- Saving results as gifs -## Tutorials +Make sure you clone the repo with submodules: -You can find tutorials for getting started with the codebase on our [website](https://evolutiongym.github.io/tutorials). Completed code from all tutorials is also available in the `tutorials` folder. +```shell +git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git +``` + +Install the necessary python requirements: +```shell +pip install -r requirements.txt +``` ## Docs @@ -118,7 +125,39 @@ You can find documentation on our [website](https://evolutiongym.github.io/docum ## Design Tool -For instructions on how to use the Evolution Gym Design Tool, please see [this repo](https://github.com/EvolutionGym/evogym-design-tool). +The Design Tool provides a gui for creating Evolution Gym environments. Please see [this repo](https://github.com/EvolutionGym/evogym-design-tool). + +[//]: # (teaser) +![teaser](images/design-tool.gif) + +# Dev + +Install the repo with submodules: + +```shell +git clone --recurse-submodules https://github.com/EvolutionGym/evogym.git +``` + +Install the necessary python requirements. You will additionally need to install the dev requirements: +```shell +pip install -r requirements.txt +pip install -r requirements-dev.txt +``` + +## Run Tests + +Run the full test suite: + +```shell +pytest -s -v -n auto +``` + +Or the lite test suite: + + +```shell +pytest -s -v -n auto -m lite +``` # Citation diff --git a/images/design-tool.gif b/images/design-tool.gif new file mode 100644 index 0000000000000000000000000000000000000000..e086cac0c5e2233c6b663dab6836c8018baacfad GIT binary patch literal 769726 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

G5X=U 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 #4U!cS2o~wHz+egawwY1wt~>(aa(ff(n9(I7Gya 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Ξq7(iJVP;{=;iO7J2&T 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

>G-`ltIfct}#B8A;Z6FUzZl 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±jqu&7MyU`bDLlH~Eg1y@ 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�KOwkyI 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⋙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

= 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 literal 0 HcmV?d00001 diff --git a/requirements-dev.txt b/requirements-dev.txt new file mode 100644 index 00000000..8883f14a --- /dev/null +++ b/requirements-dev.txt @@ -0,0 +1,2 @@ +pytest +pytest-xdist \ No newline at end of file diff --git a/requirements.txt b/requirements.txt index fff6cdaf..0d11f04c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,26 +1,5 @@ -# glfw==2.5.0 -# GPy==1.10.0 -# gym==0.22.0 -# h5py==3.6.0 -# imageio==2.14.1 -# matplotlib==3.5.1 -# neat-python @ git+https://github.com/yunshengtian/neat-python@2762ab630838520ca6c03a866e8a158f592b0370 -# numpy==1.21.5 -# opencv-python==4.5.5.62 -# Pillow==9.0.0 -# pybind11==2.9.0 -# pygifsicle==1.0.5 -# PyOpenGL==3.1.5 -# PyOpenGL-accelerate==3.1.5 -# torch==1.10.2 -# ttkbootstrap==1.5.1 -# typing==3.7.4.3 - neat-python @ git+https://github.com/yunshengtian/neat-python@2762ab630838520ca6c03a866e8a158f592b0370 GPyOpt @ git+https://github.com/yunshengtian/GPyOpt@5fc1188ffdefea9a3bc7964a9414d4922603e904 stable-baselines3 imageio -pygifsicle - -pytest -pytest-xdist \ No newline at end of file +pygifsicle \ No newline at end of file From 487a4ab4433005c4ff739bffaed10e2a0285b0e2 Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Thu, 20 Jun 2024 13:40:50 -0400 Subject: [PATCH 12/14] Auto build script (#43) * Auto build script * Update workflows * Update scripts * Update scripts * Update scripts * Update script * update scripts * Update scripts * Update scripts * Update scripts * Update scripts * Update scripts * Update scripts * Update scripts * Update scripts * Install correct linux packages * Add -y * Change linux image * Change linux image * Change linux image for pypy as well * Cleanup * Skip musllinux, test python versions * Add back test suite * Update test runner * Rename, no fail fast * Cant build on new numpy version, ignore for now * Cleanup --- .github/workflows/test.yml | 10 ++++--- .github/workflows/wheels.yml | 58 ++++++++++++++++++++++++++++++++++++ README.md | 4 ++- pyproject.toml | 19 ++++++++++-- pytest.ini | 4 --- tests/pytest.ini | 3 ++ 6 files changed, 87 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/wheels.yml delete mode 100644 pytest.ini create mode 100644 tests/pytest.ini diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index deb79e21..0c43ce4e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,6 +1,6 @@ -name: Testing +name: Test -on: [push, pull_request] +on: [push] permissions: contents: read @@ -10,16 +10,17 @@ concurrency: cancel-in-progress: true jobs: - build: + build_and_test: strategy: + fail-fast: false matrix: os: - - "ubuntu-22.04" - "ubuntu-latest" python: - "3.7" - "3.8" - "3.9" + - "3.10" runs-on: ubuntu-22.04 steps: - uses: actions/checkout@v3 @@ -44,3 +45,4 @@ jobs: run: pip install -e . - name: Run test run: xvfb-run python -m pytest -s -v -n auto -m lite + working-directory: tests diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml new file mode 100644 index 00000000..32317813 --- /dev/null +++ b/.github/workflows/wheels.yml @@ -0,0 +1,58 @@ +name: Build + +on: [push] + +jobs: + build_wheels: + name: Build wheels on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + # Window 64 bit + - os: windows-latest + platform_id: win_amd64 + + # Linux 64 bit + - os: ubuntu-latest + platform_id: manylinux_x86_64 + manylinux_image: manylinux_2_28 + + # manylinux2014 dosen't work due to an issue in GLEW: + # https://github.com/glfw/glfw/issues/2139 + # manylinux_image: manylinux2014 + + # MacOS x86_64 + - os: macos-12 + platform_id: macosx_x86_64 + + # MacOS arm64 + - os: macos-14 + platform_id: macosx_arm64 + + steps: + - uses: actions/checkout@v4 + with: + submodules: true + + # Used to host cibuildwheel + - uses: actions/setup-python@v5 + with: + python-version: "3.8" + + - name: Install cibuildwheel + run: python -m pip install cibuildwheel==2.19.0 + + # Build wheels + - name: Build wheels + run: python -m cibuildwheel --output-dir wheelhouse + # to supply options, put them in 'env', like: + # env: + # CIBW_SOME_OPTION: value + + # Upload wheels + - uses: actions/upload-artifact@v4 + with: + name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} + path: ./wheelhouse/*.whl \ No newline at end of file diff --git a/README.md b/README.md index d904e745..dc114098 100644 --- a/README.md +++ b/README.md @@ -146,9 +146,10 @@ pip install -r requirements-dev.txt ## Run Tests -Run the full test suite: +From within the `tests` directory run the full test suite: ```shell +cd tests pytest -s -v -n auto ``` @@ -156,6 +157,7 @@ Or the lite test suite: ```shell +cd tests pytest -s -v -n auto -m lite ``` diff --git a/pyproject.toml b/pyproject.toml index b453189b..541b310a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,6 +12,21 @@ evogym = "evogym" [tool.setuptools.package-data] "evogym.envs" = ["sim_files/*.json"] +[tool.cibuildwheel] +# Skip 32-bit builds, and musllinux builds +skip = ["*-win32", "*-manylinux_i686", "*-musllinux*"] + +[tool.cibuildwheel.linux] + +manylinux-x86_64-image = "manylinux_2_28" +manylinux-pypy_x86_64-image = "manylinux_2_28" +before-all = "yum install -y libXrandr-devel libXinerama-devel libXcursor-devel libXi-devel mesa-libGLU-devel" +test-command = "echo 'installed'" + +[[tool.cibuildwheel.overrides]] +select = "*-musllinux*" +before-all = "apk add xorg-dev libglu1-mesa-dev libglew-dev xvfb" # these package names may be wrong, untested + [project] name = "evogym" version = "2.0.0" @@ -22,7 +37,7 @@ description = "Evolution Gym: A benchmark for developing and evaluating soft rob readme = "README.md" license = {file = "LICENSE"} keywords = ["evolution", "gym", "evolution gym", "soft robotics", "benchmark", "co-design"] -requires-python = ">=3.7" +requires-python = ">=3.7, <3.11" classifiers = [ "Programming Language :: Python :: 3", "License :: OSI Approved :: MIT License", @@ -30,7 +45,7 @@ classifiers = [ ] dependencies = [ "gymnasium", - "numpy", + "numpy<2.0.0", ] [project.urls] diff --git a/pytest.ini b/pytest.ini deleted file mode 100644 index d9619212..00000000 --- a/pytest.ini +++ /dev/null @@ -1,4 +0,0 @@ -[pytest] -addopts = --ignore=examples/externals --ignore=evogym/simulator/externals --ignore=examples/gym_test.py -markers = - lite: mark as part of the lite test suite \ No newline at end of file diff --git a/tests/pytest.ini b/tests/pytest.ini new file mode 100644 index 00000000..5da2abb9 --- /dev/null +++ b/tests/pytest.ini @@ -0,0 +1,3 @@ +[pytest] +markers = + lite: mark as part of the lite test suite \ No newline at end of file From 7f7980b696e6faae608403c11b3f2bd66bf1b9c3 Mon Sep 17 00:00:00 2001 From: Jagdeep Singh <24512034+jagdeepsb@users.noreply.github.com> Date: Thu, 20 Jun 2024 15:12:02 -0400 Subject: [PATCH 13/14] Update readme (#44) * Update readme * Add badges --- README.md | 23 ++++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/README.md b/README.md index dc114098..0e7e33ee 100644 --- a/README.md +++ b/README.md @@ -1,18 +1,15 @@ # Evolution Gym -> [!CAUTION] -> This branch is under active development! -> -> Version 2 of `evogym` aims to make the following improvements: -> - Separation of requirements between core `evogym` library and `examples` -> - Modernize requirements (python, gym, numpy) -> - Pip-installable, with wheels for common builds -> - Tests +![example workflow](https://github.com/EvolutionGym/evogym/actions/workflows/wheels.yml/badge.svg) +![example workflow](https://github.com/EvolutionGym/evogym/actions/workflows/test.yml/badge.svg) Evolution Gym is a large-scale benchmark for co-optimizing the design and control of soft robots. It provides a lightweight soft-body simulator wrapped with a gym-like interface for developing learning algorithms. Evogym also includes a suite of 32 locomotion and manipulation tasks, detailed on our [website](https://evolutiongym.github.io/all-tasks). Task suite evaluations are described in our [NeurIPS 2021 paper](https://arxiv.org/pdf/2201.09863). -[//]: # (teaser) -![teaser](images/teaser.gif) +> [!NOTE] +> Evogym has been recently updated! TLDR: requirements have been modernized, and the library is now pip-installable. + +[//]: # (teaser) +![teaser](https://github.com/EvolutionGym/evogym/blob/main/images/teaser.gif) # Installation @@ -23,7 +20,11 @@ pip install --upgrade evogym ``` > [!CAUTION] -> This doesn't work yet -- coming soon! +> This doesn't work yet -- coming soon! For now, you can install from test pypi: +> ```shell +> pip install "numpy<2.0.0" gymnasium +> pip install -i https://test.pypi.org/simple/ evogym +> ``` ## From Source From 36ab9ae59e5122bc9b61303bd556d6248296ce13 Mon Sep 17 00:00:00 2001 From: Jagdeep Bhatia Date: Tue, 25 Jun 2024 21:13:32 -0400 Subject: [PATCH 14/14] Clean up docs --- README.md | 54 +++++++++++++++++++++++++++++++++++---------- examples/README.md | 4 ++-- tutorials/README.md | 8 +++---- 3 files changed, 48 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index 0e7e33ee..b9c5b68a 100644 --- a/README.md +++ b/README.md @@ -3,20 +3,20 @@ ![example workflow](https://github.com/EvolutionGym/evogym/actions/workflows/wheels.yml/badge.svg) ![example workflow](https://github.com/EvolutionGym/evogym/actions/workflows/test.yml/badge.svg) -Evolution Gym is a large-scale benchmark for co-optimizing the design and control of soft robots. It provides a lightweight soft-body simulator wrapped with a gym-like interface for developing learning algorithms. Evogym also includes a suite of 32 locomotion and manipulation tasks, detailed on our [website](https://evolutiongym.github.io/all-tasks). Task suite evaluations are described in our [NeurIPS 2021 paper](https://arxiv.org/pdf/2201.09863). +Evolution Gym is a large-scale benchmark for co-optimizing the design and control of soft robots. It provides a lightweight soft-body simulator wrapped with a gym-like interface for developing learning algorithms. EvoGym also includes a suite of 32 locomotion and manipulation tasks, detailed on our [website](https://evolutiongym.github.io/all-tasks). Task suite evaluations are described in our [NeurIPS 2021 paper](https://arxiv.org/pdf/2201.09863). > [!NOTE] -> Evogym has been recently updated! TLDR: requirements have been modernized, and the library is now pip-installable. +> EvoGym has been recently updated! TLDR: requirements have been modernized (gym/gymnasium, numpy, etc.), and the library is now pip-installable. [//]: # (teaser) ![teaser](https://github.com/EvolutionGym/evogym/blob/main/images/teaser.gif) # Installation -To use evogym, simply run: +EvoGym supports python `3.7` to `3.10` on most operating systems: ```shell -pip install --upgrade evogym +pip install evogym --upgrade ``` > [!CAUTION] @@ -26,13 +26,19 @@ pip install --upgrade evogym > pip install -i https://test.pypi.org/simple/ evogym > ``` +On **Linux** install the following packages (or equivalent): + +```shell +sudo apt-get install xorg-dev libglu1-mesa-dev +``` + ## From Source -If your platform is not supported, you may try building from source: +If your platform is not supported, you may alternatively build from source: ### Requirements -* Python 3.7+ +* Python 3 * Linux, macOS, or Windows with [Visual Studios 2017](https://visualstudio.microsoft.com/vs/older-downloads/) build tools. * [CMake](https://cmake.org/download/) @@ -48,7 +54,7 @@ On **Linux only**: sudo apt-get install xorg-dev libglu1-mesa-dev ``` -Finally, to install `evogym`, run the following command in the environment of your choice: +Finally, to install `evogym`, run the following in the environment of your choice: ```shell pip install -e . @@ -88,9 +94,19 @@ if __name__ == '__main__': This script creates a random `5x5` robot in the `Walking-v0` environment. The robot is taking random actions. A window should open with a visualization of the environment -- kill the process from the terminal to close it. -# Usage +## Known Issues +### Linux and Conda + +Error message: `libGL error: MESA-LOADER: failed to open iris: /usr/lib/dri/iris_dri.so` + +Fix: `conda install -c conda-forge libstdcxx-ng` + + + +# Usage +In addition to the resources below, you can find API documentation on our [website](https://evolutiongym.github.io/documentation). ## Tutorials @@ -120,10 +136,6 @@ Install the necessary python requirements: pip install -r requirements.txt ``` -## Docs - -You can find documentation on our [website](https://evolutiongym.github.io/documentation). - ## Design Tool The Design Tool provides a gui for creating Evolution Gym environments. Please see [this repo](https://github.com/EvolutionGym/evogym-design-tool). @@ -131,6 +143,24 @@ The Design Tool provides a gui for creating Evolution Gym environments. Please s [//]: # (teaser) ![teaser](images/design-tool.gif) +## Headless Mode + +EvoGym runs in headless mode by default, without initializing libraries used for rendering. +These libraries are initialized on user requests. If using a server without rendering capabilities, ensure that: + +```python +# Envs are created with render_mode=None (None by default) +env = gym.make('Walker-v0', body=body, render_mode=None) +``` + +```python +# If using the low-level api, do not call EvoViewer.render() +world = EvoWorld.from_json(os.path.join('world_data', 'simple_environment.json')) +sim = EvoSim(world) +viewer = EvoViewer(sim) +viewer.render('img') # <-- Rendering libraries are initialized; do not call this +``` + # Dev Install the repo with submodules: diff --git a/examples/README.md b/examples/README.md index 5b800545..b704a0c7 100644 --- a/examples/README.md +++ b/examples/README.md @@ -3,7 +3,7 @@ This readme describes how to run several control optimization and co-design experiments and visualize the results. All scripts should be run from within the `examples` directory. Ensure that you have installed requirements: `pip install -r requirements.txt` and cloned the repo with submodules before running any of these scripts. > [!WARNING] -> Many of these scripts have been modified in favor of improved usability. If you wish to exactly recreate the results from the original evogym paper, please see the [original release](https://github.com/EvolutionGym/evogym/releases/tag/1.0.0). +> Many of these scripts have been modified in favor of improved usability. If you wish to exactly recreate the results from the original EvoGym paper, please see the [original release](https://github.com/EvolutionGym/evogym/releases/tag/1.0.0). ## PPO (control optimization) @@ -39,7 +39,7 @@ python run_bo.py --eval-interval 10000 --total-timesteps 100000 python run_cppn_neat.py --eval-interval 10000 --total-timesteps 100000 ``` -Note that the default parameters are set for testing purposes, and should not produce successful robots. Feel free to increase the co-design/PPO parameters based on your compute availability. +Note that the default parameters are set for testing purposes, and will not produce task-performant robots. Feel free to increase the co-design/PPO parameters based on your compute availability. You may also reference evaluation parameters from [Appendix D. of our paper](https://arxiv.org/pdf/2201.09863). ## Visualize diff --git a/tutorials/README.md b/tutorials/README.md index 1cde19a0..41f03848 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -6,11 +6,11 @@ This folder contains completed code for all tutorials on our [website](https://e To see an example of custom environment creation, see `envs/simple_env.py`. This environment is registered in `envs/__init__.py`, and can be visualized by running `python .\visualize_simple_env.py` from this directory. -## Evogym Simulator API +## EvoGym Simulator API -See `basic_api.py` for a simple example of how to create, step, and render an Evogym simulator with objects of your choice. Evogym can be used to simulate any number of objects and robots (although simulation speed may slow with many objects). +See `basic_api.py` for a simple example of how to create, step, and render an EvoGym simulator with objects of your choice. EvoGym can be used to simulate any number of objects and robots (although simulation speed may slow with many objects). -To see understand the different rendering options available in Evogym, see `rendering_options.py`. +To see understand the different rendering options available in EvoGym, see `rendering_options.py`. You can run: ```bash @@ -19,7 +19,7 @@ python .\rendering_options.py --render-option to-debug-screen | Option | Description | |--------------------|------------------------------------------------------------------------| -| to-debug-screen | Render to Evogym's default viewer | +| to-debug-screen | Render to EvoGym's default viewer | | to-numpy-array | Render to a numpy array (visualized with open cv) | | special-options | Render with special flags (for pretty visualization) | | very-fast | Render without fps limit |