top of page

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. 

bouncing_box.png

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.

soft_robot_indirect_encoding.png
soft_robot_muscle_type.png

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.

ea_plot1.png

​One Moving Soft Robot

Soft Robot Zoo

Generated multiply soft robots moving in simulation.

bottom of page