NAZE32 - alternative Software

Status
Nicht offen für weitere Antworten.

Zuse

Erfahrener Benutzer
ach ... :)
schick, schick, was ich da sehe.
Dein Aufbau, Jürgen?
Hast Du die Pinleisten auch "so herum" angelötet, dass die LEDs oben sind, auch wenn dann die Pin-Benennung nun "unten" zu sehen ist?
Wie hast Du geflasht?

Manfred

EDIT: ziehe die Frage zurück ... Du hast ja nur den Link geliefert ... :)
 
Zuletzt bearbeitet:

Roberto

Erfahrener Benutzer
Ich unterbreche nur ungern, aber jetzt ist die 3D Magprojektion auf jeden Fall maximal gut, an das Codestückchen können wir vorerst einen dicken Haken machen. Abweichungen kommen durch die noch überholungsbedürftige Mag Calibration zustande und unser schäbiges Erdmagnetfeld :). Ich habe das auch hier gepostet: http://www.multiwii.com/forum/viewtopic.php?f=23&t=1947&p=30644#p30644.
Das kommt auf jeden Fall in die nächste Version. Für alle Selbstkompilierer, die es jetzt schon gern etwas genauer hätten:
Unter imu.c das hier suchen und löschen (ist ungefähr im letzten Drittel):
Code:
    if (sensors(SENSOR_MAG)) {
        // Attitude of the cross product vector GxM
        heading = _atan2f(EstG.V.X * EstM.V.Z - EstG.V.Z * EstM.V.X, EstG.V.Z * EstM.V.Y - EstG.V.Y * EstM.V.Z);
        heading = heading + magneticDeclination;
        heading = heading / 10;

        if (heading > 180)
            heading = heading - 360;
        else if (heading < -180)
            heading = heading + 360;
    }
Dafür dann das verwenden:
Code:
    #define RADX10 M_PI/1800.0f                                // Crashpilot 0.001745329252f

    if (sensors(SENSOR_MAG)) {
	float rollRAD = (float)angle[ROLL] * RADX10;    // Crashpilot CORRECT MAG TILT COMPENSATION now you can fly on your back with correct heading
        float pitchRAD = -(float)angle[PITCH] * RADX10;
        float magX = EstM.A[1];                         // Swap X/Y
        float magY = EstM.A[0];                         // Swap X/Y
        float magZ = EstM.A[2];
        float cr = cosf(rollRAD);
        float sr = sinf(rollRAD);
        float cp = cosf(pitchRAD);
        float sp = sinf(pitchRAD);
        float Xh = magX * cp + magY * sr * sp + magZ * cr * sp;
        float Yh = magY * cr - magZ * sr;
  	float flthead = (atan2f(-Yh,Xh) * 1800.0f / M_PI + magneticDeclination)/10;
        if (flthead > 180.0f) flthead = flthead - 360.0f;
        else if (flthead < -180.0f) flthead = flthead + 360.0f;
        heading = flthead;
}
LG
Rob

P.s.: Ich habe den Snapshot als Harakiri6d Hexfile zum Testen mal angehängt.
 

Anhänge

Zuletzt bearbeitet:

Roberto

Erfahrener Benutzer
Danke für die Rückmeldung, hatte ich natürlich verschlampt..... weil sie von TC (absolut berechtigter Weise) in board.h gepackt wurde.
Code:
#define RADX10 M_PI/1800.0f                                // Crashpilot 0.001745329252f
Bei der Mwii sind die Winkel immer *10. 90 Grad sind dann "900". Daher ist die Umrechnung in Rad= /10 * Pi/180 oder eben *Pi/1800.
LG
Rob

EDIT: Ich habe jetzt den Post editiert... passt so.
 
Zuletzt bearbeitet:

r0sewhite

Erfahrener Benutzer
Im Hexfile scheint noch etwas nicht zu stimmen. Das Überkopfdrehen funktioniert zwar offensichtlich schon deutlich besser (je nach Ausrichtung), doch wenn ich um die Hochachse in eine Richtung drehe, zieht das Symbol in der GUI erst in die gleiche Richtung mit, um dann jedoch in die Gegenrichtung wegzudriften. Kannst Du mit der Aussage etwas anfangen?
 

Roberto

Erfahrener Benutzer
Hi, Rosewhite!
Das ist die Kalibration. Du musst ACC (am besten zuerst) und dann das Mag noch mal kalibrieren. Das funktioniert schon, wie gesagt, an der Kalibration muss noch gearbeitet werden.

LG
Rob
 

r0sewhite

Erfahrener Benutzer
Danke Rob, dann probier ich es noch mal. Hatte es zwei Mal versucht zu kalibrieren und dann mal wieder voreilig ausgeschlossen, dass es an eigener Blödheit liegt. ;-)


EDIT: Tatsache! Oh Mann, Rob, das ist echt stark: Seit 2 Jahren hab ich Mags bei MultiWii eingesetzt und nun habe ich das erste Mal kein flippendes Pictogramm. Hut ab, mein voller Respekt. ;)
 
Zuletzt bearbeitet:

r0sewhite

Erfahrener Benutzer
Kaum zu glaube, dass MultiWii da über 2 Jahre so einen gravierenden Fehler rumschleppt, bis sich endlich mal jemand erbarmt und den Fehler dann auch noch in einem Abend beseitigt.
 

Roberto

Erfahrener Benutzer
Klar, ich will auch keinen Titel, ich will nur, dass mein Copter gut fliegt. Ich hamster' wo ich kann, APM, AQ, Openpilot, alles was ich kapiere und funktioniert, wird passend gemacht und kommt rein. Beim Althold war das auch die Mahowik Formel und die gab es auch schon bei Alexmos. Eigentlich ist er der Urheber der "Grundformel" - und wer weiss, wo er die her hat. Der ganze Rest ist dann langsam im Praxistest gewachsen und mittlerweile ganz anders. Ich hoffe auf eine ähnliche Entwicklung im GPS Bereich. Weniger Parameter, sichere Funktion wäre mal als vages Ziel zu definieren. Da hilft nur "machen" dann ergeben sich manche Lösungen ganz von allein. Alle komplizierten mathematischen Formeln sind nicht auf meinem Mist gewachsen! Alles was Milchmädchenmathematik überschreitet, kann nicht von mir sein! Auf meinen Spikefilter bin ich schon etwas stolz. Er leistet gute Dienste beim Baro und GPS. Mit dem Mag wollte ich mir mal die eos bandi calibr. Methode genau anschauen. Die Mag Formel ist übrigens aus der apm/Compass.cpp dürfte aber so allgemeingültig sein, dass wahrscheinlich alle sie haben werden. Mit der Kalibration ist mir auch noch etwas (ähmm, einfaches) eingefallen um die Motoren etwas besser aus der Gleichung zu bekommen (vorhersehbare Störung). Bei der mwii sind die zu sehr auf die Cycletime fixiert, da der original PID controller eben kaum Schwankungen toleriert. So lange dieses Grundübel bei der mwii nicht beseitigt ist, kommen die nicht von der Stelle, das ist sicher. Mit den Floatpids in den Harakiris (ab 3 irgendwas) haben wir z.B dieses Problem nicht mehr, obwohl wir es eigentlich nicht so nötig hätten. Bis auf das Pt1 Element, ist das wenigstens auf meinem Mist gewachsen.

LG
Rob
 

Roberto

Erfahrener Benutzer
Die gibts beim Arduino auch, nur da hast Du sie bislang nicht gesehen.....
Ein paar unused variables kann man tatsächlich löschen, aber da muss man schon genau hinsehen, dass man nicht doch etwas wichtiges erwischt. Die Warnungen sind m.E eher so zu verstehen: Ich habe es kompiliert, aber bist Du sicher, dass es wirklich so sein soll?
Also Entwarnung. Schreib mal TC, Du hättest das gerne ohne Warnungen, der schreibt Dir dann eine freundliche f* Antwort:).

LG
Rob
 
Zuletzt bearbeitet:
J

JinGej

Gast
mhm, das glaub ich auch, deswegen schreib ichs ihm lieber nich, vielleicht wird das ja hier bei euch eventuell nebenbei noch korrigiert.. bzw so gestaltet, dass die nicht mehr warnen :)
 

coolmax

Erfahrener Benutzer
Hallo !

Hat jemand von euch GPS und Bluetooth gleichzeitig am laufen.
Ich habe heute mein Navilock NL-652ETTEL bekommen und würde es gerne anschließen.
Da ich aber an Tx und Rx Bluetooth zu laufen habe, wollte ich wissen ob dies geht und wenn ja wie ?
Bilder wie man das GPS-Modul anschließt wäre natürlich sehr hilfreich.

Ich würde ungern auf das Bluetoothmodul verzichten.
Ich dachte ja erst an einen dreifach schalter BT--0--GPS, aber das GPS-Modul hat ja eine andere Baudrate.
Leider ist hier mein Latein am Ende.

Ich bin der Meinung das ich mal sowas schon gelesen habe wie es geht, aber ohne Bilder oder eine verständliche Anleitung traue ich mich da nicht ran.

@Roberto
Ich bin ja hier stiller mitleser, aber was du hier für uns leistest ist schon der Hammer.
Als ich damals meine erste Naze32 (grüne März Board) bekommen hatte und sich alles sehr schleppend entwickelte,
dachte ich schon es wäre ein Fehlkauf.
Trotzdem hatte ich mir dann noch das Weisse Board bestellt, weil es ja eigentlich gut flog.

Jetzt durch Dich, macht das alles wieder richtig Spass und lese alles mit Spannung.
Danke Roberto das Du dich so viel Mühe machst und uns daran teilhaben lässt.

Wo bleibt der Spenden Button ?

lg
Randolf
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten