Streamlining the transfer of simulated robot learning to the real-world.
Table of Contents
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
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:
- Tutorial 1: Environment Creation and Training with EAGERx
- Tutorial 2: Reset and Step Function
- Tutorial 3: Converters
- Tutorial 4: Nodes and Graph Validity
- Tutorial 5: Adding Engine Support for an Object
- Tutorial 6: More Informative Rendering
- Tutorial 7: Reset Routines
- Tutorial 8: Defining new objects (coming soon).
- Tutorial 9: Speeding-up training with multi-processing (coming soon).
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.