SoftGym is a set of benchmark environments for deformable object manipulation including tasks involving fluid, cloth and rope. It is built on top of the Nvidia FleX simulator and has standard Gym API for interaction with RL agents. A number of RL algorithms benchmarked on SoftGym can be found in SoftAgent
python examples/random_env.py --test_depth 1
to visualize the depth image.If you are using Ubuntu 16.04 LTS and CUDA 9.2, you can follow the steps in the next section on this page for compilation. For other versions of Ubuntu or CUDA, we provide the pre-built Docker image and Dockerfile for running SoftGym. Please refer to our Docker page.
The following command will install some necessary dependencies.
sudo apt-get install build-essential libgl1-mesa-dev freeglut3-dev libglfw3 libgles2-mesa-dev
Create conda environment
Create a conda environment and activate it: conda env create -f environment.yml
Compile PyFleX: Go to the root folder of softgym and run . ./prepare_1.0.sh
. After that, compile PyFleX with CMake & Pybind11 by running . ./compile_1.0.sh
Please see the example test scripts and the bottom of bindings/pyflex.cpp
for available APIs.
Image | Name | Description |
---|---|---|
DropCloth | Lay a piece of cloth in the air flat on the floor | |
FoldCloth | Fold a piece of flattened cloth in half | |
SpreadCloth | Spread a crumpled cloth on the floor | |
PourWater | Pour a cup of water into a target cup | |
TransportWater | Move a cup of water to a target position as fast as possible without spilling out the water | |
StraightenRope | Straighten a rope starting from a random configuration | |
PourWaterAmount | This task is similar to PourWater but requires a specific amount of water poured into the target cup. The required water level is indicated by a red line. | |
FoldCrumpledCloth | This task is similar to FoldCloth but the cloth is initially crumpled | |
DropFoldCloth | This task has the same initial state as DropCloth but requires the agent to fold the cloth instead of just laying it on the ground | |
RopeConfiguration | This task is similar to StraightenCloth but the agent needs to manipulate the rope into a specific configuration from different starting locations. |
To have a quick view of different tasks listed in the paper (with random actions), run the following commands: For SoftGym-Medium:
python examples/random_env.py --env_name PassWater
python examples/random_env.py --env_name PourWater
python examples/random_env.py --env_name RopeFlatten
python examples/random_env.py --env_name ClothFlatten
python examples/random_env.py --env_name ClothFold
python examples/random_env.py --env_name ClothDrop
For SoftGym-Hard:
python examples/random_env.py --env_name PourWaterAmount
python examples/random_env.py --env_name ClothFoldCrumpled
python examples/random_env.py --env_name ClothFoldDrop
python examples/random_env.py --env_name RopeConfiguration
Turn on the --headless
option if you are running on a cluster machine that does not have a display environment. Otherwise you will get segmentation issues. Please refer to softgym/registered_env.py
for the default parameters and source code files for each of these environments.
If you find this codebase useful in your research, please consider citing:
@inproceedings{corl2020softgym,
title={SoftGym: Benchmarking Deep Reinforcement Learning for Deformable Object Manipulation},
author={Lin, Xingyu and Wang, Yufei and Olkin, Jake and Held, David},
booktitle={Conference on Robot Learning},
year={2020}
}