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
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 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 is identical to Planar Reaching but with a cylindrical obstacle present.
Arguments
env = gym.make("PlanarReachingObstacle-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 the arm pushing the orange block to a designated green area.
Arguments
env = gym.make("PlanarBlockPushing-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
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
* 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, ...)
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 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 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
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, ...)