Arduino Autopilot Flugzeug

Hallo,

Ich habe mal überlegt, ob es möglich wäre mit einem Arduino Nano einen voll funktionsfähigen Autopiloten für ein Flugzeug zu bauen.

Dabei wäre das Ziel, dass der Flieger sich natürlich selbstständig stabilisiert und eine bestimmte Route abfliegt. Am Ende soll er dann alleine Landen.

Jetzt bin ich mir allerdings nicht zu 100% sicher welche Komponenten ich dafür benötige, und ob der Arduino überhaupt leistungsstark genug ist um all die Aufgaben zu erledigen.

Ich würde jetzt diese Komponenten verwenden:

  • Arduino Nano (aufgrund des geringen Platzes im Rumpf des Flugzeugs)

  • Drei Achsen Gyroscope für die Stabilisierung im Flug

  • NEO 6M GPS Modul zum abfliegen einer Flugroute. Hier weiß ich allerdings nicht, wo der Unterschied zwischen dem roten und dem blauen liegt?

Zudem habe ich gelesen, dass man sich wohl nicht zu 100% auf die Genauigkeit vom GPS verlassen kann. Das wäre allerdings vor allem bei der Landung ein Problem. Daher habe ich überlegt, ob man während des Fluges die Entfernung zum Boden messen kann. Dabei befürchte ich nur das Problem, dass das aufgrund der Geschwindigkeit nicht so einfach wird. Sonst hätte ich an eine Ultraschallmessung gedacht: Ultraschall Sensor

Falls das funktionieren sollte, ist es dann auch möglich, dass der Arduino die Daten sammelt und man diese später auf dem PC auslesen kann? Dann könnte man Testflüge machen, wobei man schon mal die benötigten Daten sammel kann. Funktioniert so etwas mit einem SD Karten Leser?

Falls sich jemand hier etwas genauer mit dem Bauteilen auskennt wäre es super, wenn ich eine grobe Abschätzung bekommen könnte, ob das Projekt im allgemeinen funktionieren könnte.

Viele Grüße,
Tilo

ttaus:
... ob der Arduino überhaupt leistungsstark genug ist um all die Aufgaben zu erledigen.

Ein Arduino ist für sehr viele Dinge schnell genug. Wenn er es nicht zu sein scheint, liegt das meistens an der Programmierung. Die Wahl der Sensoren hat ebenfalls einen großen Einfluss. Wenn Du viele Aufgaben quasi gleichzeitig erledigen möchtest, ist ein „endlicher Automat“ oft ein erfolgversprechender Ansatz. Vielleicht hilft mein Getexte dazu.

Gruß

Gregor

Für die Höhenmessung kannst du einen Luftdruckmesser in Betracht ziehen.
So macht es z.B. auch DJI bei ihren Drohnen...

Grüsse
Peter

Meines wissens ist in Deutschland autonomes fliegen verboten.
Nur auf Sicht und außerhalb der Flugverbotszohnen, privaten Grundstücken, oberhalb Leuten und Leutenansammlungen ecc
Braucht es auch eine Versicherung?
Grüße Uwe

someone83:
Für die Höhenmessung kannst du einen Luftdruckmesser in Betracht ziehen.
So macht es z.B. auch DJI bei ihren Drohnen...

Ist ein eigener Luftdruckmesser genauer wie der des GPS Moduls?

Der wesentliche Unterschied bei der Drohne und dem Flugzeug ist die Art der Landung. Bei einer Drohne wird die Höhe einfach so lange verringert, bis sie auf dem Boden steht. Bei dem Flugzeug muss die Geschwindigkeit bei ca. 15-20 cm so lange abgebaut werden, bis der Flieger landet. Dabei müsste er am besten die Höhe über der aktuellen Position kennen. Daher hatte ich an eine Abstandsmessung gedacht, da man dann ab dem Moment wenn sie den Boden erkennt die Landeeinteilung steuern könnte.

Daher wäre es interessant, ob die Ultraschallsensoren den Abstand auch bei einer etwas höheren Horizontalbewegung zuverlässig messen können.

uwefed:
Meines wissens ist in Deutschland autonomes fliegen verboten.
Nur auf Sicht und außerhalb der Flugverbotszohnen, privaten Grundstücken, oberhalb Leuten und Leutenansammlungen ecc
Braucht es auch eine Versicherung?
Grüße Uwe

Ich würde meinen Empfänger im Flugzeug verbaut lassen, sodass die Kontrolle über einen Schalter wieder bei der Fernbedienung liegt. Fliege damit auch auf einen zugelassenen Modellflugplatz.
Daher sollte das eigentlich kein Problem darstellen.

Ja, ein Barometer ist einiges genauer als GPS.

someone83:
Ja, ein Barometer ist einiges genauer als GPS.

Ok dann werde ich das denke ich mal versuchen. Kann der Arduino die Werte dann über ein SD Modul auf eine SD Karte übertragen, sodass sie später ausgelesen werden können, oder hat er dafür möglicherweise sogar einen internen Speicher?

Ist ein eigener Luftdruckmesser genauer wie der des GPS Moduls?

Mit Luftdruck kommst Du auf 10cm; mit GPS auf 50m.
Grüße Uwe

Hi

Funktioniert LIDAR/ToF bei 'paralleler Verschiebung'?
(Laser-Entfernungsmessung, Erkennung der Phasenverschiebung)
Die ganz billigen ToF-Sensoren können zwischen wenige Zentimeter und 2 Meter erfassen (die 2m aber nur in einem speziellem Modus, langsam/dunkel oder so).

MfG

uwefed:
Mit Luftdruck kommst Du auf 10cm; mit GPS auf 50m.
Grüße Uwe

Kannst du mir da sensoren Nennen, mit denn man etwa diese Genauigkeit erreichen kann? Das wäre wieder mal ein Sensor den ich mir zu Testzwecken holen möchte.

Servus
Franz

Hallo,
ich hatte die Sache mit einem Autopiloten für einen Flächenmodellflieger auch vor ein paar Jahren verfolgt, ist aber zwischenzeitlich zum Stillstand gekommen und wird ggf. im Frühjahr wieder reaktiviert.
Hierein paar Infos:

  • Die Abstandsmessung zum Boden mit US-Wandlern ist schwierig (da üblicherweise rauer, schlecht reflektierender Untergrund), und war bei laufenden Motoren unmöglich.
    Höhenmesser sind deutlich genauer als GPS-Sensoren, haben aber auch eine Drift, und sind daher für die Landungen auch nicht sicher. Zumindest nicht meine BMP085. Evtl. war es ein Staudruckproblem im Inneren des Rumpfes, das zu leichtem Offset der Messungen führte, es reicht hier ja schon ein Hauch um ein paar Meter Höhendiffferenz vorzutäuschen.

  • Ich wollte es mal mit einer Art selbstgebautem Differential-GPS versuchen: Ein GPS am Boden als Landebarke, und ein gleichartiges im Flugzeug mit einer gesonderten Funkverbindung kommunizierend. Aber ob man da die relevanten 0,2 m Höhenauflösung hinbekommt halte ich für fraglich.

  • Eine andere Art der Abstandsmessung wären Time-of-flight sensoren, die auf IR-Basis mittlerweile günstig zu bekommen sind. In Räumen zuhause messen sie gut, wie es draußen in Bewegung über eine Wiese aussieht, werde ich im Frühjahr mal testen. Ich glaube das Problem ist hier mehr die raue Oberfläche einer Wiese und die Erkennung der reflektierten Strahlen im Sonnenschein, weniger die Bewegung. Licht ist halt dioch recht schnell. ToF Sensoren gibt es mittlerweile sehr preisgünstig aus China.

  • Speichern der Daten auf SD-Karte geht gut, und halte ich speziell für den Anfang für unbedingt empfehlenswert, um sich überhaupt mal seine geloggten Sensorwerte anzuschauen. Aber generell ist der Arduino Nano limitiert mit Speicherplatz. Die ganzen Bibliotheken für SD-karte, GPS, Servos, Empfängerauslesen, evtl. Anzeige etc. braucht viel Platz. Ich wollte damals dann auf einen Teensy umsteigen, aus Preisgründen würde ich mich jetzt wohl für einen ESP32 entscheiden.

  • Das Ausregeln der Fluglage per PID-Regler war schlechter bzw. als urprünglich angenommen, wohl aufgrund des Sensorrauschens. Hier sollte man sich mit Kalmanfiltern auseinandersetzen (war ich bisher zu faul). Gyrodrift und Rauschen der Beschleunigungssensoren müssen halt berücksichtigt werden, einfach nur ausmitteln reicht nicht.

  • Magnetometerdaten zur absoluten Richtungsbestimmung waren gestört aufgrund der hohen Motorströme

  • Es ist ansonsten hilfreich, beim entsprechenden Empfänger direkt ein serielles Summensignal der Servos auszulesen, als diese für die einzelnen Kanäle einzeln zu bestimmen. Der Jitter wird dann wesentlich besser.

Falls es Dir da mehr ums fliegen als ums Basteln geht: Es gibt mehrere Flightcontroller die hauptsächlich im Multikopterbereich eingesetzt werden, die aber teilweise wohl auch für Flächenflieger einsetzbar sind.

Tütenflieger

War doppelt
Franz

Hallo,

Das sind ja schon mal ein paar nützliche Tipps. Vielen Dank dafür. Das mit dem rauen Untergrund ist auch ein Problem. Das könnte das ganze Thema mit dem Ultraschall natürlich ein wenig stören.
Aber sieht es mit Lichtschranken wirklich so schlecht aus? Wenn man z.B. ein Lichtschranke wie zum Beispiel diese: Lichtschranke nehmen würde, dann sollte der Untergrund doch keine ganz so große Rolle mehr spielen oder täusche ich mich da?

Ich hatte mir überlegt den Sensor unter einer Fläche zu befestigen und dann erst in geringer Bodennähe die Werte zu beachten. Ich meine über 50cm Höhe ist der genaue Abstand ja nicht so entscheidet und mit sinkender Höhe, nimmt ja auch die Distanz zum Boden ab. Damit sollte ja dann die Genauigkeit zunehmen.

Die Motorströme könnte ich bei meinen ersten Test außer Acht lassen, da ich vorhabe den Autopiloten in meinen kleinen Motorsegler einzubauen. Dieser hat keine großen Ströme und ich meine vor allem bei der Landung wo die Genauigkeit interessant wird läuft der Motor ja im Normalfall auf Leerlauf und sollte daher wenig Strom verbrauchen, oder ist das immernoch zu viel?

Zu dem Thema Speicher: Wenn du das alles (GDS; SD; ...) bereits gebaut hast, kannst du dann ungefähr sagen, wie es mit dem Speicher dabei aussieht? Also grob in Prozent.

Zum Schluss: Es geht mir dabei weniger ums Fliegen, da ich sie auch selber fliegen kann. Es würde mich einfach mal interessieren, wie gut man einen Autopiloten mit Arduino umsetzen kann.

Grüße
Tilo

Tuetenflieger:
Hallo,
ich hatte die Sache mit einem Autopiloten für einen Flächenmodellflieger auch vor ein paar Jahren verfolgt, ist aber zwischenzeitlich zum Stillstand gekommen und wird ggf. im Frühjahr wieder reaktiviert.
Hierein paar Infos:

  • Die Abstandsmessung zum Boden mit US-Wandlern ist schwierig (da üblicherweise rauer, schlecht reflektierender Untergrund), und war bei laufenden Motoren unmöglich.
    Höhenmesser sind deutlich genauer als GPS-Sensoren, haben aber auch eine Drift, und sind daher für die Landungen auch nicht sicher. Zumindest nicht meine BMP085. Evtl. war es ein Staudruckproblem im Inneren des Rumpfes, das zu leichtem Offset der Messungen führte, es reicht hier ja schon ein Hauch um ein paar Meter Höhendiffferenz vorzutäuschen.

...

Falls es Dir da mehr ums fliegen als ums Basteln geht: Es gibt mehrere Flightcontroller die hauptsächlich im Multikopterbereich eingesetzt werden, die aber teilweise wohl auch für Flächenflieger einsetzbar sind.

Tütenflieger

Das ganze gibt's schon fertig und nennt sich Arducopter..

Benötigt allerdings einen mega2560.. da gibt es auch schon fertige Boards bei eBay.

Atmega328p gibt's multiwii..Glaube GPS und Sensoren sind immer schwierig.

Franz54:
Kannst du mir da sensoren Nennen, mit denn man etwa diese Genauigkeit erreichen kann? Das wäre wieder mal ein Sensor den ich mir zu Testzwecken holen möchte.

Servus
Franz

MS5611

Hallo Tilo,
zu

Aber sieht es mit Lichtschranken wirklich so schlecht aus? Wenn man z.B. ein Lichtschranke wie zum Beispiel diese:
Lichtschranke nehmen würde, dann sollte der Untergrund doch keine ganz so große Rolle mehr spielen oder täusche ich mich da?

Wenn dort 80cm Reichweite angegeben wird, gilt das sicher für gute Bedingungen, nicht für eine sonnenbeschienene Wiese. Beim Landeanflug solltest Du m.E. in 1,5 - 2m Höhe recht sicher wissen, wie hoch du bist, um einen Abfangbogen zu starten. Wenn ein Höhenmesser erst in 50cm Höhe ein brauchbares Signal abliefert, halte ich das für zu spät.
Mit den niedrigeren Motorströmen beim Landen hast Du Recht, ich lande zur Schonung der Luftschrauben mit stehenden Motor. Komme trotzdem immer zum geplanten Landepunkt ;^). Aber Du wolltest ja nicht nur einen Autolandepilot, sondern einen Auto(flug)pilot, so wie ich den Ursprungstopic verstand. Und es fließen nun mal einige Ampere beim Fliegen.

Zum Speicher beim Nano weiß ich nur noch, daß ich ein 4*20 LCD Display, PID Regler für 3 Achsen, EEPROM lesen und schreiben sowie serielle Auslesen und die Servoansteuerung draufbekam. Aber dann keine Bibliothek mehr für eine SD-Karte drauf passte. Ich musste mich immer zwischen loggen oder Anzeigen & Regeln entscheiden. GPS hatte ich beim Fliegen damals noch nicht aktiviert.
Eine Anzeige war wichtig, um Flugparameter vor Ort einstellen zu können, einfach Potis für die PID Komponenten, und Anzeige auf dem LCD.
Mit besseren Programmierkenntnissen und Ausmisten der Bibliotheken kann man dem sicher begegnen, ist aber weder meine Kragenweite, noch mein Begehr. Aber ein ESP32 oder STM32 ist halt saubillig, und Speicher wird kein Problem mehr sein.

Einer meiner letzten Pläne vor der langen Pause war ein Verbund zweiter Nanos, wovon einer für Anzeige und Datenlogging verantwortlich gewesen wäre, und ein zweiter für die Sensorenverarbeitung und Regelung. Habe das aber nicht weiter verfolgt, da dies jeweils eine wichtige serielle Schnittstelle nur für die Interprozessor-Kommunikation verschwendet hätte. Wäre aber programmiertechnisch interessant gewesen.

Tütenflieger

Schuppeste:
Das ganze gibt's schon fertig und nennt sich Arducopter..

Benötigt allerdings einen mega2560.. da gibt es auch schon fertige Boards bei eBay.

Atmega328p gibt's multiwii..Glaube GPS und Sensoren sind immer schwierig.

Ich hab noch einen Arducopter rumliegen falls Interesse besteht, müsste glaub ich Version 2.5 sein. Der kann eigentlich schon alles was du vorhast auch den Autopiloten inklusive Landung. Hab ich allerdings nur mal mit einem Octokopter getestet, aber in der Software kann angegeben werden ob es sich um ein Fahrzeug, Flugzeug oder ein Kopter handelt. Oder willst du die Software unbedingt selbst schreiben?

uwefed:
MS5611

Danke

Tuetenflieger:
Hallo Tilo,
zu Wenn dort 80cm Reichweite angegeben wird, gilt das sicher für gute Bedingungen, nicht für eine sonnenbeschienene Wiese. Beim Landeanflug solltest Du m.E. in 1,5 - 2m Höhe recht sicher wissen, wie hoch du bist, um einen Abfangbogen zu starten. Wenn ein Höhenmesser erst in 50cm Höhe ein brauchbares Signal abliefert, halte ich das für zu spät.
Mit den niedrigeren Motorströmen beim Landen hast Du Recht, ich lande zur Schonung der Luftschrauben mit stehenden Motor. Komme trotzdem immer zum geplanten Landepunkt ;^). Aber Du wolltest ja nicht nur einen Autolandepilot, sondern einen Auto(flug)pilot, so wie ich den Ursprungstopic verstand. Und es fließen nun mal einige Ampere beim Fliegen.

Zum Speicher beim Nano weiß ich nur noch, daß ich ein 4*20 LCD Display, PID Regler für 3 Achsen, EEPROM lesen und schreiben sowie serielle Auslesen und die Servoansteuerung draufbekam. Aber dann keine Bibliothek mehr für eine SD-Karte drauf passte. Ich musste mich immer zwischen loggen oder Anzeigen & Regeln entscheiden. GPS hatte ich beim Fliegen damals noch nicht aktiviert.
Eine Anzeige war wichtig, um Flugparameter vor Ort einstellen zu können, einfach Potis für die PID Komponenten, und Anzeige auf dem LCD.
Mit besseren Programmierkenntnissen und Ausmisten der Bibliotheken kann man dem sicher begegnen, ist aber weder meine Kragenweite, noch mein Begehr. Aber ein ESP32 oder STM32 ist halt saubillig, und Speicher wird kein Problem mehr sein.

Einer meiner letzten Pläne vor der langen Pause war ein Verbund zweiter Nanos, wovon einer für Anzeige und Datenlogging verantwortlich gewesen wäre, und ein zweiter für die Sensorenverarbeitung und Regelung. Habe das aber nicht weiter verfolgt, da dies jeweils eine wichtige serielle Schnittstelle nur für die Interprozessor-Kommunikation verschwendet hätte. Wäre aber programmiertechnisch interessant gewesen.

Tütenflieger

Hallo,

mit den 50cm habe ich mich auf den finalen Part der Landung bezogen. Wenn man zu dem Optischen/Akustischen Sensor noch einen Luftdrucksensor einbaut, kann der Luftdrucksensor die Höhe ja auf +- 10cm angeben. Damit kann man die Landekurve bereits beginnen. Ab 50 cm kann dann der andere Sensor das Abfangen übernehmen.
So die Theorie. Ich habe leider noch nicht mit Luftdrucksensoren bzw. Distanzsensoren gearbeitet und kann daher nur schwer abschätzen wie es draußen funktionieren wird. Um das zu ändern werde ich mir einfach mal einen Luftdruck- und Distanzsensor besorgen um das auszuprobieren. Vielleicht kommt ja was brauchbares raus.

Zu dem Fliegen:

Das habe ich mir jetzt eigentlich als nicht so schwierig vorgestellt. Ich hätte jetzt einfach ein 3 Achsen Gyro eingebaut, welches dann die Bewegungen ausgleicht. Ich meinen bei den Drohnen und Heils funktioniert es ja auch. Zum Beispiel habe ich das Naza V2 an meiner F550 und ein Microbeast an meinem T-Rex 500. Die stabilisieren sowohl die Drohne als auch den Heli ohne Probleme und bei beiden fließt ein deutlich höherer Strom wie bei den Flugzeugen.

Also dachte ich das es irgendwie gehen wird. Aber das muss ich erst ausprobieren. Falls es wirklich selbst bei dem kleinen Motorsegler einen so großen Einfluss haben sollte, werde ich es erstmal in Segelstellung ausprobieren, bzw. den Flieger komplett im F-Schlepp starten. Dann sollten die Motorströme kein Problem mehr sein.

Wenn du all diese Bibliotheken auf den Nano bekommen hast, dann sollte er ja für den anfang auf jeden Fall reichen und mal ein paar Messungen durchzuführen und den Flieger später zu stabilisieren. Ich meine auch, dass ein Display einiges an Speicher und Rechenleistung braucht, also könnte man doch auch einsparen.

Die Idee die Leistungsfähigkeit durch einen zweiten Nano zu erhöhen halte ich für eine gute Idee. Wenn das funktioniert, dann kann man die Werte schonmal aufnehmen. Nachdem die Werte dann aufgenommen sind, benötigt man ja den zweiten auch nicht mehr.

Grüße
Tilo

Luftdrucksensoren ohne kalibrierung kommen nicht auf 1m Genauigkeit. Und kalibrieren musst du gegen ein Referenzsignal. Einfach nur einen Nullpunkt setzen vor dem Abheben und beim Landen auf diesen Nullpunkt beziehen funktioniert nicht.

10km Höhe entsprechen ungefähr 900mbar Differenz. 1 Millibar also ungefähr 11m. Eine Luftdruckänderung von 0,1mbar während deiner Flugzeit würde deinen Flieger also 1m zu hoch oder zu tief fliegen lassen, wäre aber in 20 Minuten Flugzeit sogar eher als wenig anzusehen. Könnte durchaus auch 0,5mbar sich ändern. Zu Hoch wäre ja noch verkraftbar. Aber ein IR-Sensor der erst bei 80cm anfängt zu messen und ein Luftdrucksensor der 1m zu wenig anzeigt heist, dein Flieger ist 20cm unter der Erde bevor dein IR zugeschaltet wird. Die meisten Handy haben einen Luftdrucksensor, test einfach mal wie genau die arbeiten und wie die Langzeitstabilität ist. Da lernt man viel über die Möglichkeiten und die Dinge die so nicht funktionieren.

Jedoch sind Laserentfernungsmesser weit besser als 80cm. Du solltest mal sowas suchen. Selbst billige Baumarkttechnik misst heute schon 20-30m mit 1mm Genauigkeit per Laserentfernungsmesser. Auch bei hellem Sonnenschein sollte also am 10m Höhe sowas funktionieren. Damit sollte eine Landung einfach möglich sein. Im Flug selbst muss man die absolute Höhe deutlich weniger beachten. Da darf man Toleranzen der Technik etwas ignorieren.