Minimalversion RTH für Segler (ohne Speedsensor - nur GPS, FC + SBUS-Empfänger) funktioniert

Willy

Well-known member
Beiträge
46
Hallo Zusammen,

ich habe inzwischen mehrere erfolgreiche Flüge mit einer bisher unveröffentlichten Beta-Version von ArduPlane gemacht, die einen wichtigen Bugfix enthält.
Dieser Bugfix ermöglicht es nun endlich, einen unmotorisierten Segler auch ohne Speedsensor erfolgreich mit RTH auszurüsten.
Es sind nur zwei bekannte Parameter einzustellen:
TECS_SYNAIRSPEED = 1
TECS_SPDWEIGHT = 2
So ausgerüstet fliegt der Segler ohne Rücksicht auf die vom System gewünschte Ziel-Höhe immer mit der eingestellten Trimmgeschwindigkeit und kommt (ohne Störung durch den Piloten ;o) nicht in den Stall.
Das bedeutet dann natürlich auch, dass der Segler beim RTH mit Trimmgeschwindigkeit kreist, bis er am Boden irgendwo hängen bleibt - aber was soll ein Segler sonst machen?
Falls Interesse besteht, die Beta (hab' ich leider nur für Matek F405-wing) zu testen, dann meldet euch bitte per PN.

Grüße
Willy
 

berny46

Well-known member
Beiträge
185
So ausgerüstet fliegt der Segler ohne Rücksicht auf die vom System gewünschte Ziel-Höhe immer mit der eingestellten Trimmgeschwindigkeit und kommt (ohne Störung durch den Piloten ;o) nicht in den Stall.

Woher weiß er eigentlich seine Geschwindigkeit ?
GPS Speed lifert doch nur die Geschwindigkeit über Grund.
 

Willy

Well-known member
Beiträge
46
@Reinhard: Von Zwischenversionen hab ich den Link auf den Branch zum selbst übersetzen, aber der aktuelle und durchschlagende Bugfix ist erst wenige Tage alt - davon hab ich bisher nur die apj für einen ersten Test - und der war ein durchschlagender Erfolg.
Der pull-request ist gesetzt, es wird aber wohl noch etwas länger dauern, bis der "Hauptentwickler" (Tridge) die Revision des Codes gemacht und diesen in die Hauptversion reingezogen hat.

@Berny: Mit TECS_SYNAIRSPEED = 1 wird eine synthetische Airspeed aus vielen Einflussfaktoren und Messgrößen gebildet, die in der Praxis sehr gut funktioniert (Aber Achtung, hier ist in den aktuellen offiziell verfügbaren Versionen ein Bug, der bei RTH oder LOITER mit einem reinen Segler zum Strömungsabriss führt!)
 

Jenny

Well-known member
Beiträge
107
Hallo Willy,

woran hat es denn gelegen, dass es vorher nicht ging?

Und, was passiert eigentlich, wenn mein Motorsegler keine Funkverbindung mehr hat? So wie es eingestellt ist, wird dann Failsafe ausgelöst, und damit RTH. Solange die Funkverbindung nicht wieder hergestellt werden kann, bleibt das Flugzeug im RTH und kreist auf der vorgegebenen Bahn.

Wenn der Akku langsam leer wird, wird irgendwann aus dem Motorsegler ein reiner Segler. Mit der alten Version muss er dann ja zwangsweise von diesem Bug betroffen sein. Wie verhält er sich mit der alten Version, und wie verhält er sich mit der neuen Version? Kreist er mit der neuen Version langsam zu Boden? Wenn er genug Aufwind hat, fliegt er dann solange in Kreisen, bis dem FC der Strom ausgeht und er dann gerade weiter fliegt?

Diese Fragen habe ich bisher aus Faulheit, aber mit schlechtem Gewissen ungelöst vor mir her geschoben, denn irgendwie hatte ich immer das Gefühl gehabt dass das auf Dauer nicht gut gehen kann, mit dem Kreisen. :unsure:

Schöne Grüße
Jenny
 

Willy

Well-known member
Beiträge
46
Hi Jenny,

das Problem war einfach ein Softwarefehler, der von mir beim Testen von ArduSoar-Beta-Versionen erkannt und detailliert beschrieben wurde und dadurch von einem Entwickler gefunden und behoben werden konnte.

Bisher ist es so, dass bei leerem Flugakku oder bei einem Segler ganz ohne Motor nach Unterschreiten der RTH-Höhe von ArduPilot Höhe gezogen wird und dadurch ein Stall nach dem anderen oder gleich Trudeln herbeigeführt wird -> was wohl nicht im Sinne des Erfinders ist ;)
 

berny46

Well-known member
Beiträge
185
Hallo Willy,
Ich habe bei einem Motorflieger der im RTH Modus Querruder gesteuert und so ist das Modell unter die RTH Höhe gekommen.
Sofort war die Fahrt weg und das Modell ist über einen Stall ins Trudeln steil abwärts geflogen. Bis zum Aufschlag.
Auf FBWA hat es auch nicht reagiert.

Kann das damit zusammenhängen ?
 

Jenny

Well-known member
Beiträge
107
Bisher ist es so, dass bei leerem Flugakku oder bei einem Segler ganz ohne Motor nach Unterschreiten der RTH-Höhe von ArduPilot Höhe gezogen wird und dadurch ein Stall nach dem anderen oder gleich Trudeln herbeigeführt wird -> was wohl nicht im Sinne des Erfinders ist ;)

Vielen Dank, Willy!

Das erklärt mir dann auch das Setzen der Parameter. Mit TECS_SYNAIRSPEED = 0 (= OFF) würde sich ohne Sensor wohl sowieso nicht fliegen lassen, das war und ist bestimmt der Standard und wird wohl nur der Sicherheit halber nochmal gesetzt.

Vielleicht war TECS_SPDWEIGHT auf 0, 1 oder irgendwo dazwischen geblieben, selbst wenn man es auf 2 gesetzt hatte, oder die Behandlung hatte nicht gestimmt gehabt. Wenn ich es richtig verstehe, sollte mit TECS_SPDWEIGHT = 2 der Motor angeschaltet werden wenn die Höhe nicht passt, aber niemals am Höhenruder gezogen werden.

Bei einem Motorsegler müsste dann also bei noch vollem Akku solange per Gas geben die Höhe gehalten werden, bis der Akku leer wird, und das Flugzeug sollte anschließend langsam absinken.

Es bleibt für mich also noch zu klären, was in folgenden Fällen passiert:
  1. Das Flugzeug gerät in heftigen Aufwind. Der Motor würde dann nicht anspringen (wozu auch), aber gibt es irgendwelche Mechanismen, um die zunehmende Höhe abzubauen?

    Diese Frage geht ein Bisschen in den Bereich der künstlichen Intelligenz, denn einen Segler in starkem Aufwind herunter zu bringen kann ja auch für Menschen schwierig werden. ArduPlane könnte das beispielsweise über Flaps, Crow Breaking, Slip oder sogar mit Loopings oder anderen komischen Flugmanövern versuchen, aber irgendwie glaube ich nicht dass so etwas schon eingebaut wurde. Falls doch, dann sollte wohl auch ein Parameter da sein, mit dem gesteuert wird, ab welcher Höhe mit dem Höhenabbau begonnen wird.

  2. Der Motor entleert den Akku so stark, dass die Spannung kurz darauf auch nicht mehr für den Betrieb des FC ausreicht. Ich muss herausfinden, ob es da irgendeinen Parameter gibt, mit dem sich steuern lässt, ab wann ArduPlane "aufgibt" und aufhört zu versuchen, das Flugzeug per Throttle oben zu behalten. Das könnte beispielsweise ein Spannungs-Cutoff sein oder ein Zeit-Cutoff sein, ich werde mal suchen.
P.S. Ich hab grad gelesen, dass das "Synthetic Air Speed" wohl doch noch etwas anderes ist. Per Standard ist es offenbar ausgeschaltet.
 
Zuletzt bearbeitet:

Jenny

Well-known member
Beiträge
107
Ich habe bei einem Motorflieger der im RTH Modus Querruder gesteuert und so ist das Modell unter die RTH Höhe gekommen.
Sofort war die Fahrt weg und das Modell ist über einen Stall ins Trudeln steil abwärts geflogen. Bis zum Aufschlag.
Auf FBWA hat es auch nicht reagiert.

Kann das damit zusammenhängen ?

Meiner Meinung nach ja.

Im Standard ist TECS_SPDWEIGHT = 1, beim Sinken wird zum Halten der Höhe also offenbar sowohl Gas gegeben als auch am Höhenruder gezogen.


Ich vermute Folgendes:
Soweit ich weiß, fliegt das Flugzeug beim RTH ohnehin recht langsam, sofern man nicht an den Parametern gedreht hat. Angenommen, dass durch Deinen Querruder-Vollausschlag ein Tip Stall ausgelöst wurde, dann hat sich das Flugzeug fast schlagartig und weit um die Rollachse gedreht. Das Flugzeug hat sehr schnell an Höhe verloren. Gegen das Rollen entgegen lenken konnte Arduplane nicht, denn Du hattest ja voll am Querruder gezogen.

Du hast dann bestimmt versucht, selber mit dem Querruder entgegen zu lenken. Zur selben Zeit hat Arduplane vermutlich stark Gas gegeben und am Höhenruder gezogen, da ja TECS_SPDWEIGHT = 1 und Flughöhe << RTH-Höhe. Unter Umständen hat das die Fluglage noch verschlimmert, je nachdem ob oder ob nicht bzw. wie schnell Arduplane merkt, dass mit Ziehen am Höhenruder keine Höhe mehr gewonnen werden kann (wenn das Flugzeug um 90 Grad um die Längsachse gerollt ist). Vielleicht kam auch das plötzliche Drehmoment vom Motor noch zum starken Rollen hinzu? Vermutlich waren also Querruder, Höhenruder und auch Seitenruder weit ausgelenkt gewesen und haben stark gebremst, weswegen Dein Entgegenlenken noch weniger Effekt hatte. FBWA geht bei Strömungsabriss auch nicht.

Ich wundere mich, was wohl mit TECS_SPDWEIGHT = 2 passiert wäre? Wenn ich die Beschreibung richtig interpretiere, dann hätte ArduPlane nur Gas gegeben, aber nicht am Höhenruder gezogen. Das wäre in der Extremsituation vielleicht besser gewesen. Wie gut funktioniert dann aber das Halten der RTH-Höhe überhaupt noch, in normalen Situationen?

Angenommen, man hätte noch genügend Höhe in einer solchen Extremsituation, was würde man dann als Mensch ohne ArduPlane tun? Ist es nicht eher besser, erst mal alles laufen zu lassen und das Flugzeug an Fahrt gewinnen zu lassen, ohne irgendwie zu steuern? Ich frage mich, ob ArduPlane auch solche "Tue gar nichts und warte"-Strategien eingebaut hat? Irgendwann werde ich aus Neugier doch mal anfangen den Quellcode anzuschauen, obwohl ich eigentlich nur manuell mit etwas zusätzlicher Sicherheit fliegen wollte. :)
 

Willy

Well-known member
Beiträge
46
@Berny: Ich glaube, dass Jenny deine Frage umfassend beleuchtet hat - dem kann ich nichts hinzufügen.

@Jenny:
  1. Das Flugzeug gerät in heftigen Aufwind. Der Motor würde dann nicht anspringen (wozu auch), aber gibt es irgendwelche Mechanismen, um die zunehmende Höhe abzubauen?

    Diese Frage geht ein Bisschen in den Bereich der künstlichen Intelligenz, denn einen Segler in starkem Aufwind herunter zu bringen kann ja auch für Menschen schwierig werden. ArduPlane könnte das beispielsweise über Flaps, Crow Breaking, Slip oder sogar mit Loopings oder anderen komischen Flugmanövern versuchen, aber irgendwie glaube ich nicht dass so etwas schon eingebaut wurde. Falls doch, dann sollte wohl auch ein Parameter da sein, mit dem gesteuert wird, ab welcher Höhe mit dem Höhenabbau begonnen wird.

  2. Der Motor entleert den Akku so stark, dass die Spannung kurz darauf auch nicht mehr für den Betrieb des FC ausreicht. Ich muss herausfinden, ob es da irgendeinen Parameter gibt, mit dem sich steuern lässt, ab wann ArduPlane "aufgibt" und aufhört zu versuchen, das Flugzeug per Throttle oben zu behalten. Das könnte beispielsweise ein Spannungs-Cutoff sein oder ein Zeit-Cutoff sein, ich werde mal suchen.
zu 1) Das habe ich mit dem Entwickler auch schon diskutiert, weil mein Heimatflugplatz in einer RMZ mit 300m AGL liegt - aber das wurde eher als Prio C eingestuft. Grund hierfür waren wohl auch (wie Du schon aufgezählt hast) die 1001 Möglichkeiten um die Höhe zu reduzieren.

zu 2) Dein Regler/Steller sollte eine Abschaltschwelle haben, damit er im Normalbetrieb rechtzeitig abschaltet um noch gemütlich die Höhe absegeln zu können (ich stelle meine Regler so ein, dass ich auch noch 30 min in der Thermik zurecht komme). Im echten failsafe-Fall sollte es für die paar Runden von der RTH-Höhe bis zum Bodenkontakt immer sicher reichen. Da kann der FC ausgeben was er will, der Regler/Steller erklärt den Akku einfach als zu leer für weiteren Motorlauf.
Ich hab' das simuliert indem ich den FC-Ausgang für Throttle auf einen unbelegten Ausgang (z.B. 2) gelegt und den Gaskanal einfach an den Ausgang durchgereicht habe (SERVOx_FUNCTION = RCINy). Damit sieht der FC einen reinen Segler und im Notfall kann man doch Gas geben.
 

Jenny

Well-known member
Beiträge
107
Hallo Willy,

danke sehr dass Du Dich um diesen Bug gekümmert hast!

Zu 1: Prio C, das ist schade. Es müssen ja nicht alle 1001 Möglichkeiten zur Auswahl stehen, aber zumindest eine davon zu haben, wäre gut! :) Absturz nach unten? Vollkommen ausgeschlossen!! Aber Absturz nach oben? Hmmmmmm... ;)

Zu 2: Die Idee ist prima, vielleicht werde ich doch noch ein neues ESC für den alten EasyStar kaufen. Wenn Du aber Thr direkt durchreichst, dann geht doch kein RTH, zumindest nicht als Motorsegler?

Schöne Grüße
Jenny
 

Willy

Well-known member
Beiträge
46
Wenn Du aber Thr direkt durchreichst, dann geht doch kein RTH, zumindest nicht als Motorsegler?
Ich wollte ja bewusst das Verhalten im Segler testen - und für den Test im Notfall aber trotzdem noch Gas geben können.
Also zusammengefasst: RTH geht - im Rahmen der Möglichkeiten eines Seglers. Er macht sich auf in Richtung Heimat und gleitet dann mit Trimmgeschwindigkeit bis zum Boden-/Hindernis-Kontakt oder bei genügend Höhe kreist er am RTH-Punkt bis zum Kontakt.
Ich bin der Meinung, das ist ein echter Sicherheitsgewinn. Wer kennt nicht die Situation, wenn man meist hoch und weit weg am Segeln ist, und auf der Piste passiert etwas Interessantes - da kuckt man einfach mal hin. Aber huch 😲 wo ist mein Segler jetzt 🥵
 

Jenny

Well-known member
Beiträge
107
Ich wollte ja bewusst das Verhalten im Segler testen
Ah, mein Interpretationsfehler, entschuldigung :)

Ich bin der Meinung, das ist ein echter Sicherheitsgewinn. Wer kennt nicht die Situation, wenn man meist hoch und weit weg am Segeln ist, und auf der Piste passiert etwas Interessantes - da kuckt man einfach mal hin. Aber huch 😲 wo ist mein Segler jetzt 🥵
Ja, deswegen will ich jetzt auch einen kleinen HLG damit ausstatten.

Der EasyStar war neulich etwa 700 oder 800 Meter weg gewesen, es wurde schon leicht dämmrig, und nachdem ich kurz abgelenkt war, war er auf einmal weg. Ich habe ihn zwar bereits etwa 20 Sekunden später mit den Augen wieder gefunden, habe dann aber langsam begonnen mich zu wundern, ob er auch schon vorher diesen hübschen, schneeweißen Streifen hinter sich her gezogen hatte.

Eine knappe Minute später waren auf einmal fünf von solchen EasyStars am Horizont, alle mit Kondensstreifen, und ich war recht froh den RTH-Schalter zu haben. :giggle:
 

Jenny

Well-known member
Beiträge
107
Hallo Willy,

dann war meine Annahme in #8 ja nicht so ganz daneben gewesen.

Ärgerliche Fehler, die nicht vorkommen dürfen, es aber trotzdem immer wieder tun. ☺

Schöne Grüße
Jenny
 

horste

Member
Beiträge
8
Hallo Willy,
wie bekommt man raus, wann der Fehler beseitigt ist ? Ich habe heute mit der aktuellen 4.0-official getestet und es war noch so wie früher. D.h. es hat nicht funktioniert.
Horst
 

Willy

Well-known member
Beiträge
46
@horste :

siehe oben #4. Wenn's mal reingezogen ist, dann wird man das am einfachsten an den neuen Soaring-Parametern SOAR_MAX_RADIUS und SOAR_MAX_DRIFT erkennen (erscheinen erst, wenn SOAR_ENABLE = 1).

Ich kann die von mir schon mehrfach gestestetet Beta inzwischen auch für andere Hardware compilieren. Falls Du Interesse hast, dann schick mir einfach eine PN.

Hier übrigens ein Link zu einem Log von letztem Samstag: https://www.dropbox.com/sh/2mjss4mj55tmux3/AAAJidJyqd-Y9Pj3V8vNeQPZa?dl=0
Da hab' ich nach ca. 1 Std 40 min den Flug mit meiner Schaum-ASW17 abgebrochen, weil das Genick weh tat und die Blase drückte...🙃
 

horste

Member
Beiträge
8
Dann werde ich mal warten. Ich hatte es in meiner Schaum-ASK23 getestet. In meiner DG808 hab ich ja einen Speedsensor verbaut, da funktioniert es.
 

Willy

Well-known member
Beiträge
46
Damit das Ganze etwas schneller in die offizielle Version kommt, sollten die Interessierten unter euch hier wenn möglich einen Kommentar hinterlassen:

Es reicht schon aus, wenn ihr dringendes Interesse an "sailplane with no speed-sensor" und/oder "Soaring" bekundet.
Eine Schilderung des Fehlverhaltens ohne Motor und ohne Speed-Sensor bei der aktuellen Version wäre natürlich auch gut, um die Dringlichkeit zu unterstreichen.

Grüße
Willy
 
Oben