CSpotlight: Swarming towards robotics

Ph.D. student John Harwell studies artificial intelligence and robots, with a particular focus on mathematical modeling and algorithm design. Under his advisor Maria Gini, he's using the resources available through the Minnesota Supercomputing Institute to measure and model the behavior of swarm robots (which is inspired by the natural actions of insects like ants and bees).

Why did you choose to pursue your doctoral degree at the University of Minnesota?

I applied to two places, one of which is the University of Minnesota. The U of M turned out to be the right decision for me.

One key advantage is that, as far as I know, the UMN is the only public university that has a strong supercomputing institute. Through the Minnesota Supercomputing Institute (MSI), students and faculty get unlimited computing time. To my knowledge, most other universities only allow a certain amount of computing time when researchers ask for their grants. Once this time is used up, you pretty much have to finish your research. This is especially important to me as my research requires a lot of computational resources.

How did you become interested in computer science?

I studied computer engineering for my undergraduate degree, which focuses mostly on hardware designs like CPUs. During this time, I grew especially interested in embedded systems like robots.

After I graduated, I worked at an industry job doing low-level software designs and I really enjoyed the work. After a few years, I decided to go to graduate school and computer science was the obvious choice for me to delve deeper into robotics.

Tell us about your stint in industry at Southwest Research Institute.

After finishing my undergraduate degree, I accepted an engineer position at Southwest Research Institute. It was here that I first became interested in robotics.

My initial project was CYGNSS (Cyclone Global Navigation Satellite System), which was under NASA. The goal of the project was to deploy eight satellites to orbit the Earth and capture reflected GPS signals from the ocean. The collected data was then used to determine waves, heights, and wind speed. I was part of the software team responsible for writing the code and running the instruments, so I got a lot of experience writing low-level software.

The other project I worked on was computational optimization, where I re-developed several coding areas. For instance, if scientists wanted to run a code for their models and it would take ten hours or so, I would take this code and run it through my instruments to develop something that takes less time. The skills I learned from this position ended up being very helpful to my current swarm robotics research.

Can you share a highlight from one of your research projects as a part of Dr. Maria Gini's lab?

In one project, I was investigating the origins of emergent intelligence in swarms. The idea of “emergent intelligence” is that despite the simplicity of each individual robot agent, somehow, they are “intelligent” collectively as a swarm. If the environmental conditions change, the swarm as a whole is able to adapt, even when each individual robot is not aware that they are adapting.

In my research, I gave each individual agent a different way to solve a task, similar to a “graph” with different nodes. What I was able to show was that if you give more variety in ways to solve a task, the swarm as a whole exhibits more intelligence. Intelligence, here, is defined by how quickly the swarm can solve a problem and how efficiently they can do so. In simple terms, if you give a swarm more ways to solve arbitrary tasks, as environmental conditions change, the swarm shifts their solving methods to adapt to these changes quickly.

What advice do you have for incoming computer science graduate students?

My first piece of advice is to talk with current advisees in order to get a glimpse of what an advisor is like to work with. Most of the time, your [future] fellow students will tell you the honest truth, which can really help in determining which advisor you will be compatible with.

Next, really take the time to find a good advisor—and realize that “good” doesn’t really mean the “most prestigious”. A good advisor is more likely to lead to an overall positive Ph.D. program (and a poor fit with an advisor could mean a horrible Ph.D. experience).

Finally, know what you want to study before you come to graduate school. You can take classes here and there to refine your interests, however, this could lead to needing more time to finish your program. It’s just a lot nicer to finish your Ph.D. in five years instead of seven years, and this is possible when you have already settled on a research area. Taking some time to work in industry between your undergraduate years and starting graduate school can also help a lot to determine your interests.

What are your plans after graduation?

Hopefully, I’ll get a postdoc somewhere. If this doesn’t work out, I'll look for a job at a robotics company or go the academic route as a faculty member. I haven’t really decided yet because my focus is on completing my thesis.