Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of PES1 by
Revision 21:69ee872b8ee9, committed 2017-05-16
- Comitter:
- itslinear
- Date:
- Tue May 16 16:09:08 2017 +0000
- Parent:
- 20:a90e5b54bf7b
- Commit message:
- sieg
Changed in this revision
diff -r a90e5b54bf7b -r 69ee872b8ee9 Roboter.cpp --- a/Roboter.cpp Sat May 13 16:50:57 2017 +0000 +++ b/Roboter.cpp Tue May 16 16:09:08 2017 +0000 @@ -28,12 +28,11 @@ int Roboter::readSensors() // Sensoren auslesen { int lr = 1; - float x = 0.13; // Distanz ab welcher sensoren reagieren sollen + float x = 0.1; // Distanz ab welcher sensoren reagieren sollen if(sensors[1] < x || sensors[5] < x) { // Sensor rechts und links lr = 6; } - //printf("%d",lr); return lr; } @@ -41,15 +40,15 @@ void Roboter::ausweichen1() // Hindernissen ausweichen { - float x = 0.15; // Distanz ab welcher sensoren reagieren sollen + float x = 0.14; // Distanz ab welcher sensoren reagieren sollen - while(sensors[0] < (x-0.02f) && sensors[1] < x && sensors[5] < x) { // alle sensoren aktiv, roboter fährt nach hinten - desiredSpeedLeft = -v*2; - desiredSpeedRight = v*2; + while(sensors[0] < (x-0.01f) && sensors[1] < x && sensors[5] < x) { // alle sensoren aktiv, roboter fährt nach hinten + desiredSpeedLeft = -v; + desiredSpeedRight = v*4; } - while(sensors[0] < (x-0.02f) && sensors[5] > x) { // sensor vorne, roboter dreht nach links + while(sensors[0] < x) { // sensor vorne, roboter dreht nach links desiredSpeedLeft = -v*2; desiredSpeedRight = -v*2; @@ -61,7 +60,7 @@ } - while(sensors[5] < x && sensors[1] > x) { // sensor links, roboter dreht nach rechts + while(sensors[5] < x) { // sensor links, roboter dreht nach rechts desiredSpeedLeft = v*2; desiredSpeedRight = v*2; @@ -71,7 +70,7 @@ int Roboter::ausweichen2() // Hindernissen ausweichen beim Anfahren des Klotzes { - float x = 0.13; // Distanz ab welcher sensoren reagieren sollen + float x = 0.1; // Distanz ab welcher sensoren reagieren sollen static int l = 0; static int r = 0; static int ii = 0; @@ -86,24 +85,24 @@ } if(r == 1) { - if(ii < 500) { // linksdrehend rückwärts fahren + if(ii < 500) { // rückwärts fahren desiredSpeedLeft = -(v+30); desiredSpeedRight = v+30; } - if(ii > 499 && ii < 1100) { // links drehen + if(ii > 499 && ii < 900) { // links drehen desiredSpeedLeft = -v*2; desiredSpeedRight = -v*2; } - if(ii > 1099 && ii < 2900) { // gerade fahren + if(ii > 899 && ii < 1800) { // gerade fahren desiredSpeedLeft = v*2; desiredSpeedRight = -v*2; } - if(ii > 2899 && ii < 3900) { // rechts drehen + if(ii > 1799 && ii < 2300) { // rechts drehen desiredSpeedLeft = v*2; desiredSpeedRight = v*2; } ii++; - if(ii > 3899) { + if(ii > 2299) { // rücksetzen desiredSpeedLeft = 0; desiredSpeedRight = 0; r = 0; @@ -117,20 +116,20 @@ desiredSpeedLeft = -(v+30); desiredSpeedRight = v+30; } - if(ii > 499 && ii < 1100) { // rechts drehen + if(ii > 499 && ii < 900) { // rechts drehen desiredSpeedLeft = v*2; desiredSpeedRight = v*2; } - if(ii > 1099 && ii < 2900) { // gerade fahren + if(ii > 899 && ii < 1800) { // gerade fahren desiredSpeedLeft = v*2; desiredSpeedRight = -v*2; } - if(ii > 2899 && ii < 3900) { // links drehen + if(ii > 1799 && ii < 2300) { // links drehen desiredSpeedLeft = -v*2; desiredSpeedRight = -v*2; } ii++; - if(ii > 3899) { + if(ii > 2299) { desiredSpeedLeft = 0; desiredSpeedRight = 0; l = 0; @@ -149,7 +148,7 @@ desiredSpeedLeft = 0; desiredSpeedRight = 0; - if(ii < 650) { // Arm nach unten fahren + if(ii < 650) { // Arm nach unten fahren servo2->SetPosition(2250); } if(ii > 649 && ii < 1100) { // gerade fahren @@ -177,7 +176,7 @@ } ii++; - r = 5; // Rückegabewert + r = 5; // Rückegabewert if( ii > 2999 ) { r = 1; @@ -223,7 +222,7 @@ { int r; static int time2 = 0; - if(time2 < 10) { // 1s gerade aus fahren + if(time2 < 25) { // 1s gerade aus fahren desiredSpeedLeft = v*4; desiredSpeedRight = -v*4; time2 ++; @@ -247,14 +246,14 @@ desiredSpeedRight = v; } - if(ii > 999 && ii < 2000) { + if(ii > 999 && ii < 1800) { desiredSpeedLeft = v*2; desiredSpeedRight = v*2; } ii++; - if(ii > 1999) { + if(ii > 1799) { desiredSpeedLeft = 0; desiredSpeedRight = 0; ii = 0; @@ -267,14 +266,23 @@ int Roboter::kreisFahren() { int r; + static int anzahl = 0; static int time1 = 0; - if(time1 < 10) { // 1s im Kreis drehen - desiredSpeedLeft = v*1.7f; - desiredSpeedRight = v*1.7f; + + if(time1 < 6 && anzahl%2 == 0) { // 1s im Kreis drehen + desiredSpeedLeft = v*2; + desiredSpeedRight = v*2; time1 ++; r = 1; // state } else { + desiredSpeedLeft = -(v*2); + desiredSpeedRight = -(v*2); + time1 ++; + r = 1; // state + } + if(time1 == 6) { time1 = 0; + anzahl ++; desiredSpeedLeft = 0.0f; desiredSpeedRight = 0.0f; r = 3; // state @@ -291,7 +299,7 @@ if(cam == 400.0f && temp != 5) { // Roboter in Position s = 5; } - if(cam == 400.0f && temp == 5) { + if(cam == 400.0f && temp == 5) { // Roboter immer noch beim selben Klotz -> back() s = 7; } if(cam < 1) {
diff -r a90e5b54bf7b -r 69ee872b8ee9 Roboter.h --- a/Roboter.h Sat May 13 16:50:57 2017 +0000 +++ b/Roboter.h Tue May 16 16:09:08 2017 +0000 @@ -39,7 +39,7 @@ static const float MIN_DUTY_CYCLE = 0.02f; // minimum allowed value for duty cycle (2%) static const float MAX_DUTY_CYCLE = 0.98f; // maximum allowed value for duty cycle (98%) static const float correction = 0.97f; // Korrekturfaktor für speedControl - static const float v = 20.0f; // Min. Geschw. + static const float v = 30.0f; // Min. Geschw. private:
diff -r a90e5b54bf7b -r 69ee872b8ee9 main.cpp --- a/main.cpp Sat May 13 16:50:57 2017 +0000 +++ b/main.cpp Tue May 16 16:09:08 2017 +0000 @@ -85,6 +85,7 @@ case 4: //printf("4"); tempState = 2; + temp = 0; roboter1.anfahren(camValue); // Roboter erkennt grünen Klotz, Klotz wird angefahren state = roboter1.readSensors(); break;
diff -r a90e5b54bf7b -r 69ee872b8ee9 readCamera.cpp --- a/readCamera.cpp Sat May 13 16:50:57 2017 +0000 +++ b/readCamera.cpp Tue May 16 16:09:08 2017 +0000 @@ -6,7 +6,7 @@ static int i = 0; static int k = 0; static float distance = 0; // für dynamische Geschwindigkeit -static float yLimit = 155; // Punkt an dem Roboter anhalten soll +static float yLimit = 140; // Punkt an dem Roboter anhalten soll int j; uint16_t blocks; float state; @@ -54,9 +54,6 @@ state = 400; } } - /*if(yAxis <= 20) { // Zone mit vielen Fehlern - state = 0; // deshalb wird alles, was dort drin ist als "kein Klotz in Sichtweite"" gewertet - }*/ } i = 0; k = 0;