Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Roboter im Labyrinth Schweizer Jugend forscht Studienwoche Informatik Barbara Rubi, Fabienne Schwab, Shuyang Xu.

Ähnliche Präsentationen


Präsentation zum Thema: "Roboter im Labyrinth Schweizer Jugend forscht Studienwoche Informatik Barbara Rubi, Fabienne Schwab, Shuyang Xu."—  Präsentation transkript:

1 Roboter im Labyrinth Schweizer Jugend forscht Studienwoche Informatik Barbara Rubi, Fabienne Schwab, Shuyang Xu

2 Inhalt der Präsentation o Ziel des Projekts o Grundsätzliches o Vorgehen o Probleme o Erfolge o Visionen o Demonstration

3 Ziel des Projekts Ein Roboter soll so programmiert werden, dass er selbstständig aus einem Labyrinth herausfindet.

4 Grundsätzliches Ein Roboter findet sicher aus einem Labyrinth (ohne Inseln), indem er immer rechts oder links der Wand entlang fährt. Er braucht mindestens drei Entfernungs- sensoren, um in allen Situationen die richtige Entscheidung treffen zu können.

5 Vorgehen Datenaustausch zwischen Roboter und Computer herstellen Ermittlung von möglichen Situationen im Labyrinth Zeichnen eines Flow-Charts Zerlegen des Problems in Einzelprogramme Zusammenfügen des Hauptprogramms Testen im Labyrinth Anbringen von Verbesserungen, Änderungen und Ergänzungen

6 Probleme Eichung der Sensoren erfordert präzise Messungen Korrektur von Fehlpositionen Optimale Abfolge von Entscheidungsschritten erarbeiten

7 Erfolge erste präzise Linkskurve korrekte Entscheidung der Situation gelungene Korrektur der Fehlpositionen erster erfolgreicher Durchlauf des Labyrinths

8 Visionen Überwindung eines Labyrinths mit Inseln Anwendung in der Forschung, Haushalt etc. (z.B. Minensucher, Staubsauger, Rasenmäher usw.)

9 Wir danken … …der FHBB für die Idee des Projekts und die Bereitstellung des Roboters …der Stiftung Schweizer Jugend forscht …unseren Betreuern Andreas Kiebele und Radolf von Salis

10 '{$STAMP BS2} 'variabeln i VAR BYTE 'loop zähler e1 VAR BYTE 'ergebnis ausgelesen von sensor 3 e2 VAR BYTE 'ergebnis ausgelesen von sensor 2 e3 VAR BYTE 'ergebnis ausgelesen von sensor 1 steps VAR BYTE 'Anzahl Schritte zaehler VAR BYTE 'Anzahl Korr HIGH 10 HIGH 12 HIGH 14 ' LOOP: IF IN0=0 THEN Start GOTO LOOP Start: Pause 1000 Sensor: 'sensor messung starten e1=0 e2=0 e3=0 LOW 10 LOW 12 LOW 14 pause 80 'sensor daten auslesen FOR i= 0 TO 7 PULSOUT 10,70 PULSOUT 12,70 PULSOUT 14,70 e1=e1*2+IN11 e2=e2*2+IN13 e3=e3*2+IN15 NEXT

11 e1=65535/(10*e1)-(287/10) e2=65535/(9*e2)-(275/9) e3=65535/(7*e3)-(298/7) HIGH 10 HIGH 12 HIGH 14 DEBUG "sensor3 ",DEC5 e1,CR DEBUG "sensor2 ",DEC5 e2,CR DEBUG "sensor1 ",DEC5 e3,CR DEBUG CR ' 'fallunterscheidung IF zaehler > 8 THEN GERADE IF e1 > 30 THEN LINKS IF e3 < 30 THEN RECHTS IF e1 < 19 THEN DISTKORR1 IF e1 > 25 THEN DISTKORR2 IF (e1-e2) > THEN RECHTSKORR IF (e1-e2) < 2 THEN GERADE IF (e1-e2) < THEN LINKSKORR GOTO GERADE ' LINKS: HIGH 3 'kurzes stueck gerade PAUSE 200 LOW 3 LOW 6 LOW 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 129 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT

12 HIGH 3 PAUSE 200 LOW 3 LOW 6 HIGH 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 99 'linksdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT HIGH 3 'kurzes stueck gerade PAUSE 200 LOW 3 LOW 6 LOW 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 169 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT GOTO Sensor ' RECHTS: HIGH 3 PAUSE 200 LOW 3 LOW 6 LOW 1 LOW 5

13 HIGH 2 HIGH 4 FOR i=0 TO 92 'rechtsdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT GOTO Sensor ' GERADE: zaehler = 0 HIGH 3 PAUSE 200 LOW 3 LOW 6 LOW 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 49 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT GOTO Sensor ' LINKSKORR: debug "links e1-e2 ",dec (e1-e2),cr zaehler = 1+zaehler

14 PAUSE 200 LOW 3 LOW 6 HIGH 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 4 'linksdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT GOTO Sensor ' RECHTSKORR: debug "rechts e1-e2 ",dec (e1-e2),cr zaehler = 1+zaehler HIGH 3 PAUSE 200 LOW 3 LOW 6 LOW 1 LOW 5 HIGH 2 HIGH 4 FOR i=0 TO 4 'rechtsdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT GOTO Sensor ' DISTKORR1:

15 LOW 6 LOW 1 LOW 5 HIGH 2 HIGH 4 FOR i=0 TO 15 'rechtsdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT HIGH 3 PAUSE 200 LOW 3 LOW 6 LOW 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 80 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT HIGH 3 PAUSE 200 LOW 3 LOW 6 HIGH 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 15 'linksdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT GOTO Sensor

16 DISTKORR2: HIGH 3 PAUSE 200 LOW 3 LOW 6 HIGH 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 15 'linksdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT HIGH 3 PAUSE 200 LOW 3 LOW 6 LOW 1 HIGH 5 HIGH 2 HIGH 4 FOR i=0 TO 80 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT HIGH 3 PAUSE 200 LOW 3 LOW 6 LOW 1 LOW 5 HIGH 2 HIGH 4 FOR i=0 TO 12 'rechtsdrehung

17 Herzlichen Dank für Ihre Aufmerksamkeit Auf Wiedersehen

18 Hauptprogramm (Sensor): Startet Messung, liest Sensordaten S1,S2,S3 ein Zaehler > 8? Sensor3 > 30 cm? Sensor1 < 30cm? Sensor3 < 19cm? Sensor3 > 25cm? (Sensor3 - Sensor2 ) > 65515? Nein 6,5cm gerade fahren 90-Grad-Linksdrehung 90-Grad-Rechtsdrehung Zu nahe Distanz korrigieren Zu weite Distanz korrigieren Korrektur nach rechts Ja S3 S1 S2 Messrichtung S3 Messrichtung S2 Messrichtung S1 STAMPY (Sensor3 - Sensor2) < 2cm? Nein 6,5cm gerade fahren Korrektur nach links Ja Nein (Sensor3 – Sensor2) < 60000? Sicherheitsfunktion, um Endlosschlaufen abzubrechen

19 Hauptprogramm (Sensor): Startet Messung, liest Sensordaten S1,S2,S3 ein Zaehler > 8? Sensor3 > 30 cm? Sensor1 < 30cm? Sensor3 < 19cm? Sensor3 > 25cm? (Sensor3 - Sensor2 ) > 65515? Nein 6,5cm gerade fahren 90-Grad-Linksdrehung 90-Grad-Rechtsdrehung Zu nahe Distanz korrigieren Zu weite Distanz korrigieren Korrektur nach rechts Ja S3 S1 S2 Messrichtung S3 Messrichtung S2 Messrichtung S1 STAMPY (Sensor3 - Sensor2) < 2cm? Nein 6,5cm gerade fahren Korrektur nach links Ja Nein (Sensor3 – Sensor2) < 60000? Fall1: Sieht Sensor 3 keine Wand, dreht sich der Roboter nach links Keine Wand Ecke

20 Hauptprogramm (Sensor): Startet Messung, liest Sensordaten S1,S2,S3 ein Zaehler > 8? Sensor3 > 30 cm? Sensor1 < 30cm? Sensor3 < 19cm? Sensor3 > 25cm? (Sensor3 - Sensor2 ) > 65515? Nein 6,5cm gerade fahren 90-Grad-Linksdrehung 90-Grad-Rechtsdrehung Zu nahe Distanz korrigieren Zu weite Distanz korrigieren Korrektur nach rechts Ja S3 S1 S2 Messrichtung S3 Messrichtung S2 Messrichtung S1 STAMPY (Sensor3 - Sensor2) < 2cm? Nein 6,5cm gerade fahren Korrektur nach links Ja Nein (Sensor3 – Sensor2) < 60000? Fall2: Sieht Sensor 1 eine Wand, dreht sich der Roboter nach rechts Wand

21 Hauptprogramm (Sensor): Startet Messung, liest Sensordaten S1,S2,S3 ein Zaehler > 8? Sensor3 > 30 cm? Sensor1 < 30cm? Sensor3 < 19cm? Sensor3 > 25cm? (Sensor3 - Sensor2 ) > 65515? Nein 6,5cm gerade fahren 90-Grad-Linksdrehung 90-Grad-Rechtsdrehung Zu nahe Distanz korrigieren Zu weite Distanz korrigieren Korrektur nach rechts Ja S3 S1 S2 Messrichtung S3 Messrichtung S2 Messrichtung S1 STAMPY (Sensor3 - Sensor2) < 2cm? Nein 6,5cm gerade fahren Korrektur nach links Ja Nein (Sensor3 – Sensor2) < 60000? Der Roboter entscheidet, ob er den Winkel oder den Abstand zur Wand korrigieren soll und korrigiert ihn falls noetig

22 Hauptprogramm (Sensor): Startet Messung, liest Sensordaten S1,S2,S3 ein Zaehler > 8? Sensor3 > 30 cm? Sensor1 < 30cm? Sensor3 < 19cm? Sensor3 > 25cm? (Sensor3 - Sensor2 ) > 65515? Nein 6,5cm gerade fahren 90-Grad-Linksdrehung 90-Grad-Rechtsdrehung Zu nahe Distanz korrigieren Zu weite Distanz korrigieren Korrektur nach rechts Ja S3 S1 S2 Messrichtung S3 Messrichtung S2 Messrichtung S1 STAMPY (Sensor3 - Sensor2) < 2cm? Nein 6,5cm gerade fahren Korrektur nach links Ja Nein (Sensor3 – Sensor2) < 60000? Nachdem eine Entscheidung zu einer Aktion gefuehrt hat (z.B. der Roboter hat sich nach rechts gedreht), startet wieder das Hauptprogramm.

23


Herunterladen ppt "Roboter im Labyrinth Schweizer Jugend forscht Studienwoche Informatik Barbara Rubi, Fabienne Schwab, Shuyang Xu."

Ähnliche Präsentationen


Google-Anzeigen