Skip to content

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.

Notifications You must be signed in to change notification settings

eager-dev/eagerx

Repository files navigation

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

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.

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.

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

pip3 install eagerx-gui

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.

Below you find instructions for installing dependencies required for EAGERx.

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

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 = {EAGER: Engine Agnostic Gym Environment for Robotics},
    year = {2022},
    publisher = {GitHub},
    journal = {GitHub repository},
    howpublished = {\url{https://github.com/eager-dev/eagerx}}
}

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

Follow us on Twitter @EagerxD!

For any question, send an e-mail to [email protected].

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.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •  

Languages