What began as an innocent class project for an Embedded Systems class
eventually spiraled out of control and overthrew humanity.
My team wanted to create a robotic tank that could
navigate its way through a model city towards a target and then fire a
projectile at it. To do this, we needed to solve many difficult
problems including localization and wireless communication. These were
the tasks that I volunteered to take on. For localization, I used a computer vision library called reacTIVision
to track fiducial markers on the attacker and target robots as they
moved through the city. To see the markers, I constructed a PVC frame
that could hold a web cam over the model city like a military
satellite. I then planted the fiducials on the tops of the robots. I
used the marker information to discretize the city into a grid of
blocks that could be used as a map. I then packaged this information
into a packet that could be sent via SSH to our attacker robot. We
jokingly nicknamed this side of the project "Skynet, version 1.0". We shouldn't have laughed.
Once
the packet is sent, the buck is passed to my
team members. Ned Bass received the packet information and decoded it
on the robot side. Nam Doh used the location information in a
breadth-first search to tell the attacker how to manuever through the
city towards the target. James Martin installed IR range finders on the
attacker to keep it from getting too close to the city walls.
(Originally, Skynet sent information about the wall positions to the
attack robot as well) Tony Demarco, however, committed the
worst offense of all by
installing weapons - A foam dart missile launcher, to be precise - on
the attack robot
and teaching it to like the taste of virtual blood. He thus
ensured our eventual demise.
All
of my team members did an amazing job.
A special thanks also goes out to our project mentor, James Beck, for
all of his help and advice. Everyone put in a huge effort to get
everything working, and we all had
a lot of fun and felt very proud of the finished product... I'm just
sorry that it also brought about the destruction of civilization as we
know it.
The
attack robot is equipped with a foam dart missile launcher. My code
helps this robot locate itself in the world and find its way to the
target.
The
defender robot has a large cookie-tin target. A microphone inside the
tin listens for missles to strike the target and triggers the "I'M
HIT!" animation when it detects enemy fire.
The city as viewed from our "Eye in the sky" satellite cam.
The
satellite video feed is processed by our ReacTIVision-powered program
"SkyNet", which discretizes the playing field into a grid of
variable-sized cells. This information is sent to the attack robot via
bluetooth.
The original project proposal.
A class-wide photo of all the Embedded Systems class students and their projects.