Das Infolexikon
...und Blog über die Uni FrankfurtInformatik und Kram
Da wir lange nicht wußten, wo wir das für die Uni ausgearbeitete Material unterbringen sollten und auch einen schrecklichen Drang hatten der Welt diverse Sachen aufzudrücken...
| w.e.i.r.d.o |
Wireless Explorating Intelligent Robot Dodging Obstacles
Hier stelle ich euch meinen Robo vor, jetzt in der 3. Version, die endlich funktionstüchtig ist!
Er lässt sich fernsteuern (per WLAN), oder fährt alleine im Explorer-Modus ( umfährt Hindernisse, fährt an Wänden entlang ). Da die Hardware erst vor kurzem fertig geworden ist, ist die Software noch nicht so ausgereift, das kommt aber noch!
Hier stelle ich euch meinen Robo vor, jetzt in der 3. Version, die endlich funktionstüchtig ist!
Er lässt sich fernsteuern (per WLAN), oder fährt alleine im Explorer-Modus ( umfährt Hindernisse, fährt an Wänden entlang ). Da die Hardware erst vor kurzem fertig geworden ist, ist die Software noch nicht so ausgereift, das kommt aber noch!
Überblick
Technische Daten
Aktuelle Programme
Fahrwerk
.Um auf der Stelle drehen zu können benutze ich zwei zentrierte Antriebsräder und Hilfsräder. Da das Budget für dieses Projekt ziemlich klein ist, musste ich leider auf einen Kettenantrieb verzichten.
Mit dieser Konstruktion bleibt der Roboter gerne mal an Kabeln oder höheren Teppichkanten hängen, aber hey, es ist momentan nur ein "proof of concept" :-)
.
.
.
Was man auf keinen Fall vergessen sollte ist das Entstören der Motoren. Es wirkt 1. dem Brushfire entgegen, was von den innenliegenden Bürsten verursacht wird (Funkenflug), und 2. fängt es Spannungsschwankungen ab, die die Elektronik beeinflussen könnten.
Elektronik
I²C-Bus
Der I2C-Bus war hier die erste Wahl, da man nur zwei Leitungen benötigt und eine Unmenge an Modulen in den Bus hängen und einzeln adressieren kann. Wichtig sind die PullUp-Widerstände zu VCC.Bei meinem Robo fungiert die Hauptplatine momentan als einziger Master, die restlichen Module hängen als Clients im Bus. (Nur der Master kann Verbindungen initiieren, und zur Zeit wird noch keine Rückmeldung von den Modulen erfordert). Weitere Infos zur Funktionsweise des I2C-Bus: Hier
Motor-Platine
Hier kommt ein L298 als Motortreiber zum Einsatz. Die Motoren werden getrennt angesteuert, der Atmega steuert deren Geschwindigkeit mit Pulsweitenmodulation. Als Schutz wurden zwei 2W-Widerstände gegen GND geschalten, sie begrenzen die Stromaufnahme des L298 auf 2A.Die Steuerkommandos werden von der Hauptplatine über I2C empfangen, mit der aktuellen Motor-Konfiguration sind 5 Geschwindigkeitsstufen implementiert. Da diese Platine ganz unten im "Turm" sitzt und die Motoren 3-6V Eingangsspannung verlangen, bietet es sich an, auf dieser Platine die Verbindung zum Akku herzustellen. So können zum einen die 7,2V des Akkus direkt an den Motortreiber weitergegeben werden, und mithilfe eines 7805-Spannungsreglers die nötigen 5V für die Atmegas und andere Elektronik geregelt werden.
LCD-Platine
Auch hier wieder ein Atmega8, der Kommandos per I2C empfängt und dementsprechend Debug-Meldungen und Messdaten auf dem LCD anzeigt. Hier kommt ein gewöhnliches 2-zeiliges Display mit HD44780-Controller zum Einsatz (im 4bit-Betrieb). Weitere Infos: LCDHaupt-Platine
Hier läuft alles zusammen. Sämtliche Bumper-/Sensor-/Remote-Leitungen sind an den Atmega8 angeschlossen, der sie verarbeitet und entsprechend die anderen Module steuert.Die Haupt-Platine ist ausserdem über eine serielle Schnittstelle mit einem WLAN-Router verbunden und kann so Statusmeldungen, Messwerte oder Debuginfos per WLAN an einen Client senden, oder Steuerkommandos von diesem erhalten.
WLAN-Router
Hier kommt ein modifizierter Fonera-Router zum Einsatz. In einem anderen Artikel habe ich bereits geschrieben, wie man den Router modifizieren kann, um eigene Programme (wie z.B. meinen selbstprogrammierten Robot-Server) darauf auszuführen und die Schnittstellen des Routers zu benutzen.Funk-Kamera
Zur Zeit benutze ich eine Funkkamera von Pollin, die zwar sehr gute Bilder überträgt, aber leider auch das WLAN-Signal unbrauchbar macht, so dass gleichzeitig Fernsteuern und Live-Bilder ankucken leider nicht möglich ist.Software
Die Software wird mit avr-gcc kompiliert und mit avr-dude übertragen. Als Programmer kommt ein usbprog zum Einsatz.Explorer
Im Prinzip ein sehr einfaches Program. Der Roboter fährt einfach los, überprüft periodisch die Werte, die er vom IR-Sensor empfängt. Sobald diese auf ein Hindernis in unmittelbarer Nähe hindeuten, dreht er entweder nach links oder rechts (mit je 50% Wahrscheinlichkeit), bis der Weg wieder frei ist und fährt weiter.Ferngesteuert
Hier spielen ein in C programmierter Server und ein python-client zusammen. Mit dem Client kann man sich per WLAN mit dem Roboter verbinden, Statusmeldungen empfangen, das Kamerabild ansehen und den Roboter steuern.Ausblick
Hardware
Software
Implementiert werden in nächster Zeit:Schlusswort
Ich bin dankbar für jeden Kommentar, der konstruktive Kritik, Anmerkungen oder Tips enthält!Update 11.11.2008: Ich habe mich dazu entschieden, die Entwicklung an weirdo einzustellen und mir stattdessen einen RP6 gekauft. Grund: Ich hab erkannt, dass meine persönlichen Möglichkeiten langsam erschöpft sind, und bis ich die oben genannten Hardware-Änderungen erfolgreich gebaut hätte, wären noch einige Euros und Zeit und Nerven draufgegangen.
| Erstellt | 5. November 2008 10:58:23 | Geändert | 11. November 2008 08:53:34 |
|---|---|---|---|
| Von | Tobias Weis | Kategorien | Technik Linux Robostuff |
| 1 Kommentar(e) | |||
Kommentare
Hier Chef, mach den doch mal irgendwie son bissi abschließender. Net einfach so, als wärs ein geiles Projekt und dann am Ende son Satz und fertig. Sind halt schon ein paar gute Ideen dabei, aber was is jetzt net gut gelaufen, was hat funktioniert. Wie hasst du die Kommunikation zwischen den Platinen gemacht, usw. Ich weiss, nervige Arbeit, besonders, wenn man nix mehr mit macht.




