Roboter im Labyrinth

download Roboter im Labyrinth

of 23

  • date post

    18-Jan-2016
  • Category

    Documents

  • view

    41
  • download

    0

Embed Size (px)

description

Roboter im Labyrinth. “ Schweizer Jugend forscht” Studienwoche Informatik Barbara Rubi, Fabienne Schwab, Shuyang Xu. Inhalt der Präsentation. Ziel des Projekts Grundsätzliches Vorgehen Probleme Erfolge Visionen Demonstration. Ziel des Projekts. - PowerPoint PPT Presentation

Transcript of Roboter im Labyrinth

  • Roboter im LabyrinthSchweizer Jugend forschtStudienwoche Informatik

    Barbara Rubi, Fabienne Schwab, Shuyang Xu

  • Inhalt der PrsentationZiel des ProjektsGrundstzlichesVorgehenProblemeErfolgeVisionenDemonstration

  • Ziel des Projekts Ein Roboter soll so programmiert werden, dass er selbststndig aus einem Labyrinth herausfindet.

  • GrundstzlichesEin Roboter findet sicher aus einem Labyrinth (ohne Inseln), indem er immer rechts oder links der Wand entlang fhrt.

    Er braucht mindestens drei Entfernungs-sensoren, um in allen Situationen die richtige Entscheidung treffen zu knnen.

  • VorgehenDatenaustausch zwischen Roboter und Computer herstellenErmittlung von mglichen Situationen im LabyrinthZeichnen eines Flow-Charts Zerlegen des Problems in EinzelprogrammeZusammenfgen des HauptprogrammsTesten im LabyrinthAnbringen von Verbesserungen, nderungen und Ergnzungen

  • ProblemeEichung der Sensoren erfordert przise MessungenKorrektur von FehlpositionenOptimale Abfolge von Entscheidungsschritten erarbeiten

  • Erfolgeerste przise Linkskurvekorrekte Entscheidung der Situationgelungene Korrektur der Fehlpositionenerster erfolgreicher Durchlauf des Labyrinths

  • Visionenberwindung eines Labyrinths mit InselnAnwendung in der Forschung, Haushalt etc. (z.B. Minensucher, Staubsauger, Rasenmher usw.)

  • Wir danken der FHBB fr die Idee des Projekts und die Bereitstellung des Robotersder Stiftung Schweizer Jugend forschtunseren Betreuern Andreas Kiebele und Radolf von Salis

  • '{$STAMP BS2}

    'variabelni VAR BYTE 'loop zhlere1 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

  • 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

  • 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

  • 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

  • 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:

  • 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

  • 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

  • Herzlichen Dank fr Ihre Aufmerksamkeit

    Auf Wiedersehen

  • Hauptprogramm (Sensor):Startet Messung, liest Sensordaten S1,S2,S3 einZaehler >8?Sensor3 >30 cm?Sensor3 25cm?(Sensor3 -Sensor2 ) >65515?NeinNeinNeinNein6,5cm gerade fahren90-Grad-Linksdrehung90-Grad-RechtsdrehungZu nahe DistanzkorrigierenZu weite DistanzkorrigierenKorrektur nach rechtsJaJaJaJaJaJaS3S1S2Messrichtung S3Messrichtung S2Messrichtung S1STAMPY(Sensor3 - Sensor2) < 2cm? NeinNein6,5cm gerade fahrenKorrektur nach linksJaJaNein (Sensor3 Sensor2) < 60000?Sicherheitsfunktion, um Endlosschlaufen abzubrechen

  • Hauptprogramm (Sensor):Startet Messung, liest Sensordaten S1,S2,S3 einZaehler >8?Sensor3 >30 cm?Sensor3 25cm?(Sensor3 -Sensor2 ) >65515?NeinNeinNeinNein6,5cm gerade fahren90-Grad-Linksdrehung90-Grad-RechtsdrehungZu nahe DistanzkorrigierenZu weite DistanzkorrigierenKorrektur nach rechtsJaJaJaJaJaJaS3S1S2Messrichtung S3Messrichtung S2Messrichtung S1STAMPY(Sensor3 - Sensor2) < 2cm? NeinNein6,5cm gerade fahrenKorrektur nach linksJaJaNein (Sensor3 Sensor2) < 60000?Fall1: Sieht Sensor 3 keine Wand, dreht sich der Roboter nach linksKeine WandEcke

  • Hauptprogramm (Sensor):Startet Messung, liest Sensordaten S1,S2,S3 einZaehler >8?Sensor3 >30 cm?Sensor3 25cm?(Sensor3 -Sensor2 ) >65515?NeinNeinNeinNein6,5cm gerade fahren90-Grad-Linksdrehung90-Grad-RechtsdrehungZu nahe DistanzkorrigierenZu weite DistanzkorrigierenKorrektur nach rechtsJaJaJaJaJaJaS3S1S2Messrichtung S3Messrichtung S2Messrichtung S1STAMPY(Sensor3 - Sensor2) < 2cm? NeinNein6,5cm gerade fahrenKorrektur nach linksJaJaNein (Sensor3 Sensor2) < 60000?Fall2: Sieht Sensor 1 eine Wand, dreht sich der Roboter nach rechts Wand

  • Hauptprogramm (Sensor):Startet Messung, liest Sensordaten S1,S2,S3 einZaehler >8?Sensor3 >30 cm?Sensor3 25cm?(Sensor3 -Sensor2 ) >65515?NeinNeinNeinNein6,5cm gerade fahren90-Grad-Linksdrehung90-Grad-RechtsdrehungZu nahe DistanzkorrigierenZu weite DistanzkorrigierenKorrektur nach rechtsJaJaJaJaJaJaS3S1S2Messrichtung S3Messrichtung S2Messrichtung S1STAMPY(Sensor3 - Sensor2) < 2cm? NeinNein6,5cm gerade fahrenKorrektur nach linksJaJaNein (Sensor3 Sensor2) < 60000?Der Roboter entscheidet, ob er den Winkel oder den Abstand zur Wand korrigieren soll und korrigiert ihn falls noetig

  • Hauptprogramm (Sensor):Startet Messung, liest Sensordaten S1,S2,S3 einZaehler >8?Sensor3 >30 cm?Sensor3 25cm?(Sensor3 -Sensor2 ) >65515?NeinNeinNeinNein6,5cm gerade fahren90-Grad-Linksdrehung90-Grad-RechtsdrehungZu nahe DistanzkorrigierenZu weite DistanzkorrigierenKorrektur nach rechtsJaJaJaJaJaJaS3S1S2Messrichtung S3Messrichtung S2Messrichtung S1STAMPY(Sensor3 - Sensor2) < 2cm? NeinNein6,5cm gerade fahrenKorrektur nach linksJaJaNein (Sensor3 Sensor2) < 60000?Nachdem eine Entscheidung zu einer Aktion gefuehrt hat (z.B. der Roboter hat sich nach rechts gedreht), startet wieder das Hauptprogramm.