-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Vertical wind velocity estimation #35
Comments
Nevím, do jaké míry diagram odpovídá kódu v TECS.cpp, protože v kódu do integrace vstupuje (po škálování) |
K vyřešení tohoto issue, by zřejmě kromě vygenerování nové uOrb zprávy bylo potřeba, ještě naplnit hodnotou parametry "Z" MavLink zprávy WIND_COV. Tato zpráva se z autopilota sice odesílá, ale pro hodnoty Z obsahuje nulové hodnoty Zpráva se plní v této části kódu, kde jsou skutečně pro vertikální hodnoty hardcodované nulové hodnoty. |
Tak jsem u tohoto issue chtěl přidat logování throttle_compensation. A když jsem to začal dělat, tak jsem si všiml, že už existuje uOrb zpráva , která stejnou hodnotu obsahuje. Při posledním letu z platformy je v ní tohle: Vzniká z toho tak graf o kterém moc nevím co přesně znamená. Hlavně mi jsou podivné ty nespojistosti. Část toho grafu tak zřejmě obsahuje informaci o vertikálním proudění, ale zároveň chybí vazba, která by umožnila konkrétní interpretaci. |
Tak nespojistosti viditelné v grafu lze vysvětlit chybějícími daty. V režimu Stabilized TECS vůbec nefunguje a když se mód letu přepne ze Stabilized, do Position, tak se ta naintegrovaná hodnota vynuluje. Takže validní hodnoty jsou jen v Position, Loiter a částečně v Mission těsně po startu. Tam to je ale ještě pořád takeoff, takže záleží na tom, jak s tou naintegrovanou hodnotou zachází kód od @roman-dvorak. Aktuální mód je poznamenán ve zprávě vehicle_status/nav_state Pokud se ale provede průzkum delšího letu, kde se mezi módy nepřechází. Tak hodnota |
Prošel jsem znovu kód a diagram a mám z toho dojem, že použití Zároveň jedinné místo v kódu TECS, kde se používá Při průzkumu hodnot Celkový závěr ale je že hodnota "throttle compensation" respektive Zkoušel jsem hledat jinde a například u Ardupilota podobnou problematiku řeší pouze za vypnutého motoru. Navíc mají předem změřené parametry rychlostní poláry, což úlohu značně zjednodušuje. @povik nemáš náhodou nějaký další nápad, jak by se tohle dalo vyřešit? |
@povik našel tenhle pull-request, kde zřejmě došlo k těmto zásadním změnám v konstrukci TECS, které jsou v rozporu s dokumentací (která od té doby nebyla aktualizována). |
Tak jsem překreslil TECS throttle controller podle aktuálního kódu. Moc to ale tohle issue k vyřešení neposunulo. |
Ono to řešení extrakce účinnosti letu a měření externího vertikálního proudění je vlastně celkem přímočarý. Jde o to zjistit, jaká je ztráta (total energy rate) v čase samotným letem versus total energy rate, která přibývá motorem. Ten tok energie z motoru by se asi dal považovat za lineární funkci throttle. Jen chybí konstanta, kterou se throttle přepočítá na energy rate. (tím by zřejmě dokonce šlo měřit absolutní účinnost motoru). Pak následně, když se bude měnit total energy a nebude za to moct throttle. Tak je to externí vliv, který zřejmě nemůže být jiný než vertikální proudění. Může se to ale možná zkomplikovat ještě tím, že převod mezi kinetickou energií a potenciální energií má ztráty. Ztráty by ale zas v nějakém rozumném rozsahu měly být funkcí kvadrátu rychlosti. Tím by řešení uvnitř TECS potřebovalo během letu stále fitovat několik konstant, které by byly na počátku zinicializované parametrem. Jako je to například teď u převodu mezi throttle a energy rate. |
Při diskusi s @povik jsme přišli na to, že TECS regulátor. Zřejmě obsahuje hodnotu kompenzace vertikální rychlosti. Hodnotě odpovídá integrace ve větvi označené jako Throttle compensation na následujícím diagramu.
Tato integrace se počítá na tomto řádku TECS regulátoru.
V případě vyvedení této hodnoty do uORB zprávy bychom mohli
Trochu problematické bude hodnotě "throttle_compensation" přiřadit fyzikální rozměr [m/s]. @povik si ale myslí, že správná cesta by měla vést přes přenásobení konstantou K_D, s tím že je potřeba uvažovat časovou odezvu regulátoru. Dynamika regulátoru tak převod komplikuje.
The text was updated successfully, but these errors were encountered: