Metadata-Version: 2.1
Name: blocksworld3d
Version: 0.2.0
Summary: Minimalistic 3D blocksworld environment simulator for reinforcement learning & robotics research.
Home-page: https://github.com/ethanmclark1/blocksworld3d
Author: Ethan Clark
Author-email: eclark715@gmail.com
License: Apache
Keywords: Environment,Agent,RL,Gym,Robotics,3D
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.7, <3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: numpy (>=1.18.0)
Requires-Dist: pyglet (==1.5.27)
Requires-Dist: gymnasium (>=0.26.2)
Provides-Extra: testing
Requires-Dist: pytest (==7.0.1) ; extra == 'testing'
Requires-Dist: torch ; extra == 'testing'

# An Extension of MiniWorld

blocksworld3d is an enhancement on top of the MiniWorld environment, specifically focusing on the RoomObjects scenario. It's an open-source research project aimed at advancing the development of spatial reasoning and manipulation strategies in robotic systems.

# Blocksworld3D

blocksworld3d proposes a unique 3D environment that simulates the classic blocksworld problem except with an additional row of blocks. With various problem instances introducing different constraints on block positioning, start points, goals, and obstacles, this dynamic aspect fosters the exploration of spatial strategies in diverse settings.

The environment is minimalistic and designed for reinforcement learning & robotics research. It's compatible with the MiniWorld API, providing a seamless integration with existing toolsets.

## Installation

Install from ``PyPi`` using:

``pip install blocksworld3d``

Or install from the source using:

```
git clone https://github.com/ethanmclark1/blocksworld3d.git
cd blocksworld3d
pip install -r requirements.txt
pip install -e .
```

## Usage

```
import blocksworld3d

env = blocksworld3d.env()
env.reset(options={'problem_instance': 'stacking'}))
observation, _, terminations, truncations, _ = env.last()
env.step(action)
env.close()
```

## List of Problem Instances

| Problem Instance | Visualization                                                  |
| ---------------- | -------------------------------------------------------------- |
| `stacking`     | ![stacking](https://chat.openai.com/image/README/stacking.png)   |
| `sorting`      | ![sorting](https://chat.openai.com/image/README/sorting.png)     |
| `arranging`    | ![arranging](https://chat.openai.com/image/README/arranging.png) |
| ...              | ...                                                            |

> **Note** : Customize the table above with the specific problem instances and visualization images relevant to your project.

## Contributing

We welcome contributions to blocksworld3d! Whether it's bug reports, feature requests, or pull requests, your collaboration helps make blocksworld3d better.

## Support

If you have questions or need support, please contact us at [eclark715@gmail.com](mailto:eclark715@gmail.com), or create an issue in the GitHub repository.

## License

blocksworld3d is open-source software licensed under the [MIT license](https://chat.openai.com/LINK_TO_YOUR_LICENSE).

## Paper Citation

If you found this environment helpful, consider citing relevant papers. Here's an example citation for the original MiniWorld environment:

<pre>
@article{MinigridMiniworld23,
  author={Maxime Chevalier-Boisvert and Bolun Dai and Mark Towers and Rodrigo de Lazcano and Lucas Willems and Salem Lahlou and Suman Pal and Pablo Samuel Castro and Jordan Terry},
  title={Minigrid & Miniworld: Modular & Customizable Reinforcement Learning Environments for Goal-Oriented Tasks},
  journal={CoRR},
  volume={abs/2306.13831}
  year={2023}
}
</pre>
