endlich da :) KISS ESC 18A 2-4S & 12A 2-4S

Status
Nicht offen für weitere Antworten.
Hi,
im harten acro flug kann man den filter aber merken. deshalb kann man ihn wenn man jumper 1 schliesst auschalten. dann hat man wieder das gleiche verhalten wie bei den vorigen versionen. mit allen vorteilen und "gefahren"
Hi Felix, kannst du bitte "hartes Acro" und "merken" genauer definieren ;)

Was sind die Auswirkungen die ich merken würde? Ich denke mal das die Regelung bei ganz schnellen Änderungen nicht mehr ganz so präzise umgesetzt werden weil der Filter das Signal etwas glattbügelt?
 

ronco

Erfahrener Benutzer
Hi Felix, kannst du bitte "hartes Acro" und "merken" genauer definieren ;)

Was sind die Auswirkungen die ich merken würde? Ich denke mal das die Regelung bei ganz schnellen Änderungen nicht mehr ganz so präzise umgesetzt werden weil der Filter das Signal etwas glattbügelt?
ja genau. aber minimal da er hauptsächlich hochfrequente sachen filtert.

was man merken kann: wenn man hohe rates eingestellt hat und schnell hin und her "kippelt", schwingt der kopter etwas mehr nach als ohne filter. bei normalen flug bewegungen merkt man das aber nicht.

gruß

Felix
 
Mal noch ne andere Frage Felix, wir wollen ja alle unsere KISS lange fliegen, gibt es Tips zum tunen der PIDs von deiner Seite, bzw. auf welchen Teil muss man besonders aufpassen um die Hochfrequenten Schwingungen zu vermeiden, D?
 

ronco

Erfahrener Benutzer
Mal noch ne andere Frage Felix, wir wollen ja alle unsere KISS lange fliegen, gibt es Tips zum tunen der PIDs von deiner Seite, bzw. auf welchen Teil muss man besonders aufpassen um die Hochfrequenten Schwingungen zu vermeiden, D?
HI,

ja es ist größten teils D.. aber P und D spielen da zusammen :/ die bisher beste lösung für cleanflight nutzer ist wohl borisB's filter https://github.com/cleanflight/cleanflight/pull/1028

das wird dann wohl auch in der neusten version drinn sein hoffe ich.

gruß

Felix
 

brm

Erfahrener Benutzer
https://github.com/cleanflight/cleanflight/pull/950
etwas älter und die berechnung braucht etwas weniger cpu zyklen.
mehrere pt1 filter haben den nachteil, dass die anzalhl der pole wächst.
bringt, wenn es schlimm wird unstabilitäten ...

@felix
und I

ohne pt1 filter D auf null stellen - eine einfache massnahme.
dann hat man nur den jitter auf der zeitachse.
und die ist schrecklich.
wenn die filter aktiviert sind die pi werte nicht zu hoch treiben - da die reaktion des kopters eben gedämpft ist.
oder anders gesagt, für die ermittlung von p kritisch die filter dekativieren ..

... complain about crispness or looptime.
everything is commercial masturbation.
das kam von japan ... wer ihn kennt kann den kommentar einordnen.
 
Zuletzt bearbeitet:

ronco

Erfahrener Benutzer
@brm, oder vielleicht Felix, kannst du das bitte nochmals erläutern? Das habe ich nicht ganz verstanden.

CrashPilotX
was jetzt davon ?

vllt. nochmal das grund problem:
der D anteil ist die aktuelle korrektur minus die des letzen loops (oft schon etwas gerundet mit dem der vorletzten loops).

D ist also eigendlich da um schwinungen die durch den P anteil entstehen können aus zu gleichen.

szenario A: (das sind natürlich nur fantasie werte und die realen PID regler sind wesentlich komplexer)

der kopter driftet über roll (gyro X wert ist positiv sagen wir mal +10 ) der PID regler macht:

P anteil = GyroX*P also 10*3 (wenn P grade 3.0 ist)
also ist der P anteil dieses loops +30

(I kann man für das szenario weg lassen)

der P anteil des voherigen loops war auch +30 so ist dann:

der D anteil der P anteil dieses loops, minus der des letzten loops 30-30 = 0

ergebnis: da die korrektur des letzten loops nicht gereicht hat um den drift zu kompensieren, ist der P anteil gleich oder zumindest in die gleiche richtung wie beim letzten loop. D muss keinen schwinung ausgleichen deshalb ~0.
das ergebnis des PID reglers wäre X achse +30 (P+I-D).

->alles so wie es sein soll.

szenario B:

der gyroX auschalg ist -10 (in die andere richtung) aber beim letzten loop war es +10...

das sieht nach ner schwinung aus ;)

P ist also -10*3 = -30

jetzt wäre D dann (-30)-30 (P dieses loops - P des letzten loops) also -60
Sagen wir das D auf -0.5 steht.. so wäre der D anteil -60*-0.5 = +30.

ergebnis: da P zwischen diesem und dem letzten loop das vorzeichen gewechselt hat, scheint es zu schwingen. um diese schwinung aus zu gleichen wird der D anteil groß. so glättet D die schnellen schwinungen.
das ergebnis des PID reglers wäre hier 0 (P+I-D).

->alles so wie es sein soll.

wo ist also das problem?

um im realen fug eine gute schwinungsunterdrückung durch D haben zu können muss D aus mehereren vergangenen loops gebildet werden, da bei coptern nicht jedes problem innerhalb eines oder zwei loops geregelt werden kann. das aber wiederum kann in verbindung mit schnell reagierenden ESCs und motoren zum aufschwingen führen.

ein gyro misst grad drehung pro sekunde. kleine, schnelle bewegungen verursachen große auschläge. reagiert der antrieb jetzt sehr schnell, verursacht er wieder einen starken auschlag in die gegen richtung... und so weiter. da aber die frequenzen mit denen reale "flugschwinungen" ausgeglichen werden müssen wesentlich geringer sind, schwingt es hochfequent.

kleines beispiel.. ein kopter würde im flug niemals schneller als 50 mal pro sekunde schwingen (50Hz).. D wird also dafür ausgelegt diese schwinungen aus zu gleichen. wenn jetzt aber durch frame, regler, motoren und schnelle looptimes auschläge entstehn die zu 100 oder sogar 300 winzig schwinungen pro sekunde führen, liegt D immer daneben und kann das problem sogar noch verschärfen. (es ist z.b positiv addirt sich aber 5 loops zu spät auf wo auch der P anteil wieder positiv sein kann).

hier hilft ein tiefpass filter. diese filter glätten hohe frequenzen. so würden hohe, schnelle auschläge nur zu einer reaktion führen wenn sie für meherere loops anhalten. die die andauernd hin und her gehen gleichen sich so selbst aus.


gruß

Felix
 
Zuletzt bearbeitet:
Erhaltene "Gefällt mir": MazeVX

RCCopter

Coptertestingenieur
Danke. Nun habe ich es auch verstanden. :)
 

brm

Erfahrener Benutzer
>muss D aus mehereren vergangenen loops gebildet werden
nö, das sind mw fan boys die das so machen.
zu schnelle aenderungen am d term können den controller in die sättigung treiben.
deshalb sollte pro runde nur eine maximale aenderung erlaubt sein.
den d-term hat zuviel vergangenheit.

die 50hz therorie ist grob falsch.
fliege einen alu rahmen und dann einen cfk rahmen.
das hat mich dazu bewogen subito von filtern 2ter ordnung abstand zu nehmen.
die frequenzen sind massiv höher.

werde im oktober einen m7 in der luft haben.
dann wird fft in realtime gerechnet - mal schauen was herauskommt.
 

ronco

Erfahrener Benutzer
>muss D aus mehereren vergangenen loops gebildet werden
nö, das sind mw fan boys die das so machen.
zu schnelle aenderungen am d term können den controller in die sättigung treiben.
deshalb sollte pro runde nur eine maximale aenderung erlaubt sein.
den d-term hat zuviel vergangenheit.
nagut bin mal auf deine lösung gespannt .. meine FC fliegt ;) und da läuft kein MWC drauf!

die 50hz therorie ist grob falsch.
fliege einen alu rahmen und dann einen cfk rahmen.
das hat mich dazu bewogen subito von filtern 2ter ordnung abstand zu nehmen.
die frequenzen sind massiv höher.
die frequenzen für das beispiel sind aus der luft gegriffen.. natürlich ändern die sich stark je nach motor propeller ramen und so

werde im oktober einen m7 in der luft haben.
dann wird fft in realtime gerechnet - mal schauen was herauskommt.
kannst mal ein video zeigen wie deine FC sich nach ner harten, schnellen winkel änderung oder beim abbremsen abfängt?

hab da auch noch nicht alles perfekt .. aber es wird :)
https://www.youtube.com/watch?v=DSdjKiquzG8&feature=youtu.be

wenn man so liesst was du schreibst, könnte man meinen alle FC FW's vorher wären von ahnungslosen programmiert worden ;)

gruß

Felix
 
Zuletzt bearbeitet:

ronco

Erfahrener Benutzer
schon etwas älter - aber es fliegt auch ganz ordentlich
https://www.youtube.com/watch?v=yY8xULg1gUU
nicht bös gemeint aber in dem video seh ich kein hartes abfangen.. und auch ist das so wies aussieht ein eher schwächerer kopter.. da ist das meiner erfahrung nach eh sehr unkritisch.

ja, ist so - schau dir das original an.
wenn du deine FC soweit hast, freu ich mich sie test zu fliegen.. ist kaum möglich da jetzt was genaues zu sagen. denke eh das wir da verschiedene ziele verfogen .. mit nem m7 wirds keine kleine und günstige FC ;) der m4 reicht mir völlig..

gruß

Felix
 
Zuletzt bearbeitet:

brm

Erfahrener Benutzer
nicht bös gemeint aber in dem video seh ich kein hartes abfangen.. und auch ist das so wies aussieht ein eher schwächerer kopter.. da ist das meiner erfahrung nach eh sehr unkritisch.



wenn du deine FC soweit hast, freu ich mich sie test zu fliegen.. ist kaum möglich da jetzt was genaues zu sagen. denke eh das wir das verschiedene ziele verfogen .. mit nem m7 wirds keine kleine und günstige FC ;) der m4 reicht mir völlig..

gruß

Felix
es sind 2216er - die dinger sind schon kräftig.
beim runtergehen null throttle - kein zittern beim gaswechsel.
und das ohne tuning - nur meine standard pid werte.
die fliege ich mit grossen und kleine koptern.
 

Exec

Erfahrener Benutzer
@brm:
Mit was für einer FC Software fliegts du denn? Ne Eigenentwicklung oder etwas bekanntes wie baseflight,cleanflight,taulabs,... ?

>muss D aus mehereren vergangenen loops gebildet werden
nö, das sind mw fan boys die das so machen.
zu schnelle aenderungen am d term können den controller in die sättigung treiben.
deshalb sollte pro runde nur eine maximale aenderung erlaubt sein.
den d-term hat zuviel vergangenheit.
Einen LPF vor der d-term Berechnung sollten man doch auch mathematisch hinter die d-term Berechnung verschieben und dann mit dem anderen d-term Filter zusammenfassen können, oder? Also im Prinzip macht der "Eingangsfilter" nichts prinzipiell anderes, als der d-term filter nach der Berechnung denke ich (auch wenn es etwas redundant ist, und ich eher einen optimal passenden Filter ans Ende setzten würde, als einen am Anfang + einen am Ende).

In deinem Video hast du doch auch einen LPF (PT1, 17Hz cutoff) für den d-term erwähnt, und das ist doch auch das was Felix gemeint hatte, oder?
Und so ein LPF ist ja seit kurzem auch in cleanflight, und in Taulabs (OpenPilot/LibrePilot wahrscheinlich auch) schon seit langem drinne.


Scheint mir aber überall der selbe 1tab IIR LPF zu sein.
PT1 als Bezeichnung kommt ja eher aus dem deutschem Sprachraum, oder? Als digitaler Filter und im englischen wird er häufig wohl auch als "exponential moving average" (EMA) bezeichnet.
In einem anderen Thread hat jemand nen Plot ausgegraben den ich für ne Diskussion bei rcgroups mal generiert hatte: http://fpv-community.de/showthread....eanFlight-1-10&p=864507&viewfull=1#post864507 bzw. http://www.rcgroups.com/forums/showpost.php?p=32475691&postcount=1108
Da sind als Beispiel mit festen 1kHz sampling die Amplitude und group delay/Latenz für diesen Filter mit verschiedenen cutoffs geplotet.


Bezüglich des µC:
Für Taulabs gibts es auch schon Entwicklugen für eine M7/STM32F7 FC.
Aber mit einer per SPI angebundenen MPU ist es auch mit nem M4 kein Problem die Daten mit 8kHz auszulesen.

Habe ich für Taulabs schon entwickelt.
Allerdings ist Taulabs nicht nur auf pures Acro/Rate optimiert, sondern deckt mehr ab, und auch das RTOS hat etwas Overhead. So wird beispielsweise auch im Rate/Acro Modus nicht nur der Gyro ausgelesen sondern auch der Acc. Mit dem Acc Werten wird dann ein Bias für den Gyro berechnet.
Dadurch wäreeine Regelung mit 8kHz wohl in der aktuellen implementierung zuviel für den µC, und mit Oneshot125(-250) ist ja erstmal auch nur bis 4kHz möglich.

Ich lese die Gyro Daten mit 8kHz aus, mache dann aber ein down-sampling mit anti-aliasing, und mit der Ausgangsrate läuft dann die Regelung.
Bei 2kHz habe ich dann so 50-55% CPU Last, für höhere Frequenzen habe ich es noch nicht getestet.
Aber ob höhere Frequenzen überhaupt viel Sinn machen bin ich mir nicht ganz so sicher.
 
Zuletzt bearbeitet:

brm

Erfahrener Benutzer
@brm:
Mit was für einer FC Software fliegts du denn? Ne Eigenentwicklung oder etwas bekanntes wie baseflight,cleanflight,taulabs,... ?



In deinem Video hast du doch auch einen LPF (PT1, 17Hz cutoff) für den d-term erwähnt, und das ist doch auch das was Felix gemeint hatte, oder?
Und so ein LPF ist ja seit kurzem auch in cleanflight, und in Taulabs (OpenPilot/LibrePilot wahrscheinlich auch) schon seit langem drinne.


Scheint mir aber überall der selbe 1tab IIR LPF zu sein.
PT1 als Bezeichnung kommt ja eher aus dem deutschem Sprachraum, oder? Als digitaler Filter und im englischen wird er häufig wohl auch als "exponential moving average" (EMA) bezeichnet.
In einem anderen Thread hat jemand nen Plot ausgegraben den ich für ne Diskussion bei rcgroups mal generiert hatte: http://fpv-community.de/showthread....eanFlight-1-10&p=864507&viewfull=1#post864507 bzw. http://www.rcgroups.com/forums/showpost.php?p=32475691&postcount=1108
Da sind als Beispiel mit festen 1kHz sampling die Amplitude und group delay/Latenz für diesen Filter mit verschiedenen cutoffs geplotet.


Bezüglich des µC:
Für Taulabs gibts es auch schon Entwicklugen für eine M7/STM32F7 FC.
Aber mit einer per SPI angebundenen MPU ist es auch mit nem M4 kein Problem die Daten mit 8kHz auszulesen.

Habe ich für Taulabs schon entwickelt.
Allerdings ist Taulabs nicht nur auf pures Acro/Rate optimiert, sondern deckt mehr ab, und auch das RTOS hat etwas Overhead. So wird beispielsweise auch im Rate/Acro Modus nicht nur der Gyro ausgelesen sondern auch der Acc. Mit dem Acc Werten wird dann ein Bias für den Gyro berechnet.
Dadurch wäreeine Regelung mit 8kHz wohl in der aktuellen implementierung zuviel für den µC, und mit Oneshot125(-250) ist ja erstmal auch nur bis 4kHz möglich.

Ich lese die Gyro Daten mit 8kHz aus, mache dann aber ein down-sampling mit anti-aliasing, und mit der Ausgangsrate läuft dann die Regelung.
Bei 2kHz habe ich dann so 50-55% CPU Last, für höhere Frequenzen habe ich es noch nicht getestet.
Aber ob höhere Frequenzen überhaupt viel Sinn machen bin ich mir nicht ganz so sicher.
also ich fliege mit der eigenen software.
als ekf benutze ich den von tobias nägeli.

jo, das pt1 element ist identisch mit dem was du genannt hast - fliege das pt1 element seit vielen jahren.
https://de.wikipedia.org/wiki/PT1-Glied
und ich bin müde immer den gleichen schrott zu korrigieren.
vor einiger zeit kam "boris b" auf mich zu:
gyro filter
Hi Robert,

I believe you are the guy who worked on baseflight before if I remember correctly?

I saw your post in the cleanflight thread.

I am interrested in building a new filter in cleanflight to be able to smooth out the gyro output. Do you have any ideas about this and perhaps you already have some working code for this?
Feel free to help here:
https://github.com/cleanflight/cleanflight/issues/915
und ich habe ihm dann den kompletten source rübergeschoben und seither nennt er es seine eigene entwicklung ;-)

an und für sich gehst du den richtigen weg mit dem oversampling.
bis jetzt war ich mit den grösseren rahmen und 1khz lese rate gut bedient.
mit diesen kleinen billigen race quad frames sehe ich die dinger vibrieren.
mit zu tiefen lese raten gibt es antialising probleme - deshalb gehe ich rauf mit der lese rate auf 2 khz - was ich gerade mache. die sensorfusion läuft auf dem f405 bei 500hz und die flyingf3 variante etwas tiefer.
etwa 450hz wie im video gesehen.
wobei die stm mems dinger eine gute resistenz gegen die vibrationen auf dem kopter zeigen.

auf die schnelle wird der m7 als co-prozessor laufen und die fft berechnungen in real time durchführen.
muss auch schauen wieviele cpu cyklen für die fft berechnungen verbrutzelt werden.

du verwendest den peabody mahony filter?
 

Exec

Erfahrener Benutzer
Wie gesagt entwickele ich nur bei Taulabs mit, und habe keine eigene FC Software geschrieben. Daher würde wenn der Standard EKF aus Taulabs zu Einsatz kommen (da soll demnächst aber wohl auch dran gearbeitet werden).
Bisher habe ich aber noch keinen Flightmode genutzt wo ein EKF zum Einsatz kommt.


Nutzt du nur die ST MEMS Sensoren? Die habe ich mir bisher noch nicht näher angeschaut.
Nur die Invense MPU`s.

Da ist es z.b. wenn man den internen LPF (DLPF) deaktiviert läuft das Gyro Sampling mit 8kHz.
Liest man dann mit einer niedrigeren Frequenz aus, ist aliasing möglich. Ich denke je kleiner die Frequenz mit der man ausliest, desto eher können sich auch signifikante Rauschanteile in den Nutz-Frequenzbereich zurück "falten/spiegeln".
Ist der DLPF aktiviert, gibt es scheinbar ein down-sampling mit anti-aliasing Filterung auf 1kHz. Liest man hier aber auch nicht mit 1kHz, sondern weniger aus, können wieder aliasing Probleme auftreten.

Also wenn man bei ner Invensen MPU beispielsweise mit 2kHz ausliest (und DLPF ausgeschaltet hat) hat man potentiell aliasing Artefakte in den Daten, die man nicht evtl. mehr weggefiltert bekommt, bzw. von Nutzdaten unterschieden kann.
Selbst wenn man von den 2kHz ein "sauberes" down-sampling mit anit-aliasing Filterung auf 500Hz macht.
Daher wenn viele Störungen/Rauschen im Gyro Signal sind, würde ich bevorzugen mit aktiviertem DLPF auf 1kHz zu arbeiten, oder mit meiner neuen Implementierung auf dafür tauglichen FC den Gyro auf 8kHz laufen lassen, und dann im FC ein "sauberes" down-sampling auf die Wunsch Frequenz durchführen.

Wenn das Setup aber kaum Störungen z.B. Vibrationen vom Antrieb und harmonische davon hat (gut gewuchtete Motoren und Propeller, verwindungsfester Frame,...) dann brauch man eher kein anti-aliasing weil ja dann keine Störungen vorhanden sind die im Nutzsignal auftauchen könnten.


Das kann aber bei den ST Sensoren anders aussehen.
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten