After obtaining initial results, I conducted further studies on myself to ensure that the random forest regressor was not simply memorizing the data. I employed a method that involved starting two separate sessions for open muscle and LASK data capture, but only fed one of them into the model.
During the training process, I kept the open muscle band on my forearm and tested the model’s live predictions by performing random finger curls. The demo folder contains the results of these tests, with “capture_11” representing the training data and “capture_12” representing the second capture that was not used during the learning process but tested afterward.
In the live demo, while wearing the bracelet on my forearm, I was able to accurately predict all four fingers with some variance for specific figures. Although the live demo was not recorded, I have uploaded the “capture_11” and “capture_12” files to the repository. The demo folder also includes the training and testing Python files.
To recast the “capture_12.csv” file, use the “Virtual_sensor_transmitter.py” file. By running “dem_hand_time.py,” you can launch the pygame-programmed GUI and observe the live predictions.
In the live predictions, yellow appears at the top, while cyan represents the values from the LASK1 to LASK4 devices.
Further test done on the bracelet involved:
- Adjusting the tightness of the elastic strap (Less accurate predictions)
- Using another Sensor version with foam instead of springs (has potential)
- Rotating my arm while not press and pressing finger curls (less accurate but still decent)
- Using velocity instead of the time-domain (Less accurate predictions)
Notes and Observations
The best results for the open muscle band include using the 3D printed feet to increase the piston’s surface area and while using the bracelet moderately firm around the forearm.
One of the most difficult parts of creating the sensors was finding the right springs and system with little friction. The foam replacement for the piston system also seems promising but more research will need to be done.
The live predictions work even if the timestamp is beyond that of the training data. I had to implement the same matching algorithm to the live data in order for it to produce accurate predictions (of course). It is my opinion that the slope of the data is easily gleaned for the random forest regressor by feeding it the timestamps. The time along with the sensor values allows for the model to pick its own method of resolving the slope or important data while reducing the noise. There were also periods of ‘blank’ data which allowed the model to learn the noise of no finger curls just as well as the data itself.
The LASK system was named for it was seeking the label. I wished to create a simple method of applying a label and test for the training model. By simplifying the whole process I was able to have a system in place that I could conduct many test with different models and different hardware configurations.
The open muscle 5.3.0 PCB was designed to be in two orientations and be adaptable to other experiments. This does increase the construction time of the system considerably!
Using 13 Feature Datas to try to resolve 4 label values or predictions and using a system that applied the labels was helpful to find the efficacy of this machine learning model and custom sensor array.
There was a study done only on me as the prototype is very delicate and not designed for every day use.
Limitations and Flaws
Since all the test were done on one individual more test will be needed but in order for this technology to be used in the real world for prosthetic sensor applications it will need to be tested on amputees.
The muscles in the forearm are attached to the tendons in a healthy individual so the signal will not be the same. Atrophy, body fat, and physical obstructions to the sensors could also be major concerns for this type of device.
Much more research and time will be needed but the results show promise.
Some images of the data
All data files used for images are located on the GitHub Repository. Here is another article with links to the files: https://openmuscle.org/finger-movement-recognition-using-radial-pressure-sensors-on-the-forearm-and-machine-learning-techniques/
Here are the predictions with all the data from the test portion of January23.csv training:
Redundancy is already built-in. During several tests one or more sensors would fail because of a wiring problem and them becoming disconnected or receiving a lot of noise if the training was done with the sensors acting this way the model was still able to predict finger curls. This could lead to some interesting implementations of this technology that if it is damaged and can still read some sensor it me be able to be retrained with minutes of new data from the user.
Rotational symmetry was used in the hopes that it could also offer some resiliency to noise and ease of use in using machine learning to make the predictions. The random forest regressor was quite good at reducing the noise. It would be worth researching using another method of training involving a different arraignment of the feature data in the regressor such as supplying 145 ((12*12) +1 ) features instead of 12 + 1.
Low sampling rate was also paramount to be able to perform live predictions with limited computational power and thusly higher prediction rate.