Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: FiniteStateMachine HipControl Knee LinearBlend1 LocalFileSystem_Read dataComm hapticFeedback initExoVars mbed Blend_Generator Brad_poly_gait Gait_Generator MM_gait Encoders IMUdriver
Fork of Motion Control by
initExoVars/initExoVars.h@25:1292b886b8d2, 2015-05-11 (annotated)
- Committer:
- mzling
- Date:
- Mon May 11 21:47:16 2015 +0000
- Revision:
- 25:1292b886b8d2
- Parent:
- 20:cf8e99d989a6
- Child:
- 26:c4372c518ac3
Added gait gen. setters/getters, and dummy declaration of MMgait (so code compiles)
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| perr1940 | 0:d38d627c922f | 1 | |
| perr1940 | 0:d38d627c922f | 2 | |
| perr1940 | 0:d38d627c922f | 3 | #ifndef INIT_H |
| perr1940 | 0:d38d627c922f | 4 | #define INIT_H |
| perr1940 | 0:d38d627c922f | 5 | |
| perr1940 | 0:d38d627c922f | 6 | #include "mbed.h" |
| perr1940 | 0:d38d627c922f | 7 | #include "Encoder.h" |
| perr1940 | 0:d38d627c922f | 8 | #include "HipControl.h" |
| perr1940 | 0:d38d627c922f | 9 | #include "knee.h" |
| perr1940 | 0:d38d627c922f | 10 | #include "FSM.h" |
| perr1940 | 0:d38d627c922f | 11 | #define PI (3.141592653589793) |
| perr1940 | 0:d38d627c922f | 12 | |
| perr1940 | 0:d38d627c922f | 13 | //#define SAMPLE_TIME .005 |
| perr1940 | 0:d38d627c922f | 14 | #define SAMPLE_TIME .001 |
| perr1940 | 0:d38d627c922f | 15 | #define TO_RAD(x) (x * 0.01745329252) // *pi/180 |
| perr1940 | 0:d38d627c922f | 16 | |
| mzling | 25:1292b886b8d2 | 17 | |
| mzling | 25:1292b886b8d2 | 18 | struct MMgait_t { |
| mzling | 25:1292b886b8d2 | 19 | int time_steps; //number of time steps per step |
| mzling | 25:1292b886b8d2 | 20 | float peak_time; //time of peak hip angle |
| mzling | 25:1292b886b8d2 | 21 | float walking_angle; //double stance hip angle |
| mzling | 25:1292b886b8d2 | 22 | float end_angle; //hip angle at the end of step |
| mzling | 25:1292b886b8d2 | 23 | float max_angle; //max hip flexion |
| mzling | 25:1292b886b8d2 | 24 | } ; |
| perr1940 | 0:d38d627c922f | 25 | /******************************** |
| perr1940 | 0:d38d627c922f | 26 | * Initializing various I/O pins! |
| perr1940 | 0:d38d627c922f | 27 | ********************************/ |
| perr1940 | 0:d38d627c922f | 28 | extern DigitalOut mbedLED1; |
| perr1940 | 0:d38d627c922f | 29 | extern DigitalOut mbedLED2; |
| perr1940 | 0:d38d627c922f | 30 | extern DigitalOut mbedLED3; |
| perr1940 | 0:d38d627c922f | 31 | extern DigitalOut motorLED; |
| perr1940 | 0:d38d627c922f | 32 | |
| perr1940 | 0:d38d627c922f | 33 | extern SPI dataBedSPI; // mosi, miso, sclk |
| perr1940 | 0:d38d627c922f | 34 | extern DigitalOut DB_cs; |
| perr1940 | 0:d38d627c922f | 35 | extern SPI IMUspi; |
| perr1940 | 0:d38d627c922f | 36 | extern DigitalOut IMUcs; |
| perr1940 | 0:d38d627c922f | 37 | extern Serial pc; |
| perr1940 | 0:d38d627c922f | 38 | |
| perr1940 | 0:d38d627c922f | 39 | // Setup stuff |
| perr1940 | 0:d38d627c922f | 40 | // absolutes |
| perr1940 | 0:d38d627c922f | 41 | //extern SPI encoder_L; |
| perr1940 | 0:d38d627c922f | 42 | //extern DigitalOut encoder_cs_L; |
| perr1940 | 0:d38d627c922f | 43 | //extern SPI encoder_R; |
| perr1940 | 0:d38d627c922f | 44 | //extern DigitalOut encoder_cs_R; |
| perr1940 | 0:d38d627c922f | 45 | extern Encoder encoder_L; |
| perr1940 | 0:d38d627c922f | 46 | extern Encoder encoder_R; |
| perr1940 | 0:d38d627c922f | 47 | |
| perr1940 | 0:d38d627c922f | 48 | // Incremental Indexes (only for homing!) |
| perr1940 | 0:d38d627c922f | 49 | extern InterruptIn encIdx_R; |
| perr1940 | 0:d38d627c922f | 50 | extern InterruptIn encIdx_L; |
| perr1940 | 0:d38d627c922f | 51 | |
| perr1940 | 0:d38d627c922f | 52 | // Right Leg |
| perr1940 | 0:d38d627c922f | 53 | extern PwmOut pwmpin_R; |
| perr1940 | 0:d38d627c922f | 54 | extern DigitalOut dirpin_R; |
| perr1940 | 0:d38d627c922f | 55 | |
| perr1940 | 0:d38d627c922f | 56 | //Left Leg |
| perr1940 | 0:d38d627c922f | 57 | //extern PwmOut pwmpin_L; |
| perr1940 | 0:d38d627c922f | 58 | //extern DigitalOut dirpin_L; |
| perr1940 | 0:d38d627c922f | 59 | extern HipControl hip_L; |
| perr1940 | 0:d38d627c922f | 60 | extern HipControl hip_R; |
| perr1940 | 0:d38d627c922f | 61 | extern Knee knee_L; |
| perr1940 | 0:d38d627c922f | 62 | extern Knee knee_R; |
| perr1940 | 0:d38d627c922f | 63 | |
| perr1940 | 0:d38d627c922f | 64 | extern FSM fsm; |
| perr1940 | 0:d38d627c922f | 65 | |
| mzling | 25:1292b886b8d2 | 66 | extern struct MMgait_t MMgait; |
| mzling | 25:1292b886b8d2 | 67 | |
| perr1940 | 0:d38d627c922f | 68 | |
| perr1940 | 0:d38d627c922f | 69 | /******************************* |
| perr1940 | 0:d38d627c922f | 70 | * END OF I/O Initialization |
| perr1940 | 0:d38d627c922f | 71 | *******************************/ |
| perr1940 | 0:d38d627c922f | 72 | |
| perr1940 | 0:d38d627c922f | 73 | /******************************* |
| perr1940 | 0:d38d627c922f | 74 | * GLOBAL VARS |
| perr1940 | 0:d38d627c922f | 75 | *******************************/ |
| perr1940 | 0:d38d627c922f | 76 | |
| perr1940 | 0:d38d627c922f | 77 | // Global Timers! |
| perr1940 | 0:d38d627c922f | 78 | extern Timer sysClk; // system clock (primarily for datalogging) |
| perr1940 | 0:d38d627c922f | 79 | extern Timer tState; // time in FSM state |
| perr1940 | 0:d38d627c922f | 80 | extern Timer t_HCl; // time when high current begins |
| perr1940 | 0:d38d627c922f | 81 | extern Timer t_HCr; |
| perr1940 | 0:d38d627c922f | 82 | extern Timer t_BetweenStepCommand; |
| perr1940 | 0:d38d627c922f | 83 | |
| perr1940 | 0:d38d627c922f | 84 | const unsigned int enc_ticks=pow(2.,14.)-1; //the number of ticks that the encoder has, 2^14 for our encoder, -1 for 0 state |
| perr1940 | 0:d38d627c922f | 85 | const float enc2deg = 360./enc_ticks; // converts encoder reading from 0-16383 (14 bit) to 0-360deg (360 / 16383); |
| perr1940 | 0:d38d627c922f | 86 | const float control_lim_high=90; //soft stop on the controller |
| perr1940 | 0:d38d627c922f | 87 | const float control_lim_low=-55;//soft stop on the controller |
| perr1940 | 0:d38d627c922f | 88 | extern float TimeSinceLastStep; |
| perr1940 | 0:d38d627c922f | 89 | |
| perr1940 | 0:d38d627c922f | 90 | //Control Variables |
| perr1940 | 0:d38d627c922f | 91 | // Control variables |
| perr1940 | 0:d38d627c922f | 92 | // Gain Scheduling! |
| perr1940 | 0:d38d627c922f | 93 | extern const float Kp_Swing; |
| perr1940 | 0:d38d627c922f | 94 | extern const float Kp_Stance; |
| perr1940 | 0:d38d627c922f | 95 | extern const float Kp_DoubleStance;//.01; |
| perr1940 | 0:d38d627c922f | 96 | extern const float Kp_Standing;//.01; //0.0025 |
| perr1940 | 0:d38d627c922f | 97 | extern const float Kp_StandUp; |
| perr1940 | 0:d38d627c922f | 98 | extern const float Kp_SitDown ; |
| perr1940 | 0:d38d627c922f | 99 | extern const float Kp_Seated; |
| perr1940 | 0:d38d627c922f | 100 | |
| perr1940 | 0:d38d627c922f | 101 | extern const float Kp; |
| perr1940 | 0:d38d627c922f | 102 | extern const float Kd; |
| perr1940 | 0:d38d627c922f | 103 | extern const float sat; |
| perr1940 | 0:d38d627c922f | 104 | extern const float Kp_mag; |
| perr1940 | 0:d38d627c922f | 105 | extern const float Kp_freq; |
| perr1940 | 0:d38d627c922f | 106 | extern const float Kp_offset; |
| mzling | 19:70b2124c7370 | 107 | extern float stand_adjust; |
| mzling | 20:cf8e99d989a6 | 108 | extern const float zero_ang_L; |
| mzling | 20:cf8e99d989a6 | 109 | extern const float zero_ang_R; |
| perr1940 | 0:d38d627c922f | 110 | |
| perr1940 | 0:d38d627c922f | 111 | #endif |
| perr1940 | 0:d38d627c922f | 112 | |
| perr1940 | 0:d38d627c922f | 113 | extern void initializeExoIOs(); |
