Abstract
Our idea was to design and produce a robot arm controlled by external sensor input. On a table, we had a 2 degree of freedom (DOF) robot arm with four motors that was surrounded by 4 stations. Each station had parts of the robot arm that controlled the same part on the actual arm with a potentiometer. There were bins and blocks at each end of the arm that could be picked up and moved to different locations. During our exhibit at the Children’s Museum, Robby successfully facilitated teamwork amongst the children and their parents. They were able to realize the mechanisms of each station and were delighted by ability to freely control parts of the robot arm. They learned how to move the arm collaboratively from their individual stations to pick and place the blocks in bins. Through this task-oriented activity, we hope to have inspired fascination in robotics with an interactive interface.
Objectives
Implementation
The design really centered around answering two questions:
In terms of material, we chose ⅛” wood for the arm so that it would be lightweight and easy to laser cut. We did not enclose any of the wiring or motors so that the children could see how the arm was being controlled. We also designed the arm in such a way that it would move 180 degrees to maximize movement since developing a rotating base (adding a third degree of freedom) was out of the scope/time frame of this project.
Outcomes
We didn’t have any issues with the weight or robustness (to children’s abuse) that we were initially worried about. We did have an issue with the arm being wobbly due to they way we chose to connect parallel pieces of the arm.
The four stations in the front control various parts of the robot arm behind it. The two bins on the side are what the blocks must be placed into.
This is a picture taken at the children’s museum where two boys are working together to get the robot arm to pick up a block and place it in one of the bins.
Contribution
We both designed, laser cut, programmed, wired and tested the robot arm together. We decided that this was the best way to tackle the project instead of working on individual pieces and putting them together.
The gripper design was adopted from here
]]>One of the busiest areas of the museum was the Garage. Children were running around, throwing balls, moving all the big and small mechanisms which was really exciting to see. An interesting thing that I observed was that the kids were try all sorts of things until they exhausted all possibilities. For example, there was one mechanism that released balls from the top of poles one by one so when they bounced they would make a sinusoidal shape. The children tried moving different number/combinations of balls to the top before turning on the mechanism to see what it would do. Once they exhausted all possibilities they moved on to play with something else.
The Garage was an excellent part of the museum that encouraged a lot of curiosity. This was the place I imagined the robot arm as it would add to the wonder and curiosity that was already contained in the garage.
]]>Link to video of gripper moving: https://drive.google.com/file/d/0B35Qci0Dl57aUXh1eFFZR2piUW8/view?usp=sharing
The code is below:
#include
int angle = 0;
Servo servo;
void setup() {
pinMode(2, INPUT);
pinMode(3, INPUT);
servo.attach(9);
}
void loop() {
if (digitalRead(3) == HIGH && angle < 180) {
angle++;
servo.write(angle);
delay(15);
}
if (digitalRead(2) == HIGH && angle > 0) {
angle--;
servo.write(angle);
delay(15);
}
}
Link to video: https://drive.google.com/file/d/0B35Qci0Dl57aYXZTUWtIMjhVcnc/view?usp=sharing
#include "pitches.h"
int buttonState = 0; // Reading the button status
// Notes to play, corresponding to the 3 buttons
int notes[] = {
NOTE_B4, NOTE_A4, NOTE_C4
};
void setup() {
}
void loop() {
// There are three buttons wired to Digital Output 0, 1 and 2
// The speaker is wired to Digital Output 8
for (int i = 0; i < 3; i++) {
// Reads the state of the button
buttonState = digitalRead(i);
// If the button is pressed the note corresponding to the
// button pressed is played
if (buttonState == HIGH) {
tone(8, notes[i]);
}
//If button is not pressed, nothing is played
else {
noTone(8);
}
}
}
/*************************************************
* pitches.h
* Public Constants
* Taken from Arduino Documentation
*************************************************/
#define NOTE_C4 262
#define NOTE_A4 440
#define NOTE_B4 494
Above is the link to my video on my CMU Google Drive. It can only be accessed with a CMU account. You have to turn the volume up to hear the speaker.
]]>