for led strip
motion_tracking.h@0:da91c8ed4a98, 2018-06-11 (annotated)
- Committer:
- xuweiqian9999
- Date:
- Mon Jun 11 20:33:26 2018 +0000
- Revision:
- 0:da91c8ed4a98
added to a new proj
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
xuweiqian9999 | 0:da91c8ed4a98 | 1 | #ifndef MOTION_TRACKING_H_ |
xuweiqian9999 | 0:da91c8ed4a98 | 2 | #define MOTION_TRACKING_H_ |
xuweiqian9999 | 0:da91c8ed4a98 | 3 | |
xuweiqian9999 | 0:da91c8ed4a98 | 4 | #include "mbed.h" |
xuweiqian9999 | 0:da91c8ed4a98 | 5 | #include "FXOS8700.h" |
xuweiqian9999 | 0:da91c8ed4a98 | 6 | #include "FXAS21002.h" |
xuweiqian9999 | 0:da91c8ed4a98 | 7 | #include "math.h" |
xuweiqian9999 | 0:da91c8ed4a98 | 8 | #include "stdio.h" |
xuweiqian9999 | 0:da91c8ed4a98 | 9 | |
xuweiqian9999 | 0:da91c8ed4a98 | 10 | #define MAINWAIT 1 |
xuweiqian9999 | 0:da91c8ed4a98 | 11 | #define CALIBTIMES 50 |
xuweiqian9999 | 0:da91c8ed4a98 | 12 | #define SAMPLEPERIOD_S 6 |
xuweiqian9999 | 0:da91c8ed4a98 | 13 | #define MOVINGAVRBUFSIZE 40 |
xuweiqian9999 | 0:da91c8ed4a98 | 14 | #define MOVINGENDBUFSIZE 32 |
xuweiqian9999 | 0:da91c8ed4a98 | 15 | #define TRENDPROTECTBUFSIZE 70 |
xuweiqian9999 | 0:da91c8ed4a98 | 16 | #define YMOVENDTHRESHOLD 0.1 |
xuweiqian9999 | 0:da91c8ed4a98 | 17 | #define ZMOVENDTHRESHOLD 0.1 |
xuweiqian9999 | 0:da91c8ed4a98 | 18 | #define YMOVENDBIASNUM 30 |
xuweiqian9999 | 0:da91c8ed4a98 | 19 | #define ZMOVENDBIASNUM 30 |
xuweiqian9999 | 0:da91c8ed4a98 | 20 | #define XTRENDPROTECTTHRESHOLD 0.06 |
xuweiqian9999 | 0:da91c8ed4a98 | 21 | #define YTRENDPROTECTTHRESHOLD 0.06 |
xuweiqian9999 | 0:da91c8ed4a98 | 22 | #define MAXBUFFERSIZE 3000 |
xuweiqian9999 | 0:da91c8ed4a98 | 23 | #define XMECHANICAL 0.005 |
xuweiqian9999 | 0:da91c8ed4a98 | 24 | #define YMECHANICAL 0.005 |
xuweiqian9999 | 0:da91c8ed4a98 | 25 | #define ZMECHANICAL 0.005 |
xuweiqian9999 | 0:da91c8ed4a98 | 26 | #define VERTICALNUMCOLOR 3 |
xuweiqian9999 | 0:da91c8ed4a98 | 27 | #define HORIZONTALNUMCOLOR 5 |
xuweiqian9999 | 0:da91c8ed4a98 | 28 | |
xuweiqian9999 | 0:da91c8ed4a98 | 29 | struct RGB { |
xuweiqian9999 | 0:da91c8ed4a98 | 30 | int R; |
xuweiqian9999 | 0:da91c8ed4a98 | 31 | int G; |
xuweiqian9999 | 0:da91c8ed4a98 | 32 | int B; |
xuweiqian9999 | 0:da91c8ed4a98 | 33 | }; |
xuweiqian9999 | 0:da91c8ed4a98 | 34 | |
xuweiqian9999 | 0:da91c8ed4a98 | 35 | void acquire_new_speed(float *cur_speed, float duration, float *instant_accel); |
xuweiqian9999 | 0:da91c8ed4a98 | 36 | |
xuweiqian9999 | 0:da91c8ed4a98 | 37 | void acquire_sensor_data(float *accel_data, float *gyro_data, float *calib_data, |
xuweiqian9999 | 0:da91c8ed4a98 | 38 | int calibFlag, FXOS8700 *accel, FXAS21002 *gyro); |
xuweiqian9999 | 0:da91c8ed4a98 | 39 | |
xuweiqian9999 | 0:da91c8ed4a98 | 40 | void get_caliberate_data(float *caliberate, FXOS8700 *accel, FXAS21002 *gyro); |
xuweiqian9999 | 0:da91c8ed4a98 | 41 | |
xuweiqian9999 | 0:da91c8ed4a98 | 42 | void load_buffer(float **all_data, float *accel_data, float time, int i); |
xuweiqian9999 | 0:da91c8ed4a98 | 43 | |
xuweiqian9999 | 0:da91c8ed4a98 | 44 | void init_moving_avg_buf(float moving_avg_buf[][MOVINGAVRBUFSIZE], int *num_samples, |
xuweiqian9999 | 0:da91c8ed4a98 | 45 | float *last_total, float **all_data, float *caliberate, |
xuweiqian9999 | 0:da91c8ed4a98 | 46 | Timer *t, FXOS8700 *accel, FXAS21002 *gyro); |
xuweiqian9999 | 0:da91c8ed4a98 | 47 | |
xuweiqian9999 | 0:da91c8ed4a98 | 48 | void get_new_moving_average_point(float **all_data, float *last_total, |
xuweiqian9999 | 0:da91c8ed4a98 | 49 | float *accel_data, float moving_avg_buf[][MOVINGAVRBUFSIZE], |
xuweiqian9999 | 0:da91c8ed4a98 | 50 | float time, int *num_samples, int *start, |
xuweiqian9999 | 0:da91c8ed4a98 | 51 | int *end); |
xuweiqian9999 | 0:da91c8ed4a98 | 52 | |
xuweiqian9999 | 0:da91c8ed4a98 | 53 | void apply_trend_protect(float **all_data, int num_samples, float *total_diff, |
xuweiqian9999 | 0:da91c8ed4a98 | 54 | float *additional_to_vel, float duration); |
xuweiqian9999 | 0:da91c8ed4a98 | 55 | |
xuweiqian9999 | 0:da91c8ed4a98 | 56 | void apply_move_end_check(float **all_data, int num_samples, |
xuweiqian9999 | 0:da91c8ed4a98 | 57 | int moving_end_buf[][MOVINGENDBUFSIZE], |
xuweiqian9999 | 0:da91c8ed4a98 | 58 | int *num_unqualified, int *start, int *end, |
xuweiqian9999 | 0:da91c8ed4a98 | 59 | float *addition_to_vel, float duration, |
xuweiqian9999 | 0:da91c8ed4a98 | 60 | float *total_diff); |
xuweiqian9999 | 0:da91c8ed4a98 | 61 | |
xuweiqian9999 | 0:da91c8ed4a98 | 62 | void get_new_velocity (float *original_speed, float *addition_to_vel); |
xuweiqian9999 | 0:da91c8ed4a98 | 63 | |
xuweiqian9999 | 0:da91c8ed4a98 | 64 | void get_new_position (float *original_position, float *cur_speed, float duration); |
xuweiqian9999 | 0:da91c8ed4a98 | 65 | |
xuweiqian9999 | 0:da91c8ed4a98 | 66 | void insert_new_vel_to_buffer(float** vel_buffer, float time, float* cur_vel, |
xuweiqian9999 | 0:da91c8ed4a98 | 67 | int num_samples); |
xuweiqian9999 | 0:da91c8ed4a98 | 68 | |
xuweiqian9999 | 0:da91c8ed4a98 | 69 | void insert_new_pos_to_buffer(float** pos_buffer, float time, float* cur_pos, |
xuweiqian9999 | 0:da91c8ed4a98 | 70 | int num_samples); |
xuweiqian9999 | 0:da91c8ed4a98 | 71 | |
xuweiqian9999 | 0:da91c8ed4a98 | 72 | void insert_new_color_to_buffer(float **color_buffer, int r, int g, int b, |
xuweiqian9999 | 0:da91c8ed4a98 | 73 | float time, int num_samples); |
xuweiqian9999 | 0:da91c8ed4a98 | 74 | |
xuweiqian9999 | 0:da91c8ed4a98 | 75 | void initialize_color_table(RGB rgb_table[][HORIZONTALNUMCOLOR]); |
xuweiqian9999 | 0:da91c8ed4a98 | 76 | |
xuweiqian9999 | 0:da91c8ed4a98 | 77 | RGB get_new_color(float *cur_location, RGB rgb_table[][HORIZONTALNUMCOLOR]); |
xuweiqian9999 | 0:da91c8ed4a98 | 78 | |
xuweiqian9999 | 0:da91c8ed4a98 | 79 | void output_all_to_serial(float **all_data, int num_samples); |
xuweiqian9999 | 0:da91c8ed4a98 | 80 | |
xuweiqian9999 | 0:da91c8ed4a98 | 81 | void output_color_to_serial(float **color_data, int num_samples); |
xuweiqian9999 | 0:da91c8ed4a98 | 82 | |
xuweiqian9999 | 0:da91c8ed4a98 | 83 | void output_to_serial(float **vel_data, int num_samples); |
xuweiqian9999 | 0:da91c8ed4a98 | 84 | |
xuweiqian9999 | 0:da91c8ed4a98 | 85 | #endif |