Automated Foosball TableMain Page | Log in
Milwaukee School of Engineering

Project Overview

In Laymen's Terms:
A computer acts at the brain of the project. It needs to know where the ball is and move the rods accordingly. The computer finds where the ball is using a grid of lasers. Over a hundred laser pointers are shot just above the playing field of the table.


tn_2005_0426_043956aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0426_043956aa.html)

As the ball rolls around, it blocks the laser beams. Sensors detect which lasers are blocked and sends the information to the computer.



Now that the computer knows where the ball is, it can move the rods accordingly. The computer moves the rods back and forth (to intercept the ball) and around (to kick the ball). Motors make this movement possible.


tn_2005_0404_214347aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0404_214347aa.html)

The system plays foosball at the level of an average foosball player. It tries to defend its goal and score on its opponent.




In Technical Terms:
(It is assumed you read the short explanation above.)

The project is broken into three separate units:
1. Ball Tracking Unit (Laser Grid)
2. Logic Unit (Computer)
3. Movement Response Unit (Motors)

Ball Tracking Unit
The laser grid works by shooting 101 lasers (taken from keychain lasers) just above the playing surface of the table. These criss-crossing lasers make a grid. There are 43 lasers spaced 1.5 cm apart in the short axis of the table and 58 in the long axis spaced 2.0 cm apart. The lasers are in groups of 8 called a banks. Each laser bank is powered by three AA batteries. Batteries are used due to the extreme current sensitivity of the lasers.


tn_2005_0404_215959aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0404_215959aa.html)

Each laser bank has a corresponding receiver bank on the opposite side of the table. Each receiver bank has 8 photo-transistors that are mounted on the inside wall of the table.


tn_2005_0214_193900aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0214_193900aa.html)

As the ball rolls around on the table, two or more laser beams are broken (one or two on the short side of the table, one on the long side of the table). If two lasers are broken in one axis, then the ball is assumed to be half way between the two broken lasers. The lasers were mounted closer to each other in this axis with the intention of obtaining a higher resolution in this axis. We felt a higher degree of accuracy was necessary in this direction so that it is easier to get a player directly in front of the ball.



This design produces 101 digital signals (8 bits per bank, plus a partial bank in each axis) that need to be input to the logic unit. This is too many signals to input directly to the computer. To solve this problem, we designed a bank select board.


tn_2005_0404_220435aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0404_220435aa.html)

The bank select board acts as a giant multiplexer. Each bank is assigned a unique four bit address. The logic unit requests the status of each bank by specifying its address. The bank select board then routes the 8 signals of the requested bank to the logic unit. The logic unit polls all of the banks, regardless of weather laser breaks are reported or not. The entire polling process takes approximately 0.001 seconds and averages across multiple polls to eliminate jitter.



Logic Unit
The logic unit is a 350MHz PC outfitted with a diital I/O card containing 48 I/O points. The PC runs two Linux kernels: a patched 2.4.22 "vanilla" kernel and real-time kernel from RTLinux. RTLinux is a special package that gives us real-time control of the software we develop. Essentially, the ball tracking section, movement response section, and game logic section all run in their own thread, under our real-time control. RedHat 9.0 is the base distribution and facilitates our front-end user interface, which includes a graphical representation of the status of all lasers and location of automated rods.



[Put picture of the I/O card and User Interface]


The software developed for the logic unit is responsible for polling the ball tracking unit to obtain ball position, calculating the ideal action based on a predefined game strategy, and commanding the movement response unit to execute that play. All code is written in C, with the exception of the UI, which is written in C++.

Movement Response Unit
Each rod is controlled linearly (to intercept the ball) and rotationally (to kick the ball). Two motors are needed per rod to produce this movement. Rockwell Automation generously donated 8 servo motors and motor drives to our project.


tn_2005_0214_194113aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0214_194113aa.html)

A motor is driven by digital step pulses sent from the logic unit to the motor’s drive. Two signals are needed to drive the motors; a step signal commands the motor how far to rotate, and a direction signal determines if the motor will rotate clockwise or counterclockwise.

Producing linear motion from these motors is accomplished with ball screw linear actuators. The motor that drives the actuator is mounted on the end of the actuator. The drives have been programmed such that one step pulse produces one mm of linear movement. As the linear actuator moves back and forth, so does the rod.


tn_2005_0404_214427aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0404_214427aa.html)

The motor that creates the kicking motion is mounted to the platform of the linear actuator. The foosball rod is connected to the kicking motor. The kicking motor has been programmed such that one step pulse produces one degree of rod rotation.


tn_2005_0404_214406aa.jpg (http://cese.msoe.edu/foosball/slide_show/2005_0404_214406aa.html)

Limit switches are used to disable the motors if the system tries to move the rod beyond its physical limits. In normal game play, the limit switches should never get tripped. They are merely included as a safety precatution to protect the motors in case the software were to ever not function within specification.

Safety is also a concern of the project. These concerns are being addressed with a master kill switch, a pause button, and a safety lid for the table.

For even further details, please view our project cycle reports (http://cese.msoe.edu/foosball/cvs/doc/CycleReports/) or contact us with questions.

Retrieved from "http://cese.msoe.edu/foosball/index.php/Project_Overview"

This page has been accessed 1877 times. This page was last modified 01:21, 11 May 2005.



Browse
Main Page
Project Overview
Live Lab WebCam
Project Pictures
Project Videos
Team Members
Documentation
Glossary
Special Thanks

This page
Printable version
Page history
Create an account or log in