Final Update
September 2, 2009


We all just finished up our end-of-period surveys and phone interviews, and had very positive things to say. The MRO-W program was a great experience for all of us who were involved. The multidisciplinary aspect of the project was unique in that we were given the opportunity to interact with both the biology and computer science groups involved in the project. We discovered aspects of both fields that we had never been exposed to before, and getting to work in both departments opened our eyes to the challenges of multidisciplinary work, such as keeping up-to-date with each of the different parts of the project, and developing common vocabulary so that individuals of different backgrounds could understand and contribute to others' work.

One of the great end results for all of us was a publication for the work we completed on PhysX. The paper is entitled "Evolving Soft Robotic Locomotion in PhysX", and was published in the 2009 GECCO (Genetic and Evolutionary Compution Conference) Proceedings. The conference took place in Montrél, Québec this summer.


Weeks 34 - 35
April 29, 2009



NO MEETINGS - READING PERIOD & FINALS



Week 33
April 22, 2009


Shilpa & Harvey: Continued work on previous project. Worked to understand and locate the existing functions responsible for muscle control in the soft-bodied organism, and where to optimally place new function.

Lauren & Neha: ---

Week 32
April 15, 2009


Shilpa & Harvey: Began work on a new project in PhysX. The soft-material robot has 6 legs (L1, L2, L3, R1, R2, R3) controlled by contracting corresponding muscles (mL1, mL2, mL3, mR1, mR2, mR3). If given a tab-delineated file with 0s and 1s indicating whether the muscle is being contracted or not at each time step, create a function to input this information and control the gates appropriately.

Lauren & Neha: ---

Week 31
April 8, 2009


Shilpa & Harvey: Organized and fixed axes on all plots for proper comparison between stretching behavior of the soft body and for eventual publication in a paper about how the PhysX physics rendering engine actually follows certain laws of physics (with the tests as evidence).

Lauren & Neha: ---

Week 30
April 1, 2009


Shilpa & Harvey: Determined initial height of soft body without weight attached (length for "5x20" was ~20.01cm, length for "5x30" was ~30.03cm, and length for "10x20" was ~19.97cm), and then determined delta-L for each stretchingStiffness. Plotted delta-L for each mesh detail at each orientation and stretchingStiffness.

Lauren & Neha: ---

Week 29
March 25, 2009


Shilpa & Harvey: Repeated stretching simulations for the same cloth orientations, except with low (10) and medium (50) mesh values to determine effect of mesh size on movement of the soft body. Determined vertex count for each cloth orientation (5x20x0.5cm, 5x30x0.5cm, 10x20x0.5cm) at each mesh value (99, 50, 10) and concluded that mesh value does not directly correlate to vertex count.

Lauren & Neha: ---

Week 28
March 18, 2009



NO MEETING - SPRING BREAK              



Week 27
March 11, 2009


Shilpa & Harvey: Found connecting vertex points (7 each) for the 5x20x0.5cm, 10x20x0.5cm, and 5x30x0.5cm cloths with a high (99) mesh value. Ran simulations by attaching a constant weight to each soft body and changing the stretchingStiffness value from 0.2, 0.4, 0.6, 0.8, 0.9, and 1.0.

Lauren & Neha: ---

Week 26
March 4, 2009


Shilpa & Harvey: Learned the data flow process to generate new mesh objects in PhysX. Using the STL files made by Ethan (mechanical engineer), created mesh objects in PhysX in order to view the behavior of the soft material. Changed naming scheme of "dump files" in order to specify stretchingStiffness and graph results. Made a Wiki (link soon) with necessary information on naming schemes, new functions to be written, and current (potential) problems.

Lauren & Neha: Met with Professor Luis Dorfmann, an expert on using and understanding the physics of Abaqus, to get a better idea of how to proceed and potentially link performance of Abaqus to variables and settings in PhysX. Problem: Given a 5x20 sheet of stretchy soft material, how far does it stretch when a certain weight is attached to it? What about a 10x10 sheet (same area, but half the length), and a 10x20 sheet (same length, but twice the area)? Are these values the same as what is expected by the laws of physics?

Week 25
February 23, 2009


Shilpa & Harvey: Viewed SoftBot virtual program in PhysX and noted (with pleasure) how quickly the program loaded, compiled, and ran on the new machines at 200 Boston Ave. Looked at sample "data dump" files and observed possible potential graphs and how to determine thefinal resting value (taking the average) of the weight in order to find the change in length of the material.

Lauren & Neha: Got Abaqus to run on Linux machines.

Week 24
February 16, 2009


NO MEETING - PRESIDENTS' DAY

Shilpa & Harvey: Finally got John's Visual Studio "Samples" solution file to run by compiling with VS. Met with John Wednesday afternoon to go over which parameters to change in program, where to dump output from program, and how best to store data (.xls, .txt, etc.). Got card access to 200 Boston Ave.

Lauren & Neha: ---

Week 23
February 9, 2009


Shilpa & Harvey: Met with John Rieffel on Tuesday to get a better understanding of what needs to be done. Code has been written in C++ for PhysX that models a system: 5cm x 20cm strip of silk material (material of choice for soft-bodied robots), anchored at one end and with a varying-sized weight on the other. Update size of weight and spring capacity to generate data in order to find the constant k in Force = k*x.

Lauren & Neha: Worked to try and get Abaqus running on the Linux machines. Noted differences between GUI version of Abaqus (seen last week) and command line program. Try to make gains toward correctly simulating the motion of the caterpillar by inputting true values and matching expected output to actual observed motion of caterpillar.

Week 22
February 2, 2009


Shilpa & Harvey: Met to discuss overall project, goals, and set up a schedule to find mutally convenient meeting times. Listed problems we both we having with PhysX to attempt to work through them together (problems such as program immediately closing when attempting to run, errors in compiling due to missing linked libraries, running incorrect file formats, etc.). Concentrated on trying to run at least one sample program successfully, not necessarily the soft-material sample.

Lauren & Neha: Attended tutorial session on Friday to learn how to use the Abaqus GUI for a Windows platform. Although the platform and version of Abaqus to eventually be used will be for Linux, this provided a way to see what variables can be changed in the program, purpose of different settings, etc.

Week 21
January 26, 2009


Meeting: Gain access to CS cluster in order to run large programs (such as Abaqus or PhysX) faster.

Shilpa & Harvey: Download Visual C++ 2008 Express Edition, and the SDK for PhysX and get the sample programs up and running. Look for potential tutorials (1) to learn to use PhysX and update parameters to model the movement of various soft materials.

Lauren & Neha: Try to get a Windows version of Abaqus up and running on personal laptops before obtaining licenses from the school to use Abaqus on the Linux machines. Once Abaqus is running, find and complete tutorials to learn to use the program.

Week 20
January 22, 2009


Meeting: Divided group into 2 sections: Lauren and Neha to learn Abaqus, and Harvey and Shilpa to learn PhysX. Where Abaqus is designed for visualizing objects and modeling reactions to stimulus given certain physical properties, to actually model a soft-bodied robot would be much too slow. PhysX could potentially accomplish the same thing as Abaqus, but much faster.

Shilpa & Harvey: Research background of PhysX, and attempt to work through the provided (and dismal) documentation. PhysX is normally used by and therefore designed for expert game developers, therefore the learning curve is expected to be high.

Lauren & Neha: Get started with learning Abaqus, a program to model and visualize different objects with varying physical properties. Purpose is to generate "real" data from Abaqus for potential soft materials to be used in robots, and then calibrate differences to variable properties in PhysX.

Weeks 15 - 19
December 16, 2008



NO MEETINGS - WINTER BREAK           



Week 14
December 9, 2008


Meeting: Discussed plans for winter break and spring semester in terms of the direction research will be taking.

Assignments: TBA: Read computer science papers about the newest advances in genetic algorithms and programming.

Week 13
December 2, 2008


Meeting: Discussed the biological aspect of the project, in particular what corresponding research is being completed in the biology department. Went over techniques and tools used to collect the data (volume, pressure, speed of Manduca caterpillars) to be provided to the programmers to help analyze.

Assignments: Update GP+GA program to make it more efficient to produce proper results sooner (fewer executions inside of for & while loops, fewer function calls in the genetic algorithm portion of the program, etc.).

Week 12
November 25, 2008



NO MEETING - THANKSGIVING BREAK  



Week 11
November 18, 2008


Meeting: Met with Barry Trimmer in Barnum to see the facilities for keeping and testing the Manduca larvae. Met with other graduate students working on the project as a whole, and discussed the use of genetic programming for this particular issue. Since there is no clear, linear relationship between volume, pressure, etc. and the Manduca's muscle movement, genetic programming is needed.

Assignments: Complete a java tutorial, "Learning the Java Language" and extend the initial GA+GP code using the current GP and extend it to use a GA for finding proper values for the constants.

Week 10
November 11, 2008



NO MEETING - VETERANS' DAY            



Week 9
November 4, 2008


Meeting: Spent the majority of time debugging the function-tree program, and discussed possible improvements for the code for efficiency (lower number of necessary generations). Learned more about using Java classes, accessing external functions, and different possible function types.

Assignments: Read "Heterogeneous Cooperative Coevolution", a paper by Vanneschi et al. detailing the differences between and methods of combining genetic programming and genetic algorithms. Choose one of the authors' solutions to problems described in the paper, and implement it efficiently.

Week 8
October 28, 2008


Meeting: Brainstormed cases where the benefits of using genetic programming to arrive at a solution function outweighed the pitfalls. Went over different implementations of the function-vector program (assigned last week), and noted areas where efficiency might be compromised.

Assignments: Using previously written hill-climbing code, implement a new option, gradient descent. The method of steepest descent is different from what was previously implemented in that now there should be no random component to the search; the step size and direction is always based on the derivative of the error function.

Week 7
October 21, 2008


Meeting: Discussed main differences, advantages of, and pitfalls of the three types of hill-climbing coded for so far. Compared the runtime of hill-climbing using simulated annealing to changing the shift value based on error. Debugged programs and got instructions for next assignment.

Assignments: Attempt to reach solution function F(x) = 2*(x^2) by creating a vector of 100 randomly generated functions, and then crossing and/or mutating these functions based on their generated error values. Create random functions using Jesse's "NodeFactory" code, and perform crosses and mutations using the "GeneticProgramNode" code.

Week 6
October 14, 2008


Meeting: Debugged programs from last week and discussed results: number of generations and time to find a suitable solution, methods of improving algorithm efficiency. Discussed real-world "solution planes" where hill climbing could be unfavorable (local maxima, etc.).

Assignments: Update hill-climbing program to include 2 more options: 1) Calculate 'c' value shift based on the error size, and (2) Calculate 'c' value shift through simulated annealing, based on a constantly decreasing value "temperature."

Week 5
October 7, 2008


Meeting: Discussed importance of genetic algorithms for finding solutions in a large solution space in context with results from last week's assignment. Predicted the likelihood of finding the best solution given a large number of variables and vast potential solutions.

Assignments: Write code to implement a hill climbing technique, attempting to find the value 'c' for f(x)=c(X^2), given a set of solutions for 500 different X-values.

Week 4
September 30, 2008


Meeting: Went over webpage specifications and requirements. Discussed results from last week's assignment: "best" selector works best when individual traits (different bits in the bitstring) are independent of all other traits. Viewed a caterpillar movement simulation and experimented with changing speed, etc.

Assignments: Manually change values for mpd, ma, mp, fpd, and fa variables in caterpillar walking simulation in an attempt to get the caterpillar to "walk." Show that arbitrarily choosing values when there is no obvious correlation between variables and outcome is not easily accomplished.

Week 3
September 23, 2008


Meeting: Accessed Jesse's genetic algorithm code and went through different fitness/selection functions, such as the Roulette, Tournament, Best, Elitist (etc.) Selectors. Experimented with increasing/decreasing the crossing and mutation rates in relation to each other.

Assignments: Run the different selectors on the "1-bit string" problem. Starting with a random starting population of strings of 100 bits each, use different genetic algorithms and count the number of generations it takes to reach the "best" bit-string: one with all 1s.

Week 2
September 16, 2008


Meeting: Discussed evolutionary/genetic algorithms: when and why they are used, different variables to be used in different scenarios (starting populations, mutation rates, fitness testing, etc.). Highlighted how and why using a genetic algorithm would be the best approach to determine the motion of a soft-bodied organism (Manduca sexta larvae).

Assignments: Read "Evolutionary Computing", a paper by A.E. Eiben and M. Schoenauer highlighting various approaches to and variations on evolutionary computing. Write a program that takes 2 bit strings of 1s and 0s and "crosses" them to produce "children."

Week 1
September 9, 2008


Meeting: Downloaded and installed the latest version of Eclipse and Java Platform, Standard Edition 6u10 RC 2. Learned basic Java programming and discussed major differences between C++ and Java.

Assignments: Experiment with vectors and arrays, explore various classes available as documented in the API specification for Java Platform, Standard Edition, version 6.