Irvine Underground Robot - Defcon 12     

For the 2004 Defcon 12 Robot Warez contest, the Irvine Underground group consisting of Kallahar, Kelvin, and Tacitus built this robot. Our first meeting was about four months before con and we put several hundred combined hours in. This page is here to inspire others to follow in our footsteps and hopefully try to beat us next year :)
 

The contest:

Transport five ping pong balls, one at a time, from one bin in an 8' arena to another.

Overview:

The bot is a little over a cubic foot in size (excluding the arm). It has two direct drive motors and is controlled by an on-board laptop. The arm is about two feet long and uses suction to pick up the ping pong ball. The motors and arm servo are controlled via the computer's serial port.

Mechanicals:

The bot has a 1/8" lexan base with a 1/16" angle aluminum border held together with screws. The structural strength comes from the aluminum, the lexan gives us a place to mount the electronics, battery, etc. There are several pieces of stainless steel that were cut at Kallahar's work and then bent by hand. They hold the upper platform on, the laptop in place, and are the mount between the motors and the frame. The arm is on a hinge which rotates up and down. A 2' piece of aluminum supports the tubing which acts as the vacuum. Two squirrel cage fans on the back of the arm provide suction and also act as a counterweight which allows us to have a longer reach with a small servo.

Electronics:

A 12V 2Ah sealed lead acid battery powers everything except the laptop. Wiring is the same as a hard drive connector so we can easily switch to wall power while debugging. The motor controller is a home-made contraption built around the Pololu dual motor controller. The servo controller is a Pololu 8-servo controller. Power regulators on both boards convert and filter the 12V battery to the 5V circuit level. The fans are controlled just like the motors are, but they are at 100% or 0% only since we want as much suction as possible. On the nozzle of the arm is an IR sensor which is used to detect when the ball has been picked up. Bump switches on the front and back of the bot allow us to know when we've impacted an object. The OrCad circuit diagram is here: circuit.dsn

Software:

Both Pololu modules receive their commands via the serial port of the computer. The laptop is running Mandrake and the code is completely our own. All the code is encapsulated in classes using C++. We chose Linux because it is far more scaleable and offers more performance tweaking than Windows does. We also didn't want to buy a license from Microsoft in order to legally run our otherwise open source robot.

Final Code:

  • Makefile
  • main.cpp // The main control loop
  • wheels.cpp // Controls the wheels
  • servos.cpp // Servo controller
  • manual.cpp // Manual control via the keyboard
  • io.cpp // Handles all of the actual I/O
  • settings.h // Global settings such as port assignments
  • wheels.h
  • servos.h
  • manual.h
  • io.h

    Initial Testing:


    The very first tests were to make sure that each component was working. A very simple platform was made out of Plexiglas and controlled via a long serial cable from the desktop computer. The original design had the fans being controlled by a relay, so this circuit included the component even though it wasn't hooked up. The connectors for the serial, parallel, sensors, motors, and servos all come into this board.

    Test Code:

    [Serial Port]   [Motors]   [Servos]   [Timers]   [Parallel]
    The initial plan was to have the bot guided by vision via a USB webcam, but unfortunately we slacked off and did not have enough time to complete that software. In the competition we controlled the bot from another laptop using our test Manual Control program.

    Build Process


    We ended up doing most of the building at the last minute. We assembled everything and had the platform running around on the floor while tethered to the computer, then put the laptop onboard, then tried it under battery power. Each step brought us closer to the final product. Several of the electrical components had to be fixed or modified due to issues such as incorrect resistor, broken solder joint, or bad component (the entire servo board had to be replaced). At about 9pm on the Sunday before Defcon when we were trying to get the wireless to work we had to drill out some screws on the back of the motherboard to get to the compartment underneath. Unfortunately, the drill caught the screw head, causing it to screw itself down. The computer wouldn't POST, so we took it apart and tried to find out what went wrong. The screw had drilled into the motherboard and severed several traces. After a few hours work, Kallahar was able to bypass the damaged area using wire-wrap wires and a really steady hand (the wires in the picture are 30 gauge).

    The Contest

    On Friday we got our first look at the arena. As it turns out, the bins were a foot deep (we expected them to be a few inches at the most, the rules didn't specify). Our nozzle was only 4" long so we wouldn't be able to reach down far enough to get a ball. So on Saturday morning (the contest was at 5pm) Kelvin and Tacitus worked to modify the bot so that it would work. At five we took the bot to the arena and started setting up. We got the bot up and running and started transporting the balls. The bot worked great! We took first place, and at the awards ceremony we got the coveted black badges as well as many great prizes. We look forward to next year's competition, and from what I've heard there will be a lot more competition. Hopefully this page will inspire and help others to get started with laptop-controlled robots!

    Movies


    Movie 1 - The first motors/platform test
    Movie 2 - Testing in the apartment
    Movie 3 - Testing in the apartment
    Movie 4 - The competition at Defcon (crowd pan)















  •   Site by Kallahar - kallahar@kallahar.com - Hosted by DreamHost