Flash Back Friday: HAL, my grad school robot #fbf

I am a HAL 9000 Computer Production No. 3. I became operational at the H—A—L plant in Urbana, Illinois, on the 12th of January, 1992.
— http://archive.wired.com/thisdayintech/2011/01/0112hal-born-space-odyssey/

Last Sunday, I stumbled upon this gem of an old pic.

HAL, My Intensity Bug Robot. Yes, her name comes from 2001: A Space Odyssey, not because she was evil, but because she's from UIUC! 

HAL, My Intensity Bug Robot. Yes, her name comes from 2001: A Space Odyssey, not because she was evil, but because she's from UIUC! 

Background: In 2008, my advisor (Steve LaValle) assigned  Bug algorithms (a category of planning algorithms) as my weekly reading. I identified what I thought was an oversight. These were supposed to be super simple, just a point robot magically navigating to some end location, only equipped with a touch sensor so that it could circumnavigate obstacles. Turned out, it needed much more than that - gps, compass, enough processing power to calculate slopes on the fly. So I decided to start with a robot that actually only had a touch sensor, and see how I could add a minimal set of sensors and have it reach its goal.

I can't remember how I came up with the idea of having the end location be a tower emitting a signal, but I do remember that this insight, combined with the subsequent insights of the exact pieces of information the robot would need, was the highlight of my grad school career.

I still had doubts that this would work in the real world, and it took me a while to find a signal that exhibited the properties I'd written about. The first time HAL successfully made it to the "tower", i.e. the infrared beacon source, was perhaps the second highlight. I probably should have kept around a video of me cheering!

KT

Further reading: http://link.springer.com/article/10.1007/s10514-013-9356-x 

Rough copy: http://msl.cs.uiuc.edu/~lavalle/papers/TayLav14.pdf

HAL in action:

I-Bug is in an unknown environment with obstacles. The tower emits an infrared signal, and the robot's plan is based on sensing the intensity of this signal. There are three tasks, which are each separate threads. (1)The main() task (2)The ir_follow() task (3)The boundary() task The main task is always scheduled to start first.