Meeting Minutes for 2012-02-15

buildscc | 15 Feb 2012 | | meeting-minutes



Kyle Brogle

Anthony Inzero / Christopher Woodall

Valerie Young

Allan Wirth

Dan Gastler

Monica Gribouski

Danny Cooper / Christopher Woodall

Christopher Woodall

Older · View Archive (146)

BUILDSbot 12 ounce

[[Image:IMG_4024.jpg thumb right 240px 12 Ounce compared to its name sake. The 12 Fl. Ounce Diet Coke can.]]


BUILDSbot 12 Ounce is part of the overarching BUILDSbot project. The goal is to create a functional robot which can take commands from a USB serial connection (possibly move to a wireless connection eventually).

The robot should also be capable of doing line following as its main function. USB connectivity is simply for testing and possibly to help simplify future wireless based communication schemes.

Specifications and Goals

[[Image:BUILDSbot-12Ounce-1-Holding.jpg|thumb|right|200px|Chris Holding 12 Ounce]]

  • Tiny, lightweight and easy to make.
  • Line Following Capabilities
  • Begin development on a standard AVR-C++ library for future AVR microcontroller projects

Version 1

Coming soon…

12 Ounce V1.0 is currently being worked on.





Block Diagram


PCB Layout


Change Log




{| '''Part Names''' || '''Quantity''' || '''Part Number/Description''' || '''Vendor/Vendor ID'''|| '''Link/Datasheet''' |- | J1*, J2* || 2 || Mini Metal Gearmotor 100:1 (6V DC) || Sparkfun - ROB-08912 || [] |- | J1, J2 || 2 || Terminal Block 2-pin 3.5mm || Adafruit - 724 || [] |- | U3, U4, U5 || 3 || QRD1114 - Optical Detectors/Phototransistors || Sparkfun - SEN-00246 || [] |- | U1 || 1 || Arduino Duemillanove (Uno also works) || DEV-11021 || [] |- | U2 || 1 || L293E Quadruple Half H-Bridge || Digikey - 497-3622-ND || [] |- | D1 - D8 || 8 || Schottky Protection Diodes || N/A || N/A |- | C1, C2 || 2 || .1uF Ceramic Capacitors || N/A || N/A |- | C3 || 1 || 10uF Ceramic Capacitors || N/A || N/A |- | R1, R3, R5 || 3 || 200 Ohm Resistor || N/A || N/A |- | R2, R4, R6 || 3 || 5.6kOhm Resistors || N/A || N/A |- |}


{| '''Quantity''' || '''Part Number/Description''' || '''Vendor/Vendor ID'''|| '''Link/Datasheet''' |- | 1 || Ball Caster Omni-Directional Metal || Sparkfun - ROB-00320 || [] |- | 2 || 32x7mm Wheels || Sparkfun - ROB-08901 || [] |- | 1 || Broken IR/Microwave Motion Detection Sensor for the chasis || N/A || N/A |- | 2 || Heavy Duty Zip Ties (in same these things actually secure the motors in place || N/A || N/A |}


Full Schematic

[[Image:12OUNCE_SCHEMATIC2.JPG|thumb|center|400px|Schematic done in EAGLE CAD]]

This schematic is laid out in EAGLE CAD 6, which offers an XML file format. The full schematic is available on [ Github].

Motor Controller

[[Image:BUILDSbot-12Ounce-1-Side.jpg|thumb|center|250px|Side View of Motor Controller]]

The motor controller works in a very simple manner here. You have control of 3 pins A, B and Enable for each motor. Enable is hooked up to a PWM pin and will control the speed of the motors and whether they are on or off. Pins A and B will be set HIGH or LOW to determine the direction of the motor. For example, if A is HIGH and B is LOW you will move Counter Clockwise. Alternatively you can do a halt, which will drive the motor against itself it is moving by raising both A and B HIGH.

The problem is this state is not very good for the motor and does not actually lock the motor once it has stopped moving. To do a true halt A and B must be strobed between the Counter Clockwise state and the clockwise state. In the future models A will go direct and B will be the same pin as A and go through a NOT gate to reduce pin usage on the microcontroller. This also ensures that the halt state cannot be reached. Instead you should use a proper halt, which is more effective and better for the motors.

Optical Detectors

[[Image:BUILDSbot-12Ounce-1-SensorArray.jpg|thumb|right|250px|Sensor Array]]

On the bottom of 12 Ounce 3 Optical Detectors/Photo-transistors from Sparkfun were mounted. These are very cheap, noise reduced units which can easily tell white from black and do object detection. These detectors are pointed down and are intended for use as line followers. Since white and black react very differently when IR light is shined on them we can easily tell the difference between the two shades.

Thus if a basic line follower course is created (white background with black lines) 12 Ounce should very easily be able to navigate it with the 3 sensors. Two of the sensors are spaced towards the outer extremities of 12 Ounce while the third is set in the centre and a little bit back.

This should allow for simplified tracking of lines. If a line appears to the right sensor but none of the others we can deduce the direction we should move in. If we see a line under the central sensor we know we are likely on path, or maybe at a decision point if certain other circumstances exist. Using all of this information we should be able to follow lines and possibly navigate slightly more complicated courses, which include decision points.


[[Image:BUILDSbot-12Ounce-1-Bottom1.jpg|thumb|left|260px|Bottom mounting]]

[[Image:BUILDSbot-12Ounce-1-TopOn.jpg right thumb 200px Full 12 Ounce with its motion detector top on]]

The chassis is constructed out of a Motion Detection unit which was accidentally fried by me and a friend of mine. The flat back plate of the detector made up the base of the robot and a few holes were drilled into it. The holes function to: allow wires to be run from the motors and sensors to the microcontroller and motor controller; attach the motors to the chasis via zip ties; secure the ball roller with screws; and allow the line sensors to poke through the bottom of the chasis. The current mounting situation for the motors involves using zip ties to hold the motors in place. This is effective and deals perfectly with the forces at play; however, I am currently looking into a better solution (velcro, double sided tape, etc). The top of the motion detector is used as a cover for the robot for storage and eventually for when it is operating. The plan is to allow BUILDS members to decorate it and make it look nice and representative of BUILDS as it works its way around the course.

Code Overview

Currently go to [ Github] to grab the code.

Example Logic

This is some basic Psuedo-Code to get the point across of how a basic line follower might work. This code is not meant to work, some variables are missing as are the implementations of the functions. This code is subject to tons of changes, but demonstrates the simplest way of doing line detection, with no mapping.

The actual logic I used began to get more complex and is simply a list of states and not very elegant.

#define LEFT 0
#define MID 1
#define RIGHT 2
#define THRESHOLD 50

// ADC inputs are 10 bits long and unsigned.
uint16_t line_sensors[3];

// Implement some way to update sensors
void updateSensor(sensor);
void updateSensors();
void motor_speed(motor_pin, pwm_speed);

void main() {
	while(1) {
		// Fetch new data every loop

		// Basic algorithm only requires 2 sensors
		if (line_sensors[LEFT] > (line_sensors[RIGHT] + 20)) {
			// Then the line is to the left... move left
			motor_speed(left_motor, 100);
			motor_speed(right_motor, 250);
		} else if (line_sensor[RIGHT] > (line_sensors[LEFT] + 20)) {
			// Then the line is to the right... move right
			motor_speed(left_motor, 250);
			motor_speed(right_motor, 100);
		} else {
			// Keep going straight
			motor_speed(left_motor, 200);
			motor_speed(right_motor, 200);




  • [DONE] Milestone 1: Constructed and Moving === :

Video of the BUILDSbot doing some basic movements (pre-programmed)

All of 12 Ounces sensors have been properly tested and identified. 12 Ounce can also take very basic commands over serial.

Current “protocol” is

{| '''Character''' || '''Action''' |- | g || Start moving (in whatever specified direction) |- | s || Stop movement (not a halt, a soft stop) |- | l || Turn/Spin Left (in place) |- | r || Turn/Spin Right (in place) |- | f || Forward Direction |- |b || Backward Direction |}
  • [DONE] Milestone 2: Line Following in C++

12 Ounce should be able to follow a line without any problems at this point, even if the algorithm is sort of nasty looking. :

[ Video of 12 Ounce Line Following]


  • BUILDSbot lost Serial support in the move from Arduino to C++ (namely because I didn’t spend enough time on getting serial communications working.

[ACTIVE] Milestone 3: Create a cheap, simple and easy to reproduce kit and general development platform

Additional Specs for a 12 Ounce Robotics Platform

  • Wheels mountable to PCB Board.
  • 3-4 downward pointing Photo Transistors for detecting lines
  • Expansion ports for up to 2 extra servos
  • Shield like system
  • Break out extra I/O pins in some manner allowing for addition of new sensors (possible IR collision detection sensors or range finders, or cameras, or whatever).
  • USB bootloader programmable. (Arduino bootloader compatible, for those who like that nicety). Should also be mostly through-hole, possibly with an SMT MCU to combine the USB and MCU into one chip. Otherwise, use FTDI chip


  • Christopher Woodall
  • Anthony Inzero
  • Allan Wirth



Multitouch Table

Current Status

Acrylic sheet obtained; in the process of sanding/flame-polishing the edges.

Meetings are vaguely set on Sundays around 2:30.


There are a variety of ways to approach building a multitouch table, but for this project we will be using Frustrated Total Internal Reflection (FTIR). FTIR functions by shining Infrared (IR) light into the sides of an acrylic sheet, where the light is reflected. As soon as a surface hits the top of the acrylic the IR light is scattered downward through the sheet where it is picked up by an IR camera. Any surface hitting the sheet shows up to the camera as “blobs” of light, which can be tracked using software. Furthermore, a projection surface is placed on top of the acrylic sheet. It serves two purposes: one, to act as a screen for the multitouch table, so the projector (set underneath the acrylic) has a surface to project onto, and two, so that, coupled with a layer of silicone sealant between the acrylic and the projection surface (the compliant layer), the IR camera can pick up on motion rather than static points. For example, when a finger is pressed and slid across the surface, the compliant layer makes the projection surface briefly stick and slide, appearing to the IR camera as a short trail. This, rather than the acrylic sheet alone, allows for ease in tracking moving touches.


First, the edges of the acrylic must be sanded—the IR LEDs will not project properly into saw-cut acrylic edges. Next, the LEDs must be sautered together in a line, spaced about an inch apart from each other, so as to line all edges of the acrylic sheet. They can be taped or otherwise attached to the acrylic. To create the compliant layer, silicone sealant will be rolled onto a sheet of vellum using a foam roller in order to distribute it evenly. The silicone will be allowed to dry, and this process will be repeated at least twice more. Finally, the vellum can be placed on top of the acrylic.

In order to ensure the camera picks up only IR light, one can either purchase an IR camera, or open the camera and remove the IR filter, replacing it with a visible light filter. A visible light filter can be purchased, or one can be created using the magnetic tape inside of a floppy disk.

Finally, the projector will be set up either directly below the acrylic, or mirrors will be used to reflect the projected image onto the projection surface. A cabinet will be built out of wood to house the IR camera, projector, and multitouch surface, and a wooden baffle will be built around the top of the multitouch surface so that IR light directly from the IR LEDs does not shine at the user. The computer running the multitouch software will either be housed in this cabinet, or will be attached and set up separately for optimal ease of testing. Touchlib, an open source multitouch library, will be used for most software purposes until a software development phase has begun.


Project Leader: Monica Gribouski