Skip to content

Robotic hand project using time-controlled continuous servos for lower costs and simpler implementation

Notifications You must be signed in to change notification settings

tekntrash/continousservorobotichand

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Continuous Servo Robotic Hand

Robotic hands typically use servos with positional control mechanisms such as potentiometers, resolvers, or hall effect sensors to track finger positions. However, this approach introduces several challenges:

  1. Increased complexity
  2. Higher costs
  3. Space constraints for servo horns and positional sensors
  4. Limited rotation (usually up to 180 degrees), restricting finger movement
  5. Reduced finger force

Alternative Approach: Linear Servos

Linear servos offer distinct advantages:

  1. Unlimited finger movement
  2. Higher force output

However, they lack built-in rotational control and require external sensors, leading to the same issues of cost, complexity, and space constraints.

Time-Based Control Method

We propose a time-based approach to finger position estimation. This method involves:

  1. Attaching a tactile switch to the tip of each finger to detect movement limits, reversing the movement.
  2. Calibrating each finger by moving it in and out multiple times at various speeds.
  3. Recording movement duration, servo channel, speed, and direction to build a database of motion profiles.
  4. Using this database to estimate finger positions based on past movement data.

A secondary program continuously updates the last recorded position of each finger based on its most recent movement, allowing the system to predict positioning with reasonable accuracy.

Hardware and Setup

For testing, we used the widely known 3D-printed prosthetic hand from Thingiverse:

Our prototype uses inexpensive DS04-NFC servos controlled by a PCA-9685 servo driver, connected to a Jetson Orin AGX 64. However, any Jetson board should work.

How to Use

  1. Assemble a suitable robotic hand and attach a TS-02 tactile switch to both sides of each finger (see photos). For more accuracy, instead of buttons HAL effect sensors can be used. Note that the buttons need to use pull-up resistors, as Jetsons do not have these in their GPIO ports like Arduino boards: look at the schematic and photos and ensure you test the buttons with the testbutton.py code included: the code use GPIO 16 and 18, but it can be altered
  2. Install the required libraries:
    pip install -r requirements.txt
  3. Run the program "testbuttons.py" to ensure both buttons work seamlessly, as otherwise the finger will reach the end and stress the servo
  4. Edit measure.py to specify the correct servo channel for the finger being trained.
  5. Run the program:
    python measure.py
    • The script will move the finger back and forth at random speeds, recording movement times in a file (servo(channel).txt).
    • The longer the program runs, the more precise future movements will be.
  6. Repeat the process for each finger.

Future Improvements

  • Enhancing position estimation accuracy with additional sensors or feedback mechanisms.
  • Implementing machine learning for adaptive motion prediction.
  • Exploring alternative servo and motor options for better performance.

This project aims to create a more cost-effective and flexible control system for robotic hands, removing the limitations of traditional position-controlled servos.

About

Robotic hand project using time-controlled continuous servos for lower costs and simpler implementation

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages