From MCS Wiki
Revision as of 17:28, 13 November 2008 by (Talk)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Our Philosophy and Plan - AKA: Changing Perspectives

1. The Overriding Public Perception

K-team Koala Robot
K-team Khepera Robot
Lego Mindstorm Robot
I-robot Create with Gumstix Stack

Once a semester, the faculty at the University of Virginia's College at Wise are asked to select one or two faculty from each department to take part in a College wide open house called UVA-Wise 360. Each department is given a display table, labeled with the department name. From experience, I can tell you that, amongst those students who don't instinctively recoil from the sign reading, "Math and Computer Science" (and a great many do), there is always one hugely overrepresented question. How can I learn to make video games?

This question is aggravating but also can give us some insight into the state of computer science education. First and foremost, the public perception of computer science amongst young people is that computer scientists are those people who know how to make personal computers do "cool" things. It's not unsurprising that they don't know the difficulty of making a computer do anything, much less something they deem "cool". But what is frustrating is that they don't really have a good idea of what "cool" is. So, the whole question of video games is a testament to how successful that industry has been at grabbing the imagination of students, and an equal testament to how boring and ubiquitous computer use of any other kind has become.

It comes as a shock, I think, to most prospective students that we have no easy answers about how to become a video game designer. First and foremost, what is that. There is no such job. There are art designers, sound engineers, graphic engine designers, directors at all levels, story writers, the list goes on. Modern games have end credits that exhibit names and positions from a pantheon of technical backgrounds. I suppose most students don't stick around for the credits however, since by that time the interesting stuff is over. In short, there are very few disciplines that you could choose from that could not get you on track to work in video game design, and equally few programs (outside technical schools) that promise a direct path to work in video games.

As an aside, we don't just see this confusion in young people either. The public at large believes that computer scientists are those people who know how to make computers work. There isn't any distinction between the Geek Squad, The IT Staff at the office, and anyone with advance degrees in the study of Computer Science. I can't count the number of times that, upon learning of my chosen profession, people are more than happy to inform me that they have viruses on their computer. I'm never quite sure how to respond.

2. Where Have We Gone Wrong?

Is it any surprise that people have little idea what goes in to even the most complicated computer systems, applications, and interfaces? Computers have become such a ubiquitous part of everyday life at all levels that it is easy to forget that computer systems as big business is only about 15 to 20 years old. How did we get here?

Visionaries and computer professionals long believed that the computer could fundamentally change the way people lived, communicated, worked and played. These people represented but a small portion of the public at large however. If companies and investors were going to make money selling computer technology then this technology had to be designed to be sold to the lowest common denominator (totally clueless about computers and their prospective uses). This lead to the practice of black box design.

Black box Design: developing technology so that it can be used by people with entirely no understanding of how the technology works; only what it does, and how it can be used.

This kind of design is fine for selling products to a public not familiar with, or even exposed to computer technology at all. Things have cerrtainly changed.

What we have lost, due to the use of black box design, is that DiY attitude. That belief that just because you don't know how to fix it (or do it or build it) doesn't mean you can't find out how and then put that knowledge into action. We have made the world into consumers only and rarely producers. We have created a public whose livelihoods are increasingly founded on the ubiquitous use of computing but whose knowledge about how to create their own solutions is ever decreasing. The deepest threat is that we are creating a ruling class of the technological elite. The best solutions are those that exist in an open market of solutions. If an elite class is exclusively responsible for the development of technology then we all suffer.

The University of Virginia's College at Wise is largely concerned with preparing students to become productive citizens. We believe that a huge facet of this has to be fostering a deeper understanding of the issues surrounding the fields of Science, Technology, Engineering and Mathematics (STEM). Indeed, concern about education in these fields has increased across the spectrum of education as test scores have decreased. Again, we live in an increasingly technological world and people who are increasingly uninformed about issues surrounding the STEM fields will face increasingly limited opportunities.

Current Political Issues Dealing with STEM

* Nuclear Power
* Renewable Energy (Wind,Solar)
* Reducing Oil Dependency
* Network Neutrality
* Telecom Immunity
* etc.   

3. Opening the Black Box

We can't change society and individual expectations over night. Nevertheless, we should be working to change the current trajectory of society as it relates to the use and development of technology. We need to facilitate a jail break from the confines of the black box.

A major problem is that students are used to being product consumers. Ostensibly, the purpose of technology is to enrich the lives of its users. Too often students learn to believe that technology is the domain of others and that others decide what technology should be invented and how it might be used. We believe this is wrongheaded and dangerous and we mean to address this misconception.

4. The Role of Robots

We propose addressing these misconceptions by giving students the opportunity to use advanced hardware platforms (in the form of robotics platforms) that allow students to work on and solve problems that are both engaging AND challenging.

Limitations to this kind of approach:

* teacher time
* teacher training
* age-suitable academic materials
* ready for use lesson materials
* lack of affordable robotics platforms

We feel that we are in a unique position to address all of these issues.

Requirements for choosing a hardware platform:

* Not too expensive
* Robust
* Highly extensible
* Approachable by students at multiple levels of abstraction (multiple age groups)

Comparing Platforms:

Side-by-side Comparison
Feature K-Team Koala [1] K-Team Khepera [2] Lego Mindstorm [3] iRobot Create w/ Gumstix
On-board Processor: PC/104 EXTENSION - 266 MHz with 64MB [4] KoreBot LE - 400 MHz 64MB [5] 32-bit AT91SAM7S256 - 256K flash/64K RAM 200 MHz - 16M flash/64M RAM
Wireless Connectivity: Wireless RS232 Radio Accessory Built-in Bluetooth Bluetooth Dongle Wi-fi Connectivity (With Wifi-stix)
On-board Sensors: 20IR, 6US, Batt, Motor PID 11IR, 2US, Batt, Motor PID Touch, Light, US, Servo Motors 3 Wheel Drop, 2 Bumper, IR Wall, 4 Cliff, Motor, Batt
Extensibility: Medium Medium Low (many 3rd party) High (many serial ports)
Strong Developer Community: Somewhat [6] Somewhat [7] Very Active [8] Very Active [9]
Unit Price (USD): ??? ($1000+) ??? ($1000+) $313.97 $482.00

5. I-robot Create In-depth Various Communication and Processing Options

Technical Issues

-Choosing a brain

Varying Abstraction Layers:

* None - Using Roomba Open Interface (ROI) 
* Command Module - 8-bit, 18 MHz Atmel Microcontroller
* Gumstix - 200/400MHz, 64MB/16MB Flash

Note: ROI comes built-in (probably originally developed for debugging the Roomba Vacuum; Command Module is marketed for the Create (extremely constrained device); Gumstix (Connex 200, to be exact) most powerful, most extensible (see below), not directly intended for use with the create.

Powering the Gumstix: 5V .5A vs 12V 1A

-Choosing communication

* Element Direct BAM (Bluetooth Adapter Module) - Virtual Serial Port - Connect to any Bluetooth enabled device
* Wi-Fi Connectivity via the WiFi Stix

Note: BAM is designed for use with the Create (uses the serial port in the cargo bay); WiFi Stix is easily deployed as a component in the Gumstix computer stack (our chosen "brain")

6. Introducing Player/Stage

Player and Stage are two components of the open-source (X-Windows-based) player project. Together they form a general-purpose method for easily working with both real-world robots and robot simulations. The following is from the Player/Stage homepage:

Player provides a network interface to a variety of robot and sensor hardware. Player's client/server model allows robot control programs to be
written in any programming language and to run on any computer with a network connection to the robot. Player supports multiple concurrent client
connections to devices, creating new possibilities for distributed and collaborative sensing and control. Player supports a wide variety of mobile 
robots and accessories. [10] [11]
Stage simulates a population of mobile robots moving in and sensing a two-dimensional bitmapped environment. Various sensor models are provided, 
including sonar, scanning laser rangefinder, pan-tilt-zoom camera with color blob detection and odometry. Stage devices present a standard Player 
interface so few or no changes are required to move between simulation and hardware. Many controllers designed in Stage have been demonstrated to 
work on real robots. [12] 

Examples with Stage

Making Player Work

* the gumstix buildroot [13]
* flashing the gumstix (kermit) [14]

7. The Wall Following Program

Examples with Player

8. The Summer Program In Robotics and Intelligent Technology (S.P.I.R.I.T.)

SPIRIT is a one week long summer day-camp held at UVA-Wise. It is available for high school juniors and seniors who are interested in science and technology. Currently, it will be limited to applicants from Wise County, but we hope to grow the size of the program in subsequent years and to increase involvement by the community of Southwest Virginia at large. Participants will receive:

 * Hands-on experience with actual robotics hardware.
 * Meaningful experience programming autonomous robots to solve challengin engineering problems. 
 * Experience with programming in simulated environments.
 * Access to state of the art hardware and laboratories in a higher education setting.

Areas of Study

 * Basic Programming Using C
 * Basic Robotics Concepts
 * How to Use and Program the Robot
 * How to Simulate and Program Robotic Behavior Using an Open Source Simulation Environment
 * How to Test Autonomous Robot Control Program in Simulation Environments
 * How to Transfer Autonomous Control Code to the Actual Robot

Components and Related STEM Objectives

 * Introduction: Familiarize with hardware and lab environment
 * Play son on robot: Introduce fundamentals of programming and robot control
 * Program robot along a path: Sequence commands
 * Program the robot to wall-follow: Logical looping structures
 * Program robots to play a (cooperative) game: Advanced problem-solving and decision making in changing environments 

Our goal is to facilitate a jail-break from the black-box, and to get participants off on the right foot for futures in technological fields and for lifetimes in the technological age.

Selected Projects of Interest from the Create Forums

 * LOGO Turtle - Drawing simple patterns with the I-Robot Create [15]
 * Subsumption Behavioral Programming - [16]
 * Composed Song bytecodes - [17]
 * Wii mote Accelerometer/Inclinometer sensor use - [18]
 * Wi-Fi Optimizer - [19]
 * Wii mote Remote Control - [20]
 * Maze Simulator/Solver - [21]

To Do

* Example with Player on actual robot
* Code for example with Roomba in stage
* Review Wiki
Personal tools