Open aliaghobash opened 5 years ago
Only NYU members can access the link.
The initial stages of the hand, alot of trial and error was involved with changing and cutting the strings as you can see with the pliers and the bend out springs on the side.
The hand in its first stages, this was a model with alot of problems as I explain in the video link.
This is the final Robohand in action. https://youtu.be/1UdoJnnGkak
Once the correct springs were added, foam and rubber bands were added to give extra stability since the fingers were still over lapping when they were moving up and down.
https://youtu.be/B8rBIgYoOy0 Robo hand plucking chord. It was very hard to get all the chords to pluck like this one. This is because of the fact that the fingers had to be long enough but also not stiff to a point where they would get stuck. This was very much dependent on chance. In the end the fingers would come close enough to the strings but not pluck them or the 4 motors would be so loud in comparison you would miss out on it. Sometimes the fingers would fight too. Nonetheless it was a fun experiment to understand the mechanics of the roboHand.
Another video of it in action. https://www.youtube.com/watch?v=B3id4Ka9_P4
I made this plastic harp using a bowl to create an acoustic effect, drilled it to a plank and also used twisted nylon strings as the harp strings.
/* Sweep by BARRAGAN http://barraganstudio.com This example code is in the public domain.
modified 8 Nov 2013 by Scott Fitzgerald http://www.arduino.cc/en/Tutorial/Sweep */
//for the full rotation servo I think 180 is equal to 100%
//Servo myservo; // create servo object to control a servo int pos = 0; // twelve servo objects can be created on most boards //Servo myservo2; Servo indexFinger; //Servo myservo4; int pos2 = 0; int pos3 = 0;// variable to store the servo position int pos4= 0; void setup() { myservo.attach(9); myservo2.attach(5); indexFinger.attach(11); myservo4.attach(6); int analogPin = A0; analogRead(analogPin); }
void loop() { for (pos3 = 0; pos3 <= 180; pos3 += 1) { // goes from 0 degrees to 180 degrees // in steps of 1 degree indexFinger.write(pos3); // tell servo to go to position in variable 'pos' delay(15);
} }
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree myservo.write(pos); // tell servo to go to position in variable 'pos' delay(10); // waits 15ms for the servo to reach the position } for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees myservo.write(pos); // tell servo to go to position in variable 'pos' delay(15); // waits 15ms for the servo to reach the position for (pos2 = 0; pos2 <= 180; pos2 += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree myservo2.write(pos2); // tell servo to go to position in variable 'pos' delay(15);
}
} for (pos4 = 0; pos4 <= 180; pos4 += 1) { // goes from 0 degrees to 180 degrees in steps of 1 degree myservo4.write(pos4); // tell servo to go to position in variable 'pos' delay(15);
}
Notes: Initially I planned to have buttons for each finger, this did not work instead when you pressed the button it would just increase the speed of the motor instead of starting it. apparently this had to do with the kind of stepper motor, the kind I used would move as long as it was connected to power.
A short video explaining a bump in the road in the initial stages of making this hand. https://drive.google.com/open?id=1z-9E1aghEjmE8lecDlKkYrAe42jfED41