James McLurkin
Assistant Professor
Rice University, Department of Computer Science


Questions and Answers

I receive more email than I can reply to. Please look here first to see if you can find the answer to your question before sending me an email. If you do send one, please be patient, I'm not ignoring you, I'm just busy...


About Me

When were you born? Where did you grow up?
I was born in 1972 and grew up in Baldwin, N.Y., about 20 miles outside of Manhattan.

Can you come speak at my program/school/museum/company?
I wish I could respond to all the requests I receive, but this is just not possible. If you are interested in having me come talk to your group, please contact me at the address at the bottom of this page. You can visit my press page for more information.

The Ant Robots

Are there diagrams/schematics/plans for the Ant robots?
Disclaimer: The Ant robot design was never meant to be replicated by others, and is not a good example of quality engineering. You can build much cooler robots these days. But, if you're still curious, page 26 of my bachelors thesis has a picture of the chassis for an Ant robot, and the electrical schematic can be found in Appendix A.

The Swarm Robots

Are there diagrams/schematics/plans for the SwarmBots?
Can I buy some SwarmBots?
The SwarmBots were designed at iRobot, and the design is not public. The robots are not for sale.

NOVA ScienceNow Biography

If you've seen the NOVA show that featured the biography of me, then you might have some unanswered questions. Read on.

Why does your girlfriend have pet worms?
She's really not that odd. She used to teach biology and ecology to elementary school students, and set up worm bins in their classrooms. The students would put food scraps in the worm bins, and the worms would turn it into dirt, a.k.a. "composting". The students learned about the life cycle, the food web, and the difference between organic and inorganic. The worms she has at home were her control group.

So then why do you have pet ants?
Because I really am that odd. And because they're so cool.

Was that you singing "The Flight of the Bumblebee"?

Why did the robots crash when playing back the "Star Wars" theme?
Answer #1: The robots didn't actually crash, they were just waiting to play the next note. The robots play music stored in the MIDI file format. The files tell the robots when to play which note on what instrument. My software made an error while processing this file, and the robots would get to a certain point, then wait a very long time to play the next note. I think it would have been about three days until the next note...

Answer #2: The MIDI file format has a bass-ackward way of representing time and dealing with tempo changes. I was trying to compute all timing references with full precision, but eventually overflowed the variable I was using to keep track of the "now" time. My only consolation for having an otherwise simple demo fail so miserably on national television was that it was the first time I have been able to overflow a 32-bit unsigned integer. (i.e. one of my intermediate values was greater than 4,294,967,296!) This is most certainly one of the rites of passage to becoming a full-fledged computer scientist. (I used to be an electrical engineer, and was relatively safe from 32-bit ints)

Why does your motorcycle sound like a lawn mower?
I have two motorcycles, a Honda XR250R dirt bike, and a Honda CBR600RR sport bike. They superimposed the sound of the dirt bike (which does sound like a lawn mower) over the video of me riding the sport bike (which does not sound like a lawn mower).

Can you send me a copy of your "dating flowchart"?

Can you give me time management advice?
I think it was pretty clear from the show that my strategies don't work. But here are some of them anyway:

  • Keep track of how long things actually take. You'll be surprised how much longer simple things take.
  • Remember the worst-case time for a task. We tend to remember idealized times for tasks, even when we know that it might actually take twice as long.
  • Minimize task switching. Try to allocate enough time to a task to finish it. Switching tasks takes time (This is a fixed cost, and you cannot recover it)
  • Plan your route through your day carefully to minimize (or eliminate) unnecessary trips, or doubling back to where you have always been. Remember the triangle inequality, and try to move in straight lines to your destinations. Ideally, you would form a loop starting from home, travelling to your appointments, then returning home, never visiting any site more than once. (Maybe your desk...)
  • Be sure to allow enough free time to relax a bit. Becoming busy to the point of exhaustion is inefficient.

    May 28th, 2005, Michael B asked:

    I am an aspiring roboticist/student. Is it possible for you iRobot guys to give me any information at all about building my own mini-swarm for personal use, enjoyment, and learning? Thanks for your time...

    Sorry Michael, the Swarm design is not available. Also, it took myself and three other engineers at iRobot 4 years to build the Swarm, if you are starting out, it would be better to start on a smaller project. I recommend:

    Level 1:
       Mechanicals: Lego Mindstorms
       Electronics: LEGO Mindstorms
       Software: LEGO Software, then move to Java, C, Assembly, etc...

    Use the included LEGO software for only a little while, then get online and look at all the other different programming languages that are available and learn how to expand the hardware and sensors. You can go surprising far like this. Visit http://jpbrown.i8.com/index.html

    Level 2:
       Mechanicals: LEGO chassis or custom chassis (Maybe your Roomba?)
       Electronics: MIT Handy Board
       Software:Interactive C, C, Assembly

    You can build a very nice robot using the Handy Board, and there is a lot of on-line support for it.

    Level 3:
       Mechanicals:Custom chassis
       Electronics: MIT ORC board (www.orcboard.org) + Small computer
       Software: Java

    If you need more computational horsepower than either of the first two designs can provide, then this is the way to go. You would use two computers, one to control the low-level hardware, and one to do the high-level processing. This is how we structured the undergraduate class I just worked with at MIT.

    I hope this gets you started. Have fun and build cool robots!

    June 12th, 2005, Nadir Sidi asked:

    I was wondering if you could recommend a microcontroller. My only experience to date is with an OOpic controller (our group used Atmels but I was not involved in that programming stage).

    If you are comfortable soldering and building circuitry, then I strongly recommend the Atmel AVR family of microcontrollers. I just used the Atmel ATMEGA8-16 for a project, and was very happy with it. Atmel makes a starter kit with an evaluation board called the STK500. I used this and was up and running in a few hours. You can buy it from Digi-Key, along with all the other electronic parts your heart desires.

    The STK500 comes with a nice assembler (for writing assembly-language programs) and a simulator to test your software before you put it on the chip. I would not recommend that you program in assembly, but instead use C. You can download GCC for the AVR($0), download the WinAVR set of tools based on GCC ($0), buy the inexpensive Codevision C compiler (~$70, but the Atmel Engineers tell me it very good), or the expensive IAR Embedded Workbench for the Atmel AVR (~500(!) with academic discount). I use the WinAVR tools.

    If you don't want to do as much hardware, then I would recommend the HandyBoard (http://handyboard.com/), which uses the venerable 6811 microcontroller. It's getting a little old, but is still very nice.

    I also am learning java at school, if that helps in your recommendation.

    You can run Java on a LEGO RCX brick! Lejos seems to be the winning option here.

    This might give you more questions than answers. If none of this makes sense, then go towards the LEGO RCX brick.

    James McLurkin