EAGERx: Graph-Based Framework for Sim2real Robot Learning
Bas van der Heijden, Jelle Luijkx, Laura Ferranti, Jens Kober, Robert Babuska
TL;DR
EAGERx tackles the sim2real gap by introducing a graph-based, engine-agnostic framework that enables synchronized, faster-than-real-time simulation with delay modeling and domain randomization. It defines a modular architecture (Graph/Node/Object/Engine/Backend/BaseEnv) and a novel synchronization protocol that coordinates asynchronous components to maintain consistent behavior across simulators and real hardware. Key contributions include the synchronization protocol, engine-agnostic design, modular reset and simulator augmentation capabilities, and demonstrated improvements in zero-shot sim2real transfer across pendulum, vision-based manipulation, and dynamic quadrotor tasks. The approach offers practical impact by enabling flexible multi-engine pipelines, interactive learning workflows, and ML-assisted control, all under an open-source implementation with strong documentation and tutorials.
Abstract
Sim2real, that is, the transfer of learned control policies from simulation to real world, is an area of growing interest in robotics due to its potential to efficiently handle complex tasks. The sim2real approach faces challenges due to mismatches between simulation and reality. These discrepancies arise from inaccuracies in modeling physical phenomena and asynchronous control, among other factors. To this end, we introduce EAGERx, a framework with a unified software pipeline for both real and simulated robot learning. It can support various simulators and aids in integrating state, action and time-scale abstractions to facilitate learning. EAGERx's integrated delay simulation, domain randomization features, and proposed synchronization algorithm contribute to narrowing the sim2real gap. We demonstrate (in the context of robot learning and beyond) the efficacy of EAGERx in accommodating diverse robotic systems and maintaining consistent simulation behavior. EAGERx is open source and its code is available at https://eagerx.readthedocs.io.
