NXC Line Follower- Spitzwinkel und Unterbrüche

NXC, C/C++, Lejos, pbLua, RobotC...

Moderator: Moderatoren

mechatron10
Mindstormsfreund
Mindstormsfreund
Beiträge: 5
Registriert: 3. Nov 2015 10:48

NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon mechatron10 » 11. Nov 2015 18:12

Hallo wir programmieren derzeit für unser Schulprojekt eine Roboter. Er fährt der Linie nach aber wir wollen, das er auch Spitzkehren und Linienunterbrüche überwinden kann. Wir haben das Forum abgesucht sind aber nicht auf eine ähnliche Problemstellung oder ein Lösung gestoßen.

Aktuell sieht unser Code wie folgt aus:

Code: Alles auswählen

task main()
{
SetSensorLight (IN_1); // Lichtsensor auf der rechten Seite
SetSensorLight (IN_2); // Lichtsensor auf der linken Seite
SetSensorLowspeed (IN_3); // Ultraschallsensor

// Linienverfolgungssystem
while (1==1)
{
   if (Sensor (IN_1)>40 && Sensor (IN_2)>40){ // gerade aus
      TextOut(0,LCD_LINE1, " FWD " );
      OnFwd (OUT_AB, 90);
              }
     
   if (Sensor (IN_1)<40 && Sensor (IN_2)<40){ // beide schwarz
   TextOut(0,LCD_LINE1, "both black" );
   OnRev (OUT_AB, 75);
   Wait (0020);
              }
 
   if (Sensor (IN_1)<40 && Sensor (IN_2)>40){ // Eine Rechtskurve soll eingeleitet werden
   TextOut(0,LCD_LINE1, "turn left" );
   OnFwd (OUT_B, 80);
   OnRev (OUT_A, 90);
   Wait (0050);
   }

   if (Sensor (IN_1)>40 && Sensor (IN_2)<40){ // Eine Linkskurve soll eingeleitet werden
   TextOut(0,LCD_LINE1, "turn right" );
   OnFwd (OUT_A, 80);
   OnRev (OUT_B, 90);
   Wait (0050);
   }
 
   if (SensorUS (IN_3) < 10)      // Ultraschallsensor
   {
    TextOut(0,LCD_LINE1, "danger" );
    Off(OUT_AB);
    Wait (3000);
   }
   }
  }

  // Ende Linienverfolgung


Leider haben wir Probleme bei dem Fall wenn beide Sensoren schwarz sehen.
Vielen Dank für eure Hilfe!

lg
Zuletzt geändert von mechatron10 am 13. Nov 2015 09:10, insgesamt 1-mal geändert.

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon Peter28 » 11. Nov 2015 22:50

Eigentlich reicht für soetwas ja ein Farbsensor. Setzen wir mal voraus, dass die Spitzkehre nicht spitzer als 20 Grad ist. Wenn die Linie aufhört 170° nach rechts, wenn sich nichts tut 170° + 170° nach links. Tut sich was, dann wie gehabt, immer der Nase (Linie) nach. Falls sich aber auch da nichts tut weil die Linie unterbrochen ist, die 170° wieder nach rechts (also gerade aus), ca. 5cm vorwärts und das ganze Spielchen mit dem Schwenken rechts links ein weiteres mal. Wenn man es mit der Länge des fehlenden Stückes nicht übertreibt, müßte der Anschluß gefunden werden.

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5398
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon HaWe » 12. Nov 2015 09:27

[Moderations-Hinweis:]
Bitte Code immer in Code-Tags setzen! Das macht der Formatierungs-Button, wo "Code" draufsteht.
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

mechatron10
Mindstormsfreund
Mindstormsfreund
Beiträge: 5
Registriert: 3. Nov 2015 10:48

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon mechatron10 » 13. Nov 2015 09:09

Vielen Dank Peter28,

unser Roboter hat 2 Farbsensoren die im Abstand von 3-4 cm (genauer Abstand machen wir abhängig von den fehlenden Linienstücken), aktuell tastet er sich durch unsere Programmierung ja am Rand also zwischen schwarz und weiß entlang. Je nach Linienverlauf führt also der linke oder rechte Sensor.

Für deine Lösung müssten wir, wenn ich es richtig verstehe einen Sensor "pausieren", da er sich während der Drehung ja über schwarz bewegen würde oder?

wie können wir das in NXC darstellen? Hatte jemand schon ein ähnliches Problem hier im Forum?

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon Peter28 » 13. Nov 2015 15:42

Hallo, schreib doch mal, wie breit eure Linien sind. Ich habe für die Einsensorvariante einen 8mm Edding benutzt.
Muss allerding gestehen, dass ich eine PID-Steuerung realisiert habe (grafische Progr.), bei der man doch ein klein wenig Durchblick braucht.

mechatron10
Mindstormsfreund
Mindstormsfreund
Beiträge: 5
Registriert: 3. Nov 2015 10:48

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon mechatron10 » 13. Nov 2015 20:40

Hallo, die Linie ist normal 2 cm dick, bei spitzwinkel jedoch bis zu 3,5 cm. gibt es eine Möglichkeit grafisch zu Programmieren und anschließend in NXC zu konvertieren oder diesen direkt so zu exportieren? Wir haben hier im Forum schon einige interessante Ansätze gefunden aber oftmals in einer grafischen Sprache.

Benutzeravatar
HaWe
Administrator
Administrator
Beiträge: 5398
Registriert: 11. Jan 2006 21:01
Wohnort: ein kleiner Planet in der Nähe von Beteigeuze

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon HaWe » 13. Nov 2015 22:22

nein, Konvertierungen zwischen NXT-G und NXC sind nicht möglich!
Gruß,
HaWe
±·≠≈²³αβγδε∂ζλμνπξφωΔΦ≡ΠΣΨΩ∫√∀∃∈∉∧∨¬⊂⊄∩∪∅∞®
NXT NXC SCHACHROBOTER: https://www.youtube.com/watch?v=Cv-yzuebC7E

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon Peter28 » 14. Nov 2015 08:21

Wichtiger ist doch hier das Prinzip und nicht die Umsetzung in NXC. Lasse ich einen Sensor zB. von links nach rechts über die Linie, wird es mal kurz dunkler und wieder hell. Ergo - ich muss von rechts nach links schwenken. Dieses Spielchen (Schlenkerbewegung) muss natütlich etwas gedämpft werden.

mechatron10
Mindstormsfreund
Mindstormsfreund
Beiträge: 5
Registriert: 3. Nov 2015 10:48

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon mechatron10 » 16. Nov 2015 07:45

Du meinst eine gedämpfte Schlenkerbewegung wenn beide Sensoren schwarz anzeigen? Ich versuche deinen Vorschlag zu verstehen. Dann bewegen sich unsere Sensoren einmal von links nach rechts über die Linie und umgekehrt. Bei einer Spitzkehre bedeutet, dass das der Sensor der zwischen den Linien eingeschlossen ist jedoch früher wieder schwarz sieht und somit beide Schwarz sehen und die Linie als Barriere wahrnehmen.

Unserer Meinung nach müssen wir Lichtwerte die der Roboter beim Fahren erhält speichern und für den Fall das beide Sensoren schwarz sind, diese Abrufen um so zu erkennen ob der Linke oder der Rechte Sensor als zweites Schwarz bekommen hat. In diese Richtung muss ich der Roboter dann drehen.

Wir sind froh über jede leichtere Lösung, da einem Roboter ein Gedächtnis zu programmieren unsere Kenntnisse bei weitem übersteigt.

@HaWe Danke für die Info.

Peter28
Schreibt viel
Schreibt viel
Beiträge: 185
Registriert: 2. Nov 2013 21:44
Wohnort: Schmallenberg

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon Peter28 » 16. Nov 2015 09:47

Du hast das Prinzip noch nicht verstanden. 1 (in Worten EIN) Sensor reicht !!! Wenn das Fahrzeug generell so gestartet wird, dass der Sensor links von der Linie (höchstens 1cm dick) steht und das Fahrzeug auf nach rechts fahren steht, dann fährt das Fahrzeug los und schwenkt nach rechts. Jetzt trifft es auf die Linie und fährt naturgemäß etwas weiter (Sensor also rechts der Linie). Dabei sah es "schwarz" und leitet deshalb über Motorpower einen Linksschwenk ein. Das F nähert sich also von der rechten Seite der Linie usw. Es fährt also wie ein schnüffelnder Hund an der Linie entlang. Wenn man die unterschiedliche Power fein dosiert wird das auch eine entsprechend flache Wellenlinie.

mechatron10
Mindstormsfreund
Mindstormsfreund
Beiträge: 5
Registriert: 3. Nov 2015 10:48

Re: NXC Line Follower- Spitzwinkel und Unterbrüche

Beitragvon mechatron10 » 16. Nov 2015 16:44

wir probieren, das morgen mal. danke


Zurück zu „textbasierte Programmiersoftware“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 21 Gäste

Lego Mindstorms EV3, NXT und RCX Forum : Haftungsauschluss