After making the switch to CS, I continued to use my TekBot. I had classes that overlapped with ECE, and I was also a member of the OSU Robotics Club for three years. During that time, the kit has been reused and repurposed several times. The kit is currently disassembled to protect the parts from my most recent move.
Over the years, my TekBot has been a ...
- Bumper Bot
These simple autonomous robots have buttons that cause the robot to reverse when pressed. After a designated amount of time, the robot turns and then continues forward. In the TekBots courses, this is equivalent to programmers printing "Hello, World" on a new platform or in a new language.
I implemented the bumper bot protocol in five ways:- Capacitors and Comparators
This bumper bot was completely hardware-based. The entire project was hardware-based. When a button got pressed, the capacitor lost its charge. Until the capacitor recharged to a certain voltage threshold, the wheel would go in reverse. When the capacitor charged higher, the wheel moved forward. By setting two different thresholds, one wheel would move forward before the other, causing the robot to turn. - Digital Logic State Machine
This design had five states: forward, left-bump reverse, right-bump reverse, spin left, and spin right. Using logical AND, OR, and NOT and a slow flipflop, it would check the current state and inputs to determine which state to enter. - Assembly Language - Polling
Programmed on an Atmel Mega128 microprocessor, this robot was initially told to go forward. It then went in a loop where it checked the bumper inputs. When a sensor was triggered, it would enter a subroutine to reverse and turn to evade the obstacle. - Assembly Language - Interrupts
Also programmed on the Mega128, this design essentially did nothing after initialization. The program enabled interrupt flags, so when the bumpers were pressed an interrupt routine would handle back up and reverse protocols before resetting the flags and returning to standard forward motion. - C Programming
At the highest level of computer programming, this one was the simplest to write: while the device is turned on, go forward; if a button is pressed, then back up, turn, and go forward. Being the highest level of computer programming also meant that this program used the most disk space and memory.
- Capacitors and Comparators
- Sumobot
A staple of the OSU Robotics Club is the Sumobot competition. While there are specific rules and regulations, the contest essentially consists of two or more robots trying to push each other out of a circular arena. While my design evolved from one competition to the next, the basic set-up remained the same. Downward-facing infrared sensors detected the border of the arena, and outward-facing IR sensors would seek the opponent's robot.
Even though I never won a competition, I had one match where my sumobot managed to drive on top of my opponent's robot and press the reset button. The rules state that a robot must remain immobile for five seconds when the competition starts, so his robot came to a halt. My advantage was short-lived because my robot's power supply got jostled when it rolled off of the other robot. Both robots sat for five seconds before the competition resumed. - Photovore
A variant on the bumper bot is the photovore, or "light eating" robot. By replacing the buttons and capacitors with photo resistors, the voltage changed based on light intensity rather than capacitor charge. As an extra-credit project in class, we had to use a flashlight to navigate the robot through a maze. - Line Follower
Using infrared sensors, the robot must navigate an obstacle course, staying over a black line. In more advanced courses, the line may have sharp corners, cross itself, or contain gaps. Another favorite of OSU Robotics Club - Maze Solver
This Robotics Club competition was like the line follower competition except with momentary button switches rather than infrared. The maze bot I made kept constant contact with the left wall; if it lost contact, it would turn left. If its front sensors bumped into a surface, it would turn right. For a more complex maze, I would have inserted a timer to calculate the distance it covered, keeping a coordinate system to figure out where it has already covered. - Remote Controlled Bot
My first remote-controlled TekBot used logic gates to handle the control signals. I used a logic board and wires to control the robot. Later iterations of this project had an override in place that would use bumper bot behavior if the button sensors were triggered.
A later remote TekBot was developed with assembly code on two Mega128 control boards, one for sending commands and the other for controlling the robot. This set-up was done wirelessly with infrared transmitters and receivers; each robot had a unique transmission code to prevent interference. The project included into a game of freeze tag where the receiver bot also could transmit a freeze command to other receivers. If a receiver got a freeze command, it was immobilized for five seconds; if the receiver got a total of three freeze commands, then it was immobilized until reset. Above and Beyond: The freeze tag game was already extra credit, but I also programmed my TekBot to have a freeze time count-down display, an "injury" counter (how many freezes it has received), and a "death" sequence (indicating loss). - Vending Machine
When I took a course on assembly language, the final project allowed students to pick a project from a list in order to combine the lessons learned throughout the course. Most students chose to make a wireless blackjack game, but my lab partner and I chose to build a vending machine.
This vending machine was made from TekBot parts, an old Erector set, and disposable food storage containers. The completed product included an LCD display that would give instructions, an automatic card feeder, the dispenser which would give M&Ms or Skittles, and push buttons to make a selection.
Future Plans:
A big source of disappointment has been the fact that many of my projects depend on the same TekBot base, so I have not been able to keep an archive of my favorite projects. I want to rebuild many of these projects using separate parts and power supplies so that I can make a video record of my work.
I also have an Arduino processor board. I am not sure what I will do with it just yet, but there are several projects at Instructables and Make that have piqued my interest.