Hallo miteinander,
Es ist spät in der Nacht, und da kommen mir meist die besten Ideen für meine Projekte. So auch jetzt:
Mein Labyrinth-Roboter findet schon ganz brav und ohne externe Hilfe von außen durch ein Labyrinth. Das Ganze geschieht mit der "Rechten-Hand-Methode". Nun, ich hab verschiedene Labyrinthe versucht, aber im Wurst-Käse Szenario fährt der fast ewig durchs Labyrinth.
Wie kann ich nun am besten verschiedene Methoden miteinander verknüpfen um effektiv und möglichst schnell (relativ schnell - also das RP6 Chassis und Geschwindigkeit sind nicht unbedingt Freunde) durch ein Labyinth zu kommen?
Zum Robo:
Abstandssensoren links-vorne-rechts (jeweils ein Messbereich von 3-20cm)
Radencoder auf der nicht angetriebenen Kettenwelle (somit Schlupfresistent)
*Foto folgt noch*
Zur Hardware:
Arduino MEGA2560 mit eigens kreiertem "Labyrinth-Robo-Shield" (Doppel-H-Brücke als Motortreiber, ADC Eingänge für die Sensoren, Eingänge für die Encoder, I²C Port, Navigationstasten, "LCD-Port" für 4x20 LCD, U-Teiler zur U-Messung des Akkus und (ich weiß nicht wieso ) einen PC-Piepser) - für nähere Infos fragen
Programmiert in C (wirklichem C, nicht "Arduino-Sketch-C", aber auch das wäre möglich wenn mich die Faulheit überkommt )
Ideen und Hirngespinste:
Ich zähl das Abbiegen mit und optimiere Sackgassen beim nächsten Durchlauf heraus: Abbiegen und Strecke messen bis zum nächsten Abbiegen, wenn dieses Abbiegen dann das Umkehren ist und die Hin- und Retourstrecke gleich ist ist es eine Sackgasse und es wird beim nächsten Durchlauf bei der Kreuzung xy nicht abgebogen
Ich bau noch einen Kompass dran, bzw. geh vom Ausgangszustand aus, und bekomm so meine aktuelle bzw. absolute "Himmelsrichtung", ich mess jede Strecke mit und versuche zu erkennen ob ich aufgrund der "Rechten-Hand-Methode" extrem weit abdrifte (Ich starte in der Mitte und fahr außen umher), wenn dies so ist werde ich versuchen eine Art "Linke-Hand-Methode" anzuwenden, somit "per Zufall" links abbiegen und probieren, je nachdem was kürzer ist, das wird das nächste mal genommen usw....
Eine Implementierung des Algorithmus von Gaston Tarr, wäre auch interessant mit dem Markieren von Gängen. Da muss man halt auch irgenwie erkennen, ob man in dem Gang schon war und ob dieser markiert ist, nur das wird mit Zählen und Messen denk ich nicht funktionieren. Doch wie kann man das anstellen? kleine Sticker mit einem Servo austeilen und per Farbsensor lesen? Oder vielleicht was mit einer Kamera?
Was habt ihr noch für Ideen? Wie kann man so etwas mathematisch angehen? Kann man so etwas irgendwie simulieren?
-Anm.: Einen Code zu kreieren ist nicht meine Absicht, maximal Ansätze dazu. Mathematische und logische Ansätze sind denk ich eher angebracht
grüße
Lesezeichen