Generative Shape Optimization of Soft Pneumatic Actuators Using
Cloth-Simulation
Using Various Parameterizations to Generatively Optimize Thin-Walled Soft
Pneumatic Actuators
Henrik Solvang Holmsen
Thesis submitted for the degree of Master in Robotics and Intelligent Systems
60 credits
Department of Informatics
Faculty of mathematics and natural sciences
UNIVERSITY OF OSLO
Generative Shape Optimization of Soft Pneumatic Actuators Using
Cloth-Simulation
Using Various Parameterizations to Generatively Optimize Thin-Walled Soft
Pneumatic Actuators
Henrik Solvang Holmsen
© 2019 Henrik Solvang Holmsen
Generative Shape Optimization of Soft Pneumatic Actuators Using Cloth-Simulation
http://www.duo.uio.no/
Printed: Reprosentralen, University of Oslo
Abstract
Soft robotics has shown a lot of great promise in recent years. However, most of the soft muscles/actuators used today often rely on designs developed in the 1950s and requires the use of different materials to achieve actuation. In this thesis the generative design paradigm was used to design such soft inflatable actuators, using a single thickness, and a single material.
This thesis, in particular, focuses on optimizing the surface shape of such actuators, in order to make them contract as much as possible when inflated. A variety of different search spaces were explored, first by using a basic sine function. An optimal amplitude was found, and further results in these experiments indicated that several actuators in series were beneficial for contraction.
Evolutionary algorithms were also used to find an optimal number, and magnitude of b-spline control points, to design a soft actuator for optimal contraction. In the simulation, an optimal shape was found, with a fitness exceeding that of the sine-function based actuators.
Then these optimal actuators were tested, with external forces applied to both sides, simulating stretch. It was found that the area between the individual vertices in the mesh greatly impacted the stretch of each actuator and that this test not necessarily gave a good indication of the strength. However, by visual inspection some useful conjecture could be derived, in that, the more uniform shapes seemed to stretch less than the more complex shapes.
Acknowledgements
First of all, I want to thank my supervisor, associate professor Mats Erling Høvin for support during the work of this thesis and for helpful discussions when both creating the simulation environment and finding good parameterizations of the meshes.
Secondly, I would like to thank my fellow students for interesting input when creating this thesis.
Lastly, I want to thank my friends and family for their support.
Contents
I Introduction and Background 1
1 Introduction 2
1.1 Research Goals . . . 3
1.2 Outline . . . 4
2 Background 6 2.1 Generative Design . . . 6
2.1.1 Soft Body Simulation . . . 7
2.1.2 Local Search . . . 11
2.1.3 Generative/Evolutionary Design Challenges . . . 16
2.2 Soft Robotics . . . 17
2.2.1 Actuation . . . 17
2.2.2 Recent work in Generative Design of Robots, And Soft Robot Design . . . 18
II The Project 22
3 Tools and Implementation 23 3.1 Software and Tools . . . 233.1.1 Open Frameworks . . . 23
3.1.2 DEAP . . . 24
3.2 Implementation and setup . . . 24
3.2.1 Simulator . . . 24
3.2.2 Fitness . . . 31
3.2.3 Limiting the Search Space . . . 33
3.2.4 Exhaustive Search, Method, and Implementation . . 34
3.2.5 Evolutionary Algorithm, Method and Implementation 36
III Expermients and Results 42
4 Sinusoids 43 4.1 Variable Amplitude Search . . . 434.1.1 Results . . . 44
4.1.2 Analysis . . . 45
4.2 Variable Amplitude and Range . . . 46
4.2.1 Results . . . 46
4.2.2 Analysis . . . 47
4.3 Variable Amplitude and Range With Absolute Function . . . 49
4.3.1 Results . . . 50
4.3.2 Analysis . . . 52
5 B-splines and Evolutionary Optimization 53 5.1 Single B-spline Over Entire Mesh . . . 54
5.1.1 Results . . . 54
5.1.2 Analysis . . . 55
5.2 Single B-spline Over the Middle Mesh . . . 57
5.2.1 Results . . . 58
5.2.2 Analysis . . . 59
5.3 Two B-splines Over the Middle Mesh . . . 60
5.3.1 Results . . . 61
5.3.2 Analysis . . . 62
5.4 Four B-splines Over the Middle Mesh . . . 64
5.4.1 Results . . . 65
5.4.2 Analysis . . . 65
5.5 Random X and Y Coordinates . . . 68
5.5.1 Results . . . 68
5.5.2 Analysis . . . 69
6 Testing The Optimal Actuators 71 6.1 Optimal Sinusoids . . . 71
6.1.1 Analysis . . . 73
6.2 Optimal B-splines . . . 73
6.2.1 Results . . . 74
6.2.2 Analysis . . . 74
IV Conclusion and Discussion 76
7 Discussion 77 7.1 Conclusion . . . 797.2 Future work . . . 80
List of Figures
2.1 Spring mass simulator setup . . . 8
2.2 Vector product used for inflation . . . 10
2.3 Flowchart showing how a EA is run . . . 12
2.4 Visualization of a two point crossover . . . 14
2.5 Design and concept of a pleated PAM . . . 18
2.6 Evolved and manufactured soft robot . . . 19
2.7 Evolving robot gaits using VoxCAD . . . 19
2.8 Evolutionary optimization in bending FEA . . . 20
2.9 Figure of soft robotic fish . . . 21
3.1 Visualization of the internal mesh structure . . . 25
3.2 Visalization of internal forces . . . 26
3.3 Visalization of how where the internal forces are added in the mesh . . . 27
3.4 Flowchart for one run in the simulation . . . 28
3.5 UML of the simulator data structure . . . 30
3.6 Figure of the fitness calculation . . . 32
3.7 Sine-functions applied to the base-cylinder . . . 35
3.8 Flowchart of how the evaluation of different sinusoids are set up . . . 36
3.9 How b-splines are impacted by the control-point placement 37 3.10 B-splines added to the base-cylinder . . . 38
3.11 Flowchart of how the evaluation of different b-spline- and random X and Y coordinate solutions are set up . . . 41
4.1 Fitness-landscape of amplitude-search . . . 44
4.2 Best performing amplitude search . . . 45
4.3 Fitness landschape for different amplitudes and cycles . . . 47
4.4 Best performing amplitude and range search . . . 48
4.5 Fitness-landscape of absolute sine and range search . . . 50
4.6 Best performing absolute sinusoid . . . 51
5.1 Evolution for single b-spline over entire mesh . . . 55
5.2 Best performing specimen for b-spline over entire mesh . . . 56
5.3 Evolution for single b-spline over the middle mesh . . . 58
5.4 Three best uniform meshes . . . 59
5.5 Evolution for two b-splines over the middle of the mesh . . 62
5.6 Three best half b-spline meshes . . . 63
5.7 Evolution for four b-splines over the middle of the mesh . . 66
5.8 Three best quarter b-spline meshes . . . 67
5.9 Evolution for random X and Y coordinates . . . 69
5.10 Best perfroming random X and Y optimized mesh . . . 70
6.1 Stretching of sine-based actuators. . . 72
6.2 Stretching of b-spline-based actuators. . . 75
List of Tables
3.1 List of software used the thesis . . . 23 3.2 List parameters used in the simulator . . . 29 3.3 Table showing the different GA searches run in the thesis . . 40 4.1 Parameters for amplitude search of sinusoids . . . 43 4.2 Parameters for amplitude and cycle search of sinusoids . . . 46 4.3 Parameters for amplitude and cycles search of the absolute
sinusoids . . . 49 4.4 Intersection of the better performing results in the absolute
sinusoid search. . . 50 5.1 Parameters for GA in single b-spline over entire mesh . . . . 54 5.2 Fitness and genome of the best performing mesh. . . 54 5.3 Parameters for GA in single b-spline over the middle of the
mesh . . . 57 5.4 Fitness and genome of the best performing meshes after
evolution. . . 58 5.5 Parameters for GA in two b-splines over the middle of the
mesh . . . 60 5.6 Fitness and genome of the best performing meshes after
evolution. . . 61 5.7 Parameters for GA in four b-splines over the middle of the
mesh . . . 64 5.8 Fitness and genome of the best performing meshes after
evolution. . . 65 5.9 Parameters for GA for random X and Y coordinates . . . 68 6.1 Results for stretching of the best performing and most
realistic sine-based actuators. . . 72 6.2 Results for stretching of the best performing and most
realistic b-spline-based actuators. . . 74
Part I
Introduction and Background
Chapter 1
Introduction
Throughout human history, we have been seeking to replicate nature and to make machines that act more akin to our surroundings [3, 17, 21].
This is done in order to help us automate tasks we don’t want to do our selves, to put ourselves out of harm’s way in tasks deemed too dangerous for humans[5, 32], or even to do certain tasks faster and better than any human ever could achieve.
The next forefront in robotics does seem to be soft robotics, as they are less susceptible to damage, and also more flexible and thus able to reach spaces previously unreachable to their hard counterparts[40]. Soft robot designs have been tested out and proven to be rather well performing in a lot of use cases. This includes exploration of hostile environments or tight spots [7, 11], such as extraterrestrial bodies or nuclear fallout zones [10]. Further, they have shown great promise with regards to differing medical tasks, such as surgery [15, 27, 36] or prosthetics [44], and they may even prove to be great companions for the elderly[6]. Even further animal-like robots have been created, such as fishes and snakes[1], which use soft robotic actuation in order to generate movement, usually through inflation.
However, many such designs still require the use of more rigid tendons[1, 19] or an outer mesh guiding the motion of actuation in the desired direction, such as the Mckibben actuator, explored in [9]. This may limit the uses for such an actuator and makes the manufacture of such designs more difficult. Thus, applying the generative design paradigm to a single thickness, single material inflatable actuator, would allow simpler manufacture, yielding a cheaper and a more applicable actuation method in soft robotics.
Looking further at nature, generative design through evolution has become a proven method of exploring and exhausting a large and varied search-space quickly. Due to its ease of implementation and intuitive nature, the evolutionary algorithm is an excellent pairing with the design process. Allowing for rapid testing of many different variations through evolution and simulation may yield an optimal design which a human
designer not necessarily would ever think of.
Most of the traditional implementations of such evolutionary design algorithms, use complex simulations in order to find a solution. This is either done using complex FEM simulations, which usually consist of solving difficult partial differential equations to arrive at a solution. Or it is done using a complex three-dimensional mass-spring model, sacrificing some accuracy for a speed increase. However, this thesis proposes that for a significantly thin-walled object, the third dimension in the traditional mass-spring models can be sacrificed, reducing it to a cloth-simulator. This will further increase simulation performance, and yield a faster design process. This type of simulation for this purpose has not previously been explored in any particular extent. The solutions given from this method will not be as accurate as a traditional FEM simulation, and due to the linear springs in the mesh, it is not the most accurate model for simulating silicone rubbers. Yet, the increase in performance may still outweigh this, in that modifications, and new designs can be made faster.
When wanting to design a soft pneumatic actuator(SPA) using this process, a number of preconceptions needed to be made. When using this method, a structurally sound initial mesh is a prerequisite for generating any designs. Furthermore, there are a vast number of potential meshes, and therefore a method for parameterizing the search space was necessary, in order to arrive at sound optimums quickly. As a result, a variety of different parameterizations of an initial base cylinder was used to generate different SPAs.
1.1 Research Goals
The main goal of this thesis is to generatively design an optimally contracting thin-walled actuator. First of all, a mass-spring cloth simulator needs to be developed, then a number of different parameterizations will be used with the simulator in order to achieve optimal contraction. The parameterizations are divided into two approaches. The first approach consists of limiting the surface of the actuator to a couple or just to a single parameter and then searching exhaustively for all different values of each parameter. Three different functions were used with this approach. The first, function used is a sine-function with a single range, with variables amplitudes. Second, a sine-function with both variable ranges as well as variable amplitudes is used. Then thirdly an absolute sine-function is used in order to avoid an intersecting mesh, which happened when using the second sine-function.
Then the second approach is to use a genetic algorithm to search over several different parameters, to find a more complex surface geometry.
First of all, a single b-spline function is applied to the entire surface of the mesh, with the spline control-points being modified by the genetic
algorithm. Further, a b-spline is applied to the middle vertices of the mesh excluding the top and bottom of the actuator. This was also done with a larger genome of two b-splines applied to each half of the actuator, and then done with an even larger genome of four b-splines applied to each quarter of the actuator. Then, at last, a more random approach was used, allowing the genetic algorithm to modify each X and Y coordinate in the mesh to find an optimal surface geometry. Summarizing all of these approaches gives the following goals:
• Implement and test a cloth-based simulator, for modeling inflation of a soft robotic actuator.
• Find the optimal amplitude and sine-function range, for contraction using both a sine-function and an absolute sine-function.
• Find the optimal variable length b-spline(s), applied to the external of the cloth-mesh, using an evolutionary algorithm, for optimal contraction.
• Allow an evolutionary algorithm to evolve each vertex’ X and Y coordinate independently in a cloth-mesh, for optimal contraction.
Looking further at the validity of these results, a closer look was pointed at how well the actuators perform when an external force is applied to both sides, and to see how well they hold their shape when stretched and also how far they are stretched. This can be summarized as:
• Stretch each optimal actuator, to inspect their rigidity, and their ability to hold up in simulated real-world tasks.
1.2 Outline
This thesis consists of four parts, Introduction, The Project, Experiments and Results and, Conclusion and Discussion. Each of these is divided into a number of chapters.
Introduction consists of two chapters, this Introduction, as well as the Background, it contains general background theory, on which the work in this thesis is based, including the generalities of cloth and FEM simulators, evolutionary algorithms and previous works in soft robotics and soft robot design.
The Project consists of a single chapter, Tools and Implementation, it contains a list and short description of the software used in this thesis, as well as explanations on the cloth-simulator and its data-structure, the EA, and how the different optimizations in this thesis are organized and performed.
Experiments and results consist of three chapters, Sinusoids, B-splines and Evolutionary Optimization and Testing the Optimal Actuators. Si- nusoids describe the initial experiments, finding optimal amplitudes and ranges for different sine-based meshes. B-splines and Evolutionary Opti- mization describes the evolution of b-splines and, X and Y coordinates for finding optimally contracting meshes. And Testing the Optimal Actuators consists of stretching the viable optimal actuators from the previous two chapters, testing their rigidity.
The last part consists of a general discussion on the findings as well as a conclusion, then suggestions on future work to be done on this topic.
Chapter 2 Background
Adapting nature in robotics has become a more viable prospect today than it was only a few years ago. From using evolution in their design- process[10, 19] to making robots that mimic not only the looks of nature but also the movement as well as the relative weight and feel as its living counterpart[1]. Soft robotics may prove revolutionary changes in medicine, exploration, robot-human interaction, and many more fields.
However, their design has been proven difficult due to their elastic nature, meaning that such designs are nearly impossible to perfect in the traditional way. Generative design, therefore is a great solution to this problem, only giving a computer a set of constraints and even some optimization parameters. This will, in turn, generate the most optimal design for the constraints and parameters given[25, 28].
2.1 Generative Design
Generative design is a wide term, including all from making aestheti- cally pleasing arts like paintings, music and objects through iterative com- putation[24, 43], to making more useful structures, like actuators[4, 26]
through for instance evolutionary computing. There are a lot of different approaches to take using GD, all with varying amounts of intrusion from the designer in the process. Common for all the differing GD techniques is that a computer is vital to the design process, in order to generate so- lutions matching the criteria of the designer. For an in-depth overview of these techniques, see [41].
In this thesis, we will be looking at the uses of exhaustive and evolutionary local search algorithms in order to find optimal surface geometries of a soft pneumatic actuator. And therefore limiting the generative design problem from that of the entire GD space to only a low intervention and highly optimal solution, taking few artistic liberties.
This type of GD generally consists of two parts; that of the simulation environment and the local search strategy.
2.1.1 Soft Body Simulation
Simulation of the real world can be performed in a lot of different ways through computation, however, the most common type of simulation run these days is the Finite Element Method or FEM. These types of simulations usually consist of one domain being simulated upon. This global domain is then divided into several subdomains, where each subdomain is represented by equations being part of the original domain.
Then systematically recombining all equations from the subdomains into a large set of equations which in turn can be used to solve for the global domain, using the initial values. For an in-depth overview of the FEM simulation method, see [23].
These types of simulations are often very accurate and are therefore the de facto standard used in modern design workflows. However, this accuracy comes with a caveat, FEM simulators are often very taxing on the system they are running on, making it difficult to design on low powered hardware.
However, in the world of real-time simulation and especially game design, the physical linear spring simulator has been used in order to realistically simulate cloth[35]. It has also been altered to simulate soft bodies in driving simulators as well as more complex design tools of soft robots [20]. These methods sacrifice some of the accuracies of FEM in order to significantly improve performance.
Cloth Simulation
There exist several types of cloth simulators, they are generally divided into three:
• Geometric models which treat cloth like a set of cables represented as hyperbolic cosine curves, but these models are usually for generating static images and does not deform like a soft elastic body.
• Secondly we have particle/energy models, which are widely consid- ered the most complex real-time cloth simulation. These are imple- mented as a mesh of points interacting directly, and their individual energy is used to modify the shape of the cloth. These methods are accurate, however, research is still needed to look at the elastic prop- erties of this model.
• The third method of simulating cloth called the physical model. This model functions quite similarly to particles models, but in place of the particles interacting directly through energy, in the physical model, all vertices are connected with Newtonian springs[35].
This allows for a quite accurate deformation as well as a simple implementation.
Focusing on the physical model of cloth simulation, in its simplest form. We start out with a mesh of vertices in a grid. Each vertex has its own initial X, Y, and Z coordinate, and each vertex is connected to the vertices closest to it horizontally, vertically, and even to the vertices above and below the horizontal vertex, as can be seen in Figure 2.1. The connection between the vertices consists of a Newtonian spring with force, F = k·x. Where F denotes the force, k is the spring constant, and x is the change in length between the initial length recorded and the current length calculated. All the forces are added to the vertex, and at the end of the iteration, each vertex is moved to correspond to the magnitude and direction of the sum of the forces in each vertex.
Figure 2.1: Visualization of how the vertices are connected via springs in a mass-spring cloth simulator.
This will, in turn, depending on the choice of spring constantk, where a lowkwill give a highly deformable mesh, and a highkwill yield a stiffer and more rigid mesh.
Altering Cloth Simulator For More Accurate Deformation
Looking closer at the spring constantkin our spring force calculation. This constant can further be altered into behaving more like any soft material like the silicon rubbers often used in soft robotic actuators. By testing the deformation of these kinds of materials, and plotting its elasticity at different loads, a function can be made, taking the change in length, x, and moving the vertex more realistically according to this new elasticity model.
Trying to approximate the stretching of silicone rubbers, using, for instance, an Elastosil tendon and plotting the force applied to either side of the tendon against the length of deformation of the tendon. One can see that an exponential function with cutoff is an applicable approximation of the behavior of a silicone rubber. Thus using this function that sets an exponentially lower constant on the spring until a maximum is reached and then setting the constant gradually higher. This function may be able to closer represent actual rubber compounds in the simulation.
External Forces For Deforming Cloth
In order to deform the object, external forces need to be applied to the cloth-model. This is done by adding an external force-vector to each of the vertices in the mesh wanting to be deformed.
To keep this as accurate and close to the real world as possible the physical formulas derived from nature are used. This means, that if you want to simulate gravity, an external force-vector of −9.81 is applied to every Z coordinate in the cloth-mesh. For accurately simulating gravity a simulated ground would need to be created, or else the object would be indefinitely falling.
Simulating Inflation In [29] internal inflation pressure is looked at similarly to simulating wind internally onto all faces of the mesh. This internal wind force is broken down to its simplest parts, consisting of a normal vector ˆn, which is a normalized force vector pointing outwards or inwards, depending on whether the object is to be inflated or deflated.
Further, this vector is multiplied by the area, Ai of the fragment to be inflated. Then this is multiplied by a pressure value of the material P which generally is a function depending on the current volume of the object being inflated, as well as temperature and the density of the material being used to fill the object. This gives us the following equation for modeling pressure in an object for an arbitrary vertex i:
F~pi =P·nˆi·Ai (2.1) Computing and adding this inflation-formula to each vertex in the cloth-mesh will yield a decent approximation of inflation.
This can further be simplified to a model where only the vector product between the edges of the vertices in the mesh is used. Here the length of each edge substitutes the need for a Ai parameter. The pressure constant is removed altogether, as accurately simulating the exact pressure of a gas is not necessary for producing inflation. Thus the inflation problem can be simplified to just being the vector product between each edge in the mesh. Figure 2.2 shows how inflation is performed for one vertex doing this approximation.
Figure 2.2: Here the vector product between two edges(red) used to approximate the inflation force(orange) of a single vertex in a mesh.
Constraints On Cloth Deformation When cloth-simulating it is impor- tant to constrain the movements of some vertices in order for the object to maintain its shape. As the object is completely soft, adding external forces will deform every vertex in the mesh. Therefore some of the vertices in the mesh will be needed to remain fixed, or just updated in a single direction in order to allow for correctly simulated inflation.
Curving a Line Segment in Two Dimensions In Computer-aided design(CAD), it is often necessary to curve a straight line-segment curve.
Initially, it may be sufficient to transform the segment through a function e.g. A·sin(x). However, these kinds of function become difficult to use when a curve is unable to be approximated through a sine-function alone.
Further, the sine-function requires several variables, not only the selected amplitude, but also what segment of the sine-function one want to use, one-half cycle, or five?
One solution in overcoming the limitations of curving using a single function is to implement a spline. A spline is in computer graphics usually referred to as a piecewise polynomial parametric curve, these are used due to their ease of implementation, and are a powerful way to approximate complex shapes[16]. More specifically a b-spline or basis-spline allows the continuity of interpolation of a more generalized spline, condensed into a simple blending function (2.2). A line segment is controlled by a series of at least 4, one dimensional control points, which will pull the line in different directions, smoothing in between the different control points, yielding a smooth curved line. This allows for fewer constraints when designing with digital aides.
P(u) = 1 6
u3
−3u3+3u2+3u+1 3u3−6u2+4
−u3+3u2−3u+1
B3 B2 B1 B0
(2.2)
A b-spline line can represent further complexity by adding more control points, this is done by calculating a new spline line using the previous last three control points and a new 5th control point and then using the b-spline function in order to calculate the next segment of the line. This is done until the desired line complexity is achieved
2.1.2 Local Search
A local search is a heuristic method for solving computationally hard problems, it works by testing a lot of solutions, and then selecting the solution which maximizes a criterion. Then moving on, it makes slight alterations to the best performing solution in order to find a more optimal solution.
As the second part of the design process, the local search algorithm is concerned with the evaluation as well as the optimization and design of the object. For a local search, the representation of an object is simplified to a few crucial parameters, these parameters are then used together with a simulator in order to find an optimal solution to the problem.
Evolutionary Algorithms
Evolutionary algorithms(EAs) are a subset of Evolutionary comput- ing(EC).
Generally, all EAs performs a search by iteratively making modifica- tions to a set or population of potential solutions to a given problem, in order to reach an optimum. The modifications are done through the ge- netic operators crossover and mutation, they may be used one at a time or in unison. After such changes have been made, all the potential solu- tions are evaluated, and then go through a selection process, where the best performing solutions are selected for the next generation. This pro- cess is repeated until an exit criterion is reached, usually, a set number of generations or a satisfactory fitness is reached. A figure showing this pro- cess can be seen in 2.3. For a more in-depth overview of EAs and different EA techniques, see [2].
Set of potential solutions is
generated
Evaluating and selecting best performing solutions
Applying genetic operators (mutation/crossover)
Terminate?
Yes
No
Figure 2.3: This flowchart shows how a EA is usually run, including the initiation, genetic parameters, selection and termination.
EAs have over the years become a staple in local optimization strategies and machine learning. Due to its ability to perform fast searches in very large search-spaces, that require satisfactory, but not optimal results. Its ease of implementation also allows rapid integration in a vast array of different problems, making it a widely used optimization strategy.
Parameters in Evolutionary Algorithms Looking closer at the EA, there are many different parameters and algorithms to use in order to reach an optimum. However, most EAs, as mentioned, consists of a selection, a crossover, and a mutation-parameter. In this thesis, tournament selection, with n-point crossover is used, and therefore these techniques will be covered in this background. For different methods in performing
selection, crossover and mutation, see [45] [2].
Tournament Selection Along with roulette wheel selection, tournament selection is one of the most used traditional selection-algorithms in evolutionary algorithms. Borrowing from nature in that random selections of the entire population is tested against one another, instead of the entire population at large. The idea is that this will allow less optimal genomes, but that with small changes maybe surpass the optimal solution in the current population, to prevail long enough for it to gain those attributes.
Tournament selection consists of selecting k random individuals out of a given population, and then selecting the best-fit individual with a probability p, then choose the second best individual with a chance p· (1−p), and then the nth individual with a chance p·(1−p)n. The winner of the selection is then selected for possible crossover and mutation, for the next generation.
This way genetic diversity is maintained by the selections ability to select an unfit solution for recombination. Maintained by there both being a chance of only selecting unfit solutions for crossover/mutation, and also in selecting an unfit solution in the tournament. However, the high probability of selecting a fitter solution will push the population to an optimum.
Further, selection pressure is also set indirectly through the tournament size. A large tournament size will have a high chance of selecting both good and low fitness individuals, sifting away the badly fit individuals quicker, and in turn, converging faster. However, faster convergence and lower diversity may also quickly lead to a local optimum instead of a global, therefore the tournament size is often set quite low in order to maintain the genetic diversity throughout the evolutionary run.
N-point Crossover Also borrowed from nature and biology, an n- point crossover needs two parent individuals, which are recombined by selecting nrandom crossover points in their genomes. Then two children are created combining the parents’ genomes between the set crossover points. This has both in nature and computer science been proven an effective measure in both keeping well-performing traits in each of the individuals, as well as exploring new areas of the search space. For visualization of how a specific two-point crossover is performed, see Figure 2.4
Different Types of Evolutionary Algorithms
Evolutionary Algorithms are a wide topic with many different algorithms being optimal for a variety of problems. In this thesis mostly a modified VLG, with a genetic algorithm is used[18]. However, also evolution
Two-point crossover
Crossover Points Parents
Children
Figure 2.4: Visualization of a two point crossover
strategies can be an applicable way of solving the generative design problem.
Evolution Strategies Evolution strategies or ES, were initially not introduced as an evolutionary strategy at all, but rather a way of optimizing continuous functions using Gaussian noise as a mutation-like parameter. This mutation was implemented as adding or subtracting a random amount gathered from a zero mean, σ2 distribution. However, combined with evolution these methods became vastly more powerful.
Today, ES are used in a variety of optimization tasks and are now also used in combination population searches. Many different types of EAs were introduced such as (µ,λ)-ES, and (µ+λ)-ES. Hereµ is the number of parents and λis the number of children. Where the comma denotes the use of only the children, and the plus the use of both parents and offspring.
Usually, the σ-parameter in mutation is calculated based on the diversity in each generation, making the mutation self-adaptive.
Variable Dimensionality Genomes The most widely used EA ap- proaches, like GA and ES, typically have difficulties performing well in search spaces of varying dimensionality, due to their fixed genome repre- sentations. Examples of these kinds of problems include finding an op- timal network topology in neural networks layers, or in finding optimal complexity in the topology of a soft actuator.
In [18], a method was created in order to optimize over variable dimensionality search spaces, trying to make a more realistic genetic model further based on human genetic evolution. A mutation-like function was implemented in order to add or subtract a random gene in the genome. Proving that it takes significantly longer time to evolve a variable genome than a fixed, and further that a variable genome potentially becomes indefinitely large. However, in most search spaces a local optimum was often reached, but exhausting the search space properly is quite difficult.
Local Search And Fitness-Landscapes
Introduced by evolutionary biologists in the 1930s, fitness-landscapes are a way of visualizing the search-space of fitness given several external parameters[47]. The fitness-landscape of a problem is usually represented as a landscape of valleys and peaks, valleys indicating a lower fitness and peaks a higher fitness.
When running an EA, which is stochastic in nature, there is no way of telling where in this landscape we are starting out. We may start close to a global peak, on the very bottom of a valley. Encapsulating this problem is the no free lunch theorem[46], telling us that search time is highly dependent on where in the fitness-landscape we start.
This can be mitigated somewhat by running several local searches with the same parameters, averaging the best fitness yielded from each run. However, there is no way of completely finding out whether one’s solutions is the global optimum or not.
Evaluating the Performance of EAs As previously mentioned the mean best fitness is a good measure for the performance of an evolutionary algorithm, averaging all the best results after each run. There are also measures as success-rate, where a definition of success is defined beforehand and a run is successful if that definition is met during evolution. Using the same definition of successfulness, a measure of efficiency can be defined. This measure is the average number of
evaluation to a solution and is calculated as the average number of evaluations performed before the solution criterium is met.
These are, however, not the only way of looking at performance in EAs. Measures based on averaging results are often great when you are looking at generalizing an algorithm for an easily repeatable environment where a rather optimal solution is to be found consistently. But when it comes to the design-problem, often peak performance is a better measure of performance., than the average, as a design is only to be made one.
Visualizing EA Performance Visualizing the run of the EA is often interesting, in order to see how rapid the best solutions converge from the first to the last generation. This is usually done through plotting the best and average fitness per generation, yielding a progress-curve.
Doing this for equal EA runs will give us a good indication of the average performance and efficiency of the optimization.
Further, the standard deviation for all individuals in a specific generation can also be plotted, giving us some idea of the robustness of our algorithm. A stable low standard deviation often indicates high robustness, due to the inherent closeness in our results.
2.1.3 Generative/Evolutionary Design Challenges
Although Generative design shows great promise, especially in the world of robotics and in particular soft-robotics. There are a few challenges to overcome before these types of design techniques become widespread.
First of all, in GD, there are usually a lot of parameters in play, such as different environments for the robots to be tested in, etc. This does make convergence on a great solution hard, requiring a lot of computation- power in order to simulate each and every individual.
Secondly, it is very hard to design a perfect simulator for a given problem. This means that there is always a discrepancy between the real world and what is done in the simulator. Known as the reality gap this may lead to the evolutionary algorithm exploiting an error in the simulations environment, optimizing a solution that simulates well, but performs poorly. This can be overcome by adding noise to the simulation environment[30], that is, randomly changing the variables used in the simulation by a small amount during the run. Giving a more blurry but perhaps more real-world accurate metrics of fitness.
Further, a more obvious way of getting more accurate results from a simulator is to run Monte Carlo simulations for each individual, that is, running several simulations with different parameter values for each simulation, choosing the mean value or something similarly as fitness for the individual. This will, in turn, create a more accurate simulation- environment. However, Monte Carlo simulations are notoriously difficult
to run, and given that the simulation often is the bottleneck of a GD- algorithm, a lot of computation-power is needed before this is a viable option.
2.2 Soft Robotics
Although a relatively new field in its current form, soft robots have been envisioned for a long time, initially just through actuation, but later also as fully soft-bodied robots. They have been proven to have nearly infinite degrees of freedom allowing them to perform tasks typical robots can’t do. Although a lot of work has been done on entirely soft robots, the most promising works today are based on creating optimal actuation in a single actuator or muscle, usually through a bending motion.
2.2.1 Actuation
Soft robots can be actuated in many different ways, ranging from pumping fluid into an elastic body to passing current through a wire making it contract. However, the target of this thesis are actuators that do their work being inflated, either pneumatically or hydraulically. Traditionally there are two different ways this has been achieved, through Pneumatically actuated muscles(PAMs) or Fluid Elastomer Actuators(FEAs).
PAM
Developed in the 1950s and 60s, the PAM or McKibben muscles were intended to be used as the muscles in future artificial limbs. They consist of a bladder that is to be filled with air, as well as a braided mesh surrounding the bladder. When the bladder is pressurized, the mesh will force it to contract, yielding a very lightweight and quite powerful actuator, in a pressure range where normal pneumatics are ineffective .[9]
As it behaves quite similarly to human muscle a number of artificial limb projects and exoskeletons have been created, implementing these kinds of muscles. However in their current state, often a heavy air- compressor is needed in order to make these kinds of systems work, this may be mitigated with more complex closed loop, high-pressure systems.
Further, in [12], a design was created omitting the traditional mesh, often associated with PAMs. Called a pleated PAM, it is just a membrane consisting of several pleats from the top to the bottom of the actuator.
When inflated this the pleats will fold outward, yielding up to 50%
contraction.
Figure 2.5: Design and concept of a pleated PAM from [12]. Shows in (a) the muscle uninflated and in (b) inflated, along intersections of the muscle at various stages in the inflation as well as in different places during inflation.
FEA
In more recent years it has been more common to bake the actuation into the body of the robot itself. Known as a fluid elastomer actuator, these actuators are based on either pneumatics or hydraulics and either through clever chamber placement in the material or a less deformable wall in the actuator movement is generated in a predetermined direction.
2.2.2 Recent work in Generative Design of Robots, And Soft Robot Design
Adding to what is previously mentioned, a lot of work has been done in the field of soft robots and actuator designs.
Evolutionary Robotics
In the world of generative design, there has been done a lot of work evolving optimal robotic limbs, etc. for designing robots that move optimally, which have yielded good results[39]. Work has also been done on coevolving the design and gait of robots[37].
VoxCAD
Developed by H. Lipson and J. Hiller at Cornell University, VoxCAD is a voxel-based design framework and simulator for soft robots. It allows for easy design and simulated testing of soft robots, making it ideal for evolutionary design. A number of designs have been evolved using this framework, all from allowing the evolution to be run with one criteria of forwards movement, creating a slithering blob[19], to evolving optimal soft quadropods[10].
Figure 2.6: Times series example of movement of an evolved and manufactured soft robot using VoxCAD in [19].
Figure 2.7: Times series example of movement of an evolved soft robot using VoxCAD in [26].
To be an effective design tool, speed is an important part of VoxCAD, as well as high deformability, therefore a mass-spring model simulator was implemented. Each voxel has a set of masses and springs along with a few constraints which allow each voxel to simulate different materials, and different pressures. For an in-depth explanation of the VoxCAD simulator and its accuracy, I refer to the original paper[26].
In order to be able to evolve robots using this framework, a genome needs to be implemented that represents each robot. Doing this randomly will yield a lot of noisy, odd-looking solutions. Thus the CPPN/NEAT algorithm[42] was used, this is a neural network with a lot of different actuation functions, used to create more uniform, yet random solutions.
This yielded robots who evolved the traits of legs and a galloping motion[8].
However, some of the problems with this approach are the inherit blocky designs of the solutions given, which are difficult to mold into soft robots in the real world. As well, using various materials in different parts of the robots, are also difficult to implement. Due to the inherit blocky nature of voxels, it is difficult to design and test uniform robots or actuators often associated with soft robots and soft robotic actuation.
Harvard Soft Robotics Lab
A more traditional route was taken in developing the soft robotics toolkit at Harvard/Trinity. Here a toolkit was made in order to allow students and others, to design, model and create soft robotic actuators in particular[22]. A few python scripts were created to make a design- template. And the commercial FEM-simulator Abaqus™ was used to model deformations. A number of papers were published, including, investigating the use of FEM simulators in the design of soft robots[31]
and the use of rigid and semi-rigid outer shells of soft pneumatic actuators(SPAs) to guide its motion in particular ways, and designs were published showing the effects of these[34].
Mckibben Actuators and Prosthetics
In [44], PAMs were used to make an exoskeleton able to mimic the 7 DOF of a human hand. The PAMs allowed for relatively lightweight construction (<2kg) so that it was not too intrusive on the user. With use cases especially for rehabilitation of upper-body and especially the arms.
Other Evolutionary Soft Robot Designs
Figure 2.8: This figure shows the best initial solution, versus the best evolved solution, when bending a FEA in [38]
Like a lot of the work done at Harward, [38], makes use of the commercial FEM- simulator Abaqus™ , and teams it up with a genetic algorithm in order to find the optimal number and size of chambers to optimally bend a SPA. Allowing the bend to be optimized for around 90 degrees to almost 180 degrees. Showing that limiting the search space of a GA often can make it evolve a quite optimal solution to an even more optimized one.
Figure 2.9: The fish-like robot from [1]. The figure shows the movements enabled from the FEA, and the speed of movement.
Further, soft robotic designs have been used effectively to mimic nature, in [1] a robotic fish was created. It is a contained system, containing a small compressor and a compartmentalized tail allowing different parts of the tail to be inflated to generate movement. The different chambers were analytically optimized in order to allow for maximum movement.
The fish was able to swim around in a tank of water and was also able to perform evasive maneuvers like its natural counterpart.
Part II
The Project
Chapter 3
Tools and Implementation
This chapter consists of two parts, Software and Tools, and, Implementa- tion and Setup. Software and Tools is a brief section about the software used in this thesis, with a brief introduction about the lesser known soft- ware used in this thesis. While the section Implementation and Setup goes over how the simulator and searches were implemented along with how the experiments were performed.
3.1 Software and Tools
Tool Usecase Version
Apple Xcode Development Environment 10.0
Open Frameworks Graphics Engine 1.00
DEAP Genetic Algorithm Framework 1.2.2
Matplotlib Graphs and Plots 2.1.2
Adobe Illustrator Figures & Diagrams 16.0.0
Adobe Photoshop Photo Editing 13.0
Table 3.1: List of software used the thesis
3.1.1 Open Frameworks
Open Frameworks is an open source C++ framework for "creative coding".
It was released by Zachary Lieberman on August 3, 2005, and is being maintained by Lieberman, Watson, and Castro. Its goal is to be a simple, yet powerful way to interact with graphics and other creative aspects of computing and to be portable across all three major operating systems [33]. Open Frameworks is distributed under the MIT open source software License.
Open Frameworks is an alternative to the creative-coding framework Processing, which uses the Java VM as a basis for its computation. It was chosen over Processing for this task, as it allowed for a more direct
connection to the hardware and therefore a slight speedup, due to its C++
nature.
In this thesis, open frameworks mainly will be used to debug and to look at the meshes as they are simulated. As well, open frameworks was used to create the figures of the meshes seen in this thesis.
3.1.2 DEAP
DEAP (Distributed Evolutionary Algorithms in Python), is a novel computational framework for rapid prototyping and for testing ideas. It seeks to make algorithms explicit and data-structures transparent. It is developed and maintained by François-Michel De Rainville, Félix-Antoine Fortin, Christian Gagné, Olivier Gagnon, Marc-André Gardner, Simon Grenier, Yannick Hold-Geoffroy and Marc Parizeau at the Computer Vision and Systems Laboratory (CVSL) at Université Laval in Quebec City, Canada. [13] [14]
DEAP was chosen for this thesis, due to its modular implementation, this made it easy to use a variety of different genomes without any modifications to the base framework at all. This modularity also allowed for simple implementation of genetic operators for the very specific tasks needed in this work.
3.2 Implementation and setup
This section consists of two main parts. The software implementation of the simulation, evaluation and optimization/search environment and the choices made in the development of these systems. The second part is about how this system was used to run the experiments.
It is worth noting that the terms EA and GA are used somewhat interchangeably in the remainder of this thesis. This is due to the fact that the "GA" in this thesis, does not adhere to some of the practices often attributed to the general GA, like the use of crossover as the main genetic operator or the use of strictly binary genomes. Similarly the last "GA"
used in this thesis uses both Gaussian noise as the mutation operator and floating point genomes, often solely attributed to the evolution strategy algorithm. However as no inherit population strategy is used in this algorithm as well as it is relying on the crossover as the main genetic operator, the term GA or EA is also used when talking about this algorithm.
3.2.1 Simulator
The simulator is a 2D mass-spring simulator otherwise known as a cloth- simulator. The simulator was made with a focus on speed, so that a
number of simulations can be run as fast as possible, even on lower tier hardware. Each object in the simulator is set up by using the same 30 by 30 vertex base cylinder, which will allow for similarity in the shapes that are simulated.
Mesh
Figure 3.1: Visualization of the internal mesh structure, with i representing the ith vertex in the mesh, and R is the number of vertices around each spiral in the mesh.
The mesh consists of 900 vertices that are all connected with springs to all other adjacent vertices. This means that vertex i is connected to its neighbori+1, the vertex abovei+R, as well as the neighbors to the above point i+R−1 and i+R+1, where R is the number of vertices around the mesh i.e. the resolution. A visualization of this mesh can be seen in Figure 3.1
Initial base cylinder creation Initialization is performed by a routine that twists each vertex around a given radius to the top. A base radius, r, is given, and is set to 1. The resolution, R, is the number of vertices in one twist around the radius of the cylinder. The height is the total amount of vertices from one vertex at the bottom to the adjacent vertex on top. It was chosen an identical value of 30 for both the resolution and the height, resulting in 900 vertices. The height of each vertex is incremented by R1, to make quite similar lengths in between each vertex. This will yield a twisting cylinder with a radius r, which can be concretized mathematically as the following equation:
M[i] =
X[i] = r∗sin(2π· Ri) Y[i] =r∗cos(2π· Ri) Z[i] = ∑in=0R1
(3.1)
Internal Forces
All of the vertices are connected physically through Newtonian springs.
The force of the spring isF=k·xwhereFis the contracting force between the vertices. kis a constant, which for all intent and purposes is set to 0.01, and xis the change in distance between the vertices, from one iteration to the next. This means that the internal forces will increase with deformation while trying to keep the mesh in its original state. This will also make the mesh snap back to a shape resembling its original state when external forces are disabled. The internal forces are added to all the vertices in the mesh. However, for the top and bottom two spirals of the mesh, only the internal forces are added in the Z(up/down) direction. This is in order to simulate clamps holding the actuator in both sides and is visualized in Figure 3.2
Figure 3.2: Visualization of how the internal forces are added to the mesh.
In the yellow part of the figure, only the Z-coordinate is allowed to be moved. In the green part of the figure, free movement in all directions is allowed.
External Forces
The external forces are all the forces that are not produced as a result of the mesh’s movement. Rather the external forces are the forces used to move the mesh in any direction, whether this is inflating, pushing or pulling.
Inflation External forces for inflation are calculated as shown in equation 2.1 in chapter 2. To sum this up, the external forces are calculated as the cross product between the vector branching from vertex i to vertex i+1, and the vector branching from vertex i to vertex i+R, where R is the resolution one spiral around the mesh. The external forces are only calculated on the middle vertices, that is, not on the top and bottom two spirals of the mesh, as with the internal Z force. This is to have vertices in the top and bottom holding the mesh together, to mimic the way an actuator is being fixed in between two points of actuation, illustrated to the left in Figure 3.3. The cross product function is used as it is directly impacted by the area of each of the vectors making it up, as well as it is perpendicular to the surface of the vectors. This was done as it was not deemed necessary to have accurate pressure models in this simulation, and a simple inflation model would do for simulating soft actuator performance in this thesis.
Figure 3.3: Visualization of how the external forces are added to the mesh, in both illustrations the green part represent where forces are applied, and the red part represents where no external force is applied. In the figure on the left, the vector represents the inflation force applied to the cylinder.
And in the right cylinder, the two vectors represent the pull applied to all the top and bottom vertices.
Pull In a realistic scenario, the actuator will be placed between two joints in a fixed position, leading to the actuator being pulled between these two parts. Therefore a function was implemented in order to find out how much flex there is in the optimally contracting mesh. This was implemented by pulling the top row of points in the Z direction as well as applying a similar pull to the bottom row of the mesh, in the opposite Z direction. As can be seen in the second illustration in Figure 3.3.
Iteration in Simulator
Taking all of these calculations together, a working cloths simulator, that is able to pull and inflate a mesh, was set up. Figure 3.4 shows the loop of one iteration in the simulator. First, all of the internal forces are calculated, that is, all the spring forces are calculated for each of the vertices in the mesh.
Then these values are added to the force-vector of each vertex. Second, all the external forces are calculated and are added to the same force-vector for each vertex. When this is done the vertex is moved to the end-point of the force vector, and the force-vector is again set to zero for the next iteration.
Calculate internal spring forces
Calculate external forces
Move vertex in accordance with
forces
Set all forces to zero
Figure 3.4: Here one simulation run is visualized.
Spring Constants and Convergence Factors
In the early days of the simulator an arbitrary number of simulation- iterations, set to 10,000 was run in order to make a consistent starting point. The number of iterations was picked because it allows for possible avoidance of large spring-constants, thus making the simulation more resistant to unnatural fluctuations and ripples in the structure. Therefore all internal constants in the mesh are being optimized for running these 10,000 iterations. These may be changed to speed up the run-time, however, this was not done, as the simulator is performing rather well even given such many iterations.
The internal spring-constants between the vertices are set to 0.01, and the overall convergence factor of 0.07 is multiplied to all the forces before the vertices are moved. Further, to all inflation forces, a constant of 0.005 is added to all the vector product calculations, in order to limit the deformation and allowing the simulation to converge at roughly 10,000 iterations.
Constant Value
Spring Constant 0.01 Convergence Overall 0.07 Convergence External Forces 0.005 Table 3.2: List parameters used in the simulator Data structure
The mesh consists of a one-dimensional vector of vertices, where each vertex is an object consisting of its X, Y and Z coordinate. The object also contains the internal forces in the X, Y, and Z direction i.e. the way it should be moved at the end of the iteration.
The connected vertices are stored in three different two-dimensional integer vectors, one for horizontal edges, one for vertical edges and one for all the cross-edges. The indices of each vertex in the vertex vector, each correspond to an edge in the different edge vectors.
Then, corresponding to the indices of the edges in the edge-arrays, three different lengths-vectors are created, one each for horizontal, vertical and crossing edges. The calculated lengths are being stored at the same index as that of the corresponding edge-vectors. Figure 3.5 presents this data structure visually, as well as the functions used for simulation.
Networking and Python Setup Scripts
All of the genetic algorithms, and the mesh generation, etc. are run in an external Python environment, for ease of implementation. From the
Vertex X: double Y: double Z: double Force_X: double Force_Y: double Force_Z: double
Vector<Vertex>
0..*
Obj Vertices: Vector<Vertex>
Horizontal_Edges: Vector<Array, 2>
Vertical_Edges: Vector<Array,2>
Cross_Edges: Vector<Array,2>
Horizontal_Lengths: Vector<double,2>
Vertical_Lengths: Vector<double,2>
Cross_Lengths: Vector<double,2>
External_Forces: bool External_Forces_Pull: bool
0..1
set_new_vertex(array<3>) add_to_vertex(array<3>) set_new_force(array<3>) add_to_force(array<3>) get_vertex(void): array<3>
get_force(void): array<3>
add_vector_force(void) run_one_sim(void) external_forces(void) pull_down(void)
set_external_forces(void) set_pull_down(void)
Figure 3.5: Here a UML-like diagram shows how the simulator data structure, alongside a few key functions were implemented. Vectors are assumed to be of "infinite" length, and therefore the <double, 2> syntax means that there is an array of doubles of size 2 in each space in the vector.
Python environment, each mesh is sent to the simulator using a local TCP server. The GA is entirely contained on the Python-end, initializing, selecting, mutating, etc. However, in the evaluation step, each mesh is sent over local TCP to the simulator-server as a string of floating point numbers being separated by a whitespace. The mesh is parsed and a new simulatable object is then created and simulated in the server. After 10,000 iterations of simulation, the object is parsed to a new string of its coordinates, separated by whitespaces, sent to the python-script, parsed on the client-end and the fitness is evaluated. This is repeated for every specimen being tested.
Parallelization Parallelization is not implemented in this thesis, but changing the client-server structure, to the server being the Python-script and the client being the simulator. A Python-script can initiate several simulators, and thus parallelizing the workload over more CPUs. This can also further be improved to having the simulator run on a different machine entirely from the script. This will make the simulator able run on external, even more, powerful machines.
Further, without making any changes to the software. Parallelization can be achieved using more than one instance of the cloth-simulator at the same time, thereby connecting it to more Python-scripts on different ports.
E.g. to run several GAs with small alterations, to find the most optimal parameters, doing this at the same time it takes to run just a single GA.
3.2.2 Fitness
Fitness calculations are done for every individual being evaluated. A function was implemented in order to get a good measure on how each individual contracts.
Fitness Calculations
To maintain a consistent framework for all the different searches, a single fitness function was used for all measurements. After 10,000 simulator iterations, the fitness was calculated. The function was implemented as the change in the average Z-coordinate from the bottom, subtracted by the change in the average of Z-coordinates from the top, from the initial mesh to the inflated mesh. This will result in a fitness function returning a single value, making this a one-max optimization problem. More formally the fitness function is:
F = (
∑
R i=0V(z)i)/R−(((
H·R i=(H
∑
−1)·RV(z)i)/R)−(H−1)) (3.2) Here V(z)i is the Z-coordinate of vertex i, R is the resolution of spiral around the cylinder, and H is the height of the structure. For a closer description of how the fitness is calculated, see Figure 3.6
Necessity of Maintaining a Standard Height and Radius Due to the way external forces are calculated, and the constant resolution of the mesh.
A larger radius at certain points will lead to the mesh consisting of larger areas between certain vertices. This will again lead to larger external forces being calculated due to the area being greater in between some vertices. There will be an inconsistent readout after running the same amount of simulation iterations. However, as it is impossible to fully mitigate this under the current setup of the simulator, this needed to be
z
o x
y h_orig
h_new
delta_h
b_new
b_orig
delta_b
F=delta_h+delta_b
Figure 3.6: Here a visualization of the fitness calculation is presented.
delta_h is the difference in height from the top after a given number of simulations have been run, and delta_b is the difference in height from the bottom. The sum of these two deltas is the fitness.
taken into consideration when representations of the structures were being developed. Therefore, large differences in radii were tried to be avoided prior to the genome-representation of the mesh was constructed, i.e not using too large amplitude for a sine-function.
A taller structure will also lead to inconsistencies in the results. Because a taller structure has more vertices in the Z-direction. This will lead to different internal forces in the mesh, yielding different results when simulating. Therefore a standard height of 30 was used, translating to a height-resolution of 30 vertices, with each vertex having a default area of 1 in between its neighbors.
Limitations of This Fitness-Function This way of calculating the fitness is a simple and intuitive way of turning the problem of optimal contraction into a single fitness-value. However, there are a number of limitations to
this approach. First of all, the fitness-function does not take into account potential twists and turns the mesh performs during inflation. This means that a bending motion may be perceived as a better solution, than a regular contracting actuator.
Secondly, as collision detection was not implemented into the cloth simulation, a mesh which intersects itself during simulation may perform vastly better than a mesh not doing so. Meaning that an unrealistic solution may be rewarded disproportionately well. This can be accounted for by using penalties, i.e. looking at the spread in all of the Z-coordinates and then penalizing the fitness of wider spreads. However, this was not implemented in the fitness function.
Awareness of these limitations is necessary when parameterizing the search-space in order to avoid unrealistic or invalid solutions to our problem.
3.2.3 Limiting the Search Space
Before performing generative design, it is necessary to limit our search space into smaller parts. This is due to the very large potential search space, as 900 different three-dimensional floating points may be arranged in near an infinite amount of positions.
First of all, a limited starting point of a 30 by 30 cylinder with a radius of 1 was selected as a base for all experiments. This cylinder was going to be modified in many ways. Starting with multiplying the radii of the different heights in the cylinder with a sine function. This will create an actuator reminiscent of traditional soft actuator designs, which will allow for exhaustive tests of many different amplitudes for the sine-function until an optimal amplitude is found. Further, this exhaustive search will be expanded upon, testing different ranges of the sine-function, as well as using the absolute-sine-function. This will allow us to test different amplitudes of the sine-function, along with a number of actuators in series, expanding the search-space further.
Looking to expand the search-space even further. A b-spline with a varying amount of control-points to was used to allow for evaluation of an even larger search-space. However, this search-space is now too large for exhaustive exploration, therefore a GA will be used. The base cylinder will be multiplied a single b-spline, testing uniform shapes of our actuator. Then the cylinder will be divided into two and four with each side being represented by a single b-spline of varying length, to see if a regular uniform b-spline or a more complex shape is more optimal.
Then, at last, a GA will be used to look for an optimal solution in the entire search space. Starting with the base cylinder, Gaussian noise will be added in the X and Y direction for each vertex. This is done to find an optimal solution in this extremely large space.