First trial for Inverse Kinematics Feedforward implementation. No errors, not yet tested with board

Dependencies:   HIDScope MODSERIAL QEI biquadFilter mbed

Fork of prog_pract3_3_PI_controller by Gerhard Berman

Revision:
2:94b5e00288a5
Parent:
1:ace33633653b
Child:
3:8caef4872b0c
--- a/main.cpp	Fri Oct 14 14:35:09 2016 +0000
+++ b/main.cpp	Fri Oct 14 14:37:25 2016 +0000
@@ -18,7 +18,7 @@
 
 //set settings
 Serial pc(USBTX,USBRX);
-Ticker MeasurePTicker; //, BiQuadTicker, FeedbackTickere;// sampleT, TimeTracker;
+Ticker MeasurePTicker; 
 HIDScope    scope(2);
 
 //set datatypes
@@ -45,93 +45,9 @@
 BiQuad bq2(1.0000,   -1.5704,    1.2756,   -0.4844,    0.0762);
 
 //set go-Ticker settings
-volatile bool MeasurePTicker_go=false; //PTicker_go=false, MotorControllerTicker_go=false;// TimeTracker_go=false, sampleT_go=false;
+volatile bool MeasurePTicker_go=false; 
 void MeasureP_act(){MeasurePTicker_go=true;}; // Activates go-flags
-//void P_act(){PTicker_go=true;};
-//void MotorController_act(){MotorControllerTicker_go=true;};
-//void TimeTracker_act(){TimeTracker_go=true;};
-//void sampleT_act(){sampleT_go=true;};
-
-/*
-float GetReferenceVelocity()
-{
-    // Returns reference velocity in rad/s. 
-    // Positive value means clockwise rotation.
-    const float maxVelocity = 8.4; // in rad/s of course!
-    if (button1 == 0){
-        led1=1;
-        led2=0;
-        // Counterclockwise rotation
-        referenceVelocity = potMeterIn * maxVelocity;  
-    } 
-    else {   
-        led1=0;
-        led2=1;
-        // Clockwise rotation
-        referenceVelocity = -1*potMeterIn * maxVelocity;
-    }
-    return referenceVelocity;
-}
-
-float FeedForwardControl(float referenceVelocity)
-{
-    // very simple linear feed-forward control
-    const float MotorGain=8.4; // unit: (rad/s) / PWM
-    float motorValue = referenceVelocity / MotorGain;
-    return motorValue;
-}
 
-void SetMotor1(float motorValue)
-{
-    // Given -1<=motorValue<=1, this sets the PWM and direction
-    // bits for motor 1. Positive value makes motor rotating
-    // clockwise. motorValues outside range are truncated to
-    // within range
-    if (motorValue >=0) motor1DirectionPin=1;
-        else motor1DirectionPin=0;
-    if (fabs(motorValue)>1) motor1MagnitudePin = 1;
-        else motor1MagnitudePin = fabs(motorValue);
-}
-
-void MeasureAndControl()
-{
-    // This function measures the potmeter position, extracts a
-    // reference velocity from it, and controls the motor with 
-    // a simple FeedForward controller. Call this from a Ticker.
-    float referenceVelocity = GetReferenceVelocity();
-    float motorValue = FeedForwardControl(referenceVelocity);
-    SetMotor1(motorValue);
-}
-
-void TimeTrackerF(){
-     wait(1);   
-     float Potmeter = potMeterIn.read();
-     pc.printf("Reference velocity: %f rad/s \r\n", referenceVelocity);
-     pc.printf("Potmeter: %f rad/s \r\n", Potmeter);
-     //pc.printf("Counts: %i rad/s \r\n", counts);
-     //pc.printf("Derivative Counts: %i rad/s \r\n", DerivativeCounts);
-}
-
-void sample()
-{
-    int countsPrev = 0;
-    QEI Encoder(D12, D13, NC, 32);
-    counts = Encoder.getPulses();  // gives position
-    //scope.set(0,counts);
-    DerivativeCounts = (counts-countsPrev)/0.001;
-    //scope.set(1,DerivativeCounts);
-    countsPrev = counts; 
-    //scope.send();
-    pc.printf("Counts: %i rad/s \r\n", counts);
-    pc.printf("Derivative Counts: %d rad/s \r\n", DerivativeCounts);
-}
-
-void BiQuadFilter(){            //this function creates a BiQuad filter for the DerivativeCounts
-    //double in=DerivativeCounts();
-    bqcDerivativeCounts=bqc.step(DerivativeCounts);
-    //return(bqcDerivativeCounts);
-    }
- */   
 void MeasureP(){
     double ref_position = Potmeter1;                //reference position from potmeter
     int counts = Encoder.getPulses();           // gives position    
@@ -161,15 +77,11 @@
  //Initialize
  led1=0;
  led2=0;
- //float Potmeter = potMeterIn.read();
+ //float Potmeter1 = potMeter1.read();
+ //float Potmeter2 = potMeter2.read();
  MeasurePTicker.attach(&MeasureP_act, 0.01f); 
- //P.attach(&P_act, 0.01f);
- //MotorController.attach(&MotorController_act, 0.01f);
  pc.baud(115200);  
  QEI Encoder(D12, D13, NC, 32); // turns on encoder
- //sampleT.attach(&sampleT_act, 0.1f);
- //pc.printf("Reference velocity: %f rad/s \r\n", referenceVelocity);
- //pc.printf("Potmeter: %f rad/s \r\n", Potmeter);
  
  while(1)
     {
@@ -177,36 +89,5 @@
             MeasurePTicker_go=false;
             MeasureP();
         }
-            // Encoder part
-            /*
-            counts = Encoder.getPulses();  // gives position
-            DerivativeCounts = ((double) counts-countsPrev)/0.01;  
-            
-            scope.set(0,counts);
-            scope.set(1,DerivativeCounts);
-            //scope.set(1,bqcDerivativeCounts);
-            scope.send();
-            countsPrev = counts;
-            //pc.printf("Counts: %i rad/s \r\n", counts);
-            //pc.printf("Derivative Counts: %f rad/s \r\n", DerivativeCounts);
-            
-        }
-        
-        if (PTicker_go){
-            PTicker_go=false;
-            P();
-        }
-        
-        if (MotorControllerTicker_go){
-            MotorControllerTicker_go=false;
-            MotorController();
-        if (TimeTracker_go){
-            TimeTracker_go=false;
-            TimeTrackerF();
-        }
-        if (sampleT_go){
-            sampleT_go=false;
-            sample();
-        }*/
     }
 }
\ No newline at end of file