FINAL

 

NARRATIVE  DESCRIPTION

The ShyBot  at first glance, appears to be and ordinary cardboard box.  Upon further inspection, some electronics can be seen, but its true purpose is hidden.  However, as you walk towards it, perhaps to inspect it closer, it skids away.  ShyBot is the box that likes its personal space.  Utilizing two ultrasonic rangers, ShyBot can independently control two motorized wheels to stay away from anyone trying to pop its personal bubble.  It watches in front of itself and makes sure no one gets too close.  If someone does approach it, ShyBot will drive away, and the closer someone gets to it, the faster it’ll drive away.  The independently controlled wheels allows for the ability to turn, as well.  If someone walks towards ShyBot at an angle, ShyBot will turn its wheels so as to both move away and face itself towards the interloper: ready to run some more.

 

PROGRESS

Construction of Wheel Elements

Integration of Ultrasonic Ranger

Code Configuration

 

SCHEMATIC    (click schematic for higher resolution diagram)

 

 

ARDUINO CODE


#include <NewPing.h>

int TRIGGER_PINleft = 4 ;

int TRIGGER_PINright = 7 ;

int ECHO_PINleft = 5  ;

int ECHO_PINright = 6 ;

int MAX_DISTANCE=55;

int wheel_left= 9;

int wheel_right=11;

NewPing sonarleft(TRIGGER_PINleft, ECHO_PINleft, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

NewPing sonarright(TRIGGER_PINright, ECHO_PINright, MAX_DISTANCE);

void setup() {

Serial.begin(115200); // Open serial monitor at 115200 baud to see ping results.

}

void loop() {

delay(50); // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.

int leftread=(sonarleft.ping_cm());

int rightread= (sonarright.ping_cm());

// Serial.print("Pingleft: ");

// Serial.print(leftread); // Send ping, get distance in cm and print result (0 = outside set distance range)

// Serial.print("cm    ");

// Serial.print("Pingright: ");

// Serial.print(rightread); // Send ping, get distance in cm and print result (0 = outside set distance range)

// Serial.println("cm");

int motorright=(1023-(rightread*16.24))*.75;

int motorleft=(1023-(leftread*16.24))*.75;

if (rightread!=0 && rightread<40){

analogWrite(wheel_right,motorright);

Serial.print("Pingleft: ");

Serial.print(leftread); // Send ping, get distance in cm and print result (0 = outside set distance range)

Serial.print("cm      ");

Serial.print(" Pingright: ");

Serial.print(rightread); // Send ping, get distance in cm and print result (0 = outside set distance range)

Serial.print("cm");

Serial.print(" motorright: ");

Serial.println(motorright);

}

else{

analogWrite(wheel_right,0);}

if (leftread!=0 && leftread&amp<40){

analogWrite(wheel_left,motorleft);

Serial.print("Pingleft: ");

Serial.print(leftread); // Send ping, get distance in cm and print result (0 = outside set distance range)

Serial.print("cm    ");

Serial.print(" Pingright: ");

Serial.print(rightread); // Send ping, get distance in cm and print result (0 = outside set distance range)

Serial.print("cm");

Serial.print(" motorleft: ");

Serial.println(motorleft);

}

else{

analogWrite(wheel_left,0);

}


delay(100);

}

 

PROCESS & OUTCOME DISCUSSION

The idea for the ShyBot came from an idea of interactivity.  During the sessions where we brainstormed different surprising things we could create, we devised many possibilities including a balloon popping machine, a automatic water gun, and a walking box.  Due to the physical limitations of the devices we had at the time and the interesting complexity that comes with movement, we decided to create a moving robot.  Through more deliberation, we decided that the most surprising thing a moving robot could do would be to move when you don’t expect it to and, with the amount of friendly, human-centric robots being made, to have it run away from people.  A large part of this decision was the limitations we had on devices available.  For example, some quick hand calculations showed that the servo motors in the physical computing laboratory, likely wouldn’t have enough force to cause a spray bottle to spray sufficiently far.

To create our shy robot, we tested many different sensing and movement related devices.  We learned how devices worked theoretically and how to use them.  This included infrared proximity sensors, visible light proximity sensors, photoresistors, servo motors, and, what we finally decided to use, ultrasonic rangers and DC motors with transistors.

Not only did using these devices teach us how they worked, but also general ideas about physical computing such as a better understanding of how pulse width modulation can be used to control things and how to convert the PWM into different voltages when using a transistor to control another circuit.  We also gained significant knowledge on using external power supplies.

We were really impressed with our final ShyBot prototype, but there were areas that we overlooked.  Throughout the design and building process, we focused on function over form.  This lead to the creation of an effective, but not particularly impressive looking robot.  When presenting to the class, it was noted how having a face on the front and the ultrasonic rangers more hidden behind the cardboard box could make it more approachable and more likely to surprise someone.  This was a very good point, especially when creating something that is meant to interact with people: the design should coincide with the function to foster a more natural interaction that leads to the intended purpose.

Also, there were some problems with noise from the ultrasonic rangers.  We implemented some simple filtering techniques including a low-pass cutoff, but with more time we would have explored different types of filters and the theory behind them.  Given enough time, we might have even created our own filter that was built for our purposes.


 

SaveSave