semg's Introduction
semg's People
Forkers
linpoyu max2468tw wangfuneng yenhuai77 mingxiaoyue adsl7878778 ash-win-cs shawn5549 mayloveorange fbweimer zgnafq hujie1019semg's Issues
MPU-9250 Roll/Pitch + sEMG ADC
sEMG ADC
teensy3.2 ADC is 3.3v tolerant
MPU angle
- Gesture detection and data fusion based on MPU9250 sensor
- Kalman filter
- Pitch only
- Code available: Arduino sketches for MPU9250 9DoF with AHRS sensor fusion
- Ask if appropriate to use
Bicep sEMG-Force w/ Elbow Angle
- Acce. test
https://github.com/dymnz/sEMG/blob/master/Angle_Arduino/Angle_calc/Angle_calc.ino
https://github.com/dymnz/sEMG/blob/master/Reports/wang/exp4_2017_8_24.MD - Online verification
Trial
- 90d zero-load
- Fixed load, varying angle
Observe
- 90d zero-load normalization
- Angle's effect on Weight-sEMG curve, angle-sEMG curve
- Angle's effect on sEMG should be a constant multiplier. see Surface EMG force modeling with joint angle based calibration
Finish armband w/ dry electrode test
- Dry electrode test
- Compare dry electrode & adhesive electrode signal noise #14
- Hardware design
- Prototype, for dry electrode test
- Finalized design
Power source IC search
Need 5V / +2.5V / -2.5V / GND
Maxim IC?
AED solder test
Arduino sEMG/Angle/MPU bug fix
processing_angle_read
Arduino disconnecting after upload.
Finish Arduino ADC test
Acce. Static sEMG Dynamic Est
sEMG noise power spectrum
Research on sEMG application
- Important: β
- Reading π₯
Papers
- A Wearable System for Recognizing American Sign Language in Real-Time Using IMU and Surface EMG Sensors
- π₯Surface EMG force modeling with joint angle based calibration
Meeting
Application on Papers
-
- Title: Continuous Motion Decoding from EMG Using Independent Component Analysis and Adaptive Model Training
- 6-ch sEMG, ICA, PCA
- Example: 3-DOF shoulder angle & 1-DOF elbow angle
-
- Title: EMG-based simultaneous and proportional estimation of wrist/hand kinematics in uni-lateral trans-radial amputees
- 7-ch sEMG, motion capture, TDAR feature set, Accuracy: 72+-8%
- Example: 3-DOF wrist movement
Bicep 90d zero-point sEMG recording (day-to-day)
Multichannel sEMG Recording
PCA Signal Filter and Reconstruct
Applying in 4-ch exp.
Research on Exoskeleton
Research on Grip Force
ADC PCB
- PCB layout
- Verify inverting summing amp.
- Change the resistor on the design manual to the value on current plug board
- Test
Sampling rate testing using "function call" vs. "while loop"
samples/sec test SamplingRateTest1()
vs. SamplingRateTest2()
Arduino M0 PRO
- With ADC_CTRLB_PRESCALER_DIV512
- Function call: 10031
- While loop: 10166
=> Difference = (10166 - 10031) / 10166 % = 1.33%
- WIth ADC_CTRLB_PRESCALER_DIV256
- Function call: ~19500 (unstable)
- While loop: ~19500 (unstable)
=> Difference = ?
- WIth ADC_CTRLB_PRESCALER_DIV128
- Function call: ~32800 (unstable)
- While loop: ~33500 (unstable)
=> Difference = (33500 - 32800) / 33500 % = 2.08%
- WIth ADC_CTRLB_PRESCALER_DIV64
- Function call: 49450
- While loop: 52480
=> Difference = (52480 - 49450) / 52480 % = 5.77%
Processing 3 Arduino DAQ
- Simultaneous Force - sEMG recording
- 1-ch sEMG + 1-ch Force w/ graph=
- ~9.4k SPS @ 512 clock div.
- 13k ~ 16k SPS @ 128 clock div.
- 2-ch sEMG + 1-ch Force w/ graph
- ~5.1k SPS @ 512 clock div.
- 2-ch sEMG + 1-ch Force + 1-ch MPU (naive angle calc.) w/ graph
- 1024 SPS, exactly. Probably due to MPU I2C polling.
- 2-ch sEMG + 1-ch Force + 1-ch MPU (complex angle calc.) w/ graph
- ~460 SPS @ 512 clock div.
- ~580 SPS @ 128 clock div.
- 2-ch sEMG + 1-ch MPU (complex angle calc.) w/ graph
- ~525 SPS @ 128 clock div.
- 4-ch sEMG + 1-ch MPU (complex angle calc.) + 1-ch pot. w/ graph
- ~460 SPS @ 128 clock div.
sEMG signal measurement, PLI filtering test
Verify ADC sample interval
Research on sEMG electrode calibration
How to find out electrode-muscle corresponding pair at startup.
ICA?
This is the main research point
Research on Alz app.
Wireless Acce. Angle Est.
On going.
Force detection of static signal file on PC
Given a sEMG signal, find a way to detect if force is used.
- Signal files given
Bicep sEMG-Force curve w/ dumbbell
Parameter
- 1~3 electrodes
- 1~10kg dumbbell
ToDo
- Buy
Dumbbell orWater bottle + scale - ADC PCB: #21
- Check sEMG-Force curve
Result
Select Paper for Comparison
- Similar parameter
- Clear methodology
- Classify paper for grouping
- Action length
- Action type
- Electrode
- Placement
- # of electrode
See #40 for papers
Record sEMG signal to a static file
sEMG Preprocessing/Feature
Preprocessing used in Wrist Angle Estimation Papers
From #40
-
Surface EMG pattern recognition for real-time control of a wrist exoskeleton (2010)
-
- Feature set performance: MSV(?) < TD = TD+6AR = TD+5 wavelet marginal(TDWV)(?)
- 7-ch semg -> TD feature -> PCA -> MLP
-
SVM for Estimation of Wrist Angle from Sonomyography And SEMG Signals (2011)
- RMS for amplitude
- then wavelet to remove fluctuation
-
- TD feature set + 6 AR, not suitable for RNN. See A new strategy for multifunction myoelectric control(1993)
- MAV / MAV-slope / Zero-crossing / Slope sign change / Wave length
- Window = 100 ms long, w/ 60 ms overlap
- TD feature set + 6 AR, not suitable for RNN. See A new strategy for multifunction myoelectric control(1993)
-
- Full-wave rectified, LPF-16Hz
-
Simultaneous and proportional control of 2D wrist movements with myoelectric signals (2012)
- 200mS of POWER/RMS/LOG-VAR. See Spatial Filtering for Robust Myoelectric Control
- Characteristic
- POWER: Linear transform of EMG
- RMS: sqrt(POWER), non-linear
- LOG-VAR: log(POWER), non-linear
- Use non-linear transform to linearize relationship between Feature and Joint angle
- Linear regression performance better w/ RMS, LOG-VAR
- MLP is better w/ POWER
- Linear regreesion w/ LOG-VAR has best performance
-
- 140 ms long, w/ 100 ms overlap: MAV v.s. Bayesian filter for sEMG amplitude
-
- Rectified + LPF-1Hz
- 112-ch sEMG array -> Non Negative Matrix Factorization (NNMF) for dimension reduction
-
EMG-based learning approach for estimating wrist motion (2015)
- Rectified + LPF-20Hz then normalized
-
Continuous Estimation of Wrist Angles for Proportional Control Based on Surface Electromyography (2016)
- 250 ms RMS
-
Continuous estimation of hand's joint angles from sEMG using wavelet-based features and SVR (2016)
- W: 256ms O: 100ms. A set of feature per window
- Time-Frequency feature of DWT-sEMG. 5th level 8th order Daubechies. Feature calculted w/ Sub-band: D1-5 & A5
- MAV
- SD
- Autoregressive coefficients
- Entropy
- Energy
-
- Rectified, LPF-4Hz
- then downsampled to 20Hz
-
- LPF-300Hz, PCA, fastICA
- MAV W: 15ms O: 5ms
May Be Relevant:
- Neural network committees for finger joint angle estimation from surface EMG signals
- Real-time simultaneous and proportional myoelectric control using intramuscular EMG (2014)
- Estimation of finger joint angles from sEMG using a recurrent neural network with time-delayed input vectors (2009)
Misc
Wrist Angle
Finish "additional circuit" on breadboard
Quality of nICA affects the performance of LSTM
- Check 1S2WA_23_CV`
- W/ nICA_2 as demixing baseline, the accuracy isn't better than RMSDown
- Noted in
Meeting 2018/08/30 - S2WA_23
Github formating
Format source of #4
### Sampling rate @10kHz. FFT are correct up to 5kHz, ADC sample interval seems to be fixed.
---
#### 0.5kHz
![0.5k plot](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/0.5k_plot.png)
![0.5k fft](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/0.5k_fft.png)
#### 1kHz
![1k plot](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/1k_plot.png)
![1k fft](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/1k_fft.png)
#### 3kHz
![3k plot](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/3k_plot.png)
![3k fft](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/3k_fft.png)
#### 4kHz
![4k plot](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/4k_plot.png)
![4k fft](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/4k_fft.png)
#### 5kHz
![5k plot 1](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/5k_plot_1.png)
![5k plot 2](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/5k_plot_2.png)
![5k fft](https://raw.githubusercontent.com/dymnz/sEMG/master/ADC_Arduino/Testing/ADC_FFT_Result/5k_fft.png)
TDSEP
TDSEP β an efficient algorithm for blind separation using time structure
- Subtle Hand Gesture Identification for HCI Using Temporal Decorrelation Source Separation BSS of Surface EMG
- Performance in gesture rec. TDSEP > FastICA > Infomax > JADE > RawEMG
- Performance comparison of ICA algorithms for Isometric Hand gesture identification using Surface EMG
- Same as above
- Automatic Classification of Artifactual ICA-Components for Artifact Removal in EEG Signals
- [Comparison of Temporal and Standard Independent Component Analysis (ICA) Algorithms for EEG Analysis]
- FastICA v.s. Temporal FastICA v.s. TDSEP (best)
- TDSEP source: http://www.user.tu-berlin.de/aziehe/code/
- Artifact Reduction in Multichannel ECG Recordings Acquired with Textile Electrodes
Spin-off from #42
Solder circuit on peg board
Components
- AED
- LPF+HPF
- N/I Amp
- Level shifter
Notes
- All stages should be isolated by jumper
- Resistor value on AED = 6.8k ohm
Relevant
- #6 Hardware component list
- AED circuit
- Additional circuit
6+ Electrode Performance Test
Test the applicability with more electrodes
- 6+
- Check paper for suitable number
- 6 should be enough, have enough component for 6
- 6 AED made and tested, making pre-amp
- Check electrode width for suitable number
- Check paper for suitable number
FLX/EXT Ground Truth
- Current: Pot. to avoid Acce. gravity issue
- Question raised by teacher, as handmade == bad
- Pot:
- Accuracy
- Consistency
- Can I prove it is good?
- Compare it with MPU on pitch
- Can't test with SUP/PRO
- Pot. angle magnitude significantly smaller than IMU due to rotating axis issue
- See 'Meeting 2018/05/16 - GroundTruth/SigPro'
- Compare it with MPU on pitch
- Is Magnetometer better?
Wrist Angle Paper Experiment Comparison
After #44, see table 'paper_sel.xlsx'
- 4-ch sEMG w/ random placement. Try to achieve comparable performance.
- Compare separate FLX/EXT w/ most paper
- Compare separate PRO/SUP w/ paper 7 & 10 on table
- 7: Bayesian Filtering of Surface EMG for Accurate Simultaneous and Proportional Prosthetic Control (2014)
- 10: Continuous Estimation of Wrist Angles for Proportional Control Based on Surface Electromyography (2016)
Note
- No need for Magn/Pot. angle groudtruth in this case, since FLX/EXT won't happen w/ PRO/SUP
- Separating FLX/EXT and PRO/SUP means that 4-ch sEMG is redundant since 2-ch sEMG is enough to capture the muscle activity of PRO/SUP and FLX/EXT separately
- What is the rationale behind using 4-ch sEMG v.s. 2-ch sEMG when measuring separate FLX/EXT and PRO/SUP?
- Accuray
- Why stop at 4-ch then?
- Accuray
- What is the rationale behind using 4-ch sEMG v.s. 2-ch sEMG when measuring separate FLX/EXT and PRO/SUP?
TODO
- Decide procedure
sEMG + Accelerometer sensor fusion force estimation
Research on sEMG signal
- Important: β
- Reading π₯
Papers
- Surface electromyography applications in the sport
- π₯ The Application of sEMG in Aging: A Mini Review
- Surface Electromyography Signal Processing and Application: A Review
Meeting
Research on sEMG signal processing
- Important: β
- Reading π₯
Papers
Find out what people do when they got sEMG signal:
- Transradial Amputee Gesture Classification Using an Optimal Number of sEMG Sensors: An Approach Using ICA Clustering
- Principal Component Analysis Applied to Surface Electromyography: A Comprehensive Review
Meeting
ADC reading interval swing
Interval between two consecutive ADC reading swing by 6 +- 1 microseconds, with 6 ~ 80% of the time.
- Caused by micros() call?
- Check the interval between consecutive micros() call, should swing or have random peak based on previous test
- Effect of interval swing?
- Ask teacher
Example
Relevant: LINPOYU/ultrasound#3
DC offset after Inverting amp.
DC offset after inverting amp. should be 0, yet there's DC offset present, which limits the signal amplitude(gain can't be too large or the signal will be cutoff).
- Change the pot. for DC at Inv. Sum. to a larger value
- Change the res. for DC at Inv. Sum. to a larger value
200Hz 10mV in
- Signal measured in CH2, not quite accurate in a range of N mV
- Best output DC: 2.3V / Vpp: 4V
- After HPF: DC: 2mV / Vpp: 30mV
- After Inv amp: DC: -14mV / Vpp: 76mV
0 input
- Signal measured in CH2, not quite accurate in a range of N mV
- Best output DC: 2.34V
- After HPF: DC: 300uV
- After Inv amp: DC: -14mV
Conclusion
Components for one circuit
- INA128 x1 - Active electrode
- OPA2604 x2 - LPF+HPF, N/I amp
- LMC6482 x1 - LevelShifter
- Look for snap button (less than NT$50)
- ζ΄ζ΄ζΏ x1
- Resistors xN
- Capacitor xN
- Dupont wire head x4 (female)
- ICε x3
Fix 2017/8/9 report graph, plot legend is wrong
Semi-random Electrode Placement Test
To prove the effectiveness of signal processing under different placement condition
- Multiple ring placement test. Equal distance placement with different starting point.
- 90 degree done
- Follow the same evaluation process as before
- Run 10 test for 60 segments for each of the 4 gesture
- Remove outlier for each of the test
- Plot the box plot of the median error for each gesture
- Compare the performance w/ and w/o the signal processing
Check Arduino ADC sidelobe
Redesign active electrode PCB
The current PCB is too fragile in
- Wire connection
- Should have a dedicated connector
- Board itself
- Thicker board
- Electrode connection
- Through hole should be a lot bigger
- PCB tested
- Borrow 3D printer
- Design a casing
Grip Force Angle
- -90 <- left | 0 | right -> 90
- +15
*1 ~ 5 kg
Roadmap
- RNN test
- Vanilla
- Convolution test
- LSTM
- Sensor fusion test
- Cross-validation w/ patience
- Vanilla
- 4-channel power supply PCB
- Design
- Missed P+9V power line connection, to be fixed
- Temp fixed, but still significant voltage drop w/ load. Use PSU instead.
- Test
- Voltage drop >10% w/ load, need more test. Use PSU now
- Additional circuit PCB
- Design
- Test
- Angle measurement:
- Grip force measurement:
- Solder + test
- Woodwork
- Calibration
- Calibration factor : -200000
- Accuracy: to be calculated
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.