This week’s BEACON Researchers at Work post is by Michigan State University graduate student Jared Moore(@j_redmmoore).
If you had asked me during my undergrad years what a computer scientist did, I’m not sure I would’ve been able to give you a clear answer. I might have said something like, “Write computer programs as part of a team.” Of course there are computer scientists who do write programs, and I must admit that I write a great deal of code in my day-to-day work, but there is so much more than just code! Currently, I am working in the field of evolutionary robotics, which applies principles from natural evolution to the development of robots.
While one might associate robots with R2-D2, Cylons or Rosie from the Jetsons, a new generation is on the horizon. These bio-inspired robots borrow structures and behaviors observed in animals. All around us, we see animals and plants that are the product of millions of years of evolution. Many display remarkable features: the acceleration of a cheetah, the careful silent walk of a deer, or the agility and schooling abilities of fish. These and other animals provide inspiration for the development of robots.
Some of my recent work has focused on station keeping or station holding, wherein an aquatic robot must maintain its position around a point in space in flowing water. This behavior is seen in many fish. Maybe you’re familiar with clown fish swimming around a sea anemone, as in the movie “Finding Nemo,” exhibiting station keeping for protection as well as feeding. In robots, this behavior is highly desirable for environmental monitoring and inspection of underwater structures. As demonstrated in the past few years, humans can wreak havoc on ecosystems. The Deepwater Horizon spill resulted in large patches of oil dispersing throughout the Gulf of Mexico, while the Fukushima Reactor failure has led to continual radiation leakage into the Pacific Ocean. In both cases, scientists and cleanup crews have had to monitor large swaths of ocean to track the spread of contaminants. Robots help in this monitoring task, providing near constant data streams that enable rapid response to unexpected events. Of course, developing these robots comes with challenges.
Controllers capable of station keeping require integration of multiple sensory modalities including body position, orientation and ability to make sense of external sensory input such as the speed and direction of water flow. The specific “brains” that I work with are called artificial neural networks (ANNs), which draw inspiration from biological brains. These ANNs can be thought of as a collection of mathematical functions that evolve to receive sensory input, combine multiple different measurements in internal functions and provide outputs to govern motors on a robot. An ANN for station keeping must then not only display the ability to swim, but also recognize the robot’s position in the environment and actively maintain station in the face of flows. It’s not uncommon for these evolved ANNs to contain hundreds of neurons and thousands of connections.
Evolutionary computation is one approach to developing such complex structures. A population of individuals is used to represent many solutions to a problem and evolve over generations. Starting with an initial randomly generated population, each individual contains a genetic code representing one possible solution. Each individual is then evaluated in a physics simulation engine. Individuals are then ranked by their performance, with the more successful ones selected to populate the next generation. Borrowing another concept from natural evolution, the next-generation of solutions are created through a process of recombination, where two parents’ genetic information is mixed to create a new genetic code, and mutation, where individual elements of the genetic code are altered randomly. These new children form the next generation and the process of simulation, selection and recombination/mutation is repeated for many generations. How many generations depend on many factors, but it isn’t uncommon to have a population of 200 individuals evolve for 2000 generations. That’s 400,000 individuals to simulate, which can require over 60 hours of computing time!
While the development process can be quite complex, how do we know if a solution will be successful? In station keeping, we look for robots that start at the station point and then attempt to stay at or near that position while swimming against a simulated flow. Poor solutions simply drift away from the station point, but successful individuals demonstrate a variety of unique behaviors. The following videos show evolved solutions in a variety of different flow situations.
First, in the video above, this individual faces a flow coming from the direction of the camera. It is pushed away from the station before reorienting itself and swimming back to the station point (the white cross and sphere). Here, the evolved controller demonstrates the ability to swim against a simulated flow. What I find most interesting is the type of solutions evolutionary approaches often come up with. Many times the solutions exhibit behaviors that solve a problem in completely unexpected ways.
In the next video (see also the sequence of screen capturess in the image below the video), the evolved robot attempts to hold station against a flow coming from the rear. Rather than use its pectoral flippers, it instead flips completely upside down to bring the tail in a position to swim effectively against the flow.
These simulated robots are the result of many hours of computer simulatio
n and experimentation. Evolutionary computation allows us to harness the process of evolution and the power of high performance computing to produce effective robots. By using processes based on natural evolution, we hope to someday develop robots that rival the complexity of natural organisms. (Hopefully I’ve provided a little bit more information of what a computer scientist does!)
For more information about Jared’s work, you can contact him at moore112 at msu dot edu or visit his website at www.jaredmmoore.com.
Clown Fish Source: Wikipedia (Creative Commons License)