Shortest Path Linie Follower Roboter Logic enthüllt!
Gelangweilt der herkömmlichen Linie Folger? Menschen fast verlieren Interesse? Hier ist ein Beitrag, die alles und drehen die Winde auf Ihrer Seite ändern könnte.
Stellen Sie sich vor, wenn Ihr Roboter von Knoten A (Quelle) und bewegen zu Knoten B (Ziel) und kommen zurück zum Knoten A zu starten war! Hmm ... nicht so groß. was ist, wenn der Roboter den kürzesten Weg von Quellknoten zum Zielknoten herausfinden kann, und kehrt dann zu dem Quellknoten des kürzesten Weg wählen. Nun wird das nicht eine Hölle eines Roboters sein? Das ist, wo dieser Beitrag wird Sie erhalten.
Im Interesse die, die versucht haben, und am Rande des Erfolgs gegeben, werde ich meine Methode (oder die Methode, die ich denke, off könnte) hier posten. Auch hier muss ich Sie daran erinnern, ist dies wahrscheinlich nicht der beste Weg, es zu tun. Wenn Sie eine Methode kennen, die mehr optimiert ist, hilfreich sein, indem sie sie mit anderen zu teilen.

Angenommen, den viereckigen Kasten als der Startpunkt und die kreisförmige Patch als Endpunkt der Spur. Ich bin sicher, Sie würden den kürzesten Weg von der Quelle zum Ziel herausgefunden; Dank an alle Spiele, die wir in Zeitschriften gespielt haben. Außerdem ist dies ein ziemlich einfaches Labyrinth zu denen, verglichen wir in der Jungen Welt bekommen. Ich habe die kürzeste Weg Lösung für Ihre Bestätigung gebucht.

Der Punkt ist, dass Ihr Roboter in der Lage sein sollte, das zu tun, nicht nur für diese Strecke aber für jede Spur, ein menschlicher Geist denken kann. Eine weitere Sache, die ich erwähnt habe früher ist, dass die Spur keine Schleifen in ihm haben sollte. Wenn Ihre Spur eine Schleife hat, dann müssen Sie mehr Logik hinzufügen und wie gewohnt die Dinge einfach zu halten, ich werde nur zu dem Hauptstrom-Konzept bleiben.


Ein Knoten ist, wenn es mehr als eine Option auf Richtungswechsel hat. Ein Knotenpunkt ist der Punkt, wo mehr als eine Linie schneidet.
Punkte, die man sich merken sollte:
Jedesmal, wenn der Roboter einen Knoten gerichtet ist, hat es einen Eintrag in die Array Richtung zu machen. Es hat auch jedes Mal eine Eingabe machen es in einer Sackgasse kommt. Das Bild unten zeigt den Punkt in Verzug zu erinnern, links (rote Punkte) und Standard rechts (gelb) Algorithmen.
Um dies besser, für Standard-links-Algorithmus zu verstehen, folgen den Punkten auf der linken Seite der Strecke vom Startknoten zum Zielknoten. Und in ähnlicher Weise für Standard rechts den Punkten auf der rechten Seite folgen. Diese Punkte zeigen die Positionen, wenn der Roboter einen Eintrag in das Richtungsregister machen.

Lassen Sie uns einige weitere Annahmen getroffen werden,
Ihr Programm wird sich den Überblick über die Seriennummern (Richtungsindex) der obigen Annahmen nur; die Richtungen sind für Ihr Verständnis. Wann immer Ihr Roboter einen Knoten trifft, (Punkt zu erinnern) es einen Eintrag einer dieses Richtungsindex in Richtung Array zu machen hat.
Das Verfahren für die Standard-links-Algorithmus ist wie folgt,
Das Verfahren für den Standard richtigen Algorithmus ist wie folgt,
Mit dem folgenden Algorithmus, sollten Sie eine Richtung Array wie diese haben,
das ist -> [Norden. Norden. Süd. Osten. Norden. Süd. Osten. West. Süd. Norden. West. Süd. Osten. Osten. Osten]
die -> [East. Süd. Norden. Osten. West. Norden. Osten. Süd. West. Osten. West. Norden. Osten]
Dies sind die Werte, die ich berechnet habe nach dem obigen Algorithmus folgen. Cross-Check diese mit Ihrer eigenen Antwort sicher sein. Dies ist das Herz des Algorithmus so sollte diese Logik nicht fehlerhaft sein.
Sobald der Roboter das Ziel erreicht, sollte die dir_arr den kürzesten Weg zu berechnen verarbeitet werden. Dies ist der schwierigste Teil des Verfahrens. Zum Verständnis werde ich Richtung Etiketten statt Richtungsindex verwenden.
Wenn es eine Süd von Norden oder umge Verse gefolgt ist, dann ist es eine redundante Bewegung und muss entfernt werden. Ebenso, wenn es eine Ost gefolgt von einem Westen oder umge Verse, dann ist es auch überflüssig. Im ersten Durchlauf, Löschen alle solche Paare in der Anordnung. So sollte Ihr Array wie folgt aussehen nach dem ersten Durchgang, in allen Fällen das erste Element persistent ist, auch wenn er storniert werden muss.
Standard Left Algorithmus Reduktion:
Am Anfang, damit die Richtung Array übernehmen zu sein,
Im ersten Durchgang, wir Gruppe und entfernen Sie die folgende,
Ebenso wir Gruppe und entfernen eine andere aus der resultierenden vorhergehender Reduktion.
Schließlich gibt es nur noch eine Sache ist, können wir entfernen,
Dies ist nicht das, was wir richtig zu machen geplant?
Unser Roboter hat zum Zielknoten und kommt zurück an den Quellknoten in dem kürzesten Weg zu gehen. Um dies zu tun müssen wir ein paar Änderungen in der Richtung Array machen.
Um die Richtung des Roboters zu verändern, haben wir die die Elemente des umzukehren. 0-te Element so wird n-te Element und und n-te Element hat 0ten Element zu werden, und so weiter.
Sobald all diese Verarbeitung die umgekehrte Richtung Array wird geschehen, < 4. 4. 4 > Das ist [Westen. West. West] in unserer Konvention.
Dort gehen Sie! Der kürzeste Weg Algorithmus offenbart. Alles was Sie jetzt tun müssen, ist daran zu denken, wie wir diese Logik in C implementieren können und wie Sie den Code so zu strukturieren, dass während von der Quelle des Roboters zu dem Zielknoten gehen hat das Array zu füllen und während es kommt zurück zu verwenden, hat die gleiche Array (oder verschieden sein Ihr Wunsch, sondern eingebettet Ingenieure sind nicht immer diese Option gegeben ... die meiste Zeit hat der Controller einen Mangel in verfügbarem Speicher)
Ich hoffe, dieser Beitrag war hilfreich. Lassen Sie mich wissen, ob es irgendwelche Verwirrungen im Begriff oben erläutert sind. Ich werde die kürzeste Weg Linie Follower Roboter diesen Beitrag mit dem Programmier Abschnitt folgen zu lassen.
Zufrieden mit diesem Beitrag? Registrierung mit Ihrer E-Mail und wir halten Sie engagged!