Metadata-Version: 2.1
Name: lanro-gym
Version: 0.1.0
Summary: OpenAI Gym multi-goal environments for goal-conditioned and language-conditioned deep reinforcement learning build with PyBullet
Home-page: https://github.com/frankroeder/lanro-gym
Author: Frank Röder
Author-email: frank.roeder@tuhh.de
License: MIT
Classifier: Operating System :: OS Independent
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.6
Description-Content-Type: text/markdown
Provides-Extra: dev
License-File: LICENSE

# LANRO (Language Robotics)
<div>
<img src="./docs/panda_nlpush.gif" width="100%" height="auto">
</div>

__LANRO__ is a platform to study language-conditioned reinforcement learning with
a synthetic caretaker providing instructions in hindsight.
It had been published as part of our paper [**_Grounding Hindsight Instructions in Multi-Goal Reinforcement Learning for Robotics_**](https://arxiv.org/abs/2204.04308).

## Installation
### Pip module

```bash
pip install lanro-gym
```

### From source

```bash
git clone https://github.com/frankroeder/lanro-gym.git
cd lanro-gym/  && pip install -e .
```
or
```bash
# via https
pip install git+https://github.com/frankroeder/lanro-gym.git
# or ssh
pip install git+ssh://git@github.com/frankroeder/lanro-gym.git
```

## Example

```python
import gym
import lanro_gym

env = gym.make('PandaStack2-v0', render=True)

obs = env.reset()
done = False
while not done:
    obs, reward, done, info = env.step(env.action_space.sample())

env.close()
```

## Environments

[Click here for the environments README](./lanro_gym/environments/README.md)

## Keyboard and mouse control
It is also possible to manipulate the robot with sliders
```bash
python main.py -i --env PandaNLReach2-v0
```
or your keyboard
```bash
python main.py -i --keyboard --env PandaNLReach2-v0
```

## Developers

### Running tests

We use [pytest](https://realpython.com/pytest-python-testing/).
```bash
PYTHONPATH=$PWD pytest test/
```

Measure the FPS of your system:
```bash
PYTHONPATH=$PWD python examples/fps.py
```

## Acknowledgements

This work uses code and got inspired by following open-source projects:

#### pybullet

Homepage [https://pybullet.org/](https://pybullet.org/)  
Source: [https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet](https://github.com/bulletphysics/bullet3/tree/master/examples/pybullet)  
License: [Zlib](http://opensource.org/licenses/Zlib)  

#### panda-gym

Source: [https://github.com/qgallouedec/panda-gym](https://github.com/qgallouedec/panda-gym)  
License: [MIT](https://github.com/qgallouedec/panda-gym/blob/master/LICENSE)  
Changes: The code structure of `lanro-gym` contains copies and extensively modified parts of `panda-gym`.

## Citations

**pybullet**
```bibtex
@MISC{coumans2021,
  author = {Erwin Coumans and Yunfei Bai},
  title = {PyBullet, a Python module for physics simulation for games, robotics and machine learning},
  howpublished = {\url{http://pybullet.org}},
  year = {2016--2021}
}
```

**panda-gym**
```bibtex
@article{gallouedec2021pandagym,
  title   = {{panda-gym: Open-Source Goal-Conditioned Environments for Robotic Learning}},
  author  = {Gallou{\'e}dec, Quentin and Cazin, Nicolas and Dellandr{\'e}a, Emmanuel and Chen, Liming},
  year    = 2021,
  journal = {4th Robot Learning Workshop: Self-Supervised and Lifelong Learning at NeurIPS},
}
```
