newera-001 / eagerx

EAGERx is a physics engine abstraction layer for reinforcement learning. EAGERx allows switching between simulators and reality with a single line of code, supports action and observation processing and controller switching for resets.

Home Page:https://eagerx.readthedocs.io/en/master/index.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

docs/_static/img/banner.png

Streamlining the transfer of simulated robot learning to the real-world.

license codestyle Documentation Status Continuous Integration Maintainability Test Coverage

What is EAGERx

EAGERx (Engine Agnostic Gym Environments for Robotics) enables users to easily define new tasks, switch from one sensor to another, and switch from simulation to reality with a single line of code by being invariant to the physics engine. EAGERx explicitly addresses the differences in learning between simulation and reality, with essential features for roboticists such as a safety layer, signal delay simulation, and controller switching for resets. A single RL pipeline that works with both the simulated and real robots eliminates the chance for mismatches between the simulation and reality implementation. The defined task follows the OpenAI Gym interface, so one can plug in algorithms from established RL libraries (e.g., Stable-baselines3 ) to solve the task afterward, again minimizing implementation errors.

Full documentation and tutorials available here.

We are currently working towards a first stable release!

Installation

You can do a minimal installation of EAGERx with:

pip3 install eagerx

Note

EAGERx depends on a minimal ROS installation. Fortunately, you can use eagerx anywhere as you would any python package, so it does not impose a ROS package structure on your project. See here for installation instructions.

We provide other options for installing EAGERx in our documentation including using Docker or Conda environment to have ROS1 setup.

Extras: GUI

To install the whole set of features, you will need additional packages. You can install everything by running:

pip3 install eagerx-gui
alternate text

The construction of an environment via the GUI.

Extras: training visualization

In robotics it is crucial to monitor the robot's behavior during the learning process. Luckily, inter-node communication within EAGERx can always be listened to externally, so that any relevant information stream can be trivially monitored on-demand (e.g. with rqt_plot).

Note

rqt_plot is included in the desktop or desktop-full ROS installation. See here for installation instructions.

Tutorials

A number of tutorials are available in the form of Google Colabs:

For more information see the docs or the eagerx_tutorials package.

Dependencies

Below you find instructions for installing dependencies required for EAGERx.

ROS

See the ROS Installation Options, or do the following. By replacing <DISTRO> with the supported ROS distributions (noetic, melodic), and <PACKAGE> with the installation type (ros-base, desktop, desktop-full), a minimal ros installation can be installed with:

sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt install curl # if you haven't already installed curl
curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc | sudo apt-key add -
sudo apt update
sudo apt install ros-<DISTRO>-<PACKAGE>
sudo apt-get install ros-<DISTRO>-cv-bridge

Make sure to source /opt/ros/<DISTRO>/setup.bash in the environment where you intend to eagerx in. It can be convenient to automatically source this script every time a new shell is launched. These commands will do that for you if you:

echo "source /opt/ros/<DISTRO>/setup.bash" >> ~/.bashrc
source ~/.bashrc

In case you make use of a virtual environment, move to the directory containing the .venv and add source /opt/ros/<DISTRO>/setup.bash to the activation script before activating the environment with this line:

echo "source /opt/ros/<DISTRO>/setup.bash" >> .venv/bin/activate

Cite EAGERx

If you are using EAGERx for your scientific publications, please cite:

@article{eagerx,
    author  = {van der Heijden, Bas and Luijkx, Jelle, and Ferranti, Laura and Kober, Jens and Babuska, Robert},
    title = {EAGERx: Engine Agnostic Gym Environment for Robotics},
    year = {2022},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/eager-dev/eagerx}}
}

Maintainers

EAGERx is currently maintained by Bas van der Heijden (@bheijden) and Jelle Luijkx (@jelledouwe).

How to contact us

Follow us on Twitter @EagerxD!

For any question, send an e-mail to eagerx.dev@gmail.com.

Acknowledgements

EAGERx is funded by the OpenDR Horizon 2020 project.

About

EAGERx is a physics engine abstraction layer for reinforcement learning. EAGERx allows switching between simulators and reality with a single line of code, supports action and observation processing and controller switching for resets.

https://eagerx.readthedocs.io/en/master/index.html


Languages

Language:Python 99.2%Language:Dockerfile 0.4%Language:Shell 0.2%Language:Makefile 0.2%