control for robotic arm that can play chess using a granular gripper
Dependencies: Encoder mbed HIDScope Servo MODSERIAL
Fork of chessRobot by
filter_constants.cpp@75:9995528bf8b7, 2015-10-20 (annotated)
- Committer:
- bjornnijhuis
- Date:
- Tue Oct 20 10:24:01 2015 +0000
- Revision:
- 75:9995528bf8b7
- Child:
- 105:663b73bb2f81
New EMG-processing files included
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
bjornnijhuis | 75:9995528bf8b7 | 1 | #include "mbed.h" |
bjornnijhuis | 75:9995528bf8b7 | 2 | #include "filter_constants.h" |
bjornnijhuis | 75:9995528bf8b7 | 3 | #include "emg.h" |
bjornnijhuis | 75:9995528bf8b7 | 4 | |
bjornnijhuis | 75:9995528bf8b7 | 5 | /*------------------------------------ |
bjornnijhuis | 75:9995528bf8b7 | 6 | All constants for EMG processing |
bjornnijhuis | 75:9995528bf8b7 | 7 | ------------------------------------*/ |
bjornnijhuis | 75:9995528bf8b7 | 8 | |
bjornnijhuis | 75:9995528bf8b7 | 9 | const double sample_frequency = 200; // Sample frequency [Hz] |
bjornnijhuis | 75:9995528bf8b7 | 10 | |
bjornnijhuis | 75:9995528bf8b7 | 11 | // Define normalizing parameters |
bjornnijhuis | 75:9995528bf8b7 | 12 | const int normalize_time = 2000; // Normalizing time [ms] |
bjornnijhuis | 75:9995528bf8b7 | 13 | const int normalize_wait = 4000; // Normalizing wait time [ms] |
bjornnijhuis | 75:9995528bf8b7 | 14 | |
bjornnijhuis | 75:9995528bf8b7 | 15 | // Define thresholds |
bjornnijhuis | 75:9995528bf8b7 | 16 | const double UPT = 0.35; // Upper Treshold Value (0-1) |
bjornnijhuis | 75:9995528bf8b7 | 17 | const double LPT = 0.2; // Lower Treshold Vvalue (0-1) |
bjornnijhuis | 75:9995528bf8b7 | 18 | const double LST = 100; // Lower Switch Time [ms] |
bjornnijhuis | 75:9995528bf8b7 | 19 | const double UST = 500; // Upper Switch Time [ms] |
bjornnijhuis | 75:9995528bf8b7 | 20 | |
bjornnijhuis | 75:9995528bf8b7 | 21 | // Define filter constants |
bjornnijhuis | 75:9995528bf8b7 | 22 | double f11_v1=0, f11_v2=0, f12_v1=0, f12_v2=0, f13_v1=0, f13_v2=0; |
bjornnijhuis | 75:9995528bf8b7 | 23 | double f11_v1b=0, f11_v2b=0, f12_v1b=0, f12_v2b=0, f13_v1b=0, f13_v2b=0; |
bjornnijhuis | 75:9995528bf8b7 | 24 | const double f11_gain = 0.907616, f11_a1 = 0.00000000267, f11_a2 = 0.77693864001, f11_b0 = 1, f11_b1 = 0.00000000301, f11_b2 = 1; // Constants for pre-filter BiQuad: Bandstop 48-52Hz #1 |
bjornnijhuis | 75:9995528bf8b7 | 25 | const double f12_gain = 0.857718, f12_a1 = -0.20392089403, f12_a2 = 0.88318656585, f12_b0 = 1, f12_b1 = 0.00000000301, f12_b2 = 1; // Constants for pre-filter BiQuad: Bandstop 48-52Hz #2 |
bjornnijhuis | 75:9995528bf8b7 | 26 | const double f13_gain = 1 , f13_a1 = 0.20392089964, f13_a2 = 0.88318656589, f13_b0 = 1, f13_b1 = 0.00000000301, f13_b2 = 1; // Constants for pre-filter BiQuad: Bandstop 48-52Hz #3 |
bjornnijhuis | 75:9995528bf8b7 | 27 | |
bjornnijhuis | 75:9995528bf8b7 | 28 | double f21_v1=0, f21_v2=0, f22_v1=0, f22_v2=0, f23_v1=0, f23_v2=0; |
bjornnijhuis | 75:9995528bf8b7 | 29 | double f21_v1b=0, f21_v2b=0, f22_v1b=0, f22_v2b=0, f23_v1b=0, f23_v2b=0; |
bjornnijhuis | 75:9995528bf8b7 | 30 | const double f21_gain = 0.807131, f21_a1 = -1.58896195896, f21_a2 = 0.63360956141, f21_b0 = 1, f21_b1 = -2, f21_b2 = 1; // Constants for pre-filter BiQuad: Highpass 6 Hz #1 |
bjornnijhuis | 75:9995528bf8b7 | 31 | const double f22_gain = 0.847233, f22_a1 = -1.67098565006, f22_a2 = 0.71793800319, f22_b0 = 1, f22_b1 = -2, f22_b2 = 1; // Constants for pre-filter BiQuad: Highpass 6 Hz #2 |
bjornnijhuis | 75:9995528bf8b7 | 32 | const double f23_gain = 0.928702, f23_a1 = -1.83505834569, f23_a2 = 0.88662091145, f23_b0 = 1, f23_b1 = -2, f23_b2 = 1; // Constants for pre-filter BiQuad: Highpass 6 Hz #3 |
bjornnijhuis | 75:9995528bf8b7 | 33 | |
bjornnijhuis | 75:9995528bf8b7 | 34 | double f31_v1=0, f31_v2=0, f32_v1=0, f32_v2=0, f33_v1=0, f33_v2=0; |
bjornnijhuis | 75:9995528bf8b7 | 35 | double f31_v1b=0, f31_v2b=0, f32_v1b=0, f32_v2b=0, f33_v1b=0, f33_v2b=0; |
bjornnijhuis | 75:9995528bf8b7 | 36 | const double f31_gain = 0.130049, f31_a1 = -0.57789344562, f31_a2 = 0.09809080329, f31_b0 = 1, f31_b1 = 2, f31_b2 = 1; // Constants for pre-filter BiQuad: Lowpass 30 Hz #1 |
bjornnijhuis | 75:9995528bf8b7 | 37 | const double f32_gain = 0.147923, f32_a1 = -0.65731925030, f32_a2 = 0.24901264940, f32_b0 = 1, f32_b1 = 2, f32_b2 = 1; // Constants for pre-filter BiQuad: Lowpass 30 Hz #2 |
bjornnijhuis | 75:9995528bf8b7 | 38 | const double f33_gain = 0.194139, f33_a1 = -0.86268420183, f33_a2 = 0.63923919773, f33_b0 = 1, f33_b1 = 2, f33_b2 = 1; // Constants for pre-filter BiQuad: Lowpass 30 Hz #3 |
bjornnijhuis | 75:9995528bf8b7 | 39 | |
bjornnijhuis | 75:9995528bf8b7 | 40 | double a11_v1=0, a11_v2=0, a12_v1=0, a12_v2=0, a13_v1=0, a13_v2=0; |
bjornnijhuis | 75:9995528bf8b7 | 41 | double a11_v1b=0, a11_v2b=0, a12_v1b=0, a12_v2b=0, a13_v1b=0, a13_v2b=0; |
bjornnijhuis | 75:9995528bf8b7 | 42 | const double a11_gain = 0.002932, a11_a1 = -1.79028908066, a11_a2 = 0.80198751695, a11_b0 = 1, a11_b1 = 2, a11_b2 = 1; // Constants for averaging BiQuad: Lowpass 4 Hz #1 |
bjornnijhuis | 75:9995528bf8b7 | 43 | const double a12_gain = 0.003004, a12_a1 = -1.83907730494, a12_a2 = 0.85109454222, a12_b0 = 1, a12_b1 = 2, a12_b2 = 1; // Constants for averaging BiQuad: Lowpass 4 Hz #2 |
bjornnijhuis | 75:9995528bf8b7 | 44 | const double a13_gain = 0.003145, a13_a1 = -1.93018419700, a13_a2 = 0.94279676171, a13_b0 = 1, a13_b1 = 2, a13_b2 = 1; // Constants for averaging BiQuad: Lowpass 4 Hz #3 |