This is the one where I went back and un-did the cube.cpp file
Dependencies: BNO055_fusion_tom FastPWM mbed
Fork of NucleoCube1 by
cube.h@24:c7b3bac429c5, 2017-04-12 (annotated)
- Committer:
- tomras12
- Date:
- Wed Apr 12 20:54:52 2017 +0000
- Revision:
- 24:c7b3bac429c5
- Parent:
- 23:abe76b7c377a
- Child:
- 28:b813a8f685c3
Implemented orientation detection
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
tomras12 | 23:abe76b7c377a | 1 | /* |
tomras12 | 23:abe76b7c377a | 2 | * cube.h |
tomras12 | 23:abe76b7c377a | 3 | * April 11, 2017 |
tomras12 | 23:abe76b7c377a | 4 | * |
tomras12 | 23:abe76b7c377a | 5 | * Control software for balancing cube senior design project |
tomras12 | 23:abe76b7c377a | 6 | * |
tomras12 | 23:abe76b7c377a | 7 | * Will Church |
tomras12 | 23:abe76b7c377a | 8 | * Tom Rasmussen |
tomras12 | 23:abe76b7c377a | 9 | */ |
tomras12 | 23:abe76b7c377a | 10 | |
tomras12 | 23:abe76b7c377a | 11 | #ifndef CUBE_H |
tomras12 | 23:abe76b7c377a | 12 | #define CUBE_H |
tomras12 | 23:abe76b7c377a | 13 | |
tomras12 | 23:abe76b7c377a | 14 | /* -- INCLUDES -- */ |
tomras12 | 23:abe76b7c377a | 15 | #include "mbed.h" |
tomras12 | 23:abe76b7c377a | 16 | #include "BNO055.h" |
tomras12 | 23:abe76b7c377a | 17 | |
tomras12 | 23:abe76b7c377a | 18 | /* -- STRUCT -- */ |
tomras12 | 23:abe76b7c377a | 19 | struct config { |
tomras12 | 23:abe76b7c377a | 20 | double Kbt; // Body angle gain |
tomras12 | 23:abe76b7c377a | 21 | double Kbv; // Body velocity gain |
tomras12 | 23:abe76b7c377a | 22 | double Kwv; // Wheel velocity gain |
tomras12 | 23:abe76b7c377a | 23 | double eqAngle; // Equilibrium angle |
tomras12 | 23:abe76b7c377a | 24 | double *angle; // Points to angle in IMU Euler_angle struct |
tomras12 | 23:abe76b7c377a | 25 | double *vel; // Points to vel in IMU VEL struct |
tomras12 | 24:c7b3bac429c5 | 26 | PwmOut *pwm; // PWM out for motor control |
tomras12 | 24:c7b3bac429c5 | 27 | AnalogIn *hall; // Analog in for wheel velocity |
tomras12 | 24:c7b3bac429c5 | 28 | char *descr; // Description of config |
tomras12 | 23:abe76b7c377a | 29 | }; |
tomras12 | 23:abe76b7c377a | 30 | |
tomras12 | 23:abe76b7c377a | 31 | /* -- CONSTANTS -- */ |
tomras12 | 23:abe76b7c377a | 32 | // 1D gains, other wheels detached |
tomras12 | 23:abe76b7c377a | 33 | /*const double Kbt = -89.9276; |
tomras12 | 23:abe76b7c377a | 34 | const double Kbv = -14.9398; |
tomras12 | 23:abe76b7c377a | 35 | const double Kwv = -0.001; //-0.0909; |
tomras12 | 23:abe76b7c377a | 36 | |
tomras12 | 23:abe76b7c377a | 37 | 1d gains, others wheels attached |
tomras12 | 23:abe76b7c377a | 38 | const double Kbt_x = 0; |
tomras12 | 23:abe76b7c377a | 39 | const double Kbv_x = 0; |
tomras12 | 23:abe76b7c377a | 40 | const double Kwv_x = 0; |
tomras12 | 23:abe76b7c377a | 41 | |
tomras12 | 23:abe76b7c377a | 42 | const double Kbt_y = 0; |
tomras12 | 23:abe76b7c377a | 43 | const double Kbv_y = 0; |
tomras12 | 23:abe76b7c377a | 44 | const double Kwv_y = 0; |
tomras12 | 23:abe76b7c377a | 45 | |
tomras12 | 23:abe76b7c377a | 46 | const double Kbt_z = 0; |
tomras12 | 23:abe76b7c377a | 47 | const double Kbv_z = 0; |
tomras12 | 23:abe76b7c377a | 48 | const double Kwv_z = 0;*/ |
tomras12 | 23:abe76b7c377a | 49 | |
tomras12 | 23:abe76b7c377a | 50 | // Other constants |
tomras12 | 23:abe76b7c377a | 51 | const double pi = 3.14159265; |
tomras12 | 23:abe76b7c377a | 52 | |
tomras12 | 23:abe76b7c377a | 53 | /* -- NOTES -- */ |
tomras12 | 23:abe76b7c377a | 54 | //------------------------------------ |
tomras12 | 23:abe76b7c377a | 55 | // Hyperterminal configuration |
tomras12 | 23:abe76b7c377a | 56 | // 9600 bauds, 8-bit data, no parity |
tomras12 | 23:abe76b7c377a | 57 | //------------------------------------ |
tomras12 | 23:abe76b7c377a | 58 | |
tomras12 | 23:abe76b7c377a | 59 | /* -- PROTOTYPES -- */ |
tomras12 | 23:abe76b7c377a | 60 | |
tomras12 | 23:abe76b7c377a | 61 | /* |
tomras12 | 24:c7b3bac429c5 | 62 | * Checks and prints calibration until sys calib is at 3 / 3 |
tomras12 | 24:c7b3bac429c5 | 63 | */ |
tomras12 | 24:c7b3bac429c5 | 64 | void checkCalib(BNO055 *imu, Serial *pc); |
tomras12 | 24:c7b3bac429c5 | 65 | |
tomras12 | 24:c7b3bac429c5 | 66 | /* |
tomras12 | 23:abe76b7c377a | 67 | * TODO: Documentation here |
tomras12 | 23:abe76b7c377a | 68 | * Note: should this function be inline? |
tomras12 | 23:abe76b7c377a | 69 | */ |
tomras12 | 23:abe76b7c377a | 70 | double calcPWM(config *c); |
tomras12 | 23:abe76b7c377a | 71 | void updatePWM(config *c); |
tomras12 | 23:abe76b7c377a | 72 | #endif |