NAZE32 - alternative Software

Status
Nicht offen für weitere Antworten.
J

JinGej

Gast
eh ich das drin hätte, hätt ich den copter 4-5x neu baun müssen :O
also ich finde es einfach zu unflexibel, das lohnt nur wenn man vollautonom fliegen lassen will - dann aber per 3D wegpunktvorgabe und nich mit stick
 
Zuletzt bearbeitet:
J

JinGej

Gast
oder man steuert den copter gleich ... wie ein schiff? nur durch vorgabe von kurs und zielhöhe über ein tablet z.b. also indirekt... wie ... die enterprise :D
 

Roberto

Erfahrener Benutzer
Hi!

Das MAG ist so weit "fertig", bzw so fertig, wie ich es bekommen konnte. Aktuell bin ich noch an dem MS Treiber dran, je nach Initialisierung kommt es zu einer Falschauslesung mit steigenden Werten. Ich werde wahrscheinlich mit meiner Interpretation der "looptime" das Problem zu Tage gefördert haben, aber es existiert trotzdem, wenn es auch sonst nicht auftritt.
Für die nächste Version geplant:
- Die neuen Mag Sachen (Edit: Kalibrierungszeit auf 60Sek erhöht, 30s sind zu knapp)
- korrigierter Ms Barotreiber, BMP funktioniert komischerweise....
- Delay von 300ms für die I2C Initialisierung, damit auch langsamere Selbstbau Devices (z.B Daddys Sonar) Zeit haben, sich an dem Bus anzumelden

EDIT: Die nächste Version wird also keine wirklich neuen Features haben.

Zukunftsplanung:
- GPS weiter testen, verbessern/bugbusting, wenn möglich
- cGiesen's Schaltkanäle müssen rein, als cfg - Option.
- neue Gui, d.h. z.B angepasste EOS Bandi - Gui, möglichst kein CLI mehr. z.B ladbares Parameterfile, so können die möglichen Optionen immer leicht angepasst werden, ohne eine neue Gui kochen zu müssen. Das wäre schon fein.
- vielleicht einfaches, optionales Mavlink, damit z.B das minimosd direkt läuft.
- Einfaches Geofencing - d.h. ein Umkreis und eine Maximalhöhe kann voreingestellt werden z.B Umkreis 200m, Max Höhe 100m, nach unten keine Begrenzung (bzw. durch RTH Minimalhöhe definiert)
- ca 20 WP mit rudimentären Aktionen (steige/schnell/langsam/mittel , drehe copter, löse Schaltkanal aus, lande, starte usw)
- Alles möglichst simpel halten. Bei Problemen/Unstimmigkeiten (z.B Grosse Headingdifferenz (z.B über 90 Grad zw Mag und GPS beim WP Flug) über z.B 15 Sek -> Autoland, weil irgend etwas faul ist) sofort RTH oder Autoland einleiten, Abflug ist keine Option.
 
Zuletzt bearbeitet:

FireN

trägt sonst keine Brille!
Meine Augen werden ganz feucht :)
Wenn das mal alles klappt, boah dann muss ich den Naze in einen fetteren Copter bauen ;)
Zicke Zacke, Zicke Zacke - Heu Heu Heu! :D
 

Komma

Erfahrener Verwender
- neue Gui, d.h. z.B angepasste EOS Bandi - Gui, möglichst kein CLI mehr. z.B ladbares Parameterfile, so können die möglichen Optionen immer leicht angepasst werden, ohne eine neue Gui kochen zu müssen.
Die Gui von Andreas Schäfer ala Eos Bandi benutze ich auch zwischendurch, weil da ne Map drauf ist mit der man schön Trockentests von Kompaß+GPS Funktionen machen kann.
Nur leider werden da die Schaltkanäle falsch bzw. anders zugeordnet wie bei der MWI Gui.
Weiß jemand wo da der Fehler liegt?;)
 

JUERGEN_

Generation 60++

Roberto

Erfahrener Benutzer
Das sind alles Ideen, die man noch umsetzen könnte ...... man wird doch noch träumen dürfen...
Für das minimOSD habe ich bei foamzone noch 65 Steine hinlegen müssen.

Ich habe hier schon mal die geänderten Mag Kalibrationsroutinen (sensors.c) - für Selbstkompilierer :).

Die "void Mag_init(void)" sieht jetzt so aus:
Code:
void Mag_init(void)
{
    uint8_t calibration_gain = 0x60;                                  // HMC5883
    uint8_t numAttempts = 0, good_count = 0, axis;
    bool success = false;
    uint16_t expected_x = 766, expected_yz = 713;                     // default values for HMC5883
    float gain_multiple = 660.0f / 1090.0f;                           // adjustment for runtime vs calibration gain
    float cal[3];
	
    hmc5883lInit();                                                   // initial calibration
	  for (axis = 0; axis < 3; axis++) magCal[axis] = 0;
    while (success == false && numAttempts < 20 && good_count < 5) {
        numAttempts++;                                                // record number of attempts at initialisation
        hmc5883lCal(calibration_gain);                                // enter calibration mode
        delay(100);
        Mag_getRawADC();
        delay(10);
        cal[0] = fabsf(expected_x / (float)magADC[ROLL]);
        cal[1] = fabsf(expected_yz / (float)magADC[PITCH]);
        cal[2] = fabsf(expected_yz / (float)magADC[ROLL]);
        if (cal[0] > 0.7f && cal[0] < 1.3f
         && cal[1] > 0.7f && cal[1] < 1.3f
				 && cal[2] > 0.7f && cal[2] < 1.3f){
            good_count++;
            for (axis = 0; axis < 3; axis++) magCal[axis] += cal[axis];
        }
    }
    if (good_count >= 5) {
		    for (axis = 0; axis < 3; axis++) magCal[axis] = (magCal[axis] * gain_multiple) / (float)good_count;
        success = true;
    } else for (axis = 0; axis < 3; axis++) magCal[axis] = 1.0f;          // best guess
    hmc5883lFinishCal();
    magInit = 1;
}
Die "void Mag_getADC(void)" sieht jetzt so aus:
Code:
void Mag_getADC(void)
{
    static uint32_t t, tCal = 0;
    static int16_t magZeroTempMin[3], magZeroTempMax[3];
	  float magRAW[3];                                                     // Hacky
    uint8_t axis;
    
    if ((int32_t)(currentTime - t) < 0) return;                          // each read is spaced by 100ms
    t = currentTime + 100000;
    // Read mag sensor
    Mag_getRawADC();
    for (axis = 0; axis < 3; axis++){                                    // Hacky
			magRAW[axis] = (float)magADC[axis]* magCal[axis];
			magADC[axis] = (int16_t)magRAW[axis];
		}
	  if (f.CALIBRATE_MAG){
        tCal = t;
        for (axis = 0; axis < 3; axis++) {
            cfg.magZero[axis] = 0;
            magZeroTempMin[axis] = magADC[axis];
            magZeroTempMax[axis] = magADC[axis];
        }
        f.CALIBRATE_MAG = 0;
    }
    if (magInit) {                                                       // we apply offset only once mag calibration is done
        for (axis = 0; axis < 3; axis++){                                // Hacky
			      magRAW[axis]-= (float)cfg.magZero[axis];
			      magADC[axis] = (int16_t)magRAW[axis];
		    }			                                                           // keep float and do 16bit copy for min/max or output
    }
    if (tCal != 0) {
        if ((t - tCal) < 60000000) {                                     // 60s: you have 60s to turn the multi in all directions
            LED0_TOGGLE;
            for (axis = 0; axis < 3; axis++) {
                if (magADC[axis] < magZeroTempMin[axis]) magZeroTempMin[axis] = magADC[axis];
                if (magADC[axis] > magZeroTempMax[axis]) magZeroTempMax[axis] = magADC[axis];
            }
        } else {
            tCal = 0;
            for (axis = 0; axis < 3; axis++) cfg.magZero[axis] = (magZeroTempMin[axis] + magZeroTempMax[axis]) / 2; // Calculate offsets
            writeParams(1);
        }
    }
}
Also eigentlich nur leicht geändert.

LG
Rob
 
Zuletzt bearbeitet:

cGiesen

Erfahrener Benutzer
Die neue GUI habe ich gerade in der Mache.
Basiert auf EOSBandi wird aber in vb.net geschrieben.

Kommunikation steht schon. Aber ist noch viel arbeit.

Was ich aber nicht für Sinnvoll halte, die CLI Überflüssig zu machen.
Ich bin dabei, das wir die wichtigsten Einstellungen erledigen, aber die CLI kann so viel, das bekommen wir sinnvoll in eine GUI untergebracht.

Was ich für die GUI viel cooler fände, gleich auch die Firmware einspielen zu können.
Mal sehen ob ich das hin bekomme....
 

Komma

Erfahrener Verwender
Wäre super!
Das ist was der Naze/MWI noch fehlt, eine prof. Software ala Openpilot usw.
 

JUERGEN_

Generation 60++
der naze32configurator kann das ja schon
zumindest konnte er das mal, (oder immer öfter) :)

aber mit Windoofs stehe ich eh auf dem Kriegsfuss. :(


Wäre super!
Das ist was der Naze/MWI noch fehlt, eine prof. Software ala Openpilot usw.
ich schmeiss mich gleich vor lachen auf den Bauch.

am besten gleich den Prozessor mit nem schicken Betriebssystem vollstopfen,
dann hast du wenigstens noch 3 Byte über für die eigentliche Lagesteuerung. :D

da empfehle ich dir doch lieber Gleich dieses,
- http://forum.x-3d.de/bb/viewtopic.php?p=179715#179715

da kannst du dich dann so richtig austoben.
mit Treiber für 678 verschiedene sensoren, oder 567 konfigurationen
und NASA geprüften Programmierroutinen. :D
 
Zuletzt bearbeitet:

Mike81

Erfahrener Benutzer
Kannst gleich wieder aufstehen ;)
Mit Software ist in dem Fall die GUI/Config/etc gemeint. Und die soll ja auch nicht auf die Naze, sondern auf den Computer :D

Bildschirmfoto 2013-02-10 um 02.29.59.png
 

JUERGEN_

Generation 60++
nun gut, da ist was drann, allerdings will mir der OPC zu viel, nach Hause telefonieren. :)

auch die AEROQUAD-Software sieht nicht schlecht aus?



nur fliegen, kann das Teil immer noch nicht richtig. :)
 
Zuletzt bearbeitet:

cGiesen

Erfahrener Benutzer
Was ist am Prinzip der WinGUI so falsch? Da kann ich doch wunderbar alles mit machen?!?!?!

Was wollt Ihre denn über die GUI einstellen, was ihr sonst über CLI machen müsstet?
Ich kann ja dann drüber nachdenken!
 
J

JinGej

Gast
welche winGUI meinst du? die "originale" MultiWiiGUI 2.11 oder die WinGUI, bei der die schalterkästchen nicht stimmen?
über den naze32configurator (http://code.google.com/p/naze32conf...nload/NAZE32AIO-[2012-10-20].rar?repo=windows) kann man im prinzip alles machen was man sonst mit 3-4 programmen macht (firmware fläschen geht schön einfach damit, set parameter, feature parameter, PID parameter, eigentlich alles was man auch übers CLI macht und übers GUI) ok, ein wenig hakelig ists manchmal - die eingabe der werte ist auch nich so toll gelöst - das müsste alles nur schöner aufbereitet werden... das was das kann nur schöner und vielleicht ein wenig bunter schnickschnack, dann wärs fein :)
 

Komma

Erfahrener Verwender
...ich schmeiss mich gleich vor lachen auf den Bauch.

am besten gleich den Prozessor mit nem schicken Betriebssystem vollstopfen,
dann hast du wenigstens noch 3 Byte über für die eigentliche Lagesteuerung.
Hööö Juergen bist du unter die Software/Firmwareverwechsler gegangen? :D
und ja....deine Windows abneigung ist ja bekannt du spielst ja lieber mit Äpfeln :D ....und weg!
 
Status
Nicht offen für weitere Antworten.
FPV1

Banggood

Oben Unten