CausalWorld Overview

CausalWorld is an open-source simulation framework and benchmark for causal structure and transfer learning in a robotic manipulation environment (powered by bullet) where tasks range from rather simple to extremely hard. Tasks consist of constructing 3D shapes from a given set of blocks - inspired by how children learn to build complex structures. The release v1.2 supports many interesting goal shape families as well as exposing many causal and non-causal variables in the environment to perform do_interventions on them.

Checkout the project’s website for the baseline results and the paper.

Do Interventions Example Random Interventions Pushing Example Picking Example Pick And Place Example Stacking2 Example Towers Example Stacked Blocks Example Creative Stacked Blocks Example Stacking2 Example Own Task Example































The main advantages of this benchmark can be summarized as below:

  • That the environment is a simulation of an open-source robotic platform, hence offering the possibility of sim-to-real transfer (check it out here).

  • It provides a combinatorial family of tasks with a common causal structure and underlying factors (including, e.g., robot and object masses, colors, sizes).

  • The user (or the agent) may intervene on all causal variables, which allows for fine-grained control over how similar different tasks (or task distributions) are.

  • Easily defining training and evaluation distributions of a desired difficulty level, targeting a specific form of generalization (e.g., only changes in appearance or object mass).

  • A modular design to create any learning curriculum through a series of interventions at different points in time.

  • Defining curricula by interpolating between an initial and a target task.

  • Explicitly evaluating and quantifying generalization across the various axes.

  • A modular design offering great flexibility to design interesting new task distribution.

  • Investigate the understanding of actions and their effect on the properties of the different objects themselves.

  • Lots of tutorials provided for the various features offered.

Lets get to business!

You can start right away with couple of lines as seen below:

from causal_world.envs import CausalWorld
from causal_world.task_generators import generate_task

task = generate_task(task_generator_id='stacked_blocks')
env = CausalWorld(task=task)
env.reset()
for _ in range(2000):
    obs, reward, done, info = env.step(env.action_space.sample())
env.close()

Cite Causal World

@misc{ahmed2020causalworld,
   title={CausalWorld: A Robotic Manipulation Benchmark for Causal Structure and Transfer Learning},
   author={Ossama Ahmed and Frederik Träuble and Anirudh Goyal and Alexander Neitz and Manuel Wüthrich and Yoshua Bengio and Bernhard Schölkopf and Stefan Bauer},
   year={2020},
   eprint={2010.04296},
   archivePrefix={arXiv},
   primaryClass={cs.RO}
 }

Indices and tables