Automatischer Staubsauger Problem =D

Hallo,

folgendes:

Es geht darum, dass man einen Staubsauger beibringen soll, staub zu saugen (in einem Spiel, zb 100x100 Felder groß). Im Spielfeld gibt es Hindernisse und Wände (zb Stuhlbeine, Hundenäpfe, Trennwände)

Nach welchem Schema könnte ich den Staubsauger programmieren, dass er jedes Feld aufjedenfall mind. 1 mal betritt.

Auf einigen Staubsauger Seiten hab ich was von „Spiralschema“, „Zufälliger Winkel“ „An der Wand entlang Schema“ gelesen.

hier: http://saugrobot.de/bewegung-zufallsfahrt.php

Mir ist das zu ungenau. Gibt es vll eine andere Methode oder vll eine Kombination von allen?

Würde mich auf eine Antwort freuen.

grüße beginner ;D

Hallo

Ob Spiel oder in echt, ist glaub ich erstmal egal.

Ein Staubsaugroboter müßte schon den Raum messen können und dann abzeilen.

Dafür braucht er Sensoren ähnlich Videokamera oder Ultraschall sensoren für die Wände.

Wenn die Sensorik eher schlecht ist, könnte er Signalpfeiler aufstellen, um festzustellen, wo er schon war.

Roboter können Schalter haben, damit sie nicht alles umrempeln.
Aber es gibt zum Beispiel auch Bierdeckel, Münzen, Schrauben etc. was nicht angesaugt werden sollte. Hier ist es dann etwas schwierig.

Eine Methode könnte tatsächlich sowas sein wie Zirkel fahren oder Zufallskurs einhalten usw., was aber energetisch nicht optimal ist.
Im Prinzip eine Frage des Aufwandes, viel Spass.

MfG
Matthias

Hallo,

lange, lange ist es her, aber ich erinnere mich grob an eine ähnliche Aufgabe im Informatiunterricht zu Schulzeiten (Mitte 80er Jahre):

  1. Gerade aus bis Hindernis, dann rechts ab und so lange gerade aus, wie links das Hindernis ist, Schritte zählen, und in einem ausreichend dimensionierten zweidimensionalen Array die umgebenden blockierten und freien Felder, sowie die abgefahrenen Felder markieren.

2.a) Entweder es kommt ein neues Hindernis vorne, dann befindet man sich in einer rechten oberen Ecke (muss nicht die Raumecke sein, kann ja auch ein winkliges Möbelstück sein), dann rechts abbiegen, und wie 1.

  1. b) Dar rechts liegende Hindernis endet, dann links ab, und dann wieder 1.

  2. Wenn man so einmal an der Außenkante entlang ist, einen Schritt von der Außenkante zurück beim nächsten Rechtsabbiegen.

  3. Wenn man in der Mitte angekommen ist noch nicht als befahren oder Hindernis markierte Felder darauf überprüfen, ob sie komplett von Hindernissen umschlossen sind, also zu einem größeren Hindernis gehören, wenn nein Route dahin unter Vermeidung von Hindernissen berechnen (k.A. mehr, wie ich das damals gemacht habe), und anfahren.

Gruß vom Wiz