Soft Robot in Simulation
​Develop a soft robot with modular design that mimics the tissue structure of living organisms and is capable of moving in a simulated environment. Build a customized physics engine and apply an evolutionary algorithm to evolve the robot's movements.
My Role
Robot Design
I designed the structure of a six-legged soft robot that can change its leg length. It consists of two basic elements: mass points and springs, which simulate soft tissue.
​
Physical Engine
I have developed a physics engine for soft robots, where forces act on particles and are transmitted internally through springs.
​
Evolutionary Algorithm
By utilizing evolutionary algorithms to modify the characteristics of particles and springs, I trained a soft robot that can move forward.
Team Members
Chenfei Zhu
Timeframe
One Semester
Robot Elements Description
Two Main Elements
-
Masses
-
Point masses (no volume)
-
Have position, velocity, and acceleration
-
-
Springs
-
Massless
-
Connect two masses
-
Have a rest length and stiffness
-
Apply restoring forces on the masses
-
​
Data Structures
-
Mass
-
Mass m (scalar)
-
Position p (3D Vector)
-
Velocity v (3D Vector)
-
Acceleration a (3D Vector)
-
External forces F (3D Vector)
-
-
Spring
-
Rest length L0 (Scalar)
-
Spring constant k (scalar) (=EA/L for bars)
-
Indices of two masses m1, m2
-
​
The modular robot comprises two main elements - particles and springs. Particles represent the weight of small body parts, while springs connect the particles. By assigning various tissue structures to different parts of the robot's body, the springs can move based on trainable parameters. Muscle tissue can expand and contract, while soft tissue moves passively according to the surrounding tissue.

Physical Engine Description
Parameters
const double GRAVITY = 9.81;
const double damping = 0.9999; // velocity dampening, help reduce vibration
const double DT = 0.0008; // simulation timestep
const double friction_mu_s = 1; // friction coefficient of rubber-concrete
const double friction_mu_k = 0.8; // kinetic coefficient of rubber-concrete
const double k_vertices_soft = 2000; // spring constant of the edges
const double k_ground = 200000; // constant of the ground reaction force
double omega = 10; // this is arbitrary, you can use any that you see fit
​
Each particle of the robot has a three-dimensional coordinate. The robot moves by simulating the forces acting on the particles. The springs between the particles help to distribute the forces throughout the robot's body. For example, when the robot's position is below the horizon, the ground will exert a force to make the robot bounce back.
​
​
Robot Structure Description
Evolving Motion
-
For each spring set k and L0 = a+b*sin(ωt+c)
-
ω is global frequency. a,b,c,k are spring parameters (k is the spring coefficient)
-
The cycle period is 2pi/ω
-
-
Evolve locomotion
-
Fitness: net distance traveled by center of mass
-
-
Representation
-
Indirect encoding: Chromosome specifies how a,b,c, and k are determined
-
​
​
Allocate corresponding functions to each region and use the same spring parameters to greatly reduce the calculation workload.


Evolutionary Algorithm Description
Control changes
-
Change actuation parameters a,b,c,k
​​
Morphological changes
-
Add/remove spring between two exiting masses
-
Add/remove the mass
-
Change mass distribution (but keep total mass constant)
-
Change the rest length of the existing spring
​By constantly changing the parameters of different types of springs and adjusting the length of the robot's legs in evolutionary algorithms, a configuration with a faster walking speed can be found after multiple iterations.

​One Moving Soft Robot

Soft Robot Zoo
Generated multiply soft robots moving in simulation.
