Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Roboter im Labyrinth “Schweizer Jugend forscht”

Ähnliche Präsentationen


Präsentation zum Thema: "Roboter im Labyrinth “Schweizer Jugend forscht”"—  Präsentation transkript:

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

2 Inhalt der Präsentation
Ziel des Projekts Grundsätzliches Vorgehen Probleme Erfolge Visionen 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 '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 'linksdrehung PULSOUT 2,13 PULSOUT 4,13 PAUSE 20 NEXT HIGH 'kurzes stueck gerade LOW 1 FOR i=0 TO 169 GOTO Sensor ' RECHTS: LOW 5

13 HIGH 2 HIGH 4 FOR i=0 TO '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 FOR i=0 TO 49 ' 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 '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 LOW 1 LOW 5 FOR i=0 TO 'rechtsdrehung ' DISTKORR1:

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

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

17 Herzlichen Dank für Ihre Aufmerksamkeit Auf Wiedersehen

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

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

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

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

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

23


Herunterladen ppt "Roboter im Labyrinth “Schweizer Jugend forscht”"

Ähnliche Präsentationen


Google-Anzeigen