Nicht funktionierender Regler
Dependencies: mbed
Fork of Roboshark_V3 by
Revision 8:d7dfee648545, committed 2018-05-02
- Comitter:
- ahlervin
- Date:
- Wed May 02 17:06:39 2018 +0000
- Parent:
- 7:b2a16b1cf487
- Commit message:
- Funktionierender Regler
Changed in this revision
--- a/Fahren.cpp Mon Apr 30 22:11:38 2018 +0000 +++ b/Fahren.cpp Wed May 02 17:06:39 2018 +0000 @@ -6,14 +6,14 @@ using namespace std; -const float Fahren :: PERIOD = 2.0f; +const float Fahren :: PERIOD = 0.2f; //Konstruktor -Fahren::Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight): +Fahren::Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight, Regler& regler): controller(controller), counterLeft(counterLeft), counterRight(counterRight), regler(regler){ - SpeedR = 0; - SpeedL = 0; + SpeedR = 100; + SpeedL = 100; ticker.attach(callback(this, &Fahren::getSpeed), PERIOD); } @@ -44,8 +44,8 @@ wegLinks = 1767; //Geschwindigkeit - speedRight = 25; - speedLeft = 25; + speedRight = 100; + speedLeft = 100; //Zustand, dass der Roboter nicht gestoppt hat stopRight = false; @@ -93,16 +93,19 @@ wegLinks = 1767; //Geschwindigkeit - speedRight = 20; // SpeedR - speedLeft = 20; // SpeedL + speedRight = 100;//SpeedR + speedLeft = 100;//SpeedL + + printf("SpeedR in F2= %f\n",SpeedR); + printf("SpeedL in F2= %f\n",SpeedL); //Zustand, dass der Roboter nicht gestoppt hat stopRight = false; stopLeft = false; //Drehrichtung der Motoren - controller.setDesiredSpeedRight(speedRight); - controller.setDesiredSpeedLeft(-(speedLeft)); + controller.setDesiredSpeedRight(SpeedR); + controller.setDesiredSpeedLeft(-(SpeedL)); while(1){
--- a/Fahren.h Mon Apr 30 22:11:38 2018 +0000 +++ b/Fahren.h Wed May 02 17:06:39 2018 +0000 @@ -5,12 +5,12 @@ #include "EncoderCounter.h" #include "Controller.h" #include "Regler.h" -#include "IRSensor.h" + class Fahren{ public: - Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight); //Konstruktor + Fahren(Controller& controller, EncoderCounter& counterLeft, EncoderCounter& counterRight, Regler& regler); //Konstruktor virtual ~Fahren();
--- a/Regler.cpp Mon Apr 30 22:11:38 2018 +0000 +++ b/Regler.cpp Wed May 02 17:06:39 2018 +0000 @@ -4,15 +4,15 @@ using namespace std; -const float Regler :: PERIOD = 2.0f; -const int Regler :: FIXSPEED = 25; +const float Regler :: PERIOD = 0.2f; +const int Regler :: FIXSPEED = 100; Regler::Regler(AnalogIn& IrRight, AnalogIn& IrLeft): IrRight (IrRight), IrLeft (IrLeft) { - SpeedR = 0; - SpeedL = 0; + //SpeedR = 0; + //SpeedL = 0; ticker.attach(callback(this, &Regler::setSpeed), PERIOD); } @@ -28,29 +28,33 @@ if (measR2 > measL2) { div1 = measR2 - measL2; - kor1 = 0.1f*div1; + kor1 = 0.05f*div1; + div2 = 0; SpeedR = FIXSPEED; SpeedL = FIXSPEED + kor1; } else if (measR2 < measL2) { div2 = measL2 - measR2; - kor2 = 0.1f*div2; + kor2 = 0.05f*div2; + div1 = 0; SpeedR = FIXSPEED + kor2; SpeedL = FIXSPEED; } else { SpeedR = FIXSPEED; SpeedL = FIXSPEED; } -printf("SpeedR1 = %f\n",SpeedR); -printf("SpeedL1 = %f\n",SpeedL); +//printf("Div1 = %f\n",div1); +//printf("Div2 = %f\n",div2); +//printf("SpeedR1 = %f\n",SpeedR); +//printf("SpeedL1 = %f\n",SpeedL); } float Regler :: get_SpeedR (){ SpeedR = SpeedR; - printf("SpeedR2 = %f\n",SpeedR); + //printf("SpeedR2 = %f\n",SpeedR); return SpeedR; } float Regler :: get_SpeedL (){ SpeedL = SpeedL; - printf("SpeedL2 = %f\n",SpeedL); + //printf("SpeedL2 = %f\n",SpeedL); return SpeedL; }
--- a/main.cpp Mon Apr 30 22:11:38 2018 +0000 +++ b/main.cpp Wed May 02 17:06:39 2018 +0000 @@ -61,7 +61,7 @@ Regler regler(IrRight, IrLeft); -Fahren fahren(controller, counterLeft, counterRight); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig +Fahren fahren(controller, counterLeft, counterRight, regler); //Reihenfolge!!!!!!!!!!!!!!!!!!! Ultra wichtig int main() { @@ -108,11 +108,11 @@ printf (" finishLast = %d\n",finishLast); printf("line = %f\n", line);*/ - printf ("IR Right = %d \n", IrR); - printf("IR Left = %d\n",IrL); - printf("IR Front = %d\n",IrF); - printf("SpeedRm = %f\n",SpeedR); - printf("SpeedLm = %f\n",SpeedL); + //printf ("IR Right = %d \n", IrR); + //printf("IR Left = %d\n",IrL); + //printf("IR Front = %d\n",IrF); + //printf("SpeedRm = %f\n",SpeedR); + //printf("SpeedLm = %f\n",SpeedL); if ((IrR==1) && (IrL==0) && (IrF==0) && (ende == 0)){ @@ -122,7 +122,7 @@ } else{ caseDrive = 0; } - wait (0.5); + //wait (0.2);