Vorwort:
Fragen usw bitte im Entwicklungs Thread (*klick*) stellen!
Dieses Projekt ist noch nicht abgeschlossen, möchte aber schon mal eine übersichtlichere Zusammenfassung erstellen. Also stay tune
Auch tue ich mich aktuell etwas schwer das doch sehr umfassende Projekt in gut übersichtlicher Reihenfolge zusammen zu tragen... Deshalb ist das Index erst noch leer bzw ändert sich von Zeit zu Zeit die Reinfolge der Beiträge usw... Ich arbeite dran
Das Recht der Veröffentlichung dieses Inhalts an anderen Orten im Internet, aber auch drucktechnisch, behalte ich mir ausnahmslos vor. Die Inhalte dürfen lediglich für private Zwecke verwendet werden.
Einleitung:
Ziel dieses Projekts ist es einen Autonomen Roboter zu erschaffen.
Der Roboter soll selbstständig umherfahren und die Umgebung erkunden, sowie Berechnungen anstellen um möglichst Effektiv zu einem Ziel zu gelangen. Also nicht jede Bewegung ferngesteuert werden sondern tatsächlich Autonom handeln und bewegen.
Es gibt aber auch ein cooles Web-Interface mit dem man das Gefährt auch manuell steuern kann - wem also die Autonomität zu kompliziert ist lässt das einfach weg
Index:
- [al=Features]Features[/al]
- [al=TechAblauf]Technischer Ablauf[/al]
- [al=Chassis]Chassis[/al]
- [al=Sensoren]Sensoren[/al]
- [al=OtherHW]Andere Hardware[/al]
- [al=PowerSupply]Stromversorgung[/al]
- [al=HardwareGamePlay]Hardware Zusammenspiel[/al]
- [al=Architecture_Overview]Aufbau Übersicht[/al]
- [al=SoftwareGamePlay]Software Zusammenspiel[/al]
- [al=SoftwareInstall]Software Installation[/al]
- [al=SoftwareBasics]Voraussetzungen auf dem PI[/al]
- [al=prepareWI]Vorbereitungen fürs Web-Interface[/al]
- [al=configWebServer]WebServer konfigurieren[/al]
- [al=Links]Links[/al]
[al=ChangeLog]ChangeLog[/al]
[an=Features](geplante oder bereits umgesetzte) Features:[/an]
- Modularer Aufbau:
Ein Hauptprogramm ('the Brain'). Optionale Nebenprogramme, wie z.B. Web-Interface etc.- Interne Kommunikation zwischen den Programmen mithilfe Socket's (wie bei ROS)
- Kommunikation zwischen RaspberryPI <-> Arduino über USB.
- Sofortige Verarbeitung neuer Daten/Befehle (dank threading)
- Web-Interface dient nur zur Kontrolle. Im Notfall kann aber auch eingegriffen werden oder der Roboter vollständig darüber gesteuert werden.
- Kommunikation zwischen Web-Interface und RaspberryPI über WebSocket (extra Script. interne Anbindung an Hauptprogramm via Socket). Dadurch kann das Web-Interface bzw der Webserver auch auf einem anderen Rechner im Netzwerk laufen.
- Kein ständiges neu laden der Webseite dank Javascript und WebSocket.
- RaspiCam auf Pan/Tilt mit eigenem Ultraschall Sensor. Kann ebenfalls im Web-Interface über Schieberegler gesteuert werden.
- Motor Geschwindigkeit pro Seite, oder alle zusammen über Schieberegler einstellbar.
- Ständiges aktualisieren (500ms) der Sensor- / Fahrt- Werte.
- GRID-MAP Aktualisierung bzw Anzeige.
- Kompass Anzeige.
- Verschiedene Mode's:
- Explore: Umgebung erkunden und Map erstellen.
- AutoDrive: Selbstständig durch Umgebung fahren um definiertes Ziel zu finden.
- Und natürlich auch manuelles steuern übers Web-Interface.
- Veränderbare Regeln die der Roboter nach einstellbaren Kriterien verändern kann.
- z.B. die Standardaktion beim erkennen eines Hindernisses zu verändern wenn diese 10x fehl schlug: Standardmäßig nach rechts zu fahren. Wenn sich herausstellt das rechts aber auch ständig ein Hindernis ist, kann der Roboter nach 10 Fehlversuchen die Regel auf "Standardmäßig nach Links" o.ä. ändern.
- Globale Regeln die der Roboter nicht verändern kann.
- z.B. nicht über Bereiche zu fahren die als "Abgrund" gekennzeichnet sind.
- Lokale und Globale Map.
- Die Lokale Grid-Map befindet sich im Speicher des Arduino's und wird stetig aktualisiert sowie an 'the Brain' übermittelt. Diese repräsentiert die aktuelle, unmittelbare Umgebung.
- Die Globale Grid-Map wird erst aktualisiert wenn Objekte bzw Wegpunkte 2x verifiziert wurden. Diese wächst dynamisch.
Außerdem wird wärend des AutoDrive Modes die Globale-Map zu Rate gezogen um sicher zu stellen keinen Fehler zu machen, wie z.B. ein Abgrund den der Arduino aber noch nicht kennt.
Bei der Verwendung von 2 Karten steigt die Genauigkeit, wie man zB auch hier nachlesen kann.
- Manuelle Anpassung der Globalen GRID-Map.
Um Räumen sowie Objekten einen Namen geben zu können, sowie Gefahrenbereiche wie "Abgrund" (grob) zu kennzeichnen. - Angabe eines Ziels durch GRID-Map.
- Wahlweise durch anklicken auf GRID-Map, oder als Sprachbefehle wie z.B. "Fahre ins Wohnzimmer unter den Esstisch".
Voraussetzung hierfür ist natürlich ein bereits benannter Raum sowie Objekt.
- Wahlweise durch anklicken auf GRID-Map, oder als Sprachbefehle wie z.B. "Fahre ins Wohnzimmer unter den Esstisch".
= Fertig/Vollständig umgesetzt.
= Noch nicht, oder nur teilweise, umgesetzt
[an="Links"]Weitere Links:[/an]
- Wegfindung / Path finding / Path planning:
Ein Projekt hier im Forum auf Basis des gleichen Chassis von 'Wolfgang Glück': Roboter auf Basis Rover-5 chassis
[an=ChangeLog]ChangeLog:[/an]