Baro Code Änderungen

Zuse

Erfahrener Benutzer
Hallo Roberto,

ich muss mal schnell dazwischen fragen: hast Du einen festgelegten "Ort", an dem ich Deine aktuelle Version auffinden kann?
Bin gerade ein paar Seiten zurückgegangen auf der Suche, finde ad hoc aber nur die Bluetooth-Variante.
Nachdem meine Hongkongvariante eines BMP085 fliegend am ehrwürdigen Duemilanove tatsächlich ein sauberes I2C-Signal produziert, kribbelt es in den Fingern, Dein Stück Software einzusetzen.
Und meinen Dank und meine Hochachtung für deine Leistung!

Gruss
Manfred
 

FireN

trägt sonst keine Brille!
@Roberto
Gut zu wissen wo der Quake Code so alles drin steckt ^^

Hast du dir eigtl mal die Höhenberechung/Änderung beim Naze angeschaut? Die ist nämlich ziemlich präzise wie ich feststellen musste. (Ähnlichkeiten zu deiner?)

MfG
 

HongKong-Pfui

Antivibration-Master
Benutzt Ihr alle auch ein GPS Modul dazu?

oder muss ich dazu in den "Endlich GPS" Thread?
 

FireN

trägt sonst keine Brille!
GPS hat mit dem barocode nichts zu tun (das ist nur für Höhe halten), entweder es passt noch mit drauf (nicht bei den micro/nanowii) oder nicht...für gps fragen gibt es andere Threads ;) (zb den du angesprochen hast)
 

Roberto

Erfahrener Benutzer
@FireN
"Hast du dir eigtl mal die Höhenberechung/Änderung beim Naze angeschaut? Die ist nämlich ziemlich präzise wie ich feststellen musste. (Ähnlichkeiten zu deiner?)"
Die Grundformel ist gleich, da sie auch aus dem Mwii Forum stammt (Mahowik). Ich denke, beim Naze wird die Ausführungsfrequenz höher sein?
@HongKong-Pfui: Ich habe leider kein GPS für die mwii.

LG
Rob
 

Roberto

Erfahrener Benutzer
Normalerweise schon. Das wird die sein:
//#define CRIUS_SE // Crius MultiWii SE
Nach dem EEPROM Clear musst Du alle Werte neu einstellen, am besten vorher aufschreiben/Screenshot.
Baro gut einpacken.

LG
Rob
 

upapa

Erfahrener Benutzer
So, jetzt gibts wieder etwas.
Das ist die aktuelle Dev mit unseren Barosachen.
Für Einstellungsflüge bitte die Barologic1 verwenden !!!
Hi Roberto,
konnte heute endlich die PID4Final sowohl auf der Crius SE als auch Crius AIO Pro testen. War zwar recht windig, für grobe Einstellungsarbeiten dennoch geeignet.
Bei der Crius SE haben sich für ALT die PID-Werte 4.8, 0.020 und 25 und bei Crius AIO Pro die PID-Werte 9.6, 0.025 und 60 als gut brauchbar erwiesen. Man hörte die Regelung deutlich arbeiten. :)
Habe bisher nur Barologic 1 verwendet. Höhe wurde, dem böigen Wind entsprechend, recht gut gehalten. Der minimal erreichbare Höhenkorridor lässt sich aber wohl erst bei Windstille beurteilen...

BTW,
könnte man nicht die Barologic1 und 2 auf einen Mehrfachschalter legen? So ließe sich bequemer (nicht nur für Testzwecke) zwischen den Versionen wechseln, ohne jedesmal die Firmware neu flashen zu müssen. Z.B. Dreifachschalter: 0 Baro aus, 1 Barologic1 und 2 Barologic2.

upapa
 

upapa

Erfahrener Benutzer
In deine MultiWii_2_1_NewBaroPIDVario4Final habe ich dann auch gleich wieder Bluetooth integriert. Bei Bedarf: Anhang anzeigen 38897
Hi Holger,
hier bin ich etwas verwirrt. :)
Bluetooth funktioniert doch mit jeder MultiWii-Version "out-of-the-box". Bluetooth-Modul mit FTDI-Port verbinden und fertig.
Was hat es mit Deiner Bluetooth-Version auf sich?

upapa
 

Roberto

Erfahrener Benutzer
Hi!

@Upapa: Danke für Deinen Test!
Natürlich könnte man auch beide Modi umschaltbar machen. Allerdings sprechen mehrere Gründe dagegen.
Der Hauptgrund ist der Speicherverbrauch. Ich weiss, die AIO ist mit 256KB(-Boot) Flash gesegnet, aber bei dem Promini ist bei 32KB(-Boot) Schluss und bei dem Promicro noch mal 2,xKB früher. Das Compilat würde mehrere 100 Bytes länger. Die Gui müsste man nicht unbedingt umstricken, wäre aber sinnvoll. Mit dem Bluetooth bin ich auch überfragt, das muss mit dem Promicro zusammen hängen.
Mittlerweile mehren sich die Berichte über Regelungs/Steuerversagen der offiziellen DEVS mit den neuen Flugmodi Angle/Horizon.
Wenn die neuen Devs einen echten Vorteil im GPS Bereich bringen, könnte ich noch eine DEV Version machen, die diese neuen Flugmodi nicht hat, sondern nur den alt bewährten LEVEL Modus.

LG
Rob
 

upapa

Erfahrener Benutzer
Hi Roberto,
es war mir (wie immer) ein Vergnügen. :)
Vielleicht sollte ich noch anmerken, dass ich auf Crius SE die "MultiWii_2_1_NewBaroPIDVario4Final" und auf Crius AIO Pro die "MultiWii_dev_r1232_NewBaroPID" geflasht habe.


Natürlich könnte man auch beide Modi umschaltbar machen. Allerdings sprechen mehrere Gründe dagegen.
Der Hauptgrund ist der Speicherverbrauch. Ich weiss, die AIO ist mit 256KB(-Boot) Flash gesegnet, aber bei dem Promini ist bei 32KB(-Boot) Schluss und bei dem Promicro noch mal 2,xKB früher. Das Compilat würde mehrere 100 Bytes länger. Die Gui müsste man nicht unbedingt umstricken, wäre aber sinnvoll.
Ok, der Speicherverbrauch ist natürlich ein Argument. Will hier keinesfalls Promini, Promicro & Co "aussperren" (und damit auch meine Crius SE ...).

Mittlerweile mehren sich die Berichte über Regelungs/Steuerversagen der offiziellen DEVS mit den neuen Flugmodi Angle/Horizon.
Wenn die neuen Devs einen echten Vorteil im GPS Bereich bringen, könnte ich noch eine DEV Version machen, die diese neuen Flugmodi nicht hat, sondern nur den alt bewährten LEVEL Modus.
Komme mit der Crius AIO Pro (MultiWii_dev_r1232_NewBaroPID) gerade vom Flugfeld. Habe acht LiPos bei Sonnenschein verfliegen können, ohne klamme Finger zu bekommen. :) Obwohl ich die meiste Zeit "ohne alles" in der Luft zum Spaßfliegen unterwegs war, sind mir keine Ungereimtheiten der Firmware aufgefallen.
Die GPS-Genaugkeit hat sich in der r1232 mit den Default-PI(D)s nicht spürbar erhöht (aber auch nicht verschlechtert. :) ).

upapa
 

merlin4

Erfahrener Benutzer
Hi Holger,
hier bin ich etwas verwirrt. :)
Bluetooth funktioniert doch mit jeder MultiWii-Version "out-of-the-box". Bluetooth-Modul mit FTDI-Port verbinden und fertig.
Was hat es mit Deiner Bluetooth-Version auf sich?

upapa
Hi upapa,
ich habe eine Nanowii. Die hat zwar USB (serial 0) zum flashen der Software. Da geht aber kein BT-USB-Modul. Die Nanowii hat aber eine weitere serielle Schnittstelle (serial1), an die man ein BT modul anschließen kann. Nur ist in der MW 2.1 (15.07.12) noch keine Unterstützung für BT am serial1. Dafür hat Ronco seinerzeit den Code aufgebohrt.
Na ja, und die Config-Werte über BT einzustellen ist ja doch erheblich stressfreier... Deswegen habe ich aus der Ronco-Version die relevanten Zeilen in die Baro-Versionen übernommen. Da habe ich mittlerweile Übung drin :)
In den neueren DEVs ist die Schnittstelle bereits vorhanden, dafür gibts aber leider andere Probleme. Deswegen bin ich auch wieder ganz schnell auf die 2.1 zurück.

LG
Holger
 

Roberto

Erfahrener Benutzer
@Upapa: Gottseidank hat die DEV Dir nichts geschrottet!!! So lange ich von den Devs noch Horrorstories von Scotch lese, oder das hier: http://www.multiwii.com/forum/viewtopic.php?f=8&t=2694 , traue ich denen nicht über den Weg, da kann ich Holger nur zustimmen.
Gut zu wissen, dass das GPS gegenüber der original 2.1 auch keinen Sprung gemacht hat.
Basierend auf der Idee hier http://www.multiwii.com/forum/viewtopic.php?f=8&t=2503 habe ich mir ein paar ACC Formeln zusammengeschnitzt. Wahrscheinlich ist das mathematisch vollkommen daneben, bringt aber für kleine Winkel (schätze mal so 25 Grad) gute Ergebnisse. Mit einem GPS zusammen zur accX und accY Driftkompensation dürfte sich das sehr positiv auf das GPS PositionHold auswirken, das wird DJI auch nicht viel anders machen. Da das hier auch eine Code-Ecke ist, stelle ich den Ansatz zuerst hier rein. Das mwii Forum bekommt ggf. einen Link hier hin. Wenn ich meine mwii mit einem GPS aufrüste, wird das auf jeden Fall in Natura getestet. Im Prinzip läuft das dann wie mit ACC und Baro, nur dann eben mit ACC und GPS.
Das velXYdamp ist nur eine Krücke, damit ich auch einen Flugtest ohne GPS machen konnte. Ich bin zuversichtlich, das dass mit GPS Fusion etwas bringt. Das fehlt bislang der Mwii und APM.

Code:
#define velXYdamp 0.5f

static uint16_t ACCDeltaTime;

...
  accVelScale = 9.80665f/10000.0f/acc_1G;
...

  float angle = EstG.V.Z/acc_1G;
  uint8_t ThrAngle = angle * 100.0f;
  if (ThrAngle>100){ThrAngle = 100; angle = 1;}  

...

  float factor = accVelScale*ACCDeltaTime*angle;

...

  if (abs(gyroData[YAW])<100){ 
  float x = ((accADC[ROLL]-EstG.V.X)/acc_1G)*factor*1000;                         //  if (abs(gyroData[YAW])<100
  float y = ((accADC[PITCH]-EstG.V.Y)/acc_1G)*factor*1000;
  velx = velx+x;
  vely = vely+y;
  }
  velx = velx*velXYdamp;   // Insert GPS Kompensation here                                                      //*velXYdamp;
  vely = vely*velXYdamp;   // Insert GPS Kompensation here                                                       //*velXYdamp;
  xdrift = velx;                                                                  // Rightdrift - ; Leftdrift + //  xdrift = constrain(xdrift,-100,100); // Rightdrift - ; Leftdrift +
  ydrift = vely;                                                                  // Frontdrift - ; Reardrift + //  ydrift = constrain(ydrift,-100,100); // Rightdrift - ; Leftdrift +

...

LG
Rob
 
@Rob,
wir habe zwar Halloween aber Horrornachrichten würde ich das nicht nennen. ;-)
Ich sehe das Projekt Mwii als ständige Entwicklung, da kann auch mal etwas schief gehen.
Und solange es nur ein paar Latten sind die zu Bruch gehen, ist es nicht so wild.
Wenn man damit nicht leben kann, sollte man sich ein fertigen Copter kaufen.
Ich hoffe das am WE noch mal ein paar schöne Tage sind um zu testen.

LG
Ingo
 

Roberto

Erfahrener Benutzer
@Scotch: Deine Einstellung finde ich echt bewundernswert! Bei einem Crash durch einen offensichtlichen Softwarefehler fange ich an die schmutzigsten Lieder zu singen - es sei denn, er ist selbst programmiert.
 
FPV1

Banggood

Oben Unten