most functionality to splashdwon, find neutral and start mission. short timeouts still in code for testing, will adjust to go directly to sit_idle after splashdown

Dependencies:   mbed MODSERIAL FATFileSystem

Committer:
danstrider
Date:
Fri Oct 27 00:37:32 2017 +0000
Revision:
11:3b241ecb75ed
Parent:
10:085ab7328054
This version has been in the pool, working with all the hardware.  Had occasional string pot problems and got stuck in RISE, letting the battery stall out against the endcap.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
danstrider 10:085ab7328054 1 #ifndef OUTERLOOP_HPP
danstrider 10:085ab7328054 2 #define OUTERLOOP_HPP
danstrider 10:085ab7328054 3
danstrider 10:085ab7328054 4 #include "mbed.h"
danstrider 10:085ab7328054 5 #include "PidController.hpp"
danstrider 10:085ab7328054 6 #include "PosVelFilter.hpp"
danstrider 10:085ab7328054 7
danstrider 10:085ab7328054 8 // This class is an outer loop controller with its own instance of a position velocity filter.
danstrider 10:085ab7328054 9
danstrider 10:085ab7328054 10 class OuterLoop {
danstrider 10:085ab7328054 11 public:
danstrider 10:085ab7328054 12 OuterLoop(float interval, int sensor);
danstrider 10:085ab7328054 13
danstrider 10:085ab7328054 14 // functions for setting up
danstrider 10:085ab7328054 15 void init();
danstrider 10:085ab7328054 16 void update();
danstrider 10:085ab7328054 17 void start();
danstrider 10:085ab7328054 18 void stop();
danstrider 10:085ab7328054 19
danstrider 10:085ab7328054 20 // setting and getting variables
danstrider 10:085ab7328054 21 void setCommand(float cmd);
danstrider 11:3b241ecb75ed 22 float getCommand();
danstrider 11:3b241ecb75ed 23
danstrider 10:085ab7328054 24 float getOutput();
danstrider 10:085ab7328054 25
danstrider 10:085ab7328054 26 float getPosition();
danstrider 10:085ab7328054 27 float getVelocity();
danstrider 10:085ab7328054 28
danstrider 10:085ab7328054 29 void setControllerP(float P);
danstrider 10:085ab7328054 30 float getControllerP();
danstrider 10:085ab7328054 31
danstrider 10:085ab7328054 32 void setControllerI(float I);
danstrider 10:085ab7328054 33 float getControllerI();
danstrider 10:085ab7328054 34
danstrider 10:085ab7328054 35 void setControllerD(float D);
danstrider 10:085ab7328054 36 float getControllerD();
danstrider 10:085ab7328054 37
danstrider 10:085ab7328054 38 void setTravelLimit(float limit);
danstrider 10:085ab7328054 39 float getTravelLimit();
danstrider 10:085ab7328054 40
danstrider 10:085ab7328054 41 void setFilterFrequency(float frequency);
danstrider 10:085ab7328054 42 float getFilterFrequency;
danstrider 10:085ab7328054 43
danstrider 10:085ab7328054 44 void setDeadband(float deadband);
danstrider 10:085ab7328054 45 bool toggleDeadband(bool toggle);
danstrider 10:085ab7328054 46
danstrider 11:3b241ecb75ed 47 void setOutputOffset(float offset);
danstrider 11:3b241ecb75ed 48 float getOutputOffset();
danstrider 11:3b241ecb75ed 49
danstrider 10:085ab7328054 50 protected:
danstrider 10:085ab7328054 51 PosVelFilter _filter;
danstrider 10:085ab7328054 52 PIDController _pid;
danstrider 10:085ab7328054 53 Ticker _pulse;
danstrider 10:085ab7328054 54
danstrider 10:085ab7328054 55 void refreshPVState();
danstrider 10:085ab7328054 56
danstrider 10:085ab7328054 57 float _SetPoint;
danstrider 10:085ab7328054 58 float _sensorVal;
danstrider 10:085ab7328054 59
danstrider 10:085ab7328054 60 // position and velocity in raw units
danstrider 10:085ab7328054 61 float _position;
danstrider 10:085ab7328054 62 float _velocity;
danstrider 10:085ab7328054 63
danstrider 10:085ab7328054 64 // setup parameters
danstrider 10:085ab7328054 65 float _Pgain;
danstrider 10:085ab7328054 66 float _Igain;
danstrider 10:085ab7328054 67 float _Dgain;
danstrider 10:085ab7328054 68 float _dt;
danstrider 10:085ab7328054 69 float _filterFrequency;
danstrider 10:085ab7328054 70 float _deadband;
danstrider 10:085ab7328054 71 char _sensor;
danstrider 11:3b241ecb75ed 72 float _offset;
danstrider 10:085ab7328054 73 };
danstrider 10:085ab7328054 74
danstrider 10:085ab7328054 75 #endif