Funktionieren bei Euch Kompass und Baro vernünftig ?

Roberto

Erfahrener Benutzer
So, Zeit den Thread mal wieder auf die Frontpage zu bringen!
In der Zwischenzeit hat sich etwas getan. Basierend auf auf der Arbeit von Alexmos haben sich hier interessante Impulse ergeben: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2371
Den ganzen Zauber habe ich mit meinem bisherigen Gewurstel zusammengebraut. Das Ergebnis ist bislang sehr gut! Aktuell bin ich am Probefliegen und tunen. So langsam wird die Sache erwachsen.
Das kommt: (Änderungen zu den bisherigen Versionen)
- Droppercent ist weg.
- Variotabsize sollte man eigentlich nicht mehr ändern müssen.
- Volle Acc Integration in das Variometer "I". Komplementärfilter zur Korrektur des Acc Driftes durch Baro-Variometer.
- "D" ist nun Gas-Kippwinkelausgleich (geht schon, noch in Bearbeitung)
- Gleiche Funktion in Acro und Levelmodus, Altitude hold wird bei 36 Grad Verkippung abgeschaltet, d.h. Looping im Baromodus müsste möglich sein (teste ich NICHT um meinen Entwicklungscopter nicht zu gefährden)
- Nachteil: Das Filterdesign kann ich nur auf meinem FreeIMU v0.3.5_MS Setup testen.

LG
Rob
 

Roberto

Erfahrener Benutzer
MultiWii_2_1_NewBaroPIDVario3 ist da!

****AKTUELL******
Ich habe das Ändern der Höhe mit dem Gasstick bearbeitet und einen Verbesserungsvorschlag hier: http://fpv-community.de/showthread.php?14199-Baro-Code-%C4nderungen&p=203279&viewfull=1#post203279
****AKTUELL******

Hi!

Es gibt mal wieder was neues!
Die Version habe ich grosskotzig Final genannt, spätestens bei der 3a muss ich mich da selbst der Lüge bezichtigen.... - trotzdem habe ich bei dieser Version ein sehr gutes Gefühl, dass es diesmal direkt ein Schuss ins Schwarze ist.
FÜR DIESE VERSION IST EIN ACC PFLICHT! NUR GYRO UND BARO GEHT NICHT!

Eine genaue Einstellungsanleitung schreibe ich später in diesem Post per EDIT noch zusammen. (EDIT: erledigt!)
Hier schon mal ein kurzer Alt PID Überblick:
http://fpv-community.de/showthread.php?14199-Baro-Code-%C4nderungen&p=199064&viewfull=1#post199064
http://fpv-community.de/showthread.php?14199-Baro-Code-%C4nderungen&p=199549&viewfull=1#post199549

Die Default Alt PIDs sind auf P 10,0 // I 0,030 // D 80 festgesetzt und sind vermutlich für die meisten copter zu hoch angesetzt und stellen so eher die Obergrenzen dar.

Wenn man von einer anderen 2.1 Version kommt, sollte ein eepromclear nicht erforderlich sein. Eine neue ACC GUI Calibration ist m.E sinnvoll. Die config.h ist verändert! Eine bestehende, bisherige config.h kann man weiter verwenden, wenn man das GPS - positionhold - override nach "Bigbretl" nicht benutzen will. Alternativ kann man seine config.h um die Zeile: #define PositionHoldOverride erweitern um PHOverride mit Standardwerten zu aktivieren. Da das config.h Ändern immer auf die Nerven geht, habe ich hier die Änderung/Erweiterungen gegenüber der original Config.h dargestellt:
Code:
    /* ALT_HOLD_THROTTLE_NEUTRAL_ZONE: Defines the neutral zone of throttle stick during altitude hold, default setting is
       +/-40 uncommend and change the value below if you want to change it. 
       AltHoldBlindTime defines the time in micro seconds (def 0.8s) after wich a new Altitude for AltHold is defined
       when throttlestickmovement stops. You see here the default values. Uncomment and change if you want.*/
    //#define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 40 
    //#define AltHoldBlindTime 800000


  /**************************************************************************************/
  /***********************                  GPS                **************************/
  /**************************************************************************************/

    /* PositionHoldOverride Info: http://fpv-community.de/showthread.php?14199-Baro-Code-%C4nderungen&p=189821&viewfull=1#post189821
     Purpose: You can fly in position hold and override it with nick(pitch) and roll movements (defined in Blindzones below). When you return
     those sticks to center a new position for pos.Hold is defined after a timeinterval defined in PosHoldBlindTime.*/

    //#define PositionHoldOverride                          // Uncomment to activate
  
    /*Parameters for Position hold Override You see here the default values. Uncomment and change if you want */
    //#define PosHoldBlindTime 300000                       // Time in microseconds (def. 0.3 sec) before PH is re-engaged after returning to Stickcenter
    //#define BlindZonePitch 30                             // Defines the Blindzone around Pitchaxiscenter
    //#define BlindZoneRoll 30                              // Defines the Blindzone around Rollaxiscenter
Jetzt kann man sich herauspicken, welche Werte man geändert haben will und in seine eigene config.h eintragen.

PosHoldOverride und Althold zusammen, sind quasi der "Loiter" Modus des Arducopters.
Diese Version ist getestet und geflogen mit der Freeimu 0.3.5. MS (von Funkjan!) das PosHold Override kann ich mangels GPS nicht testen, vielleicht meldet sich auch der "Verursacher" Bigbretl zurück.

Viel Spass beim Testen!

LG

Rob


EDIT: Jetzt gibt es noch die Einstellungsanleitung/Übersicht:
Hi!

Eigentlich kann ich keine anständige Einstellungsanleitung für meine eigene Version schreiben, da ich programmiere, mit halbwegs passenden Werten teste und den Unterschied beobachte, wieder programmiere usw. D.h. ein richtiges Finetuning meiner eigenen Version auf meiner Gummischüssel (Gaui 330) habe ich eigentlich aus reinem Zeitmangel nie gemacht!

Die MultiWii_2_1_NewBaroPIDVario3 hat eingige andere/geänderte Funktionen als die originale 2.1 Version.

Änderungen:
========

1. Geänderte Hardware-Baro-Sensorauswertung (insbes. Timing!) für BMP und MS Baro.
-----------------------------------------------------------------------------------------------------
Beide Baros liefern jetzt fast exakt alle 30ms einen wirklich neuen Wert (+/- 1-2ms). Die originale Version frass sich bekanntermassen (vom Chef Alex bestätigt - Link fehlt mir jetzt) nach einer gewissen Zeit fest. Mit den Datenblättern vor Augen fallen Abweichungen zu den vorgeschriebenen Timings auf. Manches war viel zu knapp (Sensor "überschlägt" sich quasi früher oder später), anderes zu lang bemessen. Leichtere (MS) und tiefgreifendere (BMP) Änderungen ergaben bei mir eine Lösung. AKtuell laufen beide Sensoren über 2h (beide getestet, Test danach abgebrochen - irgendwann muss es mal gut sein) stabil.

2.Bodenhöhe
---------------
Nach Stromgabe/Reset werden 150 verschiedene Barowerte zur Bestimmung der Bodenhöhe ermittelt (150*30ms=4500 ca 4,5 Sek). In dieser Zeit ist kein Start möglich und die GUI "friert" dabei ein. Alle folgenden Barowerte werden auf diese Höhe "Null" bezogen.


3. Geänderter Althold Algorithmus
======================

3.1 Das Ändern der zu haltenden Höhe mittels des Gasknüppels:
--------------------------------------------------------------------------
In der original 2.1 wurde nach Überschreiten des in der config.h definierten ALT_HOLD_THROTTLE_NEUTRAL_ZONE (Std: 20 jetzt 40) sofort eine neue zu haltenden Höhe definiert inklusive des Gaswertes. Tatsachen: Ein Durchlauf dauert irgendwas zwischen 2 und 6 ms, ein echter, neuer Barowert ist nicht vor 30ms zu bekommen. Eine echte Höhenänderung ist vor 5 Barowerten bei dem MS reine Spekulation (150ms). Sorry, ich habe die "Regeln" nicht gemacht - nur beobachtet. D.h. der Pilot bewegt den Gasknüppel aus der Neutralzone heraus, also z.B um "20 Ticks" (ca. eine "Raste") und sofort (< 6ms) wird eine neue Althold - Höhe mit Gaswert bestimmt. Das Problem bei diesem Vorgehen liegt auf der Hand. Der Copter hat in max. 6 ms (realistisch 3-4ms) kaum seine Position in der Höhe geändert und der langsame Baro (mind 5 Werte erforderlich) kann diese nicht - wirkliche - Höhenänderung, auch noch nicht registriert haben. D.h. bisher war viel Lotterie im Spiel! Die Hauptlösung für dieses Dilemma heisst m.E ZEIT.
Jetzt wird so vorgegangen:
Wenn der Gasknüppel ausserhalb der "ALT_HOLD_THROTTLE_NEUTRAL_ZONE" (Stdwert:40 ca. +/- 2 Rasten) bewegt wird, wird Althold ausgeschaltet und die Bewegungsgeschwindigkeit des Gasknüppels registriert. Wenn Ruhe am Gasknüppel eingekehrt ist, wird nach einer Zeit "AltHoldBlindTime" (Stdwert: 0.8 Sek) Althold wieder eingeschaltet. Neben der neuen Höhe und des Gaswertes wird auch eine neue Neutralzone für den Gasknüppel definiert. Diese Werte sind in der config.h zugänglich. Die Standardwerte stellen eher Obergrenzen dar. Eine Reduktion von "ALT_HOLD_THROTTLE_NEUTRAL_ZONE" auf z.B 20 und von AltHoldBlindTime auf z.B 500000 (0,5 Sek) kann durchaus angenehmer sein. Unter 0,3 Sek sollte m.E eher kontraproduktiv sein - müsste man mal testen.

3.2 Andere Alt PID:
----------------------
Für das eigentliche Höhehalten müssen nur 2 Werte eingestellt werden (P und I). Nur das "P" kennt die tatsächliche Zielhöhe, das "I" kennt sie nicht und ist eine Variometerbremse (mit Acc) d.h. schnelle Höhenänderungen (Pendeln etc) werden bekämpft. Mit dem "D" wird das Gas angehoben bei Verkippung des Kopters. Die Beziehung für D ist (noch) linear.

Die Defaultwerte (Alt PIDs) sind: P 10,0 // I 0,030 // D 80 und stellen auch eher die Obergrenzen dar. D.h. man kann sie zunächst übernehmen und dann je nach Ergebnis, vermutlich nach unten, anpassen. Alternativ, alles auf null und mit einem Parameter beginnen. z.B P bis es gut pendelt, dann I hochdrehen bis das Pendeln weg ist. Dann zur Kompensation des Höhenverlustes bei Vorwärtsflug D hochdrehen. Der Baro muss von allen Seiten gut mit Schaumstoff eingepackt sein (Turbulenzen und lichtdicht).

Die Parameter:
P: Das P ist weitgehend gleich geblieben, also das P von "MultiWii_2_1_NewBaroPIDVario2b" kann man eigentlich weiter verwenden oder als Ausgangspunkt nehmen. Die Barowerte werden jetzt etwas stärker gefiltert.

I: Das I ist weiterhin die Variometerbremse, nur deutlich verändert!! Jetzt wird ein winkelkorrigiertes ACCZ mit einbezogen. Nunchuk ist wahrscheinlich eher untauglich.

Die erfolgreiche ACC Integration basiert auf der Arbeit von "mahowik" und letztlich auf der Arbeit von Alexmos.(http://www.multiwii.com/forum/viewt...id=22e534b79f1c3f45c5d923c5d2358f1b&start=120)

D: Das D hat nichts mehr mit dem ACC zu tun. Da in der jetzigen ACC Integration intern eine Winkelkorrektur durchgeführt wird, fällt der ehemalige, angenehme Nebeneffekt des Anhebens der Motorgeschwindigkeit bei Verkippung weg. Daher kann man hier einstellen, wie stark das Gas bei Verkippung des Copters angehoben wird. Ein zu kleiner Wert fällt durch zu starkes Absacken im Vorwärtsflug auf. Das Höhehalten erst im Schweben (+2m !) einstellen mit leichten Bewegungen, dann das D im Flug nachstellen.

3.3 Sicherheitsfunktion:
---------------------------
Wird der Copter, bei eingeschaltetem AltHold, durch irgend etwas auf den Rücken geworfen (Propellerbruch etc), wird das Althold während des "Rückenfluges" deaktiviert. D.h. ein zusätzliches "in die Erde bohren" kommt nicht vor.

4. Position Hold Override "Bigbretl" Mod (GPS erforderlich)
=====================================
http://fpv-community.de/showthread....o-vern%FCnftig&p=189218&viewfull=1#post189218
http://fpv-community.de/showthread....o-vern%FCnftig&p=191585&viewfull=1#post191585

"Wäre es nicht auch möglich, bei Pos hold eine "Übersteuerung" zu programmieren, die beim Auslassen des Nick und Roll Stick für eine sek.
dann die neue Position hält. Bislang kann man zwar das PH übersteuern, aber bei Neutralstellung will er wieder zurück zur alten Position.
Wenn man dies wegbekäme könnte man auch ständig mit PH fliegen."

Genau das ist umgesetzt.
In der Config.h kann man es durch Auskommentieren von:
//#define PositionHoldOverride // Uncomment to activate

aktivieren. Bei Bedarf können diese Parameter geändert werden:

/*Parameters for Position hold Override You see here the default values. Uncomment and change if you want */
//#define PosHoldBlindTime 300000 // Time in microseconds (def. 0.3 sec) before PH is re-engaged after returning to Stickcenter
//#define BlindZonePitch 30 // Defines the Blindzone around Pitchaxiscenter
//#define BlindZoneRoll 30 // Defines the Blindzone around Rollaxiscenter

LG

Rob


Bislang erfolgreich getestete Setups:

Boards:
ATAVRSBIN1 & ATAVRSBPR1
CRIUS ALL IN ONE PRO v1.0
CriusSE
Drotek AiO (MPU6050, HMC5883, MS5611)
Drotek 10DOF MPU6050, HMC5883, MS5610
Freeimu v0.4.3
Freeimu v0.3.5MS
GY-86 Board
MultiWii SE V2.0 (HobbyKing)

Einzelsensoren:
BMA180, BMA150
MPU6050
MS5611 Baro.
BMP085 Baro

Nicht funktionierende Setups:
http://www.flyingeinstein.com/ Hardware, da geändert I2C Adressen. Lösungsvorschlag: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2371&p=22930#p22930
http://www.multiwii.com/forum/viewtopic.php?f=8&t=2371&start=150#p23119
 

Anhänge

Derjunior

Erfahrener Benutzer
Hallo,
ich hab eben die Final getested. Ich bin begeistert:) mit meiner 0.4.3 Imu, default Werte bis auf Alt P(auf 7.5) bin ich vor die Tür kurz fliegen gewesen bei leicht Böigem Wind und nach dem ich den Copter auf 2m Höhe im Acc Mod auf die Stelle gestellt hab, hab ich den Baro dazu geschaltet und erwartet das er jetzt anfängt voll zu regeln oder nach Oben zu schießen da mein Copter ein wenig übermotorisiert ist;) ABER nichts ist passiert er hat einfach wie es sein soll immer die Höhe gehalten und ich stand verwundert da als ich ihn Ärgern wollte mit nach unten und nach oben werfen oder mit Roll und Nick geknüppele :)
Also mich würds wundern wenn man das noch verbessern kann :)
Ich mach wenn ich dazu komme mal ein Video.

Gruß Micha
 

Roberto

Erfahrener Benutzer
Danke für Dein Feedback Micha!
Gut, dass Du auch Deine IMU angegeben hast! Es wird Zeit, eine Liste mit funktionierenden Sensoren anzulegen!
Also die letzten beiden Freeimus funktionieren schon mal wie Schnitzel!
Die letzte 2er Version war auch schon gut, aber mit den ACC Infos aus dem Multiwiiforum gehts jetzt nochmal einen Schlag besser! Wieviel da noch geht ist schwer zu sagen. Ich frage mich grade, ob noch ein (schlechterer) Programmpfad für die Hardware: nur Gyro und Baro nötig wäre? Die Kombination dürfte allerdings eher selten sein.

@Schachti: Ja, ich habe auch einen Naza auf einem copter.

Aktuell würde ich die Althold Qualität so einsortieren:

Naza > Multiwii NewBaroPIDVario3 > APM2 >> Orig Multiwii 2.1
LG
Rob
 
hab hier ein nanowii mit dem MPU6050 und HMC5883L, MS5611 und einem i2c gps.
auf einem quadro mit 510mm, mt 3506, 11x5 graupner an 3300mA 4S

war gerade man kurz vor der tür werte noch P 10,0 // I 0,030 // D 80

es ist vor der tür fast windstill, auf der stelle steht er schon ganz gut. noch etwas aggressiv.
im vorwertz flug verliert er deutlich an höhe, zu viel.
beim bremsen sieht es schon ganz gut aus, ist aber wenig platzt vor der tür
das ändern der höhe mit dem stick ist gefährlich

sollte das wetter morgen etwas besser sein, testen wir mit zwei copter weiter

ABER, was sehr schade ist, für das nanowii hat felix eine recht neue 2.1 um geschrieben um ein bt module am nanowii zu betreiben. mit der 2.1 von rob eht das jetzt leider nicht mehr :( was auch das einstellen wieder erschwert weil ich n die usb buchse so blöd ran kommen

gruß schachti
 

Roberto

Erfahrener Benutzer
@Schachti:
Danke für Dein Feedback!
Der Baro muss gut "eingepackt" sein, bei mir sackte er immer im Flug nach links von der Höhe her ab, auf der Seite war er zu "nackt".
Wenn das Ändern der Höhe zu gefährlich ist, dann reduziere mal das #define ALT_HOLD_THROTTLE_NEUTRAL_ZONE 40
auf 20 oder so, dann müsste es ok sein.
Tja, es ist nun mal die geänderte, offizielle 2.1. Andere mods sind da natürlich nicht drin.

LG
Rob
 

Roberto

Erfahrener Benutzer
Danke Mike, für Dein Video!

Das müsste dann ein Sensorboard in der Art sein: http://www.drotek.fr/shop/en/62-imu-10dof-mpu6050-hmc5883-ms5611.html sein.
Die Info ist sehr wichtig, weil es jetzt klar ist, dass es auch mit der MPU in anderen Bauformen (z.B Crius etc) als der Freeimu 0.4x direkt funktionieren wird. Die Erdbeschleunigung wird nämlich in dem Multiwii code sensorabhängig anders definiert:
z.B
MPU in der Freeimu 0.4: acc_1G = 255;
MPU nich in der Freeimu: acc_1G = 512; (Bei Dir)
BMA180 (z.B Freeimu 0.3.5) acc_1G = 255
BMA020 acc_1G = 63;
Irgendwie habe ich da schon schlechteres gesehen! Wenn es zu stark pumpt, kannst Du entweder P erniedrigen (wahrscheinlich am sinnvollsten) oder I erhöhen. Wie war Deine Erfahrung mit dem Höheändern mit dem Gas?


LG

Rob
 
J

JinGej

Gast
ok, das ist endlich der durchbruch - KEINE vorherige Version hat bei meinem 1,3kg-quad funktioniert - erst diese funktioniert knapp unter naza-niveau - danke dafür
verbaut ist ne FreeIMU 0.3.5MS
nun noch rate-control und ich bin (dahingehend) glücklich :)
 
J

JinGej

Gast
hihi ok... also mit 10 hammers auch probiert - es sackt zu schnell durch - und wenn man ein paar mal den gasknüppel verstellt hat ist man entweder unten oder oben angelangt :O
aber generell ists schon sehr gut
 

Roberto

Erfahrener Benutzer
Dann probiere auf jeden Fall noch eine kürzere AltHoldBlindTime time aus (s.o).
Hat eigentlich schon jemand das GPS PosHoldOverride getestet?? Es sollte funktionieren, aber ein Übertragungsfehler ist nie ganz ausgeschlossen. Ich kann es nicht testen.

LG
Rob

EDIT: Wie ich hier: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2371&p=22930#p22911 erfahren musste, gibt es eine http://www.flyingeinstein.com/ Hardware, die nicht ohne weiteres überhaupt Mwii2.1 kompatibel ist. Es sind I2C Adressen geändert usw. Deswegen bietet der Hersteller auch eigene FW Versionen an. Ich habe hier einen Lösungsvorschlag http://www.multiwii.com/forum/viewtopic.php?f=8&t=2371&p=22930#p22930 geposted. Falls es hier auch Betroffene gibt, bitte melden.
 
J

JinGej

Gast
GPS hammer heut auch getestet - das geht noch überhaupt nicht... zumal keine PI/PID grundwerte bzw verwendbare werte auf die man aufbaun kann bekannt sind - ok, es war windig.... aber dafür sollte ja GPS da sein, ohne wind kann ich selber auf der stelle halten
bei windstille scheints zu gehn... aber wie gesagt.... bei windstille kann jeder
 
J

JinGej

Gast
fein, wenn ich das richtig lese, deine letzte (jetzige) variante - denn die geht wirklich richtig gut selbst bei wind...
...GPS vorher eingestellt?? ja, wie denn... aus den 5 PI/PID werten wird man nicht schlau und hat keinen anhaltspunkt das ding saust einfach los und fliegt durch die gegend - nix mit pos-hold
 

Roberto

Erfahrener Benutzer
"das ding saust einfach los und fliegt durch die gegend" - hahaha - mir laufen jetzt noch die Tränen - bei der Vorstellung: "Klick" und weg. Zur Multiwii GPS Einstellung kann ich Dir leider nix erzählen. Auf jeden Fall muss das Magnetometer richtig eingestellt sein und dabei kann es nicht schaden in der config.h den #define MAG_DECLINIATION 0.0f mit einem richtigen Wert zu versorgen (da steht eine Anleitung). Hast Du hier schon nach Infos geschaut http://fpv-community.de/showthread.php?4608-Endlich-GPS-f%FCr-Multiwii ?

LG
Rob
 
FPV1

Banggood

Oben Unten