My modifications/additions to the code

Dependencies:   ADXL345 ADXL345_I2C IMUfilter ITG3200 Servo fishgait mbed-rtos mbed pixy_cam

Fork of robotic_fish_ver_4_8 by jetfishteam

Committer:
sandwich
Date:
Thu Jun 05 00:13:02 2014 +0000
Revision:
22:807d5467fbf6
Parent:
20:6ae16da1492a
Child:
23:ef1be367726e
look at the previous one

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rkk 11:8ec915eb70f6 1 #ifndef MBED_MAINCONTROLLER_H
rkk 11:8ec915eb70f6 2 #define MBED_MAINCONTROLLER_H
rkk 11:8ec915eb70f6 3
rkk 11:8ec915eb70f6 4 #include "mbed.h"
sandwich 22:807d5467fbf6 5 #include "rtos.h"
rkk 11:8ec915eb70f6 6 #include "PwmIn.h"
rkk 11:8ec915eb70f6 7 #include "motor_controller.h"
rkk 20:6ae16da1492a 8 //#include "guardian.h"
rkk 12:7eeb29892625 9 //#include "IMU.h"
rkk 17:6970aef8154b 10 #include "Servo.h"
sandwich 22:807d5467fbf6 11 #include "pixy.h"
rkk 17:6970aef8154b 12
rkk 12:7eeb29892625 13
rkk 11:8ec915eb70f6 14
rkk 11:8ec915eb70f6 15 #define MATH_PI 3.14159265359
sandwich 22:807d5467fbf6 16 #define START_THREAD 1
rkk 11:8ec915eb70f6 17
rkk 11:8ec915eb70f6 18 /** MainController class to get control inputs and place them onto the system
rkk 11:8ec915eb70f6 19 *
rkk 11:8ec915eb70f6 20 *
rkk 11:8ec915eb70f6 21 */
rkk 11:8ec915eb70f6 22 class MainController {
rkk 11:8ec915eb70f6 23 public:
rkk 11:8ec915eb70f6 24 /** Create a MainController
rkk 11:8ec915eb70f6 25 *
rkk 11:8ec915eb70f6 26 * @param
rkk 11:8ec915eb70f6 27 */
rkk 11:8ec915eb70f6 28 MainController() ;
sandwich 22:807d5467fbf6 29 ~MainController();
rkk 11:8ec915eb70f6 30
rkk 11:8ec915eb70f6 31 /** Start the main controller
rkk 11:8ec915eb70f6 32 *
rkk 11:8ec915eb70f6 33 * @returns
rkk 11:8ec915eb70f6 34 */
rkk 11:8ec915eb70f6 35 void start();
rkk 11:8ec915eb70f6 36
rkk 11:8ec915eb70f6 37 float getDutyCycle();
rkk 11:8ec915eb70f6 38 float getFrequency();
rkk 11:8ec915eb70f6 39 float getVolume();
rkk 11:8ec915eb70f6 40 float getAmplitude();
rkk 19:655db88b045c 41 float getYaw();
rkk 17:6970aef8154b 42 float getPitch();
rkk 19:655db88b045c 43 float getTimeAdd();
rkk 20:6ae16da1492a 44 float getAdj();
sandwich 22:807d5467fbf6 45 bool getOpMode(); //returns true when in autonomous mode
rkk 20:6ae16da1492a 46
rkk 11:8ec915eb70f6 47 /** Stop the main controller
rkk 11:8ec915eb70f6 48 *
rkk 11:8ec915eb70f6 49 * @returns
rkk 11:8ec915eb70f6 50 */
rkk 11:8ec915eb70f6 51 void stop();
rkk 11:8ec915eb70f6 52
rkk 11:8ec915eb70f6 53
rkk 11:8ec915eb70f6 54 protected:
rkk 11:8ec915eb70f6 55 void control();
sandwich 22:807d5467fbf6 56 void trackTarget();
rkk 11:8ec915eb70f6 57 float calculateFrequency();
rkk 19:655db88b045c 58 float calculateAmplitude();
rkk 19:655db88b045c 59 float calculateYaw();
rkk 17:6970aef8154b 60 float calculatePitch();
rkk 20:6ae16da1492a 61 float calculateAdj();
rkk 13:5ed8fd870723 62 float signum(float input);
rkk 15:dc5753a5b83e 63 float saturate(float input);
rkk 11:8ec915eb70f6 64
rkk 11:8ec915eb70f6 65 private:
rkk 17:6970aef8154b 66 PwmIn ch1;
rkk 17:6970aef8154b 67 PwmIn ch2;
rkk 11:8ec915eb70f6 68 PwmIn ch3;
rkk 12:7eeb29892625 69 PwmIn ch4;
rkk 11:8ec915eb70f6 70 PwmIn ch6;
sandwich 22:807d5467fbf6 71 PwmIn ch5;
sandwich 22:807d5467fbf6 72 //PololuMController mcon;
sandwich 22:807d5467fbf6 73 Serial syren; //syren replaced the pololu controller
rkk 20:6ae16da1492a 74 //Guardian ap;
rkk 20:6ae16da1492a 75 Servo leftservo;
rkk 20:6ae16da1492a 76 Servo rightservo;
rkk 12:7eeb29892625 77
sandwich 22:807d5467fbf6 78 pixySPI pcam;
sandwich 22:807d5467fbf6 79
rkk 11:8ec915eb70f6 80 Timer timer1;
sandwich 22:807d5467fbf6 81 //Ticker ticker1;
sandwich 22:807d5467fbf6 82 //Ticker tracker;
sandwich 22:807d5467fbf6 83 Mutex trackMutex;
sandwich 22:807d5467fbf6 84 Thread controlThread;
sandwich 22:807d5467fbf6 85 static void controlThreadStarter(void const *p);
sandwich 22:807d5467fbf6 86 Thread trackerThread;
sandwich 22:807d5467fbf6 87 static void trackerThreadStarter(void const *p);
rkk 19:655db88b045c 88 float amp;
rkk 20:6ae16da1492a 89 float ampNew;
rkk 11:8ec915eb70f6 90 float frq;
rkk 11:8ec915eb70f6 91 float dutyCycle;
rkk 11:8ec915eb70f6 92 float curTime;
rkk 11:8ec915eb70f6 93 float frqMin;
rkk 11:8ec915eb70f6 94 float frqMax;
rkk 19:655db88b045c 95 float yaw;
rkk 17:6970aef8154b 96 float pitch;
rkk 20:6ae16da1492a 97 float adj;
rkk 17:6970aef8154b 98
rkk 19:655db88b045c 99 bool fullCycle;
rkk 19:655db88b045c 100 float volume;
rkk 19:655db88b045c 101 float volChg;
rkk 19:655db88b045c 102 float volMax;
rkk 19:655db88b045c 103 float frqCmd;
rkk 19:655db88b045c 104 float timeAdd;
rkk 20:6ae16da1492a 105 float raiser;
rkk 20:6ae16da1492a 106 float pitAvg;
rkk 20:6ae16da1492a 107 float alPi;
rkk 11:8ec915eb70f6 108 };
rkk 11:8ec915eb70f6 109
rkk 11:8ec915eb70f6 110 #endif
rkk 11:8ec915eb70f6 111
rkk 11:8ec915eb70f6 112