OpenCV robotic hand is a device that mimics hand gestures observed through a camera. It has many uses, including supporting people with low dexterity or mobility. Another use case could be for autonomous exploration, such as in space exploration or underwater research.
The fingers for the robotic hand are hinge joints with a single degree of freedom. Elastic bands are used to tension the fingers, while fishing lines attached to servo motors are used to close the fingers. Thus, fingers are designed to have fishing lines and elastic bands running through them. The fingers and the hand are 3D printed with Prusa printers for accuracy. PLA was chosen as the material as it was the easiest to manufacture while having enough structural integrity to support the forces involved.
Second version of the hand
Several designs were manufactured and tested to find the optimal design that ensures that the system works effectively for prolonged periods. A major change made from previous to current versions was not keeping the joints between the phalanges of the fingers fixed with pins. Although having pins in places of the hinge joints allowed the fingers to have fixed movements, I encountered many problems with it. Firstly, the nuts often come loose due to vibrations and constant movement. Even with washers in place, the phalanges often came loose after extended use and testing. Secondly, I found it unnecessary, as the tension from the elastic bands was strong enough to keep the phalanges in place. Having the elastic band loop around the fingers generated enough stability for a relatively fixed movement. Finally, having bolts tighten the joints in which the phalanges move meant that there was greater friction that needed to be overcome for the fingers to close. This meant the micro servos previously planned for use did not generate enough torque to close the fingers.
Second version of the hand (front)
Second version of the hand (back)
Electronics compartment
For the electronics of the hand, an Arduino Uno board was used with five Arduino micro servos, one for each finger. These were wired on a breadboard. The electronics component was stored in the forearm with the motors sitting on a laser-cut wooden chassis. The Arduino board and the breadboard were placed under the chassis. The components were wired accordingly.
The code works through serial communication, where a Python script uses the OpenCV library to detect whether a finger is open or closed. An array of 5 numbers with 1s and 0s indicating whether its finger is open or closed is sent to the serial. Afterward, it is sent to the Arduino IDE via the port, and the correct servo motor is rotated.
Python script (left) and Arduino code (right)
Final version (front)
Final version (back)
Video Demo