Multiwii by MIS AIRPLANE

FC oparte na Arduino

Moderatorzy: moderatorzy2014, moderatorzy

Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Powinno wystarczyć, choć myślałem nad bardziej szprytnym sposobem, który będzie robił zejście proporcjonalnie do odległości od bazy, aby ładnie i płynnie schodził podczas całego powrotu.
Co do Twojego sposobu, musiało by być jeszcze jednorazowe przypisanie do AltHold aktualnej wysokości z alt.EstAlt w momencie załączenia F/S. Dopiero potem cykliczne odejmowanie.
No i odejmując 1 dostaniesz opadanie 0.5m/sek.
Pzdr. -----MIŚ-----
Awatar użytkownika
profesor
Posty: 1094
Rejestracja: poniedziałek 16 sie 2010, 09:37
Lokalizacja: Starachowice

Post autor: profesor »

Faktycznie

Kod: Zaznacz cały

if(alt.EstAlt  > conf.rth_altitude) {
                    if(AltHold < alt.EstAlt)AltHold = alt.EstAlt;
                    AltHold -= FS_SLOW_RATE;  // Jesli aktualna wysokosc  > RETURN_ALTITUDE  = powolne opadanie
               }else {
                    AltHold = conf.rth_altitude;            // Return Altitude in cm above home point
               } 
Ale generalnie przydało by się bardziej sprytny kod troche skromniejszy jak Twoje inteligętne Failsave
Pozdrawiam Piotr.
YouTube
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Może coś takiego (wymyślone na szybko :-) :

Kod: Zaznacz cały

    #if defined(FAILSAFE) && defined(FIXEDWING)
        static uint16_t fs_started;                    // hold distance from base during FS start
        if(f.FAILSAFE_ON) {
           rcOptions[BOXANGLE]    = 1;                 // ACC ON
           rcOptions[BOXPASSTHRU] = 0;                 // Passthru off
           #if MAG
             rcOptions[BOXMAG]      = 0;               // MAG OFF
             rcOptions[BOXHEADFREE] = 0;               // HeadFree off
             f.MAG_MODE             = 0;
           #endif
           #if BARO
              rcOptions[BOXBARO]  = 0;                 // No height stabilisation without GPS or Home FIX
           #endif  

           #if GPS
             rcOptions[BOXGPSHOLD]  = 0;               // GPS hold off
             if(fs_started == 0) {
               AltHold = alt.EstAlt;
               fs_started = GPS_distanceToHome;
             }
             if(f.GPS_FIX_HOME) {                      // Allow RTH if valid home is saved
               rcOptions[BOXGPSHOME]  = 1;             // GPS Return to home ON
               AltHold = conf.rth_altitude;          // Return Altitude in cm above home point
               if(alt.EstAlt > conf.rth_altitude) {
                 AltHold += ((uint32_t)GPS_distanceToHome * alt.EstAlt) / fs_started;
               }
               #if BARO
                 rcOptions[BOXBARO]  = 1;              // baro ON
               #endif
             } else {
               rcCommand[THROTTLE] = MINTHROTTLE;      // No home saved, glide without engine
             }
           #else      // NO GPS
             rcCommand[THROTTLE] = MINTHROTTLE;
           #endif
        } else fs_started = 0;
    #endif    
Pzdr. -----MIŚ-----
Awatar użytkownika
profesor
Posty: 1094
Rejestracja: poniedziałek 16 sie 2010, 09:37
Lokalizacja: Starachowice

Post autor: profesor »

...
czyli schodzenie na wysokość powrotu będzie proporcjonalne do odległości z GPS, Dobre :-D
Pozdrawiam Piotr.
YouTube
Awatar użytkownika
Tsyvin
Posty: 32
Rejestracja: poniedziałek 08 lut 2010, 12:14
Lokalizacja: Łódź

Post autor: Tsyvin »

Przy dużej odległości od bazy ok, ale jak FS zadziała nad/blisko bazy to model może zmienić się w bombowiec nurkujący? :) Chyba, że gdzies indziej jest ograniczenie na prędkość schodzenia, czy coś takiego?
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Tsyvin pisze:Chyba, że gdzies indziej jest ograniczenie na prędkość schodzenia, czy coś takiego?
Oczywiście że jest. Do tego służą PID'y od ALT. PID ALT D jest ogranicznikiem wychylenia steru wysokości, a PID ALT P jest... jak sama nazwa wskazuje współczynnikiem proporcjonalnym (czyli wzmocnieniem) korekcji wysokości.
W poprzedniej wersji sterowanie kazało samolotowi natychmiastowo wrócić do wysokości przelotowej, a ograniczenie tej "natychmiastowości" było jedynie tymi właśnie PID'ami.
Teraz, to w górę ograniczają te PIDY, a w dół, czyli opadanie jest (a właściwie powinno być) proporcjonalne do odległości od bazy, ale nie większe niż ustawione PID'ami i nie niżej niż zadeklarowana wysokość powrotu.

Ale uwaga, bo teoria jest piękna, powinna działać, ale... Trzeba testów, bo moja łepetyna mogła przeoczyć coś istotnego (choć mam nadzieję że nie).

Dla dociekliwych, jak to powinno działać:
W momencie uruchomienia F/S zapamiętywana jest odległość do bazy w zmiennej "fs_started", oraz wysokość utrzymywana jest ustawiana na aktualną wysokość.
Potem podczas powrotu liczone jest ile % dystansu do bazy przebyto, i o tyle samo % zostaje zmniejszona zadana wysokość lotu. Oczywiście robione to jest tylko wtedy gdy wysokość jest większa niż ustawiona wysokość przelotowa. Jeśli jest mniejsza, to stara się utrzymać przelotową.
Jak F/S jest wyłączony, to zmienna "fs_started" dostaje wartość 0, co oznacza że nie zapisano jeszcze odległości od bazy i pozwala na odróżnienie momentu złapania F/S (któremu towarzyszy zapis odległości od bazy) od kontynuacji lotu na F/S.
Jeśli chodzi o same obliczenia, to "GPS_distanceToHome" oraz "fs_started" jest w metrach, a wysokość aktualna i utrzymywana w centymetrach, ale to nie istotne, bo mnożnik formuły jak i dzielnik są w tych samych jednostkach, tak samo jak wysokość aktualna i oczekiwana.
Ufff, ale się naprodukowałem :mrgreen:
Pzdr. -----MIŚ-----
kondiz
Posty: 1731
Rejestracja: poniedziałek 13 cze 2011, 09:14
Lokalizacja: Jelenia Góra / Wrocław

Post autor: kondiz »

A co, jak ja będę na górce i zlecę np 100m "pod ziemię" :shock:
Konrad
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Jak to Co ? Bedzie poniżej punktu startu więc sie wzniesie na przelotową przed powrotem.
Pzdr. -----MIŚ-----
Bihtus
Posty: 683
Rejestracja: niedziela 26 lut 2012, 21:23
Lokalizacja: Warszawa

Post autor: Bihtus »

Widzę ze temat się rozkreca moja płytka AIO w drodze trzeba zrobić jakiś opis ze zdjęciami jak wszystko podłączyć bo z minimOSD zrobi się tania alternatywa do Zbiga :-) Zwłaszcza dla ludzi ze szczuplejszym portfelem chcacym latać bezpiecznie FPV ....
Skrzydła .... 600 mm .... 820 mm .... 2000 mm ... :-)
kondiz
Posty: 1731
Rejestracja: poniedziałek 13 cze 2011, 09:14
Lokalizacja: Jelenia Góra / Wrocław

Post autor: kondiz »

A zamiast mnima to remzibi może być?
Konrad
Bihtus
Posty: 683
Rejestracja: niedziela 26 lut 2012, 21:23
Lokalizacja: Warszawa

Post autor: Bihtus »

Może czemu nie :-) Pisałem o minimie bo jak ktoś kupuje od zera to taniej wychodzi ....
Skrzydła .... 600 mm .... 820 mm .... 2000 mm ... :-)
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Mój soft do AIO nie obsługuje OSD Remzibiego.
Pzdr. -----MIŚ-----
kondiz
Posty: 1731
Rejestracja: poniedziałek 13 cze 2011, 09:14
Lokalizacja: Jelenia Góra / Wrocław

Post autor: kondiz »

:cry:
Konrad
Awatar użytkownika
cebulator
Posty: 1432
Rejestracja: poniedziałek 10 wrz 2012, 08:16
Lokalizacja: Mielec

Post autor: cebulator »

A czy na remzibiego nie przeportowali minim z obsluga mavlinka?
Wydaje mi sie ze w rozdiale 3rd party software na stronie remzibi jest to opisane.
Sam tez czekam na plytke aio zeby polaczyc to z remzibim
Awatar użytkownika
miś
Posty: 9242
Rejestracja: niedziela 07 lut 2010, 15:24
Lokalizacja: Bytom

Post autor: miś »

Mavlink jest w MegaPirate a nie w MultiWii. W multiwii jest MSP, a softu na remzibiego z MSP chyba nie ma.
Pzdr. -----MIŚ-----
ODPOWIEDZ