-
        

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 20

Thema: Denkanstoß gesucht: Labyrinth Roboter - Strecke merken

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2009
    Beiträge
    6

    Denkanstoß gesucht: Labyrinth Roboter - Strecke merken

    Anzeige

    Ahoi!
    Ich bin Schüler, 12. Jahrgang.Kenntnisse ins Sachen Informatik würde ich eingeschränkt nennen
    Habe zwar Informatik LK,aber wirklich gut bin ich nicht (interessiert mich einfach nur und macht mir Spass,wenns klappt ).

    Wir haben in unserem Seminarfach jetzt die Aufgabe bekommen,einen Roboter (RCX, die Legogeräte halt) zu basteln und programmieren,der selbstständig durch ein Labyrinth fährt und Daten sammelt,wodurch er beim 2. durchlauf das Labyrinth kennen sollte und somit auch schneller als beim ersten mal ist.
    Es wird keine schleifen oder ähnliches geben,d.h. wodurch ,wenn man immer links fährt,ewig im Kreis fährt.Also brauch ich dafür keinen aufwendigen Algorithmus.
    Der zweite Teil der Aufgabe macht mir allerdings noch zu schaffen.Inwiefern soll es möglich sein,die gefahrene Strecke zu speichern und eventuelle Umwege zu vermeiden? Hat jemand ne idee?

    Im Notfall lass ich den Roboter beim ersten mal einfach mit gedrosselter Geschwindigkeit fahren und erhöhe sie beim zweiten mal Er würde jedenfalls schneller durchs Labyrinth kommen :P

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Hallo,
    das Projekt hört sich ja echt interesant an. Ich hab da mal profi-wetbewerbe gesehen...

    Wenn Du beim ersten Durchlauf dich immer links hältst. kommt es bestimmt vor, dass du in einer Sackgasse landest und dadurch wieder zu einem Punkt kommst an dem Du schon mal warst. Das kannst Du Dir dann beim 2. Durchlauf sparen.
    Du mußt allso immer Deine Position kennen und bei jeder Abzweigung merken.

    Viel Spaß,
    Drew


  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2009
    Beiträge
    6
    Nicht gezwungener Weise. Es wird ja ein Labyrinth mit "links markierung, rechts markierung" sein.Ergo wenn ich in eine Sackgasse komme,dreht der Roboter rechts,weil er denkt es sei eine rechtskurve,fährt ein stück,denkt es sei wieder ne rechtskurve,dreht sich und fährt dann weiter.Ergo fahre ich immer außen dranlang.
    Oder hab ich da einen Denkfehler? ^^

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Hi,
    ich hab mal ein Ausschnitt aus einem Labyrinth angehängt. Alle Gänge, in denen Du zweimal warst kannst Du Dir das nächste mal saren, oder?

    Drew
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken labyrinth.png  


  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    19.02.2009
    Beiträge
    6
    Jau,jetzt müsst ich nur noch wissen,wie ich das in ne Programmierung verpacke.Also ihr müsst mir keinen quelltext posten,aber son grober formulierter algorithmus wäre geil Hat jemand ne Idee?

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    24.01.2008
    Ort
    Schrobenhausen, München
    Alter
    24
    Beiträge
    583
    Hi,

    ich hab irgendwie das gefühl, dass dir dashier kaum jemand liefern wird, es iss ja nich gerade gar keine arbeit...

    ich hoffe mal ihr programmiert die teile in C...

    ich hab so die vermutung dass das einfachste sein wird, die gefahrene strecke beim ersten mal einfach komplett zu speichern (in variablen, denke gemessene zeit die er in ne richtung fährt

    so könnte er quasi wenn er nach von dir genanntem prinzip den weg durch das labyrinth sucht also alles aufzeichnen...
    ich hatte auch mal so ein lego system, wenn ich mich recht erinnere fährt der immer gleich schnell sollte also gut möglich sein zumindest ein maßstabsgetreues wegaufzeichnen sehr leicht über gefahrene zeit mit richtung möglich sein

    das würd ich an deiner stelle aber schon wegen der masse an werten (ausser ihr habt n mini-labyrinth) in nem 2-dimensionalen (oder einfach 2 einzelnen) array speichern...

    dabei muss man halt auch aufpassen, dass die richtung beachtet wird
    und wenn man dann die dateien der arrays verwendet kann man den ort genau bestimmen, wo er war, bezogen auf den startpunkt

    danach noch überprüfen ob man irgendwo werte hat die sich überschneiden und wenn ja dann kann man den zwischenteil per for-schleife rausschneiden...

    naja, wird n komplexer code aber ich bin sicher du schaffst das

    LG Pr0gm4n

  7. #7
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111
    Hi!
    Es könnte eventuell ausreichen, wenn Du nur die Reihenfolge der 90° Abbiegungen speicherst. ALso rechts, links, rechts usw.
    Wenn Du jetzt am Ende der Sackgasse bist, musst Du ja 180° drehen. Ab hier musst Du jetzt auf dem Rückweg die Abbiegungen mit den vorherigen vergleichen (natürlich umgekehrt) bis Du an eine Stelle kommst, wo sie nicht mehr übereinstimmen. Im gezeichneten Fall oben wäre das am grünen Kreis. Hier würdest Du merken, dass es einen anderen Weg (nämlich geradeaus) anstelle des gekommen Wegs (nämlich rechts) gibt. Jetzt könntest Du alle gleichen Abbiegungen im Array löschen (Hin und Rückweg) und den Weg bis dahin als "gesichert" annehmen, mit der neuen Abbiegung statt links, rechts.
    Ob das möglich ist hängt auch ein bisschen von den verwendeten Sensorn ab, die wir nicht kennen, denn der Bot muss an jeder Stelle prüfen, ob er auch abbiegen könnte.
    Gruß

  8. #8
    Erfahrener Benutzer Robotik Einstein Avatar von vohopri
    Registriert seit
    11.09.2004
    Ort
    südlich der Alpen
    Beiträge
    1.708
    Hi Alex,

    du brauchst sicher die Wegstrecken zwischen den Drehungen.

    folgendes ist Unsinn:
    Es könnte eventuell ausreichen, wenn Du nur die Reihenfolge der 90° Abbiegungen speicherst.
    Das gibt sofort falsche Ergebnisse, wenn du über eine Stelle mit Linksdrehung bei der Hinfahrt, bei der Rückfahrt gerade fährst, dann wird erst die nächste Biegung als vergleich herangezogen, was das ganze System durcheinander bringt.
    Du brauchst auf der Rückfahrt aus der Sackgasse die Abstände, um bei Geradeausfahrt fest zu stellen, wo bei der Hinfahrt eine Biegung war. Diese Situation ist eine der möglichen Situationen, die den Beginn der Sackgasse anzeigen.

    Eine Rat kann ich dir geben:
    Bevor du zu programmieren beginnst, musst du ein brauchbares Verfahren haben, mit dem sich die Sackgassen vermeiden lassen. Denk dir was aus und teste es mit Papier und Bleistift auf gezeichneten Labyrinthen. Mach das so lange, bis es perfekt ist. Frage nötigenfalls hier. Wenn das Verfahren perfekt ist, dann gehe an die programmiertechnische Umsetzung. Da werden wieder Fragen auftauchen.

    Wichtig ist, dass man Problemanalyse und Programmierung nicht zusammenwirft. Das gäbe nämlich zu viel Fragen auf einmal. Besser schön der Reihe nach.

    grüsse,
    Hannes

  9. #9
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    25.11.2003
    Beiträge
    1.111
    Zitat Zitat von Gock
    ...Ob das möglich ist hängt auch ein bisschen von den verwendeten Sensorn ab, die wir nicht kennen, denn der Bot muss an jeder Stelle prüfen, ob er auch abbiegen könnte.
    Genaues und vollständiges Lesen der Threads erspart Zeit und vermeidet Missverständisse.
    Natürlich funktioniert das nicht, wenn er nur einen Bumper vorne hat. Bei Robotern, die jederzeit prüfen können, ob sie rechts oder links abbiegen können, ist die beschriebene Vorgehensweise empfehlenswert.
    Die Software muss natürlich immer auf die Hardware abgestimmt sein, sonst ist jede Diskussion überflüssig. Du solltest daher erklären, wie der Bot (vor allem Sensoren) aufgebaut ist oder werden soll.
    Gruß

  10. #10
    Erfahrener Benutzer Fleißiges Mitglied Avatar von drew
    Registriert seit
    06.04.2005
    Beiträge
    150
    Hallo,
    ich gehe davon aus, dass das Labyrinth sich in Quadrate aufteilen läßt. Die Länge eines Gangs ist also immer das Vielfache von der Breite. Das ist so weil es überall waagrechte und senkrechte Gänge gibt. (Ich gehe davonaus, dass alle Gänge gleich breit sind.)
    Du kannst also Dein Labyrinth in Quadrate einteilen. Du kannst bei Deinen Bewegungen (Ich meine natürlich die Deines Roboters) immer von Quadrat zu Quatrat fahren und beim abspeichern kannst Du Dir sehr viel Speicher sparen, wenn Du Dir merkst in welchem Quadrat Du warst.

    Das mit den Sensoren ist natürlich noch eine offenen Frage. Woher weißt Du, wann Du wo abbiegen kannst?

    Drew


Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •