Roboshark / Mbed 2 deprecated Roboshark_V7

Dependencies:   mbed

Fork of Roboshark_V62 by Roboshark

Files at this revision

API Documentation at this revision

Comitter:
ahlervin
Date:
Mon May 07 15:41:52 2018 +0000
Parent:
8:d0a27278c108
Commit message:
Aufger?umtes Programm

Changed in this revision

Fahren.cpp Show annotated file Show diff for this revision Revisions of this file
Fahren.h Show annotated file Show diff for this revision Revisions of this file
IRSensor.cpp Show annotated file Show diff for this revision Revisions of this file
IRSensor.h Show annotated file Show diff for this revision Revisions of this file
Regler.cpp Show diff for this revision Revisions of this file
Regler.h Show diff for this revision Revisions of this file
StateMachine.cpp Show diff for this revision Revisions of this file
StateMachine.h Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Fahren.cpp	Mon May 07 14:11:06 2018 +0000
+++ b/Fahren.cpp	Mon May 07 15:41:52 2018 +0000
@@ -1,4 +1,4 @@
-/*Roboshark V6
+/*Roboshark V7
 Fahren.cpp
 Erstellt: J. Blunschi
 geändert: V.Ahlers
@@ -7,94 +7,25 @@
 
 #include "Fahren.h"
 #include <mbed.h>
-#include "Regler.h"
+#include "IRSensor.h"
 
 
 using namespace std;
 
-const float Fahren :: PERIOD = 0.2f;
-
-//Konstruktor
-Fahren::Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight, Regler& regler, int reglerEin, IRSensor& iRSensor):
-    controller(controller), counterLeft(counterLeft), counterRight(counterRight), regler(regler), reglerEin(reglerEin), iRSensor (iRSensor){
-    
-    SpeedR = 80;
-    SpeedL = 80;
-    disF = 0;
-    ticker.attach(callback(this, &Fahren::getSpeed), PERIOD);
-}
-
-//Dekonstruktor
-Fahren::~Fahren() {
-    ticker.detach();
-    }
-    
-
-//Korrigierte Geschwindigkeit aus der Klasse Regler aufrufen
-void Fahren::getSpeed(){
-    //if((reglerEinR == 1) && (reglerEinL == 1)){
-    //SpeedR = regler.getSpeedR();
-    //SpeedL = regler.getSpeedL();
-    SpeedR = 80;
-    SpeedL = 80;
-    
-    //disF = iRSensor.readF();
-    
-    //printf("SpeedR in F = %f\n",SpeedR);
-    //printf("SpeedL in F = %f\n",SpeedL);
-}
 
 
-//Implementation der Methode geradeaus fahren ungeregelt
-void Fahren::geradeausU(){
-    
-    //einlesen des aktuellen Encoder standes
-    initialClicksRight = counterRight.read();   
-    initialClicksLeft = counterLeft.read();
-    
-    //Anzahl Clicks die der Encoder zählen soll
-    wegRechts = 1773;
-    wegLinks = 1773;
-        
-    //Geschwindigkeit
-    //speedRight = 50;
-    //speedLeft = 50;
-    
-    //Zustand, dass der Roboter nicht gestoppt hat
-    stopRight = false;
-    stopLeft = false;
-
-    
-    //Drehrichtung der Motoren
-    controller.setDesiredSpeedRight(SpeedR);
-    controller.setDesiredSpeedLeft(-(SpeedL));
-    
+//Konstruktor
+Fahren::Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight, IRSensor& iRSensor):
+    controller(controller), counterLeft(counterLeft), counterRight(counterRight), iRSensor (iRSensor){
+SpeedR = 80.0f;
+SpeedL = 80.0f;
+disF = 0.0f;
+}
+//Dekonstruktor
+Fahren::~Fahren() {}
     
-    while(1){
-       
-       // printf("Encoderrechts %d \n\r", counterRight.read());                   //Debugging Zweck (Putty benutzen!)
-       // printf("Encoderlinks %d \n\r", counterLeft.read());                     //Debugging Zweck (Putty benutzen!)
-        
-        //If Schleife, wenn Clicks erreicht sind, muss der Motor stoppen
-        if(counterRight.read() - initialClicksRight >= wegRechts || counterRight.read() - initialClicksRight <= -wegRechts){    
-            controller.setDesiredSpeedRight(0);
-            stopRight = true;
-            }
-            
-        //If Schleife, wenn Clicks erreicht sind, muss der Motor stoppen    
-        if(counterLeft.read() - initialClicksLeft >= wegLinks || counterLeft.read() - initialClicksLeft <= -wegLinks ){
-            controller.setDesiredSpeedLeft(0);
-            stopLeft = true;
-            }
-     
-        if(stopRight == true && stopLeft == true){
-            return;
-            }  
-         
-        }
-        
-    }
-    
+
+
 //Implementation der Methode geradeaus fahren geregelt
 void Fahren::geradeausG(){
     
@@ -105,11 +36,6 @@
     //Anzahl Clicks die der Encoder zählen soll
     wegRechts = 1776;
     wegLinks = 1776;
-        
-    //Geschwindigkeit
-    //speedRight = 50;//SpeedR
-    //speedLeft = 50;//SpeedL
-    
 
     
     //Zustand, dass der Roboter nicht gestoppt hat
@@ -118,14 +44,9 @@
     reglerEinR = 1;
     reglerEinL = 1;
     
-    //Drehrichtung der Motoren
-   
-        //printf("SpeedR in F2= %f\n",SpeedR);
-        //printf("SpeedL in F2= %f\n",SpeedL);
-    
     while(1){
-    float diff = (iRSensor.readR() - iRSensor.readL())*0.9f;
-    if(diff > 7.0f) diff = 0;
+    float diff = (iRSensor.readR() - iRSensor.readL())*0.9f;            //Regler
+    if((diff < 1.5f) ||(diff > -1.5f)) diff = 0;
     if(iRSensor.readR()>60.0f) diff=0;
     if(iRSensor.readL()>60.0f) diff=0;
     //printf("diff =%f \n",diff);
@@ -170,10 +91,6 @@
     wegRechts = 868;
     wegLinks = 868;
     
-    //Geschwindigkeit
-    //speedRight = 50;
-    //speedLeft = 50;
-    
     //Zustand, dass der Roboter nicht gestoppt hat
     stopRight = false;
     stopLeft = false;
@@ -221,10 +138,6 @@
     wegRechts = 1752;
     wegLinks = 1752;
     
-    //Geschwindigkeit
-    //speedRight = 50;
-    //speedLeft = 50;
-    
     //Zustand, dass der Roboter nicht gestoppt hat
     stopRight = false;
     stopLeft = false;
@@ -270,10 +183,6 @@
     wegRechts = 868;
     wegLinks = 868;
     
-    //Geschwindigkeit
-    //speedRight = 50;
-    //speedLeft = 50;
-    
     //Zustand, dass der Roboter nicht gestoppt hat
     stopRight = false;
     stopLeft = false;
@@ -319,10 +228,6 @@
     wegRechts = 7050;
     wegLinks = 7050;
     
-    //Geschwindigkeit
-    //speedRight = 80;
-    //speedLeft = 80;
-    
     //Zustand, dass der Roboter nicht gestoppt hat
     stopRight = false;
     stopLeft = false;
--- a/Fahren.h	Mon May 07 14:11:06 2018 +0000
+++ b/Fahren.h	Mon May 07 15:41:52 2018 +0000
@@ -1,4 +1,4 @@
-/*Roboshark V4
+/*Roboshark V7
 Fahren.h
 Erstellt: J. Blunschi
 geändert: V.Ahlers
@@ -12,17 +12,17 @@
 #include <mbed.h>
 #include "EncoderCounter.h"
 #include "Controller.h"
-#include "Regler.h"
+#include "IRSensor.h"
+
 
 
 class Fahren{
     
     public:    
-    Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight, Regler& regler, int reglerEin, IRSensor& iRSensor); //Konstruktor
+    Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight,IRSensor& iRSensor); //Konstruktor
     
     virtual ~Fahren();
     
-    void geradeausU();
     void geradeausG();
     void rechts90();
     void rechts180();
@@ -35,10 +35,7 @@
     Controller& controller;
     EncoderCounter& counterLeft;
     EncoderCounter& counterRight;
-    Regler& regler;
     IRSensor& iRSensor;
-    Ticker ticker;
-    void getSpeed();
 
     
     //Variablen die in der Klasse Fahren verwendet werden
@@ -55,7 +52,6 @@
     float disF;
     int reglerEinL;
     int reglerEinR;
-    static const float PERIOD;
     int reglerEin;
    
     
--- a/IRSensor.cpp	Mon May 07 14:11:06 2018 +0000
+++ b/IRSensor.cpp	Mon May 07 15:41:52 2018 +0000
@@ -1,4 +1,4 @@
-/*Roboshark V4
+/*Roboshark V7
 IRSensor.cpp
 Erstellt: V. Ahlers
 geändert: V.Ahlers
@@ -107,7 +107,7 @@
         if(disF < minIrF) {
             IrF = 1;
             } else { IrF = 0; }
-        return IrF;//IrF;
+        return IrF;
 }
 
 //Line Sensor
@@ -125,7 +125,6 @@
         ende = 1;
 }
         finishLast = finish;    
-        //printf("Line Sensor ist %d\n",ende);
     return;
 }
 
--- a/IRSensor.h	Mon May 07 14:11:06 2018 +0000
+++ b/IRSensor.h	Mon May 07 15:41:52 2018 +0000
@@ -1,4 +1,4 @@
-/*Roboshark V4
+/*Roboshark V7
 IRSensor.h
 Erstellt: V. Ahlers
 geändert: V.Ahlers
--- a/Regler.cpp	Mon May 07 14:11:06 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,133 +0,0 @@
-/*Roboshark V5
-Regler.cpp
-Erstellt: V.Ahlers
-geändert: V.Ahlers
-V.5.18
-Regler zum geradeaus fahren
-*/
-
-#include <cmath>
-#include "Regler.h"
-#include "IRSensor.h"
-
-
-using namespace std;
-
-const float Regler :: PERIOD = 0.001f;
-const int Regler :: FIXSPEED = 50;
-float faktor = 0.12;
-
-
-
-Regler::Regler(AnalogIn& IrRight, AnalogIn& IrLeft, IRSensor& iRSensor):
-IrRight (IrRight), IrLeft (IrLeft), iRSensor (iRSensor) {
-        
-        SpeedR = 0;
-        SpeedL = 0;
-        ticker.attach(callback(this, &Regler::setSpeed), PERIOD);
-    }
-     
-Regler::~Regler(){
-    ticker.detach();
-    }
-    
-    void Regler::setSpeed (){
-        measR2 = iRSensor.readR();            // Converts and read the analog input value
-        measL2 = iRSensor.readL();             
-        
-        if((measR2 > 100) && (measL2 < 100)) {                //keine Wnad rechts
-            if(measL2 > 47){
-                div3 = measL2 - 47;
-                kor3 = faktor*div3;
-                div2 = 0;
-                div1 = 0;
-                div4 = 0;
-                div5 = 0;
-                div6 = 0;
-                SpeedR = FIXSPEED;
-                SpeedL = FIXSPEED + kor3;
-            } else if (measL2 < 52){
-                div4 = 52 - measR2;
-                kor4 = faktor*div4;
-                div2 = 0;
-                div1 = 0;
-                div3 = 0;
-                div5 = 0;
-                div6 = 0;
-                SpeedR = FIXSPEED;
-                SpeedL = FIXSPEED + kor4;
-                }else { 
-            SpeedR = FIXSPEED;
-            SpeedL = FIXSPEED;
-            }
-        }
-        if((measL2 > 100) &&(measR2 < 100)) {                //keine Wnad links
-            if(measR2 > 47){
-                div5 = measR2 - 47;
-                kor5 = faktor*div5;
-                div2 = 0;
-                div1 = 0;
-                div4 = 0;
-                div6 = 0;
-                div3 = 0;
-                SpeedR = FIXSPEED;
-                SpeedL = FIXSPEED + kor5;
-            } else if (measR2 < 52){
-                div6 = 52 - measR2;
-                kor6 = faktor*div4;
-                div2 = 0;
-                div1 = 0;
-                div3 = 0;
-                div4 = 0;
-                div5 = 0;
-                SpeedR = FIXSPEED + kor6;
-                SpeedL = FIXSPEED;
-            } else { 
-            SpeedR = FIXSPEED;
-            SpeedL = FIXSPEED;
-            }
-        }
-        if ((measR2 < measL2)&& (measL2 - measR2 > 3)) {              //IR Sensor werte werden verglichen und die Korrektur wird berechnet
-            div1 = measR2 - measL2;                             // An beiden seinen Wände
-            kor1 = 0.12f*div1;
-                div2 = 0;
-                div3 = 0;
-                div4 = 0;
-                div5 = 0;
-                div6 = 0;
-            SpeedR = FIXSPEED;
-            SpeedL = FIXSPEED + kor1;
-        } else if ((measR2 > measL2) && (measR2 - measL2 >3)) {
-            div2 = measL2 - measR2;
-            kor2 = 0.12f*div2;
-                div1 = 0;
-                div3 = 0;
-                div4 = 0;
-                div5 = 0;
-                div6 = 0;
-            SpeedR = FIXSPEED + kor2;
-            SpeedL = FIXSPEED;
-        } else { 
-            SpeedR = FIXSPEED;
-            SpeedL = FIXSPEED;
-            }
-//printf("Div1 = %f\n",div1);
-//printf("Div2 = %f\n",div2);  
-//printf("SpeedR1 = %f\n",SpeedR);
-//printf("SpeedL1 = %f\n",SpeedL);        
-}
-    float Regler :: getSpeedR (){
-        SpeedR = SpeedR;
-        //printf("SpeedR2 = %f\n",SpeedR);
-        return SpeedR;
-    }
-    float Regler :: getSpeedL (){
-        SpeedL = SpeedL;
-        //printf("SpeedL2 = %f\n",SpeedL);  
-        return SpeedL;
-    }    
-        
-        
-            
-            
-
--- a/Regler.h	Mon May 07 14:11:06 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,55 +0,0 @@
-/*Roboshark V5
-Regler.h
-Erstellt: V.Ahlers
-geändert: V.Ahlers
-V.5.18
-*/
-
-#ifndef REGLER_H_
-#define REGLER_H_
-
-#include <cstdlib>
-#include <mbed.h>
-#include "IRSensor.h"
-
-class Regler{
-
-    public:    
-    Regler(AnalogIn& IrRight, AnalogIn& IrLeft, IRSensor& iRSensor); //Konstruktor
-    
-    virtual ~Regler();
-    
- 
-    float getSpeedR();
-    float getSpeedL();
-    
-    private:
-        AnalogIn& IrRight;
-        AnalogIn& IrLeft;
-        IRSensor& iRSensor;
-        static const int FIXSPEED;
-        static const float PERIOD;
-        float SpeedR;
-        float SpeedL;
-        float measR2;
-        float measL2;
-        float div1;
-        float div2;
-        float div3;
-        float div4;
-        float div5;
-        float div6;
-        float kor1;
-        float kor2;
-        float kor3;
-        float kor4;
-        float kor5;
-        float kor6;
-        float faktor;
-        
-        
-        void setSpeed();
-        Ticker ticker;
-        
-    };
-    #endif
\ No newline at end of file
--- a/StateMachine.cpp	Mon May 07 14:11:06 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,39 +0,0 @@
-
-// Statemachine
-//V04.18
-// V. Ahlers
-
-//Wird nicht mehr gebraucht
-
-#include <mbed.h>
-#include "StateMachine.h"
-
-using namespace std;
-
-StateMachine::StateMachine(int IrR, int IrL, int IrF) : IrR(IrR), IrL(IrL), IrF(IrF) {}
-
-StateMachine::~StateMachine (){}
-
-int StateMachine :: drive() {
-    
-           
-    
-    if((IrR==0) && (IrL==0) && (IrF==1)){
-        caseDrive = 2;                                                          // Folge: 90 Grad nach rechts drehen
-    }else  if ((IrR==0) && (IrL==1) && (IrF==0)){
-        caseDrive = 2;                                                          // Folge: 90 Grad nach rechts drehen
-    }else  if ((IrR==0) && (IrL==1) && (IrF==1)){
-        caseDrive = 2;                                                          // Folge: 90 Grad nach rechts drehen                 
-    }else  if ((IrR==1) && (IrL==0) && (IrF==0)){
-        caseDrive = 1;                                                          // Folge: geradeaus fahren
-    }else  if ((IrR==1) && (IrL==0) && (IrF==1)){
-        caseDrive = 3;                                                          // Folge: 270 Grad nach rechts drehen
-    }else  if ((IrR==1) && (IrL==1) && (IrF==0)){
-        caseDrive = 1;                                                          // Folge: geradeaus fahren
-    }else  if ((IrR==1) && (IrL==1) && (IrF==1)){
-        caseDrive = 4;                                                          // Folge: 180 Grad nach rechts drehen
-    }else{ caseDrive=0;
-    }
-
-    return caseDrive;
-}
\ No newline at end of file
--- a/StateMachine.h	Mon May 07 14:11:06 2018 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-// Deklaration StateMachine
-// V04.18
-// V. Ahlers
-
-// wird nicht mehr gebraucht
-
-
-#ifndef STATEMACHINE_H_
-#define STATEMACHINE_H_
-
-#include <cstdlib>
-#include <mbed.h>
-
-class StateMachine {
-    
-    public:
-        StateMachine (int IrR, int IrL, int IrF);
-        
-        int IrR;
-        int IrL;
-        int IrF;
-        int caseDrive;
-        
-        virtual ~StateMachine();
-        int drive();
-        
-    private:
-    
-
-};   
-
-#endif /*StateMachine_H_*/
\ No newline at end of file
--- a/main.cpp	Mon May 07 14:11:06 2018 +0000
+++ b/main.cpp	Mon May 07 15:41:52 2018 +0000
@@ -1,4 +1,4 @@
-/*Roboshark V5
+/*Roboshark V7
 main.cpp
 Erstellt: J. Blunschi
 geändert: V.Ahlers
@@ -13,7 +13,6 @@
 #include "Controller.h"
 #include "IRSensor.h"
 #include "Fahren.h"
-#include "Regler.h"
 
 DigitalOut myled(LED1);
 
@@ -68,9 +67,7 @@
 
 Controller controller(pwmLeft, pwmRight, counterLeft, counterRight);
 
-Regler regler(IrRight, IrLeft, iRSensor);
-
-Fahren fahren(controller, counterLeft, counterRight, regler, reglerEin, iRSensor);                           //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig
+Fahren fahren(controller, counterLeft, counterRight, iRSensor);                           //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig
 
 int main()
 {
@@ -81,19 +78,6 @@
     enableMotorDriver = 1;                                                      // Schaltet den Leistungstreiber ein
     while(1) {
 
-// Test um Drehungen und geradeaus zu testen
-
-        /*fahren.geradeaus();                                                     //Geradeausfahren aufrufen
-        wait(1.0f);
-        
-        fahren.rechts90();
-        wait(1.0f);
-                
-        fahren.rechts180();
-        wait(1.0f);
-        
-        fahren.links90();
-        wait(1.0f);*/
                                                                          // IR Sensoren einlesen
         float disR = iRSensor.readR(); // Distanz in mm
         float disL = iRSensor.readL();
@@ -145,25 +129,17 @@
 
         
         
-        if(caseDrive == 1){                 // Aufrufen der verschiedenen fahr funktionen
-            reglerEin = 1;                 
+        if(caseDrive == 1){                 // Aufrufen der verschiedenen fahr funktionen               
             fahren.geradeausG();
-            reglerEin = 0;
         } else if (caseDrive == 2){
             fahren.rechts90();
-            reglerEin = 1;
             fahren.geradeausG();
-            reglerEin = 0;
         } else if (caseDrive == 3){
             fahren.links90();
-            reglerEin = 1;
             fahren.geradeausG();
-            reglerEin = 0;
         } else if (caseDrive == 4){
             fahren.rechts180();
-            reglerEin = 1;
             fahren.geradeausG();
-            reglerEin = 0;
         } else if (caseDrive == 0){
             fahren.stopp();
         } else if(caseDrive == 5){