PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cyberdriver2 - mobiler autonomer Wohnungs-Roboter



robodriver
20.12.2007, 23:36
Halli hallo liebe Roboterfreunde,

hier möchte ich euch heute mal meinen Cyberdriver2 vorstellen. Er ist zwar noch nicht fertig, hat aber einen fertigen zwischen-Stand erreicht :)

End-Ziel des ganzen Projektes ist es das mir dieser Bot mal die Wohnung kejrt und aus der Küche (eigene Station) Getränke und Snaks bringt und noch einer weiteren Ausbaustufe evtl. auf Knopfdruck Gäste begrüßt. Nunja, bis dahin ist es aber noch ein ganzes Stück...

Zunächst mal -um fragen vorab zu klären- warum das ganze cyberdriver "2" heißt:
Ganz einfach: Ich habe mit Cyberdriver angefangen. Allerdings bin ich mit dem ersten Konzept nicht weit gekommen. Desshalb habe ich dann nochmal bei komplett Null angefangen. Und desshalb heißt das Ding jetzt Cyberdriver2 ;)

Doch leider stellte sich heraus das sich auch mit diesem Konzept das End-Ziel nich erreichen lässt. Aber ich bin ein ganzes Stück weiter gekommen als mit dem ersten... Dieses zwischen-ziel möchte ich euch hier nun Präsentieren.

Alles was der Bot bis jetzt kann ist folgendes:
- Alles wird über eine DVD-IR-Fernbedienung gesteuert
- Menüsteuerung mit 16x2 Display Ausgabe
- Manuelles fahren in alle Richtungen über Fernbedienung
- Raumtemperatur messen
- Akkuspannung messen
- analoge Abstandsmessung an allen Sensoren bis ca. 15cm Abstand
- Unterschiedliche Fahrgeschwindigkeiten wählbar
- autonomes rum fahren im Zimmer ohne irgendwo anzustoßen

Dem letzteren Punkt möchte ich mich hier am meisten widmen. Die anderen Punkte kann man auch (noch nicht ganz vollständig) auf www.cyberdriver2.de.vu nachlesen.

Nun also zu dem Autonomen umher fahren:
hier seht ihr ein paar Videos die ich gemacht habe:
www.cyberdriver2.de.vu/video.htm
(bitte von oben nach unten durcharbeiten und ansehen)

Für alle die sich für Hindergrund wissen und Funktionsweise interessieren lesen bitte hier weiter:


Das Video "Vor dem Umbau" ist nicht etwa der erste Cyberdriver, sondern auch Cyberdriver2. Aber ich habe mein gesamtes Steuerungssystem nochmal überdacht.
Anfangs lief es wie folgt ab:
3Controller:
-(1)Display
-(2)Motoren
-(3)Sensoren
-(4)IR-Fernbedienungsauswertung

Controller 2 u. 3 konnten über I²C-Bus Daten auf dem Display anzeigen lassen (Flureszensdisplay mit bis zu 8 Zeichen, eigener Treiber)

Controller 4 hat Daten über einen parallelen 4-Bit-Code an controller 2 gesender, der auch die Menüsteuerung beinhaltete.

Beim automatischen Fahren hat Controller 2 die Motoren direkt über PWM angesteuert. Wenn ein Hindernis kam, hat Controller 3 ein Interrupt ausgelöst und dann über serielle 4-Bit Codes dem Controller 2 gesagt wos lang geht und wie dieser fahren soll. Also z.B. "zurück" "links" usw...

Wenn dann der Controller 3 gesagt hat, das alles wieder okay ist, hat der Controller 2 wieder die volle Kontrolle übernommen.


Soweit so gut. Diese Interrupt-steuerung führt zum Stocken und bis dann der 4-Bit Code übertragen war dauerte das nochmal länger... Die Wartezeiten sind verhältnismäßig lang wie man auf dem Video sehen kann...



So und nun zum neuen Steuerungs-Konzept:
Dabei gibt es jetzt 3Controller:
- (1) Display & IR-Empfänger & Haupt-Controller
- (2) Motor-Controller
- (3) Sensor-Controller

Alle 3 Controller sind über I²C verbunden. Und das ist schon alles ;)
An sich funktioniert das nun so:
Controller 1 sagt dem 2. "vor wärts fahren".
Wenn nun ein Hinderniss kommt sagt (3) an (2) "Sofort anhalten". Direkt danach sagt (3) an (1) wo ein Hindernis erkannt wurde. Darauf hin entscheidet (1) was zu tun ist und gibt entsprechende Fahrbefehle an (2)

Der Bus läuft mit 250kHz und dadurch läuft alles eigentlich schon schnell und flüssig.


So, und nun noch ein Paar Worte zu den fallenden Entscheidungen:
Es gibt 4 Sensoren:
- (vl) vorne links
- (vr) vorne rechts
- (hl) hinten links
- (hr) hinten rechts

- wenn vl schaltet wird nach rechts ausgewischen
- wenn vr schaltet wird nach links ausgewischen
- wenn hl oder hr schaltet dann fährt er ein kurzes Stück vor und dreht dann ca. 90° nach rechts und fährt weiter
- wenn 3x abwechseln vl und vr innerhalb eines bestimmten Zeitfensters schalten, dann fährt er zurück und dreht ca. 90° nach rechts

Der letzte Punkt ist die klassische erkennung das er sich in einer Ecke fest gefahren hat. Der vorletzte Punkt führt zwangsläufig auch zu einem herausfinden aus einer Ecke.

Okay, wer noch mehr dazu wissen will, kann gerne nachfragen.



Ansonsten danke ich allen dies geschafft haben bis hier her zu lesen ;)
Und würde mich über Anmerkungen/Anregungen oder allgemeine Meinungen sehr freuen.

Gruß Robodriver

HannoHupmann
21.12.2007, 12:54
Das Projekt hätte besser in die Rubrik :"Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots" gepasst, da es noch lange nicht fertig ist.
Abgesehen davon ist es wieder diese eklige Trivialaufgabe. Ich stelle mir dann immer so nen fetten Typ vor der nimmer vom Sofa runter kommt und nen Roboter braucht damit er sich weiter mit fettigen Snaks versorgen kann. Deswegen hasse ich diese Aufgabenstellung auch. Abgesehen davon ist sie auch extrem kompliziert. Den ein Roboter der das können soll müsste erst mal frei in der Wohnung fahren können, d.h. Teppichkanten und Hindernissen ausweichen (soweit bist ja schon, was schon mal gar nicht schlecht ist). Danach kommt einer der härtesten Teile, navigation in der Wohnung. Der Weg zwischen dir und der Küche und zurück muss so genau sein, dass er nirgends hängen bleibt (vermutlicht wird man sonst eh wieder aufstehen müssen). In der Küche müssen die Snacks erkannt und aufgenommen werden (entweder auf einen dedizierten Platz oder sonst wie), dazu braucht es nen hinreichend genau genugen Arm und Sensorik (Positionierung vor dem Snackzeug etc. Dann wieder zurück und jetzt noch möglichst lange Standby zeiten etc. die Aufgaben sind wirklich gigantische, deswegen gibt es auch noch keine Lösungen.

Wenn es übrigens nur um die Aufgabenstellung geht, dann ist es einfacher und schneller einen Hund zu trainieren (gibts auch schon) die sind zuverlässiger und einfacher (die Kosten dürften etwa gleich sein, der Zeitaufwand für Hund und Roboter ähnlich).
Aber ich hoffe es geht nur um Basteln und daher ist alles in bester Ordnung.

PS: Natürlich ist das eine Aufgabe die bei den ganzen Laien mit ihrer bescheuerten: "und was kann der dann?" Frage wirklich jede Errungenschaft zunichte machen können! (ich würde denen am liebsten jedesmal an die Gurgel springen).

robodriver
21.12.2007, 14:23
Hm, nun gut da kann man sich streiten.
Der erste Teil des Projektes ist ja FERTIG. Desshalb habe ich das ganze in diese Rubrik rein gesetzt ;)
Erste Aufgabe war ja das (sinnlose) umherfahren ohne irgendwo an zu ecken. So und das Ziel ist erreicht. Und das wollt ich hier vorstellen und eure Meinungen dazu hören.

Im Punkt um Snaks und Getränke: Der Bot soll dann eine eigene Station bekommen wo das zeugs alles in Fächern drinne ist. Bzw. flüssigkeiten in einem Behälter mit Ventil unten dran.
Bot fährt in die Station rein --> Station belädt ihn, wie gewünscht --> Bot fährt zurück.

Dieses Ziel ist aber nur so ein Ziel alla "die Umsetzung reizt mich" Aber einen richtig nutzen wird das ganze nie finden. Desshalb überlege ich noch ob ich das vielleicht auch sein lass. Ich will mich als erstes mehr auf das Zimemr keheren konzentrieren.

Ja, mir ist bewusst das ich da in die Navigation hinein komme.
Der Bot bekommt noch 2 gescheite Radencoder. Dann einen großen Speicher in den ich eine Map von meiner Wohnung rein schreiben werde mit Angaben über Wände und grobe Gegenstände wie z.B. Schränke, Couch, Bett und so.
Meine Wohnung ist zum glück komplett mit PVC ausgelegt ;)

Synchronisieren der Koordinaten soll er durch folgende Punkte:
- Startpunkt an einer festen Station im Wohnzimmer.
- Inkrementales Fortbewegen und zwischendurch synchronisiert er sich dann durch die z.B. festen Gegenstände.

Also z.B.: Wenn er ins Schlafzimmer fahren soll, dann fährt er erstmal dort hin und fährt in dem Zimmer dann zwei Wände an x und y und gleicht somit dann kleine Abweichungen durch Encoderfehler bzw. Rechenfehler aus.
Und wenn was unerwartetes im Weg ist, dann schreibt er sich das temporär in die Karte und fährt drum rum.

Aber darum geht es hier jetzt noch gar nicht. Das ist alles noch zukunftsmusik.
Hir geht es ja erstmal um den jetzigen Stand. Die Ausweichroutine und die Logik die dahinter steckt.

Gruß Robodriver

toemchen
27.12.2007, 22:55
Wenn Deine Wohnung komplett mit PVC ausgelegt ist, kannst Du Dich immerhin getrost an die Aufgabe "flüssiges Zeug spazierenfahren" heranwagen. Auch Blumengießen mit krassem danebenpritscheln in der Entwicklungsphase könnte ein Betätigungsfeld sein.

Hanno scheint mir ab und zu Stimmungstiefs zu haben. Nicht den Mut verlieren, wenn man es abkriegt!

Gruß
Tom

robodriver
27.12.2007, 23:21
Ja, wundert mich, das hier kaum einer was schreibt.

Ich dachte man kann noch bisserl über den aktuellen Stand diskutieren.
Über die Umsetzung der Ausweichroutine. Vorteile/Nachteile oder andere Möglickeiten/Ideen...

HannoHupmann
28.12.2007, 15:48
@toemchen :-)
Ganz so schlimm es nicht ich weis nur immer gerne die Grenzen auf die ich persönlich sehe und wer sich schon von meinem "Stimmungstief" entmutigen lässt, der kommt eh nicht weit ;-)