Worum es hier geht

Dieses Blog dokumentiert Fortschritte und Rückschläge der Entwicklung meines ersten Roboterprojektes. Ich habe dem Projekt den Namen vehikel[eins] gegeben - mit mehr oder weniger Hintersinn. Das Vehikel ist als fahrender Roboter konzipiert, der sich mittels einer Kamera visuell orientieren können soll. Die eigentliche Bildverarbeitung findet auf einem PC statt, der Roboter wird deshalb per Funk mit einem Computer in Verbindung stehen. Ich verkneife mir, allzu übermütige Pläne darüber zu schmieden, was im Detail mein Vehikel später visuell leisten können soll. Ich bin in erster Linie von der Idee eines Systems fasziniert, das mit Hilfe selbst gewonnener visueller Informationen in der realen Welt halbwegs sinnvoll agiert - mit der Welt interagiert. Alles noch etwas undurchsichtig? Ja... :)

Der aktuelle Stand

Ich habe das Projekt in drei Etappen aufgeteilt. Die erste Etappe bestand in der mechanischen Realisierung einer motorisierten Plattform für alle späteren Aufbauten. Diese Etappe wurde erfolgreich abgeschlossen. Daraus hervorgegangen ist ein dreirädriges Vehikel, dessen zwei Vorderräder unabhängig über ein Getriebe von jeweils einem Schrittmotor angetrieben werden. Das Hinterrad stellt sich passiv auf die aktuelle Bewegungsrichtung ein. In der zweiten Etappe des Projektes ging es darum, die Elektronik des Vehikels und der Basisstation zu entwickeln. Auch wenn ich noch an Details arbeite, ist diese Etappe in dem Sinne abgeschlossen, dass die gesteckten Ziele erreicht wurden. Der zentrale Mikrocontroller des Vehikels ist ein ATMEL AVR Mega32, die Firmware dafür entwickle ich mit der BASCOM IDE von MCS. Die Schrittmotoren werden durch eine Treiberelektronik auf Basis der Bausteine L297 und L298 angesteuert. Eine Funkverbindung zwischen Vehikel und PC wird mittels eines dazu entwickelten Interfaces hergestellt, das bidirektional mit dem PC über RS-232, mit dem Vehikel per Funk im 433 MHz Band kommuniziert. Die Funkstrecke wurde auf Grundlage der RFM12 Module von HopeRF realisiert. Vorne auf dem Vehikel ist eine mittels Servo bewegliche Funkkamera installiert. Die Kamera unterhält eine eigene Funkstrecke mit ihrem Empfängermodul, das mit PC-Interface und Netzteil die Basisstation bildet. Die am Vehikel befindliche Sensorik kann je nach konkretem Versuch variieren, zur Zeit ist vorne ein SRF05 Ultraschallmodul als Echolot installiert, an den Seiten vorne und hinten befinden sich Infrarot-Abstandssensoren. Die dritte Etappe ist diejenige, die für mich die unberechenbarste ist (aber deshalb auch besonders spannend), denn dabei steht die Implementierung eins visuellen Verhaltens im Mittelpunkt. Mittlerweile habe ich die ersten kleinen "Erfolge" in diesem Bereich zu verzeichnen.

Zum Aufbau dieser Seite


Unterhalb dieses Abschnittes sind die Tagebucheinträge chronologisch angeordnet, der aktuellste steht oben. Es werden nur die jeweils jüngsten acht Einträge auf dieser Seite angezeigt, ältere kann man an ihrem unteren Ende aufrufen. Man kann einen Eintrag kommentieren, in dem man auf "comments" unter dem entsprechenden Posting klickt.

Donnerstag, 28. Juni 2007

Zwei Schritte vor, einen zurück...

Der Akku, zwei Ladebuchsen und ein Schalter sind eingebaut. Dazu ist nun nicht viel zu sagen: der Schalter (1 x Um) schaltet je nach Stellung den Pluspol des Akkus entweder auf die Elektronik oder auf die rote Ladebuchse, der Akkuminuspol liegt parallel auf dem Minuspol der Elektronik und der schwarzen Ladebuchse. Damit setzt der Schalter in einer Stellung die Elektronik unter Strom, schaltet das Vehikel also ein. In der anderen Stellung ist die Elektronik ausgeschaltet, dafür kann dann der Akku über die Buchsen geladen werden, ohne dass er aus dem Vehikel herausgenommen werden muss. So weit, so unproblematisch.
Probleme habe ich mit dem Antrieb. Die ersten Tests verliefen nicht so beglückend. Erst drehten die nur geklemmten Motorachsen in den Klemmbuchsen der Räder durch, nachdem ich das im Griff hatte, zeigte sich, dass das Drehmoment der Motoren sehr hart an der Grenze für den jetzigen Aufbau ist. Zwar fährt das Vehikel ganz ordentlich über glatten Boden, sobald aber kleine Hindernisse auftauchen oder aber der Boden "ungünstiger" wird (z. B. Teppich), bleibt das Vehikel zeitweise stehen und fängt an zu zappeln, weil die Motoren ihre Schritte nicht sauber durchführen können. Und wenn Dinge so in der Grauzone zwischen gut und schlecht rumeiern, neige ich im allgemeinen dazu, sie als "schlecht" zu disqualifizieren. So auch hier. Und das heißt dann: noch mal von vorne. Ich werde den gleichen Motortyp noch mal verwenden (ich bestelle allerdings neue, sie kosten ja fast nix), dabei diesmal aber über eine Untersetzung auf das Rad gehen. Das bedeutet, dass ich zwei kleine Getriebe anfertigen muss. Genaueres weiß ich noch nicht. Kommt Zeit, kommt Rad... äh... Rat.

Donnerstag, 21. Juni 2007

Hinterrad, Version Zweipunktnull

Jetzt ist das neue Hinterrad endlich montiert. Das Prinzip ist das gleiche wie bei der vorigen Version: an der Akkuwanne (ich nenne diesen Teil des Chassis jetzt mal so...) ist zunächst eine Auslegerplatte montiert. Ich habe dafür Aluminium von drei Millimetern Stärke verwendet, damit es nicht zu Instabilitäten kommt. Die Platte ist mit Messingklötzchen befestigt, wie ich sie auch schon bei der Akkuwanne eingesetzt habe (s.u.). In der Auslegerplatte befindet sich ein präzises Loch, in dem sich der Schaft einer Schaftschraube leichtgängig drehen kann - dieses stellt die Lagerung der Gabel dar. Der Gewindeteil der Schaftschraube greift in einen PVC-Block, an dem zwei Aluminiumschenkel befestigt sind und somit die Gabel bilden, in der das Hinterrad gelagert ist. Bei dieser Version sind die Schenkel deutlicher gegen den Lagerpunkt der Gabel verschoben als bei der Vorversion. Relativ zum Chassis liegt der Lagerpunkt übrigens so, dass das Rad seine Orientierung um 360° ändern kann, ohne ans Chassis anzuecken.
Die Realisierung des Hinterrades könnte dem einen oder anderen als kleiner Tipp dienen. Ich habe als Rad eine Andruckrolle aus einem alten Drucker verwendet, gleichartige Rollen habe ich schon in diversen Druckern gesehen, sie sollten also leicht zu bekommen sein. Sie haben zunächst mal den Vorteil, dass sie materialbedingt eine gute Bodenhaftung aufweisen. Meistens sind sie auf sehr präzise – aber zöllige – Achsen aufgepresst, in diesem Falle war es eine 7,93 mm dicke Achse (gemessen, ich war bisher zu faul nachzusehen, was das "nominal" für ein Maß ist). Das Loch in der Rolle hat somit auch einen Durchmesser von knapp unter acht Millimetern. Ich habe dieses Loch nun mit einer präzisen Maschinenreibahle auf 8 mm aufgerieben. Durch eine minimale Menge Fett läuft das Rad dadurch nun ganz hervorragend auf der 7,93 mm Achse. Also habe ich mir ein Stück von der Achse abgesägt, die Enden abgedreht und mit Bohrungen versehen. Somit hatte ich ein hervorragend gelagertes Hinterrad. Das kurze Stück Achse, zu erkennen auf dem letzten Bild, sitzt fest zwischen den Schenkeln der Gabel. Anlaufscheiben rechts und links verhindern, dass das Rad durch die Gabel gebremst wird.
Auf die Auslegerplatte habe ich nun auch schon mal die Motortreiberplatine montiert, die Befestigung für die – ebenfalls noch nicht vorhandene – Hauptplatine steht noch aus.
Außerdem habe ich die Akkuwanne auch noch etwas gekürzt, damit das Vehikel nicht allzu lang wird, es ist jetzt schon etwas größer geworden, als ich geplant hatte.
Achja, so ganz ausdrücklich hatte ich es ja noch garnicht gesagt: das Hinterrad funktioniert jetzt sehr zufriedenstellend, es richtitet sich immer brav auf die aktuelle Fahrtrichtung aus. Schön.


Samstag, 16. Juni 2007

Ein Satz mit x...

... das war wohl nix. Wie die Bilder zeigen, habe ich die Hinterradaufhängung mittlerweile fertiggestellt. Das einzige Problem dabei: die Sache funktioniert nicht. Wie man insbesondere auf dem rechten Bild sehen kann, habe ich die Drehachse der Gabel (gebildet von der Schaftschraube, deren Kopf man auf der Auslegerplatte erkennen kann) und die Drehachse des Rades gegeneinander verschoben (genaugenommen 10 mm) . Die Idee dabei war, dass das Rad sich dadurch besser auf eine neue Fahrtrichtung des Vehikels einstellen kann. Genau das funktioniert aber nicht, sprich: die 10 mm sind augenscheinlich zu wenig. Wenn ich das Hinterrad per Hand um 90° gegen die Fahrzeuglängsachse verdrehe und danach das Vehikel dann geradeaus ziehe, stellt sich das Rad nicht wieder auf die Fahrzeuglängsachse ein, sondern verharrt in seiner 90°-Stellung und radiert über den Boden. Unschön. Die Lagerung der Gabelachse ist zwar nicht perfekt, aber nicht so schlecht, dass das Problem dort seine Ursache hätte. Es liegt also ziemlich sicher an dem zu geringen o. g. Versatz.
Ich werde das Ganze jetzt noch mal aufbauen und dabei die Drehachsen des Rades und der Gabel noch weiter auseinanderziehen, außerdem werde ich ein kleineres Rad verwenden – mal sehen ob’s hilft. Dann an die Arbeit...


Mittwoch, 13. Juni 2007

Das vierte Rad am Wagen...

Nachdem ich mich gedanklich noch mal mit den Hinterrädern meines Vehikels auseinandergesetzt habe, bin ich zu dem Entschluss gekommen, hinten doch nur ein Rad vorzusehen - das dann natürlich mittig zum Fahrzeug angeordnet sein wird. Ich glaube nämlich mittlerweile, dass zwei unabhängig aufgehängte Hinterräder nur dann einwandfrei funktionieren würden, wenn sie auch einzeln gefedert sind. Sind sie starr aufgehängt, können geringe Unebenheit des Bodens dazu führen, dass das Rad mit schlechterer Bodenhaftung anfängt zu „schlackern“ (zu beobachten an jedem durchschnittlichen Einkaufswagen). In gewissem Maße federn zwar die Reifen, aber ich bin mir nicht sicher, ob das genügen würde, um dem Effekt vorzubeugen. Und da es mir vorerst zu aufwendig erscheint, für jedes Rad eine eigene Federung zu realisieren, werde ich das Vehikel jetzt als Dreirad aufbauen. Somit haben alle Räder immer Bodenkontakt - zumindest solange sich das Ding nicht auf die Seite oder den Rücken gelegt hat. Dieses halte ich aber für einigermaßen unwahrscheinlich, weil das Fahrwerk vorne relativ "breitbeinig" aufgebaut ist und zusätzlich der Schwerpunkt sehr tief liegt.

Donnerstag, 7. Juni 2007

Schrittmotorsteuerung

Es ging nicht sonderlich gut voran, aber immerhin ist heute die Platine zur Ansteuerung der Schrittmotoren fertig geworden. Technisch gesehen ist die Schaltung "klassisch": ich verwende für die Motoren jeweils einen L297 und L298, die Beschaltung enspricht dabei im wesentlichen dem Vorschlag aus dem Datenblatt. Man hätte die Ansteuerung natürlich auch einfacher (und platzsparender) aufbauen können, diese Variante hat aber doch einge Vorteile. Die Motoren werden stromgesteuert betrieben, was sich positiv auf das Drehmoment auswirkt. Außerdem kann ich durch setzen von einzelnen Pins einfach die Richtung und Halb-/ Vollschrittbetrieb ändern. Auch das Auslösen eines Schrittes ist softwareseitig so über einen einzelnen Pin möglich. Das alles wird den Programmieraufwand für die Ansteuerung erheblich mindern.
Auf dieser Platine befindet neben den Motortreibern ein Spannungsregler, der den 5 V-Kreis für die Digitaltechnik speist. Da mein Akku nur 7,2 V liefert, habe ich einen L4940V5 verwendet, der hat eine Dropout-Spannung von max. 500 mV. Er liefert bis 1,5 A - was für die Elektronik (hoffentlich) genügen wird. Die Schrittmotoren hängen ohnehin direkt im 7,2 V-Kreis.
Wie man wohl nicht zuletzt an der etwas abenteuerlichen Anordnung der Stromsensor-Widerstände sieht, ging es mir darum, die Schaltung möglichst kompakt aufzubauen. Das machte das Verdrahten teilweise etwas anspruchsvoller, aber im Endeffekt ist es halbwegs gelungen.
Der Grund dafür, diese Platine von der (noch nicht vorhandenen) Hauptplatine zu trennen, ist, dass ich diese Baugruppe unter allen Umständen für dieses Chassis benötige, während ich den Rest variabel gestalten kann - evnt. werde ich die Hauptplatine auswechselbar machen, dann könnte ich unterschiedliche Projekte mit dem Chassis aufbauen.
Die Schnittstelle zur Hauptplatine fehlt im Moment noch. Ich weiss noch nicht genau, ob ich da ein Flachbandkabel verwende oder ein Stecksystem - mal sehen...

Malte Ahlers 2007-2008