Download ppt - Roboter im Labyrinth

Transcript
Page 1: Roboter im Labyrinth

Roboter im Labyrinth

“Schweizer Jugend forscht”Studienwoche Informatik

Barbara Rubi, Fabienne Schwab, Shuyang Xu

Page 2: Roboter im Labyrinth

Inhalt der Präsentation

o Ziel des Projektso Grundsätzlicheso Vorgeheno Problemeo Erfolgeo Visioneno Demonstration

Page 3: Roboter im Labyrinth

Ziel des Projekts

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

Page 4: Roboter im Labyrinth

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.

Page 5: Roboter im Labyrinth

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

Page 6: Roboter im Labyrinth

Probleme

Eichung der Sensoren erfordert präzise Messungen

Korrektur von Fehlpositionen Optimale Abfolge von

Entscheidungsschritten erarbeiten

Page 7: Roboter im Labyrinth

Erfolge

erste präzise Linkskurve korrekte Entscheidung der

Situation gelungene Korrektur der

Fehlpositionen erster erfolgreicher Durchlauf

des Labyrinths

Page 8: Roboter im Labyrinth

Visionen

Überwindung eines Labyrinths mit Inseln

Anwendung in der Forschung, Haushalt etc. (z.B. Minensucher, Staubsauger, Rasenmäher usw.)

Page 9: Roboter im Labyrinth

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

Page 10: Roboter im Labyrinth

'{$STAMP BS2}

'variabelni VAR BYTE 'loop zählere1 VAR BYTE 'ergebnis ausgelesen von sensor 3e2 VAR BYTE 'ergebnis ausgelesen von sensor 2e3 VAR BYTE 'ergebnis ausgelesen von sensor 1steps VAR BYTE 'Anzahl Schrittezaehler VAR BYTE 'Anzahl Korr

HIGH 10HIGH 12HIGH 14

'---------------------------------------------

LOOP:IF IN0=0 THEN StartGOTO LOOP

Start:Pause 1000

Sensor:'sensor messung startene1=0e2=0e3=0LOW 10LOW 12LOW 14pause 80

'sensor daten auslesenFOR i= 0 TO 7PULSOUT 10,70PULSOUT 12,70PULSOUT 14,70e1=e1*2+IN11e2=e2*2+IN13e3=e3*2+IN15NEXT

Page 11: Roboter im Labyrinth

e1=65535/(10*e1)-(287/10)e2=65535/(9*e2)-(275/9)e3=65535/(7*e3)-(298/7)

HIGH 10HIGH 12HIGH 14

DEBUG "sensor3 ",DEC5 e1,CRDEBUG "sensor2 ",DEC5 e2,CRDEBUG "sensor1 ",DEC5 e3,CRDEBUG CR

'------------------------------------------------

'fallunterscheidungIF zaehler > 8 THEN GERADEIF e1 > 30 THEN LINKSIF e3 < 30 THEN RECHTSIF e1 < 19 THEN DISTKORR1IF e1 > 25 THEN DISTKORR2IF (e1-e2) > 65515 THEN RECHTSKORR IF (e1-e2) < 2 THEN GERADEIF (e1-e2) < 60000 THEN LINKSKORR

GOTO GERADE '-------------------------------------------------

LINKS:

HIGH 3 'kurzes stueck geradePAUSE 200LOW 3

LOW 6LOW 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 129 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

Page 12: Roboter im Labyrinth

HIGH 3PAUSE 200LOW 3

LOW 6HIGH 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 99 'linksdrehung

PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

HIGH 3 'kurzes stueck geradePAUSE 200LOW 3

LOW 6LOW 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 169 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

GOTO Sensor

'--------------------------------------------------

RECHTS:

HIGH 3PAUSE 200LOW 3

LOW 6LOW 1LOW 5

Page 13: Roboter im Labyrinth

HIGH 2HIGH 4

FOR i=0 TO 92 'rechtsdrehung

PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT GOTO Sensor

'-------------------------------------------------

GERADE:

zaehler = 0

HIGH 3PAUSE 200LOW 3

LOW 6LOW 1HIGH 5HIGH 2HIGH 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),crzaehler = 1+zaehler

Page 14: Roboter im Labyrinth

PAUSE 200LOW 3

LOW 6HIGH 1HIGH 5HIGH 2HIGH 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),crzaehler = 1+zaehlerHIGH 3PAUSE 200LOW 3

LOW 6LOW 1LOW 5HIGH 2HIGH 4

FOR i=0 TO 4 'rechtsdrehung

PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT GOTO Sensor

'----------------------------------------------------------------

DISTKORR1:

Page 15: Roboter im Labyrinth

LOW 6LOW 1LOW 5HIGH 2HIGH 4

FOR i=0 TO 15 'rechtsdrehung

PULSOUT 2,13 PULSOUT 4,13 PAUSE 20NEXT

HIGH 3PAUSE 200LOW 3

LOW 6LOW 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 80 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

HIGH 3PAUSE 200LOW 3

LOW 6HIGH 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 15 'linksdrehung

PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

GOTO Sensor

Page 16: Roboter im Labyrinth

DISTKORR2:

HIGH 3PAUSE 200LOW 3

LOW 6HIGH 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 15 'linksdrehung

PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

HIGH 3PAUSE 200LOW 3

LOW 6LOW 1HIGH 5HIGH 2HIGH 4

FOR i=0 TO 80 PULSOUT 2,13 PULSOUT 4,13 PAUSE 20

NEXT

HIGH 3PAUSE 200LOW 3

LOW 6LOW 1LOW 5HIGH 2HIGH 4

FOR i=0 TO 12 'rechtsdrehung

Page 17: Roboter im Labyrinth

Herzlichen Dank für Ihre Aufmerksamkeit

Auf Wiedersehen

Page 18: Roboter im Labyrinth

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

Nein

Nein

Nein

6,5cm gerade fahren

90-Grad-Linksdrehung

90-Grad-Rechtsdrehung

Zu nahe Distanzkorrigieren

Zu weite Distanzkorrigieren

Korrektur nach rechts

Ja

Ja

Ja

Ja

Ja

Ja

S3

S1

S2

Messrichtung S3

Messrichtung S2

Messrichtung S

1

STAMPY

(Sensor3 - Sensor2) < 2cm?

Nein

Nein

6,5cm gerade fahren

Korrektur nach links

Ja

Ja

Nein

(Sensor3 – Sensor2) < 60000?

Sicherheitsfunktion, um Endlosschlaufen abzubrechen

Page 19: Roboter im Labyrinth

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

Nein

Nein

Nein

6,5cm gerade fahren

90-Grad-Linksdrehung

90-Grad-Rechtsdrehung

Zu nahe Distanzkorrigieren

Zu weite Distanzkorrigieren

Korrektur nach rechts

Ja

Ja

Ja

Ja

Ja

Ja

S3

S1

S2

Messrichtung S3

Messrichtung S2

Messrichtung S

1

STAMPY

(Sensor3 - Sensor2) < 2cm?

Nein

Nein

6,5cm gerade fahren

Korrektur nach links

Ja

Ja

Nein

(Sensor3 – Sensor2) < 60000?

Fall1: Sieht Sensor 3 keine Wand, dreht sich der Roboter nach links

Keine Wand

Ecke

Page 20: Roboter im Labyrinth

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

Nein

Nein

Nein

6,5cm gerade fahren

90-Grad-Linksdrehung

90-Grad-Rechtsdrehung

Zu nahe Distanzkorrigieren

Zu weite Distanzkorrigieren

Korrektur nach rechts

Ja

Ja

Ja

Ja

Ja

Ja

S3

S1

S2

Messrichtung S3

Messrichtung S2

Messrichtung S

1

STAMPY

(Sensor3 - Sensor2) < 2cm?

Nein

Nein

6,5cm gerade fahren

Korrektur nach links

Ja

Ja

Nein

(Sensor3 – Sensor2) < 60000?

Fall2: Sieht Sensor 1 eine Wand, dreht sich der Roboter nach rechts

Wand

Page 21: Roboter im Labyrinth

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

Nein

Nein

Nein

6,5cm gerade fahren

90-Grad-Linksdrehung

90-Grad-Rechtsdrehung

Zu nahe Distanzkorrigieren

Zu weite Distanzkorrigieren

Korrektur nach rechts

Ja

Ja

Ja

Ja

Ja

Ja

S3

S1

S2

Messrichtung S3

Messrichtung S2

Messrichtung S

1

STAMPY

(Sensor3 - Sensor2) < 2cm?

Nein

Nein

6,5cm gerade fahren

Korrektur nach links

Ja

Ja

Nein

(Sensor3 – Sensor2) < 60000?

Der Roboter entscheidet, ob er den Winkel oder den Abstand zur Wand korrigieren soll und korrigiert ihn falls noetig

Page 22: Roboter im Labyrinth

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

Nein

Nein

Nein

6,5cm gerade fahren

90-Grad-Linksdrehung

90-Grad-Rechtsdrehung

Zu nahe Distanzkorrigieren

Zu weite Distanzkorrigieren

Korrektur nach rechts

Ja

Ja

Ja

Ja

Ja

Ja

S3

S1

S2

Messrichtung S3

Messrichtung S2

Messrichtung S

1

STAMPY

(Sensor3 - Sensor2) < 2cm?

Nein

Nein

6,5cm gerade fahren

Korrektur nach links

Ja

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.

Page 23: Roboter im Labyrinth

Recommended