Skip to content

Package for rapid prototyping of reinforcement learning environments πŸš€

License

Notifications You must be signed in to change notification settings

sintefneodroid/droid

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

neodroid

Droid

Droid is a unity package that enables prototyping reinforcement learning environments within the Unity engine and communication to the Neo counterpart of the Neodroid platform.


Neodroid is developed with support from Research Council of Norway Grant #262900. (https://www.forskningsradet.no/prosjektbanken/#/project/NFR/262900)


Build Status Coverage Status GitHub Issues GitHub Forks GitHub Stars GitHub License

unity csharp netmq

flatbuffers

This project has similarities with Unity's own project Unity Machine Learning Agents. Most of the efforts done in this project were made prior to their announcement, Introducing: Unity Machine Learning Agents, when the authors was in need of a capable tool. Newcomers wanting a more supported experience may wish to use the Unity Machine Learning Agents project instead.

The entire Neodroid platform serves as a tool for academic research specific to the authors interests, hence explaining the existence and future direction of this project.

Notable Features

  • In-editor simulations for ease of debugging
  • Connect multiple external agents (i.e. multiple client computers)
  • Blazing fast serialisation
  • Modular unity style component construction of scenes (enables rapid prototyping of complex environments and ease of integration with existing projects)
  • Support reverse curriculum generation inherently (Ability to reinitialise any previous seen state or configure new ones)

Usage

  • Edit your Unity projects "Packages/manifest.json" to include the string "com.neodroid.droid": "https://github.com/sintefneodroid/droid.git"}.

    Example manifest.json

    {
      "dependencies": {
        "com.unity.package-manager-ui": "0.0.0-builtin",
        ...
        "com.neodroid.droid": "https://github.com/sintefneodroid/droid.git",
      }
    }
    

    You can use "com.neodroid.droid": "https://github.com/sintefneodroid/droid.git#branch" for a specific branch.

Or

  • Download the newest Droid.unitypackage from releases and import into your Unity project.

Or

Demo

manipulator

Videoes

Manipulator Drone Drone2 Domain Randomization

Repository Structure


sintefneodroid/droid         # This repository
β”‚
β”œβ”€β”€ Samples                  # Prebuilt Neodroid environments
β”‚   └── MultiArmedBandit     # Sample Project
β”‚
β”œβ”€β”€ Editor                   # Editor Implementation
β”‚   β”œβ”€β”€ GameObjects
β”‚   β”œβ”€β”€ ScriptableObjects
β”‚   β”œβ”€β”€ Windows
β”‚   β”œβ”€β”€ Resources
β”‚   └── Utilies
β”‚
β”œβ”€β”€ Runtime                 # Runtime Implementation
β”‚   β”œβ”€β”€ Prototyping         # All classes for quick prototyping of observations and actions
β”‚   β”‚   β”œβ”€β”€ Actors
β”‚   β”‚   β”œβ”€β”€ Evaluation
β”‚   β”‚   β”œβ”€β”€ Observers
β”‚   β”‚   β”œβ”€β”€ Displayers
β”‚   β”‚   β”œβ”€β”€ Configurables
β”‚   β”‚   └── Motors
β”‚   β”‚
β”‚   β”œβ”€β”€ Environments        # Classes for encapsulating all Neodroid environments
β”‚   β”œβ”€β”€ Managers            # Classes for managing the simulation of Neodroid environments
β”‚   └── Utilities           # Lots of helper functionalities
β”‚
β”œβ”€β”€ Documentation           # Unity Package Documentation
β”‚
β”œβ”€β”€ Gizmos                  # Icons
β”‚
β”œβ”€β”€ Tests                   # Tests
β”‚
β”œβ”€β”€ .github                 # Images and such for this README
β”‚
β”œβ”€β”€ LICENSE.md              # License file (Important but boring)
β”œβ”€β”€ README.md               # The top-level README
└── TUTORIAL.md             # Very quick tutorial to get started

Citation

For citation you may use the following bibtex entry:

@misc{neodroid,
  author = {Heider, Christian},
  title = {Neodroid Platform},
  year = {2018},
  publisher = {GitHub},
  journal = {GitHub repository},
  howpublished = {\url{https://github.com/sintefneodroid}},
}

Other Components Of The Neodroid Platform