-
-
Autonomer, kompakter Roboter zur Kartierung und Navigation
Vorab ein herzliches Hallo an Alle!
Ich lese die Beiträge dieses Forums seit mehreren Monaten. Die Robotik finde ich seit meiner Kindergartenzeit spannend. Der Film "Nr.5 lebt" war damals aktuell und hat mich sehr beschäftigt.
Einige eurer Tüfteleien haben mich motiviert, mich tiefer mit der Thematik zu beschäftigen und einen eigenen Roboter zu bauen bzw. diesen zu programmieren.
Ich finde es etwas schwierig meinen Beitrag in einem Thread (fertig/nicht fertig) einzuordnen, da ich mit dem Aufbau des Roboters recht weit bin. Zumindest denke ich, alle benötigten Komponenten verbaut zu haben. Nun steht die Implementierung eines größeren Gesamtkonzepts an, das sich in viele kleinere Bereiche unterteilt.
Während der Programmierung werden sicherlich Änderungen im Roboteraufbau von Nöten sein.
Nun aber zum Thema:
Ich werde die bereits durchgeführten Arbeits- und Entscheidungsschritte hier posten um andere Mitleser zu motivieren, eigene Roboter aufzubauen. Was meinen Roboter von den meisten Entwicklungen dieses Forums unterscheidet bzw. was ich bisher hier im Forum nicht gefunden habe ist der Umgang mit der Steuer- und Regelungstechnik.
Ich habe mich während der ersten Überlegungen ausdrücklich gegen die verbreiteten Mikrocontroller wie ATmega, Ardunio und Co. entschieden.
Ebenfalls will ich weder in C, C++, Assembler oder anderen hardwarenahen Programmiersprachen programmieren.
Ich habe verschiedene Meinungen zu der Netbook und "Echtzeit" Thematik gelesen. C in Verbindung mit Mikrocontrollern ist auch sehr schnell aber ich werde auf gängige PC Hardware, USB als Kommunikationsbus und Java als Programmiersprache setzen.
Die Konstruktion des Roboters soll es Erlauben, den verwendeten Rechner sowie das Fahrwerk einfach auszutauschen. Also nur ein USB Kabel zu Netbook und möglichst wenige Leitungen zwischen Elektronikträger (Holzplatte) und Fahrwerk.
Der grobe, dreistufige Aufbau ist der Folgende:
Bild hier
Für den Ablauf des Programmcodes ist ein typisches Netbook im Einsatz. In meinem Fall ein Dell Mini 9 (Inspiron 910) mit einem 1,6GHz Intel Atom, 2GB RAM und einer 16GB SSD. Das Gerät eignet sich softwareseitig da die drei verbreiten Betriebssysteme mit vertretbarem Aufwand funktionieren. Hardwareseitig ist der Einsatz auf einem "rüttelnden" Roboter kein Problem, da es eines der leichtesten Netbooks (in meinem Fall 1056g mit Akku) ist, einen geringen Energieumsatz hat und lüfterlos arbeitet. Die Solid State Disk bietet ausreichend Speicherplatz für Betriebssystem, persistentem Speicher des Programmcodes und Kartierungsdaten und sogar der kompletten Entwicklungsumgebung, Bürosoftware usw.
Zur Abfrage der Sensoren sowie die Ansteuerung der verbauten Servos und Fahrtenregler nutze ich ausschließlich Phidgets http://www.phidgets.com. Das Phidget Framework ist für Mac OS X, Linux und Windows verfügbar und kann mit vielen Programmiersprachen verwendet werden. Die Phidget I/O Boards lassen sich mit den dort vertriebenen (teils recht teuren) Sensoren verbinden, es ist aber auch beschrieben wie eigene Sensoren angeschlossen werden können.
Bild hier
Bild hier Bild hier
Für die Basisfunktionalität verwende ich folgende Bauteile:
1x Heng Long Leopard A2 3809 --- Günstiger Spielzeugpanzer als Basisfahrwerk. Gekauft 2005, schleppt sich bei Nutzung von einem Defekt zum Nächsten.
1x 1018 - PhidgetInterfaceKit 8/8/8 --- Bietet den Anschluss von vier reflektiven IR-Sensoren, zwei 80cm IR-Sensoren, zwei Drucktastern und ein paar Statusdioden. (Später kamen noch zwei Rollenkippschalter zur Drehzahlmessung hinzu)
4x 1103 - IR Reflective Sensor 10cm --- Zur Erkennung von Hindernissen (Kollisionsvermeidung) zwei an der Front, zwei am Heck.
2x 1101 - IR Distance Adapter --- Adapter zur Verwendung verschiedener IR-Senoren (z.B. Sharp GP2Y0A21YK0F, 2D120 F 9X und GP2Y0A02YK0F).
2x 3521 - Sharp Distance Sensor GP2Y0A21YK0F (10-80cm) --- Zur genaueren Distanzmessung per Infrarot (Triangulation).
1x 1061 - PhidgetAdvancedServo 8-Motor --- Erlaubt die Ansteuerung von 8 Servos. Ich nutze vier Anschlüsse für die vier unten gelisteten Servos und zwei Anschlüsse für elektronische Fahrtenregler.
4x 3000 - Hitec HS-322HD Standard Deluxe Servo --- Verbaut für zwei Sensortürme dabei zwei Servos für Karussell und zwei für die Schwingen. (Nennt man das allgemein Karussell?)
2x Elektronischer Fahrtenregler von Conrad --- Günstig, kompakt und für meine Ansprüche zur Ansteuerung der Elektromotoren ausreichend. http://www.conrad.de/ce/de/product/2...HOP_AREA_32305
Im Laufe des Projekts kamen weitere Komponenten hinzu. Ich liste sie hier, der Vollständigkeit halber, gehe aber erst später darauf genauer ein.
1x 1128 - Sonar Sensor --- Kompakter Ultraschallsensor zur groben Distanzmessung bis rund 6,5m.
2x 3052 - SSR Relay Board --- Zur Schaltung externer Stromkreise per Optokoppler. Ich verwende einen zum Ansteuern des Linienlasers.
1x 1059 - PhidgetAccelerometer 3-Axis --- 3-Achsen Beschleunigungssensor (ADXL330) mit USB-Anschluss.
1x 4-Port USB HUB --- Erlaubt die Verbindung des Computers mit den drei USB-Phdigets über ein einzelnes USB-Kabel.
1x Linienlaser --- Zur Umsetzung der Entfernungsmessung per Laserlinie
Bild hier
Für die Energieversorgung der Komponenten verwende ich einen 8 Zellen Akkublock, der mit sieben 2500mAh NiMH Mignon Akkus bestückt ist. Sieben Zellen, da die Fahrtenregler mit einer Maximalspannung von 8,4V angegeben sind. Ich hatte mal grob gerechnet, dass ich damit auf rund 2h Fahrzeit kommen sollte. Der Block versorgt die Antriebsmotoren, per BEC das AdvancedServoBoard und somit auch die Servos. Außerdem ist der Laser derzeit ebenfalls dort angeschlossen. Der gebrauchte Akku des Netbooks hält derzeit unter Last ähnlich lange durch.
Für die Funktionen des Roboters nehme ich mir in den nächsten 5-6 Monaten einiges vor:
* Selbstlokalisierung
- absolut durch Kartierung der Umgebung
- relativ per Odometrie und/oder Trägheitsnavigation (Nutzung des Beschleunigungssensors prüfen)
* flexible Nutzung der Sensoren
- Schwächen von Infrarot und Ultraschall kompensieren
- Testimplementierung eines Lasertriangulationsverfahrens
* Modulare Software Architektur
- Serveranwendung mit KI-Ansätzen, Wegfindung usw. für den Roboter
- Clientanwendung für den Fernzugriff auf den Roboter und dessen Parameter/Daten (Java Swing 2D, OpenGL 3D Visualisierung)
- Sensoren können ausfallen, Unregelmäßigkeiten erkannt werden, weitere Sensoren angeschlossen werden
- Datenstruktur zur Speicherung der Messwerte (Kartierungsdaten) als Punktwolke im 3D-Raum. (Texturen durch Webcam erfassen)
Bild hier Bild hier
Das war es erstmal von meiner Seite. Ich bin gespannt auf Fragen, Anregungen, Kommentare und hänge ein paar frühe Bilder an um den Entwicklungsverlauf der letzten Monate zu verdeutlichen. Im Laufe der nächsten Tage vervollständige ich den Thread weiter. Ich habe regelmäßig Videos aufgenommen und werde ich wohl nicht um einen Youtube Account rumkommen.. - wird nachgeliefert.
Gruß
Jan
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen