Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

projektesose18:par_kingpublic:start

Dokumentation

Themenbeschreibung

Der vierrädrige Roboter, der in einer simulierten Strasse eine Parklücke auf der rechten Seite erkennen soll um dann in diese parallel einzuparken. Der Roboter erkennt dann also die Maße der Parklücke und soll dann die nötigen Bewegungen ausführen.

Umsetzung

Überblick

Aufbau

Der Roboter fährt mit einem Hinterradantrieb und hat eine Vorderachse die zum lenken benutzt werden kann. Der Antrieb führ die Hinterräder erfolgt mit jeweils einem Motor pro Rad.

Abbildung 1: Modell ohne Beschriftung
Abbildung 2: Modell mit Beschriftung
Bauteile und Pinbesetzung

Bauteile:

  • 4 Ultraschallsensoren (1 mal hy-srf05, 3 mal hy-srf04)
  • 2 Stepper
  • 2 Treiber (Pololu A4988)
  • Servo
  • Lithiumbatterie
  • 2 Kugellager
  • Metallstäbe für die Achse

Die Anordnug der elektronischen Bauteile ist in Abbildung 3 sichtbar. Es spiegelt allerdings nicht die raümliche Verteilung wieder. Einige Verbindungen sind nicht optimal sichtbar, dabei hilft die Tabelle 1.


Abbildung 3: Fritzing Schema des Schaltkreises



Tabelle 1: Pinbesetzung
Funktion Pin Farbe
Right Stepper Step A2 grau
Right Stepper Dir A3 grün
Left Stepper Step A4 grau
Left Stepper Dir A5 grün
Echo Back Sensor 4 weiß
Trig Back Sensor 5 gelb
Echo Right Back Sensor 6 weiß
Trig Right Back Sensor 7 gelb
Echo Right Front Sensor 8 weiß
Trig Right Front Sensor 9 gelb
Echo Front Sensor 10 weiß
Trig Front Sensor 11 gelb
Servo ansteuern 12 orange
externe Stromzufuhr VIN rot
5V 5V rot
GND GND schwarz
Problemstellungen

Aufgaben zu lösen:
* Roboter bauen
* spezifisch funktionierende Achse un Lenkung baue
* Parklücke erkennen
* Maße der Parklücke erkennen
* Einparken

Ausgeklammert:
* variabler Aufbau der simulierten Strasse
* andere Parkmanöver als rechts parallel rückwärts
* „schlauer“ Algoritmus zum einparken der die Position im raum berechnet

Lenkung

Vorderachse:

Die Vorderachse ist an sich eine Aluminiumstange, welche mit Kabelbinder mit dem Servo an der Unterseite des Roboters angeschraubt ist. Die Räder wurden am Ende der Stange befestigt. Drehen konnte sich die Achse nun zwischen den Kabelbindern. Je nachdem welcher Winkel der Servo ansteuert, bewegt sich die Achse in die gewünschte Position. Kurz nach Fertigstellung der Konstruktion bemerkten wir Schwierigkeiten bei der Lenkung. Wir hatten einen kaputten Servo verbaut, der sich zwar bewegte,aber für die Bewegung der zu schweren Achse nicht geeignet war, weswegen wir ihn gegen einen Neuen austauschten. Eben jener hatte jedoch das Problem, den Winkel zu schnell anzusteuern, wodurch die schwerfällige Achse mit nur einem Kontaktpunkt (Servo) bei dem Lenkvorgang zu zittern anfing. Die hohe Reibung bei der Achse behinderte zusätzlich und uns wurde eine neue Radaufhängung mittels Kugellager vorgeschlagen. Nach längeren Fahrten wurde uns die Achse zu ungenau, weil sie ihre mittige Position nicht genau halten konnte. Deshalb wurde sie noch mit Heißkleber am Servo befestigt und damit sich die Räder weiterhin drehen konnten, setzten wir die Idee mit den Kugellagern um (Abbildung 4).

Abbildung 4: Vorderachse nach Verbesserung
Radaufhängung:

Die neue Radaufhängung ist ein Kugellager auf beiden Seiten (Abbildung 5), fixiert mit Kabelbinder und Heißkleber an beiden Enden der Achse. Die Räder stecken im Lager und es entsteht im Gegensatz zu vorherigen Konstruktion kaum Reibung. Dadurch konnte das Zittern ein wenig reduziert werden. Wir versuchten das Problem weiterhin mit einer anderen Funktion programmatisch zu lösen, jedoch brachte es wenig. Die neue Funktion ermöglichte es Winkel mit einer größeren Präzision anzusteuern, sodass keine großen Winkelsprünge mehr auftraten. Somit wollten wir eine flüssigere Bewegung erreichen, was uns jedoch mißlang. Die Steppermotoren, welche aufgrund des Zitterns weniger effizient arbeiten konnten, wurden entlastet und der ganze Roboter konnte sich schneller fortbewegen. Die fehlende Reibung war ohnehin ein Pluspunkt.

Abbildung 5: Radaufhängung

Antrieb

Der Roboter wird durch zwei Steppermotoren angetrieben. Jeder Motor ist mit einem Rad verbunden. Um eine flüssige Bewegung zu erreichen werden beide Motoren in kurzen Abständen abwechselnd angesteuert. Das Ansteuern erfolgt über die Treiber und über eine eigene Bibiothek. Der Grund für das Erstellen einer eigenen Bibliothek ist, dass die existirende unzuverlässig funktioniert hat. Ein Problem war zum Beispiel die Ausführung einer festen Anzahl an Steps. Um den Roboter eine bestimmte Distanz fahren zu lassen, wird anhand des Radius des Rades und der Anzahl an Steps pro Umdrehung ausgerechnet wie viele Steps ausgeführt werden müssen (wobei immer abgerundet wird).

Parkvorgang

Allgemein ist der Parkvorgang so konzipiert, dass es keine genaue Ausmessung des Raumes und Berechnung der Position in diesem gibt. Viel mehr wird nur die ausreichende Länge und Tiefe der Parklücke festgestellt und anschließend werden Kollisionen anhand der Ultraschallsensoren vermieden. Hierbei ist anzumerken, dass ein noch offener Punkt das Testen der Präzision der Sensoren für unsere Anwendungen fehlt. Praktische Tests haben gezeigt, dass Kollisionen vermieden können aber bei der Vermessung der Parklücke hat wurde dann eine nicht zu vernachlässigende Unpräzision deutlich. Konkret ist der Roboter zu Beginn der Parksequenz mit dem hinteren Ende auf der gleichen Höhe wie das vordere Ende derParklücke. Dann werden die Räder ganz eingeschlagen und der Roboter fährt soweit es geht rückwärts in die Parklücke. Ist nicht mehr genug Platz um nach hinten zu fahren, werden die Räder in die andere Richtung gedreht, der Roboter fährt geradeaus und richtet sich damit richtig in der Parklücke aus. Uns fehlt noch ein Algorithmus um kleinere Korrekturzüge am Ende des Parkvorgangs zu fahren. Das Testen unseres Algorithmus war uns leider nicht möglich da die unzuverlässige Lenkung ab dem zweiten Schritt (Räder eingeschlagen) störend ist.

Fazit

Der Roboter ist weitestgehend fertig geworden. Bis auf die problematische Lenkung kann er eigenständig fahren, Hindernisse erkennen und Zusammenstöße vermeiden. Selbst das Anfahren an die Parklücke, bestehend aus zwei Kartons, und das Platzieren an die optimale Ausgangsstellung waren im praktischen Test kein Problem. Beim Einlenken scheiterte es dann doch. Als Verbesserungsmöglichkeiten hatten wir neben einer besseren Lösung für eine Lenkung, welche weiterhin mit 4 Rädern arbeitet (siehe bsp an herkömmlichen Autos), noch die Idee, dass sich der Roboter eigenständig im Raum nach Lücken umschaut und auch mehrere Parksituationen meistern sollte. Sei es quer parken oder wie in einer Einbahnstraße auf der anderen Seite. Wir müssen mit Bedauern feststellen, dass der Roboter als unfertig bezeichnet werden muss und das Projekt damit gescheitert ist.

Code

Der Code befindet sich hier

projektesose18/par_kingpublic/start.txt · Zuletzt geändert: 2018/11/09 10:53 von d.golovko