top of page

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 Github Repo
 

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

Pen Spinning

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

Planar Reaching

PlanarReaching.gif

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.

Description

The arm as above has to move its tip to a randomly chosen goal pose (i.e., position and orientation).
The robot is rewarded for bringing its tip close to the goal pose.

Arguments

env = gym.make("PlanarReaching-v0", run_config=run_config, ...)


 

Planar Reaching wit Obstacle

Planar Reaching with Obstacle

PlanarReachingObstacle.gif

* 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 is identical to Planar Reaching but with a cylindrical obstacle present.

Arguments

env = gym.make("PlanarReachingObstacle-v0", run_config=run_config, ...)


 

Block Pushing

Block Pushing

PlanarBlockPushing.gif

* 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 the arm pushing the orange block to a designated green area.
 

Arguments

env = gym.make("PlanarBlockPushing-v0", run_config=run_config, ...)


 

Antipodal Gripping

Antipodal Gripper

AntipodalGripper.gif

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.

Description

A downward-facing antipodal gripper is tasked with picking up a cuboid or cylindrical object with given width or diameter. The gripper consists of a rigid palm connected to two continuum manipulator fingers, each consisting of two
actuators with two actively controlled bending axes per actuator.
The gripper assembly can move along the z-axis. An external spring force in the z-direction is applied to the object, proportional to the object’s height above the ground plane. The grip strength required to retain the object accordingly increases with increasing object height. At each action step, the robot earns a reward proportional to the object’s height

Arguments

env = gym.make("AntipodalGripper-v0", run_config=run_config, ...)


 

Snake

Snake

SnakeLocomotionDiscrete.gif

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.

Description

A robot consisting of eight actuators with two independently actuated bending axes each, exhibiting anisotropic friction with the ground plane, is rewarded for successfully moving towards a (fixed) goal.

Arguments

env = gym.make("Snake-v0", run_config=run_config, ...)


 

Hand Manipulation

In-Hand Manipulation

InHandManipulation.gif

* 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 in a rigid-soft (hybrid) robotic hand pointing upward holds a cube within a gravitational field and aims to rotate the cube around the z-axis. The hand consists of a rigid palm and four soft fingers. Each finger consists of one actuator with two independently controlled bending axes.
The robot is rewarded for rotating the cube counter-clockwise without dropping it, and can optionally be rewarded for keeping the cube centered above the center of the palm.

Arguments

env = gym.make("InHandManipulation-v0", run_config=run_config, ...)


 

Inverted Hand Manipulation

Inverted In-Hand Manipulation

InHandManipulationInverted.gif

* The details of how to create a run_config.yaml file, and its examples per environment, are explained in the SomoGym Github Repo.

Description

Identical to In-Hand Manipulation but inverted, such that the cube lies between the ground plane and the robot’s rigid palm. This reduces the likelihood of catastrophic failures (e.g., dropping the cube).

Arguments

env = gym.make("InHandManipulationInverted-v0", run_config=run_config, ...)


 

Disclaimer
This software is provided “as is”, without warranty of any kind, express or implied, including but not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. In no event shall the authors or copyright holders be liable for any claim, damage or other liability, whether in an action of contract, tort or otherwise, arising from, out of or in connection with this software or the use or other dealings in the software. Non-commercial use only.

bottom of page