text: Ultraschall und Wegspeicherung - Roboternetz-Forum
  Ultraschall und Wegspeicherung
  Thema: Ultraschall und Wegspeicherung
  16.12.2009, 09:50 #1
  hab ein kleines Projekt für den Asuro als Aufgabe bekommen!
  Folgendes soll der Asuro machen:
  1. Fahren ( ob geradeaus oder quer ist unwichtig)
  2. Das erste Hindernis soll umfahren werden.
  3. Vor dem 2 Hindernis so der Asuro stehen bleiben, eine 180 Grad
  drehung machen
  4. Dann den Kürzesten Weg zum Ausgangspunkt zurückfahren und dort stehen bleiben!
  Die Punkte 1-3 sollten ja kein Problem darstellen!
  Über den Punkt 4 hab ich mir schon einige gedanken (nur Gedanken) gemacht:
  -könnte man den Asuro eine unsichtbare Fläche (Spielfeld, Arena ( 2x2 Meter)) einprogrammieren, ein Koordinatensystem oder so ähnliches?
  So dass er dann weiß wo er sich befindet und den Kürzessten Weg zum (bsp. Punkt) 0/100 wieder zurückfährt!!
  habe aber selber irgendwie Zweifel, dass es funktioniert da der Speicher warscheinlich zu klein dafü ist, lass mich aber gerne besseren Belehren!
  -falls das obere Beispiel nicht geht, oder zu umständlich wäre, würde es auch ein einfaches Wegspeicherúngs System tun, also dass er sich den Fahrweg ab dem start Merkt, und nach der 180Grad Drehung den gespeicherten Weg so abfährt, dass er am Ausgangspunkt wieder ankommt ( Die Lenkung sollte man ja dabei beachten müsste umgekehrt abgerufen werden, also wenn er auf dem hinweg 3 sekunden nach linkst gefahren ist sollte er auf dem Rückweg 3 sekunden nach rechts fahren )!
  Und was meint Ihr ist das ganze mit dem Zurückfahren Überhaupt möglich?? und in ca 50 Arbeitsstunden machbar?
  Hab das Ganze als 4 SemesterWochenStunden Projekt bekommen und würde es neben meinem Praktikum machen!
  Dann Wollte ich nochmal nach dem Stand der Software erkundigen.
  Das was ich hier im Forum gefunden habe ist vom Jahr 2007 bzw. 2008 nun wollte ich mal fragen welche Software, Compiler, Flashtool, Datenbank, Bibliothek ich benutzen sollte bzw. welche auf dem Heutigen Stand der Technik zu gebrauchen sind!
  16.12.2009, 10:57 #2
  Möglicherweise ist die Aufgabenstellung so zu verstehen, dass sich der Asuro am Wendepunkt so dreht, dass er (sofern keine Hindernisse im Weg sind) auf gerader Linie zum Startpunkt zurückfährt. Dafür müsste er dann nur den Winkel zwischen der aktuellen Ausrichtung und der dem Startpunkt kennen, den er sich zu jedem Zeitpunkt während der Hinfahrt aus den aktuellen Odometriedaten rechnen und aktualisieren kann.
  16.12.2009, 11:12 #3
  Also die Aufgabestellung! Ist schon oben richtig beschrieben also er umfährt das erste hinderniss vor dem 2 bleibt er stehen dreht um 180grad und fährt dann auf dem kürzesten weg wieder zurück mit oder ohne Hindernisse!!
  16.12.2009, 16:58 #4
  Ich hab mir dazu auch schonmal was überlegt.
  Versuch es doch mal mit einem 2dimensionalen
  Array (double feld[100][100]
  dort sagst du dann zB 1 heißt frei 2 ist ein hindernis und 3 ist die aktuelle position des robos.
  Alles setzt du dann am Anfang auf 1 und jedesmal wenn der Robo auf ein hindenris trifft setzt du das aktuelle feld = 2. So müsste der Robo dann auch zB wissen wie weit das nächste hindernis oder so entfernt ist da er ja (grob) seine aktuelle position kennt.
  16.12.2009, 23:23 #5
  Hmm, 100*100* die anzahl von bits in einem double variabele. Und wieviel speicher hat unsere Asuro? Was genau sol es speichern eigentlich.
  Ist auch nicht effizient. Die meiste platz im arena sind leer. Die abgelegte weg und drehungen messen mit odometrieweg und umwandeln im 'dead reckoning' (weiss nicht wie das auf 's deutsch lautet) coordinaten. Dan nur die x,y daten speichern wobei er etwas angestosen hat und weg gekehrt ist. 100 strukturen (c-sprache "struct") der die x und y coordinaten speicher mus Asuro schon erinnern können. Das schwierigste ist aber die genaue odometrie messungen. Die positions genauwichkeit wachst standig mit jeder centimeter bewegung und drehung.
  17.12.2009, 04:29 #6
  so ein grosses zweidimensionales Array (100x100) braucht ffmboy nur, wenn er eine Karte des Weges erstellen muss. Wenn's aber nur darum geht, den kürzesten Weg zurückzufahren, dann braucht er nur den aktuellen Ort des Asuro im Speicher zu halten . Wie man den ausrechnet (Koppelnavigation, wie Valen schon schrijvt) und wie's mit der Genauigkeit der Odometrie beim Asuro aussieht, darüber hat SternThaler hier im Forum sehr ausführlich berichtet.
  Wenn dem Asuro auf dem Rückweg wieder Hindernisse im Weg stehen, dann reicht's ja aus, wenn er sie nach derselben Methode umgeht, wie auf der Hinfahrt. Nur muss er jetzt zwischen Hindernisumgehung und Zielfahrt koordinieren. Das geht z.B. indem er, während er dem Hindernis ausweicht, alle paar Sekunden versucht, die Fahrtrichtung wieder in Richtung zum Zielpunkt zu drehen. Das ist viel einfacher zu programmieren, als wenn er sich den Rückweg aus einer Karte berechnen muss (A* Algorithmus) !
  17.12.2009, 06:19 #7
  Ich finde die Aufgabenstelling unklar. Der kürzeste Rückweg kann nur gefunden werden, wenn das Gelände bekannt ist. Man wird ja beim Rückweg ziemlich zwangsläufig wieder auf das erste Hindernis treffen, da kennt man aber nur einen Weg herum (den man beim Hinweg gefahren ist). Man weiss nicht, ob es anders herum nicht vielleicht kürzer gewesen wäre. Oder impliziert die Aufgabenstellung, dass der kürzeste Rückweg bereits bei der Hinfahrt gefunden werden soll (also beide Wege um das erste Hindernis erforscht werden sollen)?
  Ich würde da beim Aufgabensteller nochmal nachhaken, wie das gemeint ist.
  17.12.2009, 10:03 #8
  Zitat von mare_crisium
  finde deinen Beitrag sehr interessant (von Valen auch konnte aber nicht alles verstehen nobody ist Perfect)!
  So wie ich deinen Beitrag verstanden habe wäre es möglich den Asuro so zu Programmieren????
  Ist eigentlich auch das was ich mir vorgestellt habe!!
  Wollte eigentlich eine Bestätigung haben, dass es irgendwie funktionieren würde!
  Könntest du mir vielelicht noch den link zum Beitrag Von SternThaler angeben bin zwar auf der Suche danach falls ich den aber net finde!
  17.12.2009, 10:55 #9
  Zitat von ffmboy
  ... mir vielelicht noch den link zum Beitrag Von SternThaler angeben bin zwar auf der Suche danach ...
  Ich habe grad die beiden wichtigen vor ner knappen Stunde hier gepostet.
  PS - nicht zum Lesen gedacht: ... so ein grosses zweidimensionales Array (100x100) ...Solche "Überlegungen" sind immer für die Katz, wenn man nicht zusammen mit einem Stück Papier und einem Bleistift überlegt. Wobei Papier und Bleistift bei genau diesem Beispiel garnicht notwendig wären: schon ein array double [10][10] frisst beim asuro 80 % des Speichers - und den Sinn von double für Flags verstehe ich eh nicht.
  17.12.2009, 13:56 #10
  Ja gut dann nimmt man halt int [10][10];
  es geht ja hier ersmal um eien möglichkeit der lösung wobei ich die antwort
  von mare_crisium für die aufgabenstellung(sofern richtig verstanden) doch besser finde. meine lösung ist dann wohl besser für eine ganze kartografierung o.ä.