Skip to main content

Command Palette

Search for a command to run...

Building a robotic prothesis - Khymera dev log #1

Published
3 min read
C
I build systems that connect software with the physical world — turning human intention into real, measurable action. What started as web development evolved into designing full-stack architectures that go beyond screens: systems that sense, decide, and act through hardware, real-time communication, and intelligent control.

In Mexico, a “new” form of assessing student learning is Interdisciplinary projects—experimental or, more commonly, investigation projects that involve 3 or more subjects made by a team of 3-5 members. Most of my classmates prefer to do common experiments or powerpoint presentations of ethics and dangers of technologies. But I suggested to my team and advisor that we make a robotic non-medical prothesis—because, why not make a cool robot that mimics your hand instead of a boring ppt about why phones are dangerous in excess?

So, my team is in charge of doing the researching, background, and the formal stuff, and I am in charge to doing all the technical things, that is, the prothesis.

What we’re going to do?

With some researching, i came up with the initial concept: a hand prothesis with five servomotors in total, one for each finger. Don’t blame me, 4 months ago the concept of energy was a cute decoration on real devices, and I didn’t even think about how to read user intent (but I drew very good sketches so).

Now I was a mature man(4 months older), and I now know that my original idea ignored power, control complexity, and signal acquisition — three minor details if you want something that actually works.

Actual design

Time to enter in technical specifications:

The base is the Raptor Hand of E-NABLE(or E-NABLING the future). Is a Open-source mechanical hand that uses the movement of the wrist to open or close the hand. My proposal is to adapt the mechanical part to an servoelectric one.

Innocently i thought in individual control of fingers, but after researching of ways to read users movements, I realized that it will be impossible, or at least so much difficult to high school students.

About the control system, I decided to use EMG. But, the options on internet was expensive, variable quality, with delivery times of months, and expensive. So, i decided to create my own EMG sensor, partly due the cons of an purchased one, but also because I want to learn more about amplifiers and PCB design.

I discover that a EMG sensor isn’t that complicated. It consist in 3 inputs(2 taken from muscle, 1 from a part near to bone as reference), that pass through an amplifier, filters the raw signal, outputs it for further processing, and congrats! you have an EMG sensor.

To the core, i decided to use the instrumental amplifier INA333, of Texas Instruments: good quality, low noise, and is hard enough to use the module in future projects. Besides that, Im going to add a MCU to more complex features. In this case, i think that ESP32-S3-WROOM is a good option, because i can catch the data wireless with another ESP32, and show how i control the prothesis with some distance(and add more visual and complex features).

Now to the actuation system:

As i wrote before, I originally decided to use 1 servo for each finger. However, due to power consumption, weight, and complexity, i decided to use 1-2 MG996R, which would control 2-3 fingers each.

Currently, im using an external power supply for testing out servos, but in formal prototypes i will use LiPo bateries(a pack of 18650), and as a microcontroller im using ESP32-S3.

So, thats what i have decided to the prototype.

Now, the following are the designing the EMG PCB, testing signal quality (and noise, lots of noise), and figuring out how reliable a single-channel EMG really is for controlling a whole hand.

Some of these decisions will probably turn out to be wrong as the original concept. That’s fine. This project is not about building a perfect prosthesis — it’s about learning how to build something that works great

This is Khymera, dev log #1.