This is a group project that I have done in Cornell. Our goal is to build a robotic hand that imitates the hand gestures of the operator. Everything is built up from the ground with electronic components and basic materials. C language coding, circuit design and 3D printing skills were needed in this project.
I did most of the work except for the finger and palm design, which is done by my group mates.
The mechanism involves four main functional components: Sensor glove, microprocessor, actuators, and robotic hand. The sensors attached to the glove capture the operator’s finger movement, which is then processed by the microprocessor to map control signals to the actuators that move the robotic hands. Our goal through implementing these features was to allow movement of robotic fingers independently, meaning that the operator is able to make multiple gestures and hand signs (wide range of motions) that greatly enhances the interactive component than simply clenching and loosening fist.
The picture on the right is a circuit schematic for one finger implementation. I also marked each functional block for its corresponding circuit part. On the left, shows the initial prototype for one finger implementation. I'll go over each part of the structure in detail.
I Attached a total of five flex sensors on top of a glove that can capture the movements of each finger independently. The flex sensor has a resistance varying from 25K to 120K. Therefore, I added a 100K pull down resistor and use the voltage measurements of the resistor as analog inputs.
The main function of the microprocessor is to process the analog input data from flex sensors and outputs the digital signal for actuators. ESP32 microprocessor was used in this project.
Theoretically, one microprocessor can have multiple output signals and control multiple actuators. However, the power provided by one microprocessor is not enough to support five servos. Without external power supply, we decided to use two microprocessors that run the same code. We assigned two flex sensors and two servos for one microprocessor and assigned the remaining three flex sensors and three servos for the other.
The program I developed in the microprocessor has two main functions. One is filtering data noise caused by the unstable property of flex sensor and extract reliable readings from sensors. The second is mapping the processed readings to servo turning degrees (actuator movements that can bend the finger).
For filtering, I used a sliding window algorithm with a window size of ten. So during each iteration of the program, we take the average of the previous ten readings of the flex sensors to eliminate the dramatic jumping data.
To map the input to output, I just did a lot of experiments to see how much the reading changes when my finger goes from flat to bend. Different flex sensors will have different properties, so I need to assign different mapping values for all of them.
I utilized a total of five servos, one for each finger, to actuate control signals from the microprocessor by rotating accurately. The servos are attached to the metal strings that run through the robotic fingers and directly control their movement. The servos and breadboard are mounted on a laser-cut MDF board.
The palm, finger, and external arm frame components are 3D printed with rigid PLA materials. One finger can have up to three sections with a rubber band attached inside to make them connected tightly and provide an elastic force that can restore the finger back to its initial state. Another string goes through the finger and connect the fingertip to the servo. If the string is pulled, the finger will bend over. If the string is released, the finger will be back to flat.
The first connection is from the sensor glove to the microprocessor. Each sensor has two wires and each sensor glove has five sensors. We bound the wires altogether as an input from the sensor glove to the microprocessors.
All the circuits and microprocessors were sitting on four combined breadboards, which were glued on the laser-cut MDF board. On the top half part of the laser-cut board was five mounted servos. The servos connected the microprocessors by wires and connected the robotic fingers by strings. The 3D-printed robotic palm was glued on the very top of the laser-cut board.
Except for the sensor glove that will be put on by users, all other components were attached to a single 13.5-inch by 5-inch laser-cut board, where we can easily see the connections between each functional block.
This design makes it easy for us to debug and also ensure all parts were close to each other.
To make our robotic hand better looking, we covered the laser-cut board with a 3D-printed arm frame. The frame was designed to have a slider in it, which makes it easy to put on or remove.
I have done many microprocessor centered projects like robot car and IoT long distance game play pad etc. For me, it's exciting to achieve something using microprocessor, even if it just as simple as bending fingers. I believe it is a process of transforming real life events or activities into digital data and we can do all kinds of cool stuff with that data.
I'm looking forward doing more cool projects or works like this in the future!