
SOFT ROBOTICS SOFTWARE
Updated December 2022
Reinforcement Learning Toolkit for Soft Robotics
By Moritz A. Graule, Thomas P McCarthy, & Dr. Clark Teeple
SoMoGym
SoMoGym (SoftMotion Gym) is an open-source framework that builds on SoMo. SoMoGym facilitates the training and testing of soft robot control policies on complex tasks in which robots interact with their environments, frequently making and breaking contact. We provide a set of standard benchmark tasks, spanning challenges of manipulation, locomotion, and navigation in environments both with and without obstacles.
Interested users are also invited to look at the documentation below to learn more or try out our code in the colab linked below.
SoMoGym Github Repo
SoMo
SoMo (SoftMotion) is a framework to facilitate the simulation of continuum manipulator (CM) motion in pybullet. In SoMo, continuum manipulators are approximated as a series of rigid links connected by spring-loaded joints. SoMo makes it easy to create URDFs of such approximated manipulators and load them into pybullet's rigid body simulator. With SoMo, environments with various continuum manipulators, such as hands with soft fingers (xxx links), or snakes, can be created and controlled with only a few lines of code.
SoMo-RL
SoMo-RL is an open-source toolkit for developing and evaluating control policies for soft robots. Using the SoMo simulation framework and SoMoGym library, SoMo-RL permits experiments on, e.g., the effects of varying control and robot design parameters, and enables the use of RL for such systems. SoMo-RL builds off the functionality of SoMoGym, providing a straightforward system for training RL policies on SoMoGym environments, managing experiments at scale, and analyzing RL results. In SoMo-RL, experiments are highly customizable, allowing for complete modification of learning hyperparameters and environment parameters through a single configuration file.
SoMo-RL Github Repo

SoMo: Published in IEEE International Conference
on Intelligent Robots and Systems
10.1109/IROS51168.2021.9636059


Pen Spinner

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying forces to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
Planar Reaching

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
Planar Reaching with Obstacle

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
Block Pushing

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
Antipodal Gripper

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
Snake

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
In-Hand Manipulation

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)
Inverted In-Hand Manipulation

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.
Description
This environment consists of 5 fingers manipulating a pen. The goal is to coordinate the five fingers to move appropriately by applying torques to the pen so that this can be placed in the goal position highlighted in green.
Arguments
env = gym.make("PenSpinner-v0", run_config=run_config, ...)