Der QDC geht in die zweite Runde. Software!

Der Nano-Quadrocopter geht in die zweite Runde

(Die erste Runde findet ihr hier).

Nach langer Wartezeit gibt es jetzt endlich mal wieder ein paar Updates und sogar erste Codeschnippsel. Ich muss leidvoll gestehen, dass ich nur sehr langsam an diesem Projekt weiterkomme, aber was mittlerweile daraus geworden ist, seht ihr hier.

Tja, eine Diplomarbeit zu schreiben benötigt viel Zeit und Aufmerksamkeit. Deshalb geht es mit meinen anderen Projekten nur sehr langsam voran. Aber ich habe vor einigen Wochen Verstärkung bekommen! Ja, das glaubt man kaum, aber ich arbeite mittlerweile mit Harald Sattler zusammen, der selbst an einem Quadrocopter-Projekt bastelt. Durch ihn hat mein Projekt neuen Schub bekommen, weshalb ich euch meine Fortschritte zeigen möchte. Harald arbeitet mit einem ähnlichen Setup. Er verwendet ebenfalls einen XMega32 Prozessor, seine Schaltung ist größtenteils identisch (bis auf Pinbelegung) zu meiner Schaltung, deshalb bietet es sich an, an einem gemeinsamen Code zu schreiben. Doch alles Schritt für Schritt.

Zuerst einmal etwas zur Benutzeroberfläche, mit der man meinen Quadrocopter einstellen und wichtige Daten sichtbar machen lassen kann. Die Benutzeroberfläche wurde für Mac OS X in Cocoa – eine spezielle Programmiersprache für die Oberflächen von Mac OS X – von mir geschrieben. Der Quadrocopter kommuniziert mit diesem Programm über eine serielle Schnittstelle, beispielsweise über einen USB-To-Seriell-Adapter oder über einen Arduino. Auf Befehl des Programms sendet der Quadrocopter entweder die aktuellen Winkel- oder bestimmte Debugwerte und trägt sie in einem Diagramm gegen die Zeitachse ab. Damit ist eine sehr gute Datenkontrolle möglich und man sieht ganz genau, was auf dem Quadrocopter gerade so passiert.

Die Oberfläche ist an sich selbsterklärend. Es gibt einen Bereich wo die vom Quadrocopter empfangene Daten abgetragen werden und einen Bereich wo man neue Daten eintragen kann, um sie an den Quadrocopter zu schicken. Diese Daten können zum Beispiel bestimmte Konfigurationswerte für die PID-Regelschleife sein. Außerdem lassen sich über die Benutzeroberfläche die Motoren starten oder ausschalten, falls das aus irgendwelchen Gründen nötig sein sollte.

Den Code der Benutzeroberfläche habe ich hier veröffentlicht. Natürlich ist er mit Vorsicht zu genießen. Es ist noch nicht die endgültige Version und im Laufe der Entwicklung kann sich vielleicht noch einiges ändern. Zum Beispiel das Format des Datenstromes möchte ich bei Gelegenheit noch anpassen. Bis jetzt werden einzelne Datensätze als Ascii-Werte, die mit Kommas oder Strichpunkt voneinander getrennt sind, an die serielle Schnittstelle geschickt und vom Programm als String eingelesen. Ein Algorithmus trennt die einzelnen Datensätze voneinander und konvertiert sie wieder in Integer oder Double Werte. Das ist nicht sehr elegant und kann bestimmt irgendwie optimiert werden. Aber das hat denke ich noch Zeit. Zuerst sind andere Sachen wichtiger. Wen die Hintergründe genauer interessieren, sollte den Code herunterladen und darin stöbern. Die Routinen, die die Kommunikation zur serielle Schnittstelle bereitstellen, sind von einem anderen Projekt (ORSSerialPort) kopiert.

Zu meinem Quadrocopter selber kann ich euch schon einmal diesen Code als Vorabversion präsentieren: xNQ_QDC. Wie gesagt, ist dieser Code in Zusammenarbeit mit Harald Sattler entstanden und eine Portierung der Multi-Wii-Firmware. Durch die Adaptierung an den XMega Prozessor geht einiges an Funktionalität der Multi-Wii-Firmware verloren, aber das meiste wird für meinen (und auch für Haralds) Quadrocopter nicht benötigt. Falls ihr beabsichtigt diesen Code zu verwenden denkt daran, dass womöglich einige Port Zuordnungen oder Timer an euer Projekt angepasst werden müssen. Noch ein Hinweis: Die Codeteile für meinen Quadrocopter (können mit #define QDCMK ausgewählt werden) funktionieren noch nicht alle. Die Codeteile von Haralds Quadrocopter (#define xNQ) funktionieren allerdings schon sehr gut, er konnte mit diese Code schon fliegen. Außerdem ist diese Firmware Version nicht mit der oben beschriebenen graphischen Benutzeroberfläche für Mac OS X kompatibel, sondern mit der GUI der Multi-Wii-Software, die hier zu finden ist.

Update 25. September 2014:

Das ganze Projekt ist seit neuestem auch auf meiner Github-Seite zu finden: QDC_MK1_Quadrocopter

Es wurden in den letzten Tagen einige Änderungen am bestehenden Code vorgenommen, z.B. wurde der unverständliche PID-Algorithmus der MultiWii-Firmware durch einen eigenen Algorithmus ausgetauscht. Obwohl nun Fließkomma-Berechnungen vom Mikrokontroller durchgeführt werden müssen, ändert sich die Geschwindigkeit der PID-Schleife nicht. Im Gegenteil, die Schleifenfrequenz beträgt nun satte 800Hz! Desweiteren werden die Winkel anders berechnet und die Filterung der Daten geschieht nun durch einen Kalman Filter. Insgesamt ist der Code nun (hoffentlich) besser verständlich und klarer strukturiert als der ursprüngliche MultiWii-Code. Die ersten Flugversuche fallen ebenfalls sehr positiv aus.

Hier geht es weiter in die dritte Runde.

Veröffentlicht am Januar 31, 2014 in Elektronik, Software des Nano Quadrocopters und mit , , , , , , getaggt. Setze ein Lesezeichen auf den Permalink. Hinterlasse einen Kommentar.

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: