Zonda ist ein propellergetriebenes autonomes Fahrzeug. Es ist als Experimentierplattform gedacht und soll helfen, Erfahrungen bei der Entwicklung einer autonomer Steuerung zu sammeln. Bevor ich Software für das autonome Flugzeug Flobo entwickele, kann ich so bereits am Boden Fehler ausbügeln, die später in der Luft vielleicht teure Folgen hätten.

Gerendertes CAD-Modell

Aufbau

Das Fahrzeug besteht aus Sperrholz und Holzleisten und ist mit Balsaholz verkleidet. Es ist lackiert bzw. mit Bügelfolie bespannt. Der Antrieb ist ein Speed-Gear 700, der einen Propeller antreibt. Auch das Fahrwerk ist wie bei einem Modellflugzeug – hinten zwei Räder über 4mm Federstahl aufgehängt und vorn ein lenkbares Bugrad, das über einen Servo gesteuert ist.

Sensoren und Steuerung

Bis jetzt ist der einzige aktive Sensor das GPS. Dabei handelt es sich um ein SAM-LS Modul von u-Blox, das eine Update-Rate von 4 Hz erreicht (erfolgreicher Test sogar mit 5 Hz). Weiterhin habe ich eine IMU und ein Windrad eingebaut, deren Daten aber noch nicht verarbeitet werden. Geplant ist weiterhin der Einbau des Ultraschall-Sensors.

Zonda kann per Fernsteuerung gesteuert werden. Zur Umschaltung zwischen autonomen Modus und Fernsteuerung benutze ich den selbstgebauten Servoswitch. Die autonome Steuerung wird durch das Gumstix-Modul übernommen. Dieses wertet die GPS-Daten aus und regelt den Bugrad-Servo und den Fahrtregler. Weiterhin überwacht es die Spannung der eigenen Stromversorgung sowie der RC-Anlage. Die Sensoren sind per serieller Schnittstelle bzw. I2C-Bus angebunden. Eine serielle Schnittstelle ist nach aussen geführt, so dass der Gumstix per Notebook programmiert werden kann.

Vor dem Test

Software

Die Steuerung besteht aus einem einfachen C-Programm. Dieses liest Anweisungen aus einer Routen-Datei und arbeitet sie schrittweise ab. Das Programm öffnet am Anfang die Verbindung zu GPS, I2C-Schnittstelle, Logfile und Anweisungsdatei. Wenn ein ausreichender GPS-Empfang (min. 5 Satelliten) sichergestellt ist, beginnt die eigentliche Verarbeitung. Bei jedem eintreffenden GPS-Datensatz wird die aktuelle Position mit der Zielposition verglichen. Abhängig von der Geschwindigkeit wird dann das Bugrad angesteuert. Die Geschwindigkeitsregelung steuert den Fahrtregler anhand einer vorgegebenen Geschwindigkeit. Alle eintreffenden Sensordaten und wichtige Rechenergebnisse werden eine Logdatei gespeichert, welche zu Hause mit einem entspr. Programm ausgewertet werden kann.

speed 6
goto 49.81397 8.76039
goto 49.81400 8.76013
speed 10
goto 49.81430 8.76069
speed 8
goto 49.81460 8.76125
stop 

Beispiel für eine Routen-Datei

Testläufe

Der erste Testlauf war sehr überraschend. Das Fahrzeug fuhr nicht auf den vorgegebenen Zielpunkt zu, sondern von ihm weg. Bei der Analyse des Sourcecodes stellte sich heraus, dass die Richtungssteuerung einen Vorzeichenfehler hatte. Nachdem das Problem abgestellt war, gab es erste Erfolge bei der Ansteuerung von Zielpunkten. Jedoch traten neue Probleme auf:

Es stellte sich heraus, dass die Regelstrecke von GPS-Messung über Propellerdrehzahl bis zur Beschleunigung des Fahrzeugs eine relativ große Totzeit besitzt. Die anfangs verwendete PID-Regelung für die Geschwindigkeit kam damit nur sehr schlecht klar. Nachdem sie das Fahrzeug kurz beschleunigte, drosselte sie die Propellerdrehzahl kurz vor Erreichen der Zielgeschwindigkeit bis fast auf Null, was das Fahrzeug wieder abbremste. Die nun verwendete PI-Regelung regelt etwas besser, aber die verwendeten Parameter sind noch lange nicht optimal.

Anfangs habe ich die Zielkoordinaten per Google-Earth ermittelt. Bei den Testfahrten stellte sich aber heraus, dass diese Koordinaten um 12 Meter vom wirklichen Punkt versetzt sind. Auf die scheinbare Genauigkeit von Google-Earth sollte man sich also nicht verlassen und immer vor Ort nochmal nachmessen.

Die Genauigkeit der GPS-Position war bei bisherigen Tests immer ausreichend und wich nicht mehr als ein paar Meter ab. Allerdings kam es bei einem Test vermutlich zum kurzzeitigen Ausfall des GPS-Moduls, so dass der Controller keine Daten mehr empfing. Die Software war somit blockiert und konnte nicht regeln. Das führte dazu, dass das Fahrzeug weit über den Zielpunkt hinausfuhr und per Fernsteuerung angehalten werden musste. Dieses Problem muss nun mit einer nicht blockierenden GPS-Schnittstelle behoben werden.

Programmierung im Feld
Downloadzonda05.dxf3D CAD-Modell
autodrive.cAutodrive-Sourcen