for led strip

Committer:
xuweiqian9999
Date:
Wed Jun 13 01:47:37 2018 +0000
Revision:
1:b90027de2bdb
Parent:
0:da91c8ed4a98
working

Who changed what in which revision?

UserRevisionLine numberNew 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