RoboGlove

989

15

1

Posted

Introduction: RoboGlove

We are a group of students of the ULB, Université Libre de Bruxelles. Our project consists on the developing of a robot glove able to create a grip force helping people grabbing things.

THE GLOVE

The glove has a wire connection that links the fingers to some servo motors: a wire is attached to the extremity of the finger and to the servo, so when the servo turns, the wire is pulled and the finger is flexed. In this way, by controlling the grip done by the user through some pressure sensors in the extremity of the fingers, we are able to actuate the motors in a controlled way and help the gripping by bending the finger proportionally to the rotation of the motors and so to the rolling up of the wires. In this way we should be able either to allow weak people to grip objects or help even people in physiological conditions to grip objects and to keep it without any effort.

THE DESIGN

The model has been developed in order to make the hand movement as free as possible. In fact, we 3D printed only the strictly necessary parts that we needed to connect wires, motors and fingers.

We have a top cupola printed in PLA on each finger: this is the terminal part where the wires have to be connected and it must grant protection to the pressure sensor that is fixed inside. The pressure sensor is glued, with hot glue, between the PLA extremity and the glove.

Then we have two 3D printed rings, per finger, that constitute a guide for the wires. The thumb is the only finger that has only one printed rings. There is one wire per finger, folded in half at the extremity of the fingers. The two halves are passing through the two guides of the cupola part and in both rings: they are put straight into holes that we made in the outside of these rings. Then they are put together into a wheel directly connected to the motor. The wheel has been realized in order to be able to wrap around the wires: since our motor has a non complete rotation (lower than 180°) we realized the wheel in order to pull the wire for a gap of 6 centimetres that is the distance needed to completely close the hand.

We have also printed two plates to fix the servo motors and the arduino to the arm. It should be better to cut it in wood or a rigid plastic with a laser cutter.

Step 1: Shopping List

Glove and wires:

1 existing glove (must be sewable)

Old jeans or another rigid cloth

Nylon wires

Low density polyethylene tubing (Diameter:4mm Thickness:1mm)

Electronics:

Arduino Uno

1 Battery 9V + 9V Battery holder

1 electronic switch

1 veroboard

3 servo motors (1 per finger)

3 propellers (provided with the servos)

4 Batteries AA + 4 AA Batteries holder

3 pressure sensors (1 per finger)

3 resistors 330 ohms (1 per finger)

6 electric wires (2 per sensors)

Screws, nuts and fixations:

4 M3 10mm long (to fix the Arduino)

2 M2.5 12mm long (to fix the 9V battery holder)

6 corresponding nuts

6 M2 10mm long (2 per servo to fix the wheels to the servos)

12 small cable ties (to fix the plates and the switch)

7 big cable ties (2 per motors and 1 for the 4 AA batteries holder)

Used Tools:

3D printer (Ultimaker 2)

Material for sewing

Hot glue pistol

Optionnal: laser cutter

Step 2: Prepare Wearable Structure

The wearable structure has been made with some clothes: in our case we used a normal glove for electrician and a jeans cloth for the structure around the wrist. They were sewed together.

The aim is to have a flexible wearable structure.

The structure has to be stronger than a regular wool glove since it has to be sewed.

We need a wearable structure around the wrist to hold the power suppliers and the actuators, and we need it to be stable, so we chose to make the closing adjustable by applying Velcro bands (auto-adhesive bands) to the jeans' wrist.

Some wood sticks were sewed inside to make the jeans more rigid.

Step 3: Prepare the Functional Parts

The rigid parts are realized through 3D printing in PLA from the .stl files in the description:

  • Finger Ring x5 (with different scales: 1x scale 100%, 2x scale 110%, 2x scale 120%);
  • Finger Extremity x3 (with different scales: 1x scale 100%, 1x scale 110%, 1x scale 120%);
  • Wheel for motor x3

For the finger parts, different scales are needed due to the different size of each finger and of each phalanx.

Step 4: Fix the Sensors to the Extremities

The pressure sensors are first soldered to cable wires.

They are then glued with the use of a glue pistol inside the finger extremities: a small amount of glue is placed inside the extremity, on the side with the two holes, then the sensor is immediately applied with the active (round) part on the glue (have the piezoelectric face the inside of the structure and the plastic part directly on the glue). The cable wires have to run across the top of the finger down to its back, in order to have the electrical cabling run on the back of the hand.

Step 5: Fix the 3D Printed Parts to the Glove

All the rigid parts (extremities, rings) have to be sewed to the glove in order to be fixed.

To place the rings correctly, first wear the glove and try to put the rings on, one per phalanx, without having them touch during the closure of the hand. Approximately, the rings on the index will be fixed 5mm above the base of the finger and 17 to 20mm above the first one. Regarding the middle finger, the first ring will be approximately 8 to 10mm above the base of the finger, and the second one around 20mm above the first. For what concerns the thumb, the precision needed is very low, since it doesn’t risk to interfere with the other rings, so try to apply it on the worn glove, draw a line on the glove where you’d prefer to have the ring so that you can then sew it.

Regarding the sewing, no particular technique or ability is required. With a needle, the sewing thread goes in circles around the rings, passing through the surface of the glove. A step of 3-4mm between two holes in the glove already makes a strong enough fixation, there is no need to make a very dense sewing.

The same technique is applied to fix the extremities: the top of the extremity is holey in order to make the needle pass easily, so only the cross-like shapes on the top of the finger will have to be sewed to the glove.

Then the polyethylene guides have to be fixed too, by following three criteria:

  • the distal ending (facing the finger) has to face in the direction of the finger, to avoid high frictions with the nylon wire that will go inside it;
  • the distal ending has to be far enough to not interfere with the closure of the hand (around 3cm lower than the base of the finger is good enough, 4 to 5cm for the thumb);
  • the tubes must pass across each other as less as possible, to reduce the bulk of the whole glove and the mobility of each tube.

They are fixed by sewing them to the glove and to the wrist, with the same technique as above.

To avoid any risk of gliding trough the sewing, a few glue was added between the tubes and the gloves.

Step 6: Prepare the Wheels for the Servos

We used specifically designed wheels, drawn and 3D printed by ourselves for this project(.stl file in the description).

Once the wheels printed, we have to fix them to the propellers of the servos by screwing (M2, 10mm screws). Since the holes of the propellers are smaller that 2mm of diameter by screwing the M2, no nuts are needed.

The 3 propellers can be applied on each servo.

Step 7: Fix the Motors to the Arm

This step consists in the fixing of the motors to the arm; in order to do that we had to print an auxiliary PLA plaque to get a support.

Actually the motors couldn't be fixed directly to the arm since the wheels, needed for pulling the wires, could be blocked during the motion because of the glove. So we 3D printed a PLA plaque of dimension 120x150x5 mm.

Then we fixed the plaque to our glove with some cable ties: we made some holes into the glove simply using scissors, then we made holes into the plastic plaque with a drill and put everything together. Four holes into the plaque are needed in the center, among its perimeter, to pass the cable ties. They are made with a drill. These are at the center part and not at the sides of the plate to be able to close the jeans around the arm without having the plate blocking it since the plate is not flexible.

Then others holes are also drilled into the plastic plaque to fix the motors. The motors are fixed with two crossed cable ties. Some glue was added on their sides to ensure the fixation.

The motors have to be put in such a way that the wheels don't interfere each other. So there are separated in the left and right side of the hand: two in a side, with the wheels turning in opposite directions and one in the other side.

Step 8: Code on the Arduino

The code has been developed in a simple way: to actuate or not the motors.The servos are actuated only if the
reading is over a certain value ( it was fixed by trials and errors because the sensibility of each sensor is not exactly the same). There are two possibilities of bending, lowly for a low force and completely for a strong force. Once the finger is bended no user's force is needed to keep the finger the actual position. The reason of this implementation is that otherwise it has been mentioned that the fingers need to apply continuously a force on the sensors and the glove doesn't give any advantage. To release the bending of the finger, a new force needs to be applied on the pressure sensor, acting lie a stop command.

We can split the code in three parts:

Sensors init:

First of all we initialized three integer variables: reading1, reading2, reading3 for each sensor. The sensors were put into the analog inputs A0, A2, A4.
Each variable for the reading is set like:

  • reading1 where is written the value read in the input A0,
  • reading2 where is written the value read in the input A2,
  • reading3 where is written the value read in the input A4

Two thresholds are fixed by finger corresponding to the two positions of actuation of the servos. These thresholds are different for each finger since the force applied is not the same for each finger and the sensitivity of the three sensors is not exactly the same.

Motors init:

Three variables char (save1, save2, save3), one for each motor are initialized at 0. Then into the setup we specified the pins where we plug the motors respectively: pin 9, pin 6 and pin 3 for servo1, servo2, servo3; all initialized at 0 value.

Then the servos are actuated through the command servo.write() which is able to fix the angle received as input on the servo. Also by trials and errors the two good angles, needed to bend the finger in two positions corresponding to a small grip and a big grip, were found.

Since one motor needs to turn in the opposite direction due to its fixation, its starting point is not zero but the maximum angle and decrease when a force is applied to be able to turn in the opposite direction.

Link between sensors and motors:

The choice of save1, save2, save3 and reading1, reading2, reading3 depends on the soldering. But for each finger, the sensor and the motor related must have same number.

Then in the loop, if conditions were used to test if the finger is already in a bending position or not and if the pressure is applied or not on the sensors. When the sensors return a value, a force needs to be applied but two different cases are possible:

  • If the finger is not yet bended, comparing this value returned by the sensors to the thresholds, the corresponding angle is applied to the servo.
  • If the finger is already bended, it means that the user wants to release the bending and then the starting angle is applied to the servos.

This is done for each motor.

Then we added a delay of 1000 ms in order to avoid testing too often the values of the sensors. If a too small value of delay is applied, it risks to directly reopen the hand after closing it in case the force is applied during a longer time than the delay time.

All the process for one sensor is presented in the flow chart here above.

THE ENTIRE CODE

#include
Servo servo1;
Servo servo2;
Servo servo3;
int reading1;
int reading2;
int reading3;
char save1 = 0; // the servo starts at state 0, sleeping state
char save2 = 0;
char save3 = 0;
void setup(void) {
Serial.begin(9600);
servo2.attach(9); //servo at digital pin 9
servo2.write(160); //initial point for servo
servo1.attach(6); //servo at digital pin 6
servo1.write(0); //initial point for servo
servo3.attach(3); //servo at digital pin 3
servo3.write(0); //initial point for servo

}

void loop(void) {
reading1 = analogRead(A0); //attached to analog 0
reading2 = analogRead(A2); //attached to analog 2
reading3 = analogRead(A4); //attached to analog 4

// if (reading2 >= 0) { Serial.print("Sensor value = "); // Example of command used for the calibration of the thresholds of the first sensor

// Serial.println(reading2); }
// else { Serial.print("Sensor value = "); Serial.println(0); }

if (reading1 > 100 and save1 == 0){ // if the sensor gets a high value and is not in sleeping state
save1 = 2; } // go to state 2
else if ( reading1 > 30 and save1 == 0){ // if the sensor gets a medium value and is not in sleeping state
save1 = 1; } // got to state 1
else if ( reading1 > 0){ // if value is non zero and none of the previous conditions are correcte
save1 = 0;} // go to sleeping state

if (save1 == 0) {
servo1.write(160); } // release
else if( save1 == 1){
servo1.write(120); } // medium angle of pulling
else{
servo1.write(90); } // maximum angle of pulling


if (reading2 > 10 and save2 == 0){ // same than servo 1
save2 = 2; }
else if ( reading2 > 5 and save2 == 0){
save2 = 1; }
else if ( reading2 > 0){
save2 = 0;}

if (save2 == 0) {
servo2.write(0); }
else if( save2 == 1){
servo2.write(40); }
else{
servo2.write(60); }


if (reading3 > 30 and save3 == 0){ // same than servo 1
save3 = 2; }
else if ( reading3 > 10 and save3 == 0){
save3 = 1; }
else if ( reading3 > 0){
save3 = 0;}

if (save3 == 0) {
servo3.write(0); }
else if( save3 == 1){
servo3.write(40); }
else{
servo3.write(70); }
delay(1000); } // wait a second

Step 9: Fix the Arduino, the Batteries and the Veroboard to the Arm

Another plate was printed in PLA to be able to fix the batteries holders and the arduino.

The plate has the dimensions: 100x145x5mm.

Four holes are present to screw the arduino and two to screw the 9V battery holder.
A hole was made in the 6V battery holder and in the plate to use a cable tie to fix them together. Some glue was added to ensure the fixation of this holder. The switch is fixed with two small cable ties.

There are also four holes used to fix the plate on the jeans using cable ties.

The veroboard is put on the arduino like a shield.

Step 10: Connect the Electronics

The circuit is soldered on the veroboard as reported in the scheme above.

The Arduino has a 9V battery as supply and a switch is connected between these to be able to switch off the Arduino.
A 6V battery is needed for the servo motor that need a lot of current and the third pin of the servos is connected at the pins 3,6 and 9 to control them with PWM.

Each sensor is connected on a side by the 5V of the Arduino and on the other side by a 330 ohm resistor connected to the ground and the pins A0, A2 and A4 to measure the tension.

Step 11: Add the Nylon Wires

The nylon wires are made to pass through both holes on the extremity and the rings as seen in the picture, then the two halves of the wire will both go inside the polyethylene guide and remain together until the end of the guide, to the motor. The length of the wires is determined at this point, they need to be long enough to circle once the wheel of the servo with the straight fingers.

They are fixed on the wheels with a knot passing trough two small holes present on the .stl files and with hot glue for additional stabilization.

Step 12: Enjoy!

It works as expected.

At the first impulse it bends the finger and at the second one it releases it.
No force is needed when the fingers are bended.

Nevertheless three problems are remaining:

- We have to be careful to make an impulse shorter than 1 second to actuate the servos otherwise the wires are immediately release after the pulling as explained in the step 8 about the Arduino code.

- The plastic parts are a little bit slipping so we have added some hot glue at the extremity to add friction.

- If an heavy load is on the finger the sensor will have all the time a big value and so the servo will continuously rotate.

Share

Recommendations

  • Epilog Challenge 9

    Epilog Challenge 9
  • Sew Warm Contest 2018

    Sew Warm Contest 2018
  • Paper Contest 2018

    Paper Contest 2018
user

We have a be nice policy.
Please be positive and constructive.

Tips

Questions

Comments

That's an interesting idea. :) It could have some neat applications!