www.mikrocontroller.net

Forum: GCC Roboter Labyrinth

Autor: Peter Scholz (wuhu)
Datum:

Hallo.

Wie ihr sicher unschwer erkennen werdet, bin ich kein Profi,
strenggenommen bin ich wohl eher Anfänger. Trotzdem möchte ich natürlich
-auch wenn es jeder Vernunft widerspricht- hoch hinaus.

Folgendes Problem:
Ich habe in einem Buch in etwa folgendes gesehen:
##################
#           #    #
# ###### ####### #
# # #    #     # #
# # ## ###### ####
# #      #     # #
# ###### # ##### #
#                #
##################

Es stellte ein Labyrinth dar und war noch etwas komplexer und deutlich
schöner als meins hier.
Es wurde dann in diesem Buch scheinbar ein Programm entwickelt, dass
einen Weg durch das Labyrinth bzw. von einem Punkt a zu Punkt b findet.
Ich selbst besitze einen kleinen Roboter eine sogenannte "Robolaus" die
auf einem Amtel Board (
http://www.krause-robotik.de/service/download/atme...
) basiert.
Mein Traum wäre es jetzt, dass ich dem Roboter einen "Rahmen" einer
bestimmten Größe vorgebe (z.B. 2x2m) und wenn ich ihn dann in ein
abgegrenztes Feld dieser Größe stelle, erkundet er selbstständig den
Raum und "markiert" jedes Hindernis, auf das er stößt. Günstig wäre es,
wenn er mir diese "Karte" dann ausgeben (sprich an den Computer senden)
könnte, vielleicht auch während der Fahrt.  bzw, dass er anhand der
Daten die er sammelt sich selbst einen Weg durch den Raum bahnen kann,
ohne an einem dieser Objekte anzustoßen.

Meine Frage ist nicht, wie ich die Hindernisse erkenne und aus den
Sensoren (Ultraschall, IR, ...) Daten auslese, sondern mir geht es um
Folgendes:
- Wie definiere ich den Rahmen für diese Erkundungsfahrt? Und brauche
ich den überhaupt?
- Wie kann ich eine Markierung setzen und wie kann ich sie beim
weiterfahren wieder auslesen um nicht noch einmal auf dasselbe Hindernis
zu prallen.
- Wie kann ich Daten an den PC senden/empfangen?
- und vor allem: ist meine Idee überhaupt umsetzbar?

Ich weiß: viele Fragen auf einmal... sry!
Paul
Autor: Andi D. (xaos)
Datum:

ne karte mit ultraschall, ir...hm joa irgendwie geht das wird aber
unschön...besorg dir nen SIG 2d laserscanner, damit kann man dann auch
was anfangen ;)
ansonsten ist das kein großés problem..wenn du ein abgeschlossenes
gebiet hast brauchst du keinen rahmen zu definieren oder ähnliches (denk
nur an die größe der karte...). markierungen etc setzt du, in der aus
den daten erzeugten, umgebungskarte.
senden/empfangen über zB wlan, bluetooth, funktransceiver (RFM12 etc)..
Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

Und noch was.
Ehe du das ganze mit realer Hardware machst, probier es am PC aus. So
ein Labyrinth in einem 2D-Feld ist schon ein guter Ansatz.

> Wie kann ich eine Markierung setzen
Gar nicht. Dein Robbi baut sich intern eine Karte seiner Umgebung auf.
Im Grunde muss er während der Erkundungsfahrt genau den Inhalt dieses 2D
Arrays rausfinden, den du ihm im ersten Schritt bei deinen Versuchen auf
dem PC vorgibst.

Auch wenn du davon träumst: Fang in kleinen Schritten an. Eine
Teilaufgabe nach der anderen.
Autor: STK500-Besitzer (Gast)
Datum:

Sowas haben wird damals in der Schule im Informatikunterricht in Pascal
programmiert:
Ein Labyrinth als Array erzeugt (Rahmen, Hindernisse).
Da haben wir einen Roboter "reingesetzt", der nach vorne, links und
rechts gucken konnte (und immer in dieser Reihenfolge nach dem weg
gesucht hat)
Er ist dann immer in die Richtung "gefahren", in der zuerst kein
Hindernis war. Wenn alle Richtungen getestet waren, bewegte er sich zur
vorhergehenden Position und testete die übrigen Richtungen. Irgendwann
hatte er das Zeil erreicht.
"Einfaches" Beispiel für "Trial'n'Error" und Rekursion.
Autor: Rolf Magnus (Gast)
Datum:

Das entspricht einer einfachen Tiefensuche:
http://de.wikipedia.org/wiki/Tiefensuche
Autor: Karl Heinz Buchegger (kbuchegg) (Moderator)
Datum:

STK500-Besitzer schrieb:

> Er ist dann immer in die Richtung "gefahren", in der zuerst kein
> Hindernis war. Wenn alle Richtungen getestet waren, bewegte er sich zur
> vorhergehenden Position und testete die übrigen Richtungen. Irgendwann
> hatte er das Zeil erreicht.
> "Einfaches" Beispiel für "Trial'n'Error" und Rekursion.

Sowas hab ich auch immer gerne meinen Schülern im Kapitel Rekursion als
Aufgabe gegeben. Der Titel war "Wie kommt die Maus zum Käse"
Die eigentliche Suche ist rekursiv ein paar Zeilen lang und wenn man
Rekursionen verstanden hat, eigentlich sehr simpel. Aber bis man das
Vertrauen hat, dass diese paar Zeilen zusammen mit der Rekursion das
Problem lösen können, das ist ein langwieriger Prozess :-)

Ach ja, was ich sagen wollte: Man bezeichnet das auch als
'Backtracking'. Versuch einfach mal eine Richtung. Wenns klappt: super.
Wenns nicht klappt, versuch eine andere wenns noch eine gibt.
Ist ein sehr mächtiges Werkzeug, das jeder in seinem Wekzeugkasten
vorrätig haben sollte. Die Programmiersprache Prolog baut in
wesentlichen Grundzügen darauf auf.
Autor: Klaus Wachtler (mfgkw)
Datum:

Als Zusatzaufgabe kann man dann gleich mit dazugeben, ob der Stack
dafür auch reicht.
Also überschlagen, wieviele Byte auf dem Stack pro Ebene benötigt
werden und wie tief die Rekursion maximal gehen kann.
Sonst ist die Rekursion schnell mal die ganz böse Rekursion.
Autor: Peter Scholz (wuhu)
Datum:

Wow. Danke erst einmal. Ich versuche mich jetzt zunächst daran eure
Vorschläge zu überdenken und dann werde ich euch sicher noch einmal mit
Fragen zu diesem Thema belästigen. Danke!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel




Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder GIF-Format hochladen.
Siehe Bildformate
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken erkennst du die Nutzungsbedingungen an.

webmaster@mikrocontroller.netImpressumNutzungsbedingungenWerbung auf Mikrocontroller.net