Monday, March 30, 2009

International Trivia

Since this is International Awareness week, an International Trivia is being held at Mellow Mushroom on Thursday night at 8pm, so I was wondering if people are interested in forming an Architectural Robotics team.

Krishna and I could be the Indian specialists, Ivan the European expert, Henrique the South American guru, Tarek the Mid-East Master and Joe, Adam and Paul the token Americans.

Any takers? Feel free to ask others to join in, the more the merrier.
-Apoorva

Problem (possible) with new Arduinos

Hi All.

Here's a heads up to help you avoid a potential frustration...

It appears the new Arduino boards have a different microcontroller
from the ones we've all been using up to now.

To accommodate these (Atmega 328) microcontrollers, you must
download the latest version of the Arduino IDE software.
Then, set up your software by clicking:

Tools -> Board -> Duemilanove w/Atmega 328

I am assuming this pertains to all the new boards, although
I haven't checked each one. I examined two at random and both
had the new chip.

Best,
Paul.

Tuesday, March 24, 2009

Interactive Emergency System for Low Income Settlements

ARCH 879/ECE 893 - Architectural Robotics
Henrique Houayek
Krishna Teja

Interactive Emergency System for Low Income Settlements



Problem Statement


A recent Federal Census (IPP 2009) has estimated that today there are more than a thousand slums in Rio de Janeiro. These have spread rapidly in the past forty years and are now a constant part of this Brazilian city landscape. Despite their number they remain a marginalized part of the city with lack of important infrastructure and susceptible to emergency situations.




Design Proposition

To help improve the infrastructure of these spaces this group proposes the creation of a mobile interactive robot that could float around the slum in a cable, sensing diverse situations and reacting and communicating the population.

Emergency Situations would be communicated via color signals, these could be:


• At night: sense movement of the inhabitants, turn a light on and follow that specific person all the way to their house.

• Signal population if there is any police and criminal conflict.

• Possible fire

• Earth Slides/ Heavy Rain


• Health issues





Possible emergency situations







Robot would walk over cables suspended by poles in the area










(A) Yellow: Light to illuminate streets and pedestrians
(B) Green: Fire
(C) Blue: Conflict between police and criminal conflict
(D) Red: Heavy rain, Possible earth slides



Scenario


(A) It’s night in the neighborhood, Manuela needs to leave home to buy some medications in the pharmacy.

(B) While Manuela walks, the sensors embedded in the street sense her presence. This actuates the light and moves the robot in the direction of her movement.

(C) Every time Manuela walks, different sensors in the street sense and move the light according to her trajectory.


Diagram of parts




1- Sensor: transmitter/receiver
2- RC Servo motor connected to pulley

3- Suspended robot over two poles embedded with multiple lights


Possible scenario




Danger situation in the area, sensors embedded around the area would tell the robot that this could be a possible earth slide.
Robot senses the movement of people and sends a light signal: The space is dangerous to walk or the structure of the wood bridge can be damage.


Hardware used
:

Arduino Board RC-servos
(2)
IR Led’s
(3)
IR Receivers
(3)
Resistors (3-10k ohms, 3-100 ohms)
(2) Pulleys

Script

int servoPin1 = 9; int servoPin2 = 10; int Action1 = 2; // Action sensors (Digital Inputs 2-4) int Action2 = 3; int Action3 = 4; int Yellow = 12; int Action = 0; int A1 = 0; int A2 = 0; int A3 = 0; void setup() { pinMode(servoPin1,OUTPUT); pinMode(servoPin2,OUTPUT); pinMode(Yellow,OUTPUT); pinMode(Action1,INPUT); pinMode(Action2,INPUT); pinMode(Action3,INPUT); } void loop() { digitalWrite(Yellow,LOW); while (Action == 0) { A1 = digitalRead(Action1); //when motion is detected if (A1==HIGH) { Action = 1; } else { Action = 0; } } digitalWrite(Yellow,HIGH); //led turns on int temp; for (temp = 0; temp <=250; temp++) { digitalWrite(servoPin1,HIGH); delayMicroseconds(1600); digitalWrite(servoPin1,LOW); delayMicroseconds(20); digitalWrite(servoPin2,HIGH); delayMicroseconds(1600); digitalWrite(servoPin2,LOW); delayMicroseconds(20); } A2 = digitalRead(Action2); //when motion is detected if (A2==HIGH) { Action = 1; } else { Action = 0; } while (Action == 0) { A2 = digitalRead(Action2); if (A2==HIGH) { Action = 1; } else { Action = 0; } } for (temp = 0; temp <=250; temp++) { digitalWrite(servoPin1,HIGH); delayMicroseconds(1600); digitalWrite(servoPin1,LOW); delayMicroseconds(20); digitalWrite(servoPin2,HIGH); delayMicroseconds(1600); digitalWrite(servoPin2,LOW); delayMicroseconds(20); } A3 = digitalRead(Action3); if (A3==HIGH) { Action = 1; } else { Action = 0; } }

Problems encountered:


1) The number of sensors used was not enough to capture real time movement of pedestrians. 2) The cable used to support the movement of the robot was not rigid; better motion would been obtained by using different material for the string. 3) One Arduino board can only handle a limited number of inputs and outputs it was difficult to use more than 2 RC-servos which would have given a better directional control.


Tuesday, March 17, 2009

Friday, March 13, 2009

YOU in Youtube

Hi all,
Here is YOU in youtube. Enjoy



Tarek

Thursday, March 12, 2009

Particulate Gas Localization - Joe & Ivan - Project #2


Particulate Gas Localization - Project 2 - Joe Manganelli & Ivan Siles



Problems encountered:

- The water pump we bought did not have enough pressure to make the water become mist through the misters.
-


Code:

//////////////////////////////////////////////////////////////////////////////////////////

// //

// Particulate/Gas Localization - Board 1 (Ivanduino) //

// //

// Joe Manganelli and Ivan Siles //

// //

// Project #2 - Architectural Robotics (Arch879/ECE893) //

// //

// Spring 2009 //

// Clemson University, Clemson, SC //

// //

/////////////////////////////////////////////////////////////////////////////////////////

#include

// Declare all the IN/OUT pin variables

// Inputs

int Sensor = 6; //variable for ir sensor

//Outputs

int Joeduino = 5; //variable for communication with second arduino

int UV_LED = 13; //variable for UV LED

int Pump = 4; //Variable for water pump

//Servos

ServoTimer1 Bellows;

ServoTimer1 Breathers;

int Angle_Bellows = 0;

int Angle_Breathers = 0;

int Smoke = 0;

int IR = 0;

void setup()

{

Bellows.attach(9); // attaches the servo on pin 9 to the servo object

Breathers.attach(10); //attaches the servo on pin 10 to the servo object

pinMode(Sensor, INPUT);

pinMode(UV_LED, OUTPUT);

pinMode(Pump, OUTPUT);

pinMode(Joeduino, OUTPUT);

} //Close void setup

void loop()

{

digitalWrite (UV_LED, LOW); //Make sure all LEDs are OFF

digitalWrite (Pump, LOW); //Make sure Pump is OFF

digitalWrite (Joeduino, LOW); //Make sure Arduino 2 is OFF

// goes from 0 degrees to 35 degrees

for(Angle_Breathers = 0;Angle_Breathers <=35;Angle_Breathers+=1) {

Breathers.write(Angle_Breathers); // tell servo to go to position in variable

delay(20); // waits 20ms for the servo to reach the position

}

// goes from 180 degrees to 100 degrees

for(Angle_Bellows = 180;Angle_Bellows >=100;Angle_Bellows-=1) {

Bellows.write(Angle_Bellows);

delay(10); // waits 10ms for the servo to reach the position

}

while (Smoke == 0) { //If no smoke, keep updating sensor

IR=digitalRead(Sensor); //Read from Sensor

if (IR==HIGH){

Smoke=1;

}

else{

Smoke=0;

}

} //Close while

digitalWrite (Pump, HIGH); //Activate relay for the Pump

// goes from 100 degrees to 180 degrees

for(Angle_Bellows = 100;Angle_Bellows >=0;Angle_Bellows-=1) {

Bellows.write(Angle_Bellows); // tell servo to go to position in variable

delay(30); // waits 30ms for the servo to reach the position

}

digitalWrite (UV_LED, HIGH); //Activate UV_LEDs

digitalWrite (Joeduino, HIGH);

while(1) {

for(Angle_Breathers = 10;Angle_Breathers <=60;Angle_Breathers+=1){

Breathers.write(Angle_Breathers); // tell servo to go to position in variable

delay(20); // waits 30ms for the servo to reach the position

}

for(Angle_Breathers = 60;Angle_Breathers >=10;Angle_Breathers-=1) {

Breathers.write(Angle_Breathers); // tell servo to go to position in variable 'pos'

delay(20); // waits 20ms for the servo to reach the position

}

} //Close while loop

} // Close void loop

//////////////////////////////////////////////////////////////////////////////////////////

// //

// Particulate/Gas Localization - Board 2 (Joeduino) //

// //

// Joe Manganelli and Ivan Siles //

// //

// Project #2 - Architectural Robotics (Arch879/ECE893) //

// //

// Spring 2009 //

// Clemson University, Clemson, SC //

// //

/////////////////////////////////////////////////////////////////////////////////////////

// Declare all the IN/OUT pin variables

//Inputs

int Ivanduino = 5; //variable for input from Ivanduino

//Outputs

int LED_right_breather = 9; //variable for Green LED

int LED_left_breather = 10; //variable for White LED

int Signal = 0; //variable for Ivanduino

int Pin5 = 0; //variable for Pin5

int LED_rb = 0; //variable for activiating LED_right_breather

int LED_lb = 0; //variable for activating LED_left_breather

void setup()

{

pinMode(Ivanduino, INPUT);

pinMode(LED_right_breather, OUTPUT);

pinMode(LED_left_breather, OUTPUT);

} //Close void setup

void loop()

{

analogWrite (LED_right_breather, 55); //Make sure right breather lights are low

analogWrite (LED_left_breather, 55); //Make sure left breather lights are low

while (Signal == 0) { //If no smoke, keep updating sensor

Pin5=digitalRead(Ivanduino); //Read from Ivanduino

if (Pin5==HIGH){

Signal=1;

}

else{

Signal=0;

}

} //Close while

while(1) {

for(LED_rb = 55, LED_lb = 255;LED_rb <=255,LED_lb>=55;LED_rb+=4,LED_lb-=4) {

analogWrite (LED_right_breather, LED_rb);

analogWrite (LED_left_breather, LED_lb);

delay(20);

} //Close for loop

for(LED_lb = 55, LED_rb = 255;LED_lb <=255,LED_rb>=55;LED_lb+=4,LED_rb-=4) {

analogWrite (LED_right_breather, LED_rb);

analogWrite (LED_left_breather, LED_lb);

delay(20);

} //Close for loop

} //Close while loop

} // Close void loop





Initial Idea for Project 3

Hello, Everyone,

We are posting this quick sketch of an idea to get initial feedback. The scenario below goes beyond the scope of what is possible within the next several weeks. From it, we extract what we think is a compelling scope of work. Your feedback is greatly appreciated.

Miss Jane wakes in the morning, feels around for her glasses, and pulls her walker up to the bedside. The television is in the middle of the room facing her. As she gets up and proceeds to the kitchenette, the television tracks her movement, follows her and orients itself to her position. When she turns and faces it, it recognizes that she is looking directly at it and waits for instruction. Simple standard gesturing allows her to turn it on or off or change the channel and volume. As Miss Jane progresses through her daily routine, the television passively tracks her position, follows her and waits for her to gaze at it. The television uses a combination of ultrasonic sensors and IR sensors to locate Miss Jane and determine gaze. This allows her to watch TV from anywhere in the apartment with a single television. Since Miss Jane follows a more or less set pattern in her daily routine, the television uses a neural network algorithm to anticipate expected behavior. This allows the television, after just a couple of days, to preposition itself based upon her routine and wait for her gaze. In case Miss Jane is out or has fallen asleep, it can anticipate where it should be when she returns or wakes up. In addition, the lights within the room are keyed off of the same input data and adjust automatically as she moves about her day so that she does not have to work the switches in the rooms. One wall in the main living space performs a keyword search of the digital TV Guide and understands what types of shows Miss Jane likes. When it identifies shows in certain genres that she likes, it changes color to passively suggest to her that something is on that she may like to watch. The effect of the wall would be similar to the Detroit Airport's Colorful Light Tunnel.

This scenario includes several features, each of which would be appropriate as the scope of Project 3. We are most interested in the learning problem and are interested in using Project 3 to explore neural networks. We would like to work on the algorithm that will allow a television to track position and learn a routine. The other part that interests us is focusing on how the television distinguishes when the user is gazing at it as a way to prime it for use. Having in-house experience with either of these issues will have broader applicability and future usefulness as we move forward with our endeavors in the IMSA lab.

Again, your thoughts are greatly appreciated.

Apoorva and Joe

Haptics

I can see this technology being useful for aging in place:

http://www.spectrum.ieee.org/mar09/8147

Paul.

Wednesday, March 11, 2009

Purchase for Project #3 - ADD EVERYTHING BY SUNDAY NIGHT


Hi all,

again, I'll write the list of components to purchase for this coming project.
Feel free to edit the post and add anything you might need.
If you know what you want but don't know what it's called or where to get it I'll be happy to help with that.

Total so far: $1,000.00+

From Adafruit.com (Arduino supplier) - Total: $482.00 + shipping

- Arduino board - 10x $30.00 = $300.00
- Arduino motor shield - 5x $19.50 = $97.50
- Arduino proto shield (Joe) - 1x $15.00 = 15.00
- 9V Adapter for Arduino - 10x $7.00 = $70.00


From Parallax.com - Total: $200.25 + shipping

- 180-degree rotating servo - 10x $11.69 = $116.90
- PIR Sensor - 5x $9.49 = $47.45
- Temperature Sensor - 10x $3.59 = $35.90


From Mouser.com - Total: $212.80 + Shipping

- IR Distance sensor - 10x $8.85 = $88.50
- IR Distance Sensor (AWE) - 2x $8.00 = $16.00
- High Power White LED - 30x $0.91 = $27.30
- 100-ohm resistors - 50x $0.04 = $2.00
- 220-ohm resistors - 50x $0.04 = $2.00
- 1 kohm resistors - 50x $0.04 = $2.00
- 10 kohm resistors - 50x $0.04 = $2.00
- Infrared LED - 40x $0.23 = $9.20
- Infrared Receiver - 40x $0.24 = $9.60
- Multicolor LED (RED/GREEN) - 20x $0.92 = $18.40
- Thermistor - 20x $0.46 = $9.20
- 2N2222 General Purpose Transistor - 20x $0.21 = $4.20
- Buzzer - 10x $0.74 = $7.40
- 5VCD 16A Relay - 10x $1.70 = $17.00


From Robsonco.com - Total: $37.50 + Shipping

- 1490 Sensor (Digital compass) - 5x $7.50 = $37.50
Order using the fax order form to get student discount.


From Radioshack.com - Total: $67.74 + Shipping

- Photo resistors (5-pack) - 10x $2.99 = $29.90
- Dual mini PCB - 10x $1.99 = $19.90
- Multi-purpose PCB - 5x $1.99 = $9.95
- Breadboard (Krishna) - 1x $7.99 = $7.99


From Acroname.com - Total: $28.50 + Shipping

- Connector for Sharp IR Sensor - 15x $1.90 = $28.50


From eBay.com - Total: $49.63

- SMC Solenoid Valve - 1x $9.99 = $9.99 + $4.95 Shipping
- CO2 Cartridge (12-pack) - 1x $12.95 = $12.95 + $6.75 Shipping
- Qualatex Ballon - 1x $11.99 = $11.99 + $3.00 Shipping


From Amazon.com - Total: $9.99 + Shipping

- 24V Power Adapter - 1x $9.99



Monday, March 9, 2009

Wednesday lunch options

Just confirming, all students are invited for lunch on Wednesday after project presentations and demos. The choices are Mellow Mushroom or Ancheaux's. If anyone would like to go elsewhere, I don't think we'd mind checking that place out too.

And to ensure this is not a fluff post, here's an interesting article that we might not have hit upon. http://blogs.zdnet.com/emergingtech/?p=587

Hope everything is set for Wednesday morning. See y'all then.

-Apoorva