Deepworlds is a support repository for the deepbots framework, containing examples of the framework's usage on the Webots robot simulator.
If the following sections feel overwhelming, feel free to start on our deepbots-tutorials repository for a beginner's in-depth introduction to the way the deepbots framework is used.
-
Clone the repository using:
git clone https://github.com/aidudezzz/deepworlds.git
-
Install specific packages for each example you want to use by running the following:
pip install -r <path to requirements file>
You can find the requirement files on the
/requirements/<example-name>.txt
path of each example, e.g., /examples/cartpole/cartpole_discrete/requirements/. -
Through Webots, open the .wbt file of the example you are interested in and hit run to train the provided agent. You can find the .wbt files under
/worlds/
, e.g., /examples/cartpole/cartpole_discrete/worlds/.
For more information on the examples, refer to each one's README, and examine the code within their /controllers/
directory.
Each example might be split into discrete and continuous action space cases. The reason for this split is that depending on the action space, different kinds of reinforcement learning agents need to be used, and thus quite large changes are needed in the code.
Keep in mind that each example can have multiple solutions provided using the two schemes of deepbots (robot supervisor and emitter-receiver) and with different reinforcement learning agents, backends, etc.
We suggest starting your exploration from the discrete cartpole example using the robot supervisor scheme, as it is also the example used in the tutorial. The main class/controller implementation can be found here, and the corresponding tutorial to create it from scratch is here.
\deepworlds
\examples
\cartpole
\cartpole_discrete
\controllers
\requirements
\worlds
\cartpole_continuous
\controllers
\requirements
\worlds
\...
\find_and_avoid
\find_and_avoid_continuous
\controllers
\requirements
\worlds
\...
\pit_escape
\pit_escape_discrete
\controllers
\requirements
\worlds
\...
\(more examples)
Thanks goes to these wonderful people (emoji key):
Kostas Tsampazis 🐛 💻 📖 💡 🤔 🚧 📆 💬 👀 |
Manos Kirtas 🐛 💻 📖 💡 🤔 🚧 📆 💬 👀 |
RKJ 🤔 |
wakeupppp 🐛 |
Jiun Kai Yang 💻 📖 💡 🤔 👀 🚧 📆 🐛 💬 |
Nikolaos Kokkinis-Ntrenis 💻 📖 💡 |
This project follows the all-contributors specification. Contributions of any kind welcome!
Special thanks to Papanikolaou Evangelia for designing project's logo!