Napęd w prostym symulatorze bywa redukowany do równania thrust = k · command². Taki model może wystarczyć do pierwszego zawisu, ale ukrywa opóźnienie ESC i wirnika, zmianę napięcia baterii, ograniczenie prądowe, moment reakcyjny, napływ osiowy, różnicę między śmigłem statycznym i pracującym w locie oraz asymetrię rozbiegu i hamowania. W konsekwencji regulator działa w SITL lepiej niż na stanowisku, a przewidywany czas lotu i zachowanie po awarii są niewiarygodne.
Model napędu powinien mieć poziom szczegółowości dobrany do pytania. Do testu logiki misji wystarczy ograniczona dynamika pierwszego rzędu i mapa ciągu. Do strojenia rate loop potrzebne są opóźnienia, moment reakcyjny i zależność od napięcia. Do prognozy energii trzeba modelować prąd, sprawność, baterię oraz warunki przepływu. Do diagnostyki ESC lub własnego sterowania BLDC niezbędna jest warstwa elektryczna i komutacja. Nie należy płacić kosztem obliczeń za zjawisko, którego wynik testu nie wykorzystuje.
Spis treści#
- Granica modelu
- Łańcuch napędu
- Poziomy wierności
- Konwencje i jednostki
- Od komendy do prędkości wirnika
- Dynamika pierwszego rzędu
- Asymetria spin-up i spin-down
- Model elektryczny BLDC
- Moment bezwładności
- ESC i ograniczenia
- Bateria i przewody
- Współczynniki śmigła
- Ciąg, moment i moc
- Advance ratio i lot postępowy
- Napływ i praca w osi
- Moment reakcyjny i yaw
- Położenie wirnika i moment siły
- Opór wirnika i ruch boczny
- Ground effect i otoczenie
- Interferencja rotorów
- Śmigło fixed-wing
- Odwracalny napęd i hamowanie
- Energia i termika
- Awarie i degradacja
- Identyfikacja na hamowni
- Próba dynamiczna
- Dane UIUC i źródła producenta
- Implementacja dyskretna
- Model Gazebo
- Walidacja
- Minimalny zestaw testów
- Typowe błędy
Granica modelu#
Na początku trzeba określić wejścia, stany i wyjścia. Przykładowa granica użyteczna dla flight controllera:
Wejścia: znormalizowana komenda aktuatora, napięcie szyny, prędkość powietrza w dysku, gęstość, temperatura i stan uszkodzenia.
Stany: prędkość kątowa wirnika, ewentualnie prąd fazowy/DC, temperatura, stan limitera ESC i stan baterii.
Wyjścia: wektor siły, moment reakcyjny, moment żyroskopowy, prąd zasilania, RPM/eRPM, temperatury i status.
Model nie powinien jednocześnie przyjmować idealnego RPM i próbować wyliczać go z elektryki, chyba że jeden kanał jest pomiarem/sterowaniem, a drugi ground truth. Dwa źródła prawdy prowadzą do niespójności energii.
Łańcuch napędu#
Pełny łańcuch można zapisać następująco:
FC command → protokół/PWM → ESC → napięcie faz → prąd → moment silnika
→ ω wirnika → aerodynamika śmigła → siła i moment na płatowcu
↘ eRPM/telemetria ↗
bateria → napięcie/sag/limit prądu ───────┘
Każdy blok ma własny czas i ograniczenia. Komenda DShot może dotrzeć co kilkaset mikrosekund, regulator ESC pracować wewnętrznie szybciej, prąd zmieniać się zgodnie z indukcyjnością, a RPM wolniej ze względu na bezwładność i moment aerodynamiczny. Ciąg jest wynikiem RPM oraz przepływu, nie bezpośrednim skutkiem wartości protokołu.
Poziomy wierności#
| Poziom | Stany | Typowe równania | Zastosowanie |
|---|---|---|---|
| mapa statyczna | brak | T=f(u) |
logika misji, szybki Monte Carlo |
| lag RPM | ω |
pierwszy rząd + T=kω² |
regulatory, SITL |
| mapa hamowni | ω lub u |
interpolacja T/Q/I | dobór napędu, energia w zawisie |
| bezwymiarowy prop | ω |
C_T(J), C_Q(J) |
lot postępowy fixed-wing/VTOL |
| elektromechaniczny | i,ω |
R/L/K_e/K_t/J | baterie, ograniczenia, transient |
| komutacyjny | prądy faz i pozycja | falownik + back-EMF | firmware ESC, desync |
Można łączyć poziomy, na przykład model elektryczny silnika z tabelami C_T(J) śmigła. Nie powinno się jednak identyfikować kilkunastu parametrów z jednego statycznego sweepu. Najpierw wybiera się obserwowalne parametry i plan pomiaru.
Konwencje i jednostki#
W modelu łatwo pomylić:
- RPM z rad/s;
- obroty na sekundę
nz prędkością kątowąω = 2πn; - średnicę
Dz promieniemR; - moment
Qw N·m z bezwymiarowymC_Q; - moc elektryczną z mechaniczną na wale;
- thrust axis linku z osią body;
- dodatni kierunek obrotu widziany z góry i od strony wału.
Każde pole konfiguracyjne powinno zawierać jednostkę w nazwie lub schemacie. W logach przechowuje się zarówno komendę, RPM, napięcie, prąd, ciąg, moment, prędkość napływu i gęstość. Sam motor_output=0.6 nie pozwala odtworzyć stanu napędu.
Od komendy do prędkości wirnika#
Najprostsza mapa ma postać:
ω_cmd = ω_idle + g(u)(ω_max - ω_idle)
u jest komendą znormalizowaną po uwzględnieniu deadband i zakresu protokołu. Funkcja g(u) może być liniowa, potęgowa albo tabelaryczna. Dla systemu z closed-loop RPM mapa może być bliższa liniowej. Dla open-loop voltage duty zależność od RPM zmienia się z napięciem, obciążeniem i przepływem.
Nie należy dopasowywać jednocześnie krzywej ω(u) i osobnej T(u) z różnych warunków. Jeżeli model liczy ciąg z RPM, to T(u) jest wynikiem i służy do walidacji. Jeśli używa bezpośredniej mapy T(u), RPM może być jedynie diagnostyczną estymatą.
Minimalne nieliniowości to:
- próg startu;
- idle;
- saturacja maksymalnego RPM;
- limit zależny od napięcia;
- deadband i rozdzielczość komendy;
- stan armed/disarmed.
Dynamika pierwszego rzędu#
Popularny model RPM:
dω/dt = (ω_cmd - ω) / τ
Dyskretna aktualizacja odporna na zmianę kroku:
ω[k+1] = ω[k] + (1 - exp(-Δt/τ))(ω_cmd - ω[k])
Ta forma jest lepsza od ω += Δt/τ · error przy dużym Δt, bo dokładnie dyskretyzuje stałe wejście modelu pierwszego rzędu. Nadal pozostaje przybliżeniem: realna stała czasowa zależy od RPM, obciążenia, napięcia, limera prądu i aktywnego hamowania.
τ należy identyfikować z odpowiedzi RPM, nie ciągu, jeśli model później używa T∝ω². Odpowiedź ciągu ma inną krzywiznę. Czas osiągnięcia 63,2% zmiany RPM odpowiada jednej stałej czasowej tylko dla czystego pierwszego rzędu bez dead time.
Asymetria spin-up i spin-down#
Rozbieg i hamowanie zwykle nie są symetryczne. ESC może ograniczać prąd przy przyspieszaniu, a przy zmniejszeniu komendy wirnik wytracać energię przez opór aerodynamiczny albo aktywne hamowanie. Prosty model:
τ = τ_up gdy ω_cmd > ω
τ = τ_down gdy ω_cmd ≤ ω
Gazebo w oficjalnym przykładzie multicoptera udostępnia osobne timeConstantUp oraz timeConstantDown, obok maxRotVelocity, motorConstant i momentConstant.[1] To dobre minimum dla symulacji regulatora, ale wartości przykładowego modelu X3 nie są automatycznie parametrami innego napędu.
Przy zmianie znaku w napędzie odwracalnym potrzebna jest sekwencja hamowanie → zero → rozbieg w przeciwną stronę. Przeskok znaku ω w jednym kroku tworzy nieograniczony moment i niefizyczne yaw.
Model elektryczny BLDC#
W uproszczeniu równoważnym silnik może być opisany jak DC:
V = R i + L di/dt + K_e ω
τ_m = K_t i
K_e jest stałą back-EMF, K_t stałą momentu. W spójnych jednostkach SI są liczbowo powiązane, ale parametry katalogowe KV w RPM/V wymagają konwersji i uwzględnienia definicji producenta. Idealne KV nie oznacza RPM pod obciążeniem równego KV·V.
Równanie mechaniczne:
J dω/dt = τ_m - Q_prop - τ_friction - τ_other
Ten model pozwala odtworzyć wpływ napięcia, rezystancji, prądu i bezwładności bez symulacji każdej komutacji. NASA w modelowaniu elektrycznego powertrain małego UAV łączy model baterii, uproszczony ESC, silnik i śmigło; najprostszy model propellera przyjmuje ciąg i moment proporcjonalne do kwadratu prędkości obrotowej.[2]
Przy dużym kroku równanie prądu z małą stałą L/R może być numerycznie sztywne. Opcje to mniejszy substep, rozwiązanie analityczne na kroku albo quasi-statyczne i=(V_eff-K_eω)/R z jawnym opisem utraconej dynamiki.
Moment bezwładności#
J obejmuje wirnik silnika, adapter i śmigło przeliczone do tej samej osi. Jest kluczowy dla transientu i energii:
E_rot = 1/2 J ω²
Śmigło o większej średnicy może znacząco zwiększyć bezwładność nawet przy podobnej masie, ponieważ masa znajduje się dalej od osi. J można:
- uzyskać z CAD z poprawnym materiałem i osią;
- zmierzyć metodą wahadła/torsji;
- zidentyfikować z transientu przy znanym momencie;
- traktować jako parametr dopasowania, jeśli pozostałe składniki są ustalone.
Dopasowanie τ modelu pierwszego rzędu może pochłonąć bezwładność, limiter prądu i aerodynamikę. Taki τ jest parametrem empirycznym konkretnego punktu pracy, nie uniwersalną własnością silnika.
ESC i ograniczenia#
Model ESC może obejmować:
- dekodowanie PWM/DShot/CAN i timeout komendy;
- arm/disarm, rampę startową i idle;
- duty albo target RPM;
- ograniczenie prądu i mocy;
- napięcie minimalne/maksymalne;
- timing/komutację na poziomie abstrakcyjnym;
- aktywne hamowanie;
- derating termiczny;
- dropout/desync jako stan usterki;
- telemetrię eRPM, voltage, current, temperature i flags.
Limiter nie powinien jedynie przycinać końcowego thrust. Limit prądu zmniejsza dostępny moment, co wydłuża spin-up i zmienia RPM. Limit napięcia ogranicza V_eff; limit temperatury może obniżać dopuszczalny duty albo prąd w czasie.
Desync nie jest po prostu thrust=0 na zawsze. Możliwe skutki to utrata momentu, błędna komutacja, ponowny start, pulsacje i telemetria błędu. Dla testu flight controllera wystarczy nazwana maszyna stanów; do badania przyczyn potrzebny jest model komutacji opisany w diagnostyce ESC desync.
Bateria i przewody#
Utrzymywanie stałego napięcia przez cały lot daje zbyt optymistyczny napęd. Minimalny model Thevenina:
V_bus = V_oc(SOC,T) - I_total R_internal(SOC,T) - V_dynamic
Do tego dochodzi rezystancja przewodów, złączy, PDB i pomiaru. Każdy silnik dzieli tę samą szynę, więc gwałtowny wzrost prądu jednego napędu obniża napięcie pozostałych — to common-cause coupling.
Kolejność obliczeń w kroku tworzy pętlę algebraiczną:
V_bus → prądy silników → I_total → V_bus
Można rozwiązać ją iteracyjnie, analitycznie dla uproszczonego modelu albo użyć wartości z poprzedniego substepu przy dostatecznie małym kroku. Należy monitorować błąd energii i stabilność numeryczną.
Model akumulatora powinien rozdzielać SOC, napięcie open-circuit, sag, temperaturę i limity BMS. Sama pojemność Ah nie wystarcza.
Współczynniki śmigła#
Dla śmigła o średnicy D, pracującego z n obrotami na sekundę w gęstości ρ, używa się bezwymiarowych współczynników:
C_T = T / (ρ n² D⁴)
C_Q = Q / (ρ n² D⁵)
C_P = P / (ρ n³ D⁵)
Ponieważ P = 2πnQ, zachodzi C_P = 2π C_Q, jeśli definicje są spójne. Źródła mogą używać innych oznaczeń lub średnicy/promienia, dlatego nie wolno kopiować liczby bez równania definicyjnego.
Bezwymiarowa forma ułatwia skalowanie względem gęstości, obrotów i średnicy, lecz współczynniki zależą od geometrii, advance ratio, Reynolds number, Mach number, kąta łopaty i warunków instalacji. Nie są stałą wszystkich śmigieł o tym samym rozmiarze.
Ciąg, moment i moc#
Po przekształceniu:
T = C_T ρ n² D⁴
Q = C_Q ρ n² D⁵
P_shaft = 2π n Q = C_P ρ n³ D⁵
Model T=k_Tω² i Q=k_Qω² jest równoważny stałym współczynnikom w konkretnych jednostkach oraz warunkach. Dla zawisu multirotora może być użyteczny w ograniczonym zakresie, lecz nie uwzględnia lotu postępowego.
Spójność energetyczna wymaga, aby moment obciążenia użyty w równaniu silnika odpowiadał mocy aerodynamicznej. Nie można niezależnie dopasować małego Q i dużego T, jeśli prowadzi to do sprawności przekraczającej fizyczne granice.
NASA opisuje zależności współczynników i skalowania propellera w raporcie technicznym, a NASA Glenn przedstawia prostą teorię ciągu i zmianę pędu strugi.[3][4] Teoria momentum daje kontrolę porządku wielkości, ale nie zastępuje charakterystyki konkretnej łopaty.
Advance ratio i lot postępowy#
Advance ratio:
J = V_a / (n D)
gdzie V_a jest składową prędkości napływu wzdłuż osi śmigła. W lotniczych bazach danych C_T, C_Q lub C_P są funkcjami J i RPM/Reynolds. Dla J=0 mamy warunek statyczny. Wraz ze wzrostem J ciąg przy stałym RPM zwykle się zmienia; przy bardzo dużym J śmigło może przejść w windmilling albo generować ujemny thrust.
Interpolacja powinna:
- działać w obrębie zmierzonych punktów;
- jawnie ograniczać lub odrzucać ekstrapolację;
- zachować ciągłość pochodnych, jeśli używa jej regulator/optimizer;
- rozróżniać serie RPM, jeśli wpływ Reynolds jest widoczny;
- logować wyjście poza tabelę.
Użycie tylko statycznego punktu J=0 dla fixed-wing daje błędny ciąg w przelocie. Użycie mapy z tunelu dla swobodnego śmigła może nie odpowiadać instalacji przed kadłubem, za skrzydłem albo w duct.
Napływ i praca w osi#
Prędkość napływu w dysku nie zawsze równa się prędkości środka masy względem powietrza. Wpływają na nią indukowana prędkość wirnika, ruch obrotowy płatowca, sąsiednie rotory, skrzydło i lokalna geometria.
W prostym modelu bierze się prędkość lokalnego punktu wirnika:
v_local = v_body + ω_body × r_rotor - v_wind
V_a = dot(v_local, axis_rotor)
Składowa prostopadła może generować rotor drag i momenty boczne. Dla szybkiego lotu multirotora dysk pracuje w skośnym przepływie; samo osiowe J nie opisuje pełnej aerodynamiki. Wtedy potrzebny jest empiryczny model obciążeń dysku albo blade-element/momentum.
W obszarach vortex ring state, turbulent wake state i windmill brake state proste równania momentum mogą mieć wiele rozwiązań albo tracić ważność. Model należy oznaczyć zakresem, zamiast płynnie ekstrapolować go przez wszystkie reżimy.
Moment reakcyjny i yaw#
Śmigło wymaga momentu Q, więc na płatowiec działa przeciwny moment reakcyjny. Znak zależy od kierunku obrotu. Dla quadrocoptera suma momentów CW i CCW steruje yaw.
Proporcja Q = k_m T jest popularnym uproszczeniem. Jest poprawna tylko w zakresie, w którym stosunek współczynników pozostaje wystarczająco stały. Do testów agresywnego yaw lub zmiennego pitch lepiej liczyć Q niezależnie z C_Q.
Dynamiczna zmiana RPM tworzy dodatkowy moment związany z przyspieszaniem wirnika:
Q_inertia = J dω/dt
Moment przekazywany na ramę w transient może więc różnić się od aerodynamicznego torque w stanie ustalonym. Pominięcie go daje zbyt łagodną odpowiedź yaw przy szybkich zmianach throttle.
Położenie wirnika i moment siły#
Siłę przykłada się w rzeczywistym punkcie hubu i w osi wirnika. Moment względem środka masy:
M_arm = r_rotor × F_thrust
Do tego dodaje się moment reakcyjny wzdłuż osi. Dla pochylonych rotorów, VTOL i niesymetrycznych ram oś nie jest równoległa do body Z. Mixer i model fizyki muszą używać tej samej geometrii.
Zmiana środka masy po dodaniu payloadu modyfikuje ramiona. Jeśli model pozostawia siły względem starego CG, może fałszywie wskazywać poprawny hover throttle i zerowy moment. Geometria jest częścią konfiguracji wariantu statku, nie stałą pluginu.
Opór wirnika i ruch boczny#
Wirujący dysk w ruchu poprzecznym generuje siły oporu zależne od RPM i składowej prędkości prostopadłej do osi. Uproszczony model może mieć postać:
F_drag = -k_drag |ω| v_perp
Kod modelu multicoptera Gazebo uwzględnia rotorDragCoefficient oraz rollingMomentCoefficient, poza ciągiem i momentem.[5] Ich wartości są modelowe i wymagają identyfikacji lub przynajmniej analizy wrażliwości.
Pominięcie rotor drag może zaniżać tłumienie prędkości bocznej. Przesadny współczynnik może natomiast ukryć błędny regulator velocity. Waliduje się go manewrem o znanej prędkości i tilt, nie zawisem.
Ground effect i otoczenie#
Blisko podłoża pole przepływu zmienia induced velocity i wymagany ciąg/moc. Efekt zależy od wysokości nad powierzchnią odniesionej do promienia wirnika, nachylenia, geometrii podłoża, wielu rotorów i ruchu poziomego. Prosty mnożnik thrust zależny tylko od wysokości może być użyteczny, ale powinien mieć ograniczony zakres i płynne przejście.
Nie należy stroić kontrolera wysokości na modelu ground effect, który nagle zmienia współczynnik na arbitralnej granicy. Warto porównać lot na różnych wysokościach, nad powierzchnią płaską i poza ground effect. NASA/US Army prowadziły pomiary outwash rotorcraft in ground effect; publikacje tego typu nadają się do sprawdzenia trendu, ale nie dają gotowego współczynnika konkretnego quadcoptera.[6]
Gęstość powietrza powinna pochodzić ze wspólnego modelu atmosfery. Zmiana wysokości i temperatury wpływa na thrust, torque, chłodzenie i moc. Nie można zmienić ρ tylko w ciągu, zostawiając stały moment aerodynamiczny.
Interferencja rotorów#
W multirotorze strugi nakładają się z ramionami, kadłubem i innymi dyskami. W układzie coaxial dolny rotor pracuje w strudze górnego; suma ciągów i mocy nie jest prostym podwojeniem pojedynczego pomiaru. W tiltrotor/VTOL wake może oddziaływać ze skrzydłem i sterami.
Poziomy modeli:
- niezależne rotory — szybki baseline;
- empiryczne mnożniki zależne od konfiguracji i throttle;
- model induced flow/wake;
- blade-element/momentum;
- CFD lub surrogate z CFD.
Empiryczny model powinien zachować energię i symetrię tam, gdzie fizyka jej wymaga. Współczynnik „-10% dla dolnego rotora” bez zależności od spacing i punktu pracy jest tylko założeniem scenariusza.
Śmigło fixed-wing#
Dla samolotu UAV główne znaczenie mają C_T(J) oraz C_P(J). Model powinien otrzymywać airspeed w osi, RPM, density i pitch śmigła. Wynikiem jest thrust oraz shaft torque, które obciążają silnik.
Sprawność propulsyjna:
η_p = T V_a / P_shaft
W statyce V_a=0, więc ta definicja daje zero, mimo że śmigło generuje użyteczny ciąg; nie służy do oceny hover. W przelocie sprawność nie może przekraczać jeden w modelu pasywnym. Wynik powyżej jedności sygnalizuje niespójne jednostki, interpolację albo definicje współczynników.
Przy stałym pitch punkt pracy wynika z równowagi momentu silnika i śmigła. Zakładanie RPM niezależnego od airspeed omija tę zależność. Closed-loop governor może utrzymywać RPM, ale wymaga rosnącego/malejącego prądu w granicach napięcia.
Odwracalny napęd i hamowanie#
Napęd reversible wymaga danych dla ujemnego RPM albo osobnego modelu. Typowe śmigło zoptymalizowane do jednego kierunku nie ma symetrycznej charakterystyki. T(-ω)=-T(ω) jest wygodnym założeniem, nie faktem.
Przy windmilling przepływ może napędzać wał. Silnik/ESC może wtedy:
- swobodnie się obracać;
- hamować i rozpraszać energię;
- regenerować do baterii, jeśli architektura to dopuszcza;
- ograniczać napięcie szyny.
Nie należy automatycznie dodawać odzysku energii do modelu konsumenckiego ESC. Regeneracja jest właściwością całego toru zasilania i wymaga możliwości przyjęcia mocy przez baterię/BMS.
Energia i termika#
Moc wejściowa:
P_e = V_bus I_bus
Moc mechaniczna:
P_m = τ_m ω
Różnica obejmuje straty przewodzenia, przełączania, miedzi, żelaza i mechaniczne. Sprawność zależy od RPM, torque, napięcia, timingu i temperatury. Jedna stała sprawność może wystarczyć do szacunku misji, ale powinna być oparta na mapie i analizie wrażliwości.
Minimalny model termiczny typu RC:
C_th dT/dt = P_loss - (T - T_ambient)/R_th
Silnik i ESC mają różne węzły, stałe czasowe i chłodzenie zależne od przepływu. Artykuł o temperaturze silników i ESC opisuje pomiar i derating. W symulacji termika powinna wpływać na rezystancję uzwojeń, limity i stan awarii, jeżeli celem jest kwalifikacja misji.
Bilans energii jest silnym testem: całka mocy baterii powinna pokrywać zmianę energii baterii, pracę mechaniczną i straty w granicach błędu numerycznego/modelowego.
Awarie i degradacja#
Przydatne fault modes:
- całkowite wyłączenie jednego napędu;
- częściowa utrata mocy lub limit RPM;
- wzrost stałej czasowej;
- błędna mapa komendy;
- desync z recovery;
- uszkodzone łożysko: wzrost friction, prądu i drgań;
- uszkodzone śmigło: spadek
C_T, zmianaC_Q, niewyważenie; - wzrost rezystancji złącza;
- zablokowany wirnik i limit prądowy;
- błędna telemetria eRPM przy prawidłowym thrust;
- wspólny spadek napięcia szyny.
Utrata 30% ciągu nie musi oznaczać 30% RPM. Przy T∝ω² odpowiada to innemu stosunkowi prędkości. Fault powinien działać na fizycznej warstwie zgodnej z wymaganiem: uszkodzenie łopaty zmienia aerodynamikę, limiter ESC moment, a dropout komendy target.
Model awarii powinien logować ground-truth fault state oddzielnie od telemetrii dostępnej FC. Wtedy można ocenić wykrycie, false positives i latency detekcji.
Identyfikacja na hamowni#
Bezpieczna hamownia napędu mierzy co najmniej thrust, torque albo moc mechaniczną pośrednio, RPM, napięcie i prąd. Dodatkowo temperaturę, pressure/density i komendę. Hamownia napędu UAV powinna mieć osłonę, zdalne sterowanie i procedurę awaryjnego odłączenia energii.
Statyczny plan pomiaru:
- identyfikacja silnika, ESC, firmware, śmigła i baterii/zasilacza;
- kalibracja load cells, current i voltage;
- pomiar temperatury i ciśnienia;
- rozgrzanie według stałej procedury;
- sweep komendy w górę i w dół;
- czas na stan ustalony w każdym punkcie;
- co najmniej kilka powtórzeń;
- rejestracja RPM/T/Q/V/I/temperatury;
- kontrola driftu zera po próbie.
Sweep w dół ujawnia histerezę i nagrzanie. Zasilacz laboratoryjny o stałym napięciu nie odwzorowuje sag baterii, ale ułatwia identyfikację mapy. Osobna próba baterii dodaje warstwę źródła energii.
Tyto Robotics publikuje dane stanowisk i informacje o kalibracji; niezależnie od producenta trzeba zweryfikować zakres, rozdzielczość, częstotliwość i niepewność dla badanego napędu.[7]
Próba dynamiczna#
Do identyfikacji τ, dead time i limitera potrzebny jest zapis transientu o rate wyższym od pasma odpowiedzi. Możliwe pobudzenia:
- małe kroki wokół kilku punktów pracy;
- duży krok idle→wysoki throttle;
- zejście wysokie→idle;
- PRBS/chirp w bezpiecznym zakresie;
- zmiana napięcia przy stałym target;
- napływ z tunelu albo stanowiska ruchomego.
Analizuje się osobno komendę, RPM, thrust, current i voltage. Jeśli RPM zaczyna rosnąć po 2 ms, a thrust po 4 ms, jedna stała thrust lag traci informację. Identyfikacja powinna uwzględniać filtr i latency aparatury; wolna load cell może wyglądać jak bezwładność napędu.
Parametry dopasowuje się na zbiorze treningowym, a waliduje na innych sekwencjach i punktach pracy. Dopasowanie oraz ocena na tym samym stepie zawyżają jakość.
Dane UIUC i źródła producenta#
UIUC Propeller Database zawiera wyniki pomiarów wielu śmigieł modelarskich, w tym dane statyczne i w funkcji advance ratio.[8] Plik trzeba czytać razem z opisem kolumn, jednostek, serii RPM i warunków. Nazwa handlowa śmigła nie gwarantuje identyczności z późniejszą rewizją produktu.
Dokumentacja producenta silnika może podawać KV, resistance, no-load current, limity prądu i mapy sprawności. maxon opisuje wykorzystanie stałych silnika w obliczeniach i symulacji.[9] Dla silników modelarskich dane bywają typowe lub marketingowe; należy je potwierdzić pomiarem.
Wszystkie dane powinny mieć provenance:
- dokładny model/MPN i wariant;
- śmigło, kierunek i wyważenie;
- ESC oraz ustawienia;
- liczba cel i napięcie pod obciążeniem;
- data, temperatura i gęstość;
- aparatura i kalibracja;
- źródło/licencja.
Implementacja dyskretna#
Pseudokod modelu średniej wierności:
for each physics substep dt:
u = decode_and_limit(command, esc_state)
Vbus = battery.voltage(total_current_previous, dt)
for each motor:
Va = local_axial_airspeed(vehicle_state, wind, rotor_pose)
Jadv = safe_advance_ratio(Va, rotor_rps, diameter)
CT, CQ = prop_table.interpolate(Jadv, rotor_rps)
Qprop = CQ * rho * n*n * D^5
current = motor.current(Vbus, duty(u), omega, dt)
torque = Kt * current - friction(omega)
omega += dt * (torque - signed(Qprop)) / inertia
thrust = CT * rho * n*n * D^4
apply_force_at_hub(thrust * rotor_axis)
apply_reaction_torque(-signed(Qprop) * rotor_axis)
total_current = sum(motor.current_dc)
Przy n≈0 advance ratio jest osobliwy. Należy przełączyć się na dane statyczne albo model startu, nie dzielić przez arbitralne epsilon i ekstrapolować tabelę do ogromnego J.
Kolejność obliczeń i substep muszą być udokumentowane. Jeżeli model silnika działa 1 kHz, a fizyka 250 Hz, siłę można uśredniać po substepach. Podanie tylko końcowego thrust może zniekształcić transient.
Model Gazebo#
Oficjalny przykład quadcopter.sdf Gazebo używa systemu MulticopterMotorModel osobno dla każdego rotora. Konfiguracja obejmuje między innymi joint/link, kierunek, stałe czasu w górę i w dół, maksymalną prędkość, motor/moment constant, rotor drag, rolling moment i współczynnik spowolnienia wizualnej prędkości.[1]
rotorVelocitySlowdownSim jest rozwiązaniem numeryczno-wizualnym: geometria wirnika obraca się wolniej w silniku fizyki, podczas gdy obliczenia używają przeskalowanej realnej prędkości. Nie jest przekładnią fizycznego napędu. Pomylenie go ze scale RPM psuje moment i animację.
Przykładowe wartości z modelu nie są biblioteką danych komponentów. Dla własnego UAV należy:
- ustalić równania używane przez dokładną wersję pluginu;
- sprawdzić jednostki w kodzie źródłowym;
- dopasować
motorConstantz thrust/RPM; - dopasować
momentConstantz torque/thrust albo danych yaw; - wyznaczyć time constants z transientu;
- zweryfikować rotor drag w locie poziomym;
- przypiąć commit modelu i Gazebo.
Model Gazebo jest użytecznym baseline dla laboratorium PX4. Do prognozy energii trzeba dołożyć prąd, napięcie i baterię, których prosty plugin siły nie musi modelować.
Walidacja#
Walidację prowadzi się warstwowo.
Stan ustalony#
Porównaj RPM, thrust, torque i current w punktach komendy/napięcia. Raportuj błąd bezwzględny i względny, ale nie dziel przez wartość bliską zero. Sprawdź sweep w górę i w dół.
Transient#
Porównaj dead time, czas 10–90%, overshoot, τ lokalne, peak current i różnice up/down. Oceń kilka amplitud oraz punktów pracy.
Lot postępowy#
Porównaj thrust/power w funkcji J albo prędkości. Statyczna zgodność nie wystarcza dla fixed-wing.
Płatowiec#
W zawisie porównaj hover throttle, RPM, prąd, attitude response i yaw authority. W manewrach porównaj acceleration oraz energy. Nie dopasowuj wszystkich współczynników do jednego hover point.
Energia#
Porównaj zużyte Wh/Ah, napięcie minimalne i temperaturę w profilu misji. Błąd końcowego SOC może kompensować błędny thrust oraz błędną sprawność, dlatego sprawdza się przebiegi pośrednie.
Model jest zwalidowany tylko w obwiedni testu: zakres RPM, napięcia, J, density i temperatury. Ekstrapolacja powinna generować flagę w logu.
Minimalny zestaw testów#
Test 1 — jednostki i znaki#
Przy znanym RPM policz ręcznie T i Q. Sprawdź CW/CCW, oś thrust oraz moment ramienia. Suma czterech równych rotorów symetrycznej ramy powinna dać zerowy roll/pitch/yaw i niezerowy thrust.
Test 2 — skalowanie#
Podwój n: dla stałych współczynników thrust i torque powinny wzrosnąć czterokrotnie, a moc ośmiokrotnie. Zmień density i sprawdź liniową zależność.
Test 3 — stałe czasu#
Wykonaj step up/down z małą i dużą amplitudą. Porównaj analityczną odpowiedź pierwszego rzędu albo referencyjny log modelu elektromechanicznego.
Test 4 — bilans momentu#
W stanie ustalonym moment silnika powinien równoważyć prop torque i straty. dω/dt ma dążyć do zera.
Test 5 — bilans energii#
Całka V·I nie może być mniejsza od dostarczonej energii mechanicznej w pasywnym modelu. Uwzględnij energię kinetyczną wirnika podczas transientu.
Test 6 — advance ratio#
Przejdź przez zakres tabeli J, granice i przypadek n→0. Sprawdź brak NaN, jawne flagi ekstrapolacji oraz ciągłość.
Test 7 — fault#
Ogranicz moment, usuń część C_T, zwiększ friction i odłącz komendę. Każdy fault powinien dać inny ślad RPM/current/thrust, który może wykorzystać diagnostyka.
Test 8 — coupling baterii#
Zadaj step jednego i wszystkich silników. Zweryfikuj wspólny sag, limity, peak current i brak zależności od kolejności iteracji rotorów.
Typowe błędy#
- Użycie RPM w równaniu wymagającym rad/s albo odwrotnie.
- Użycie promienia w miejscu średnicy w potęgach
D⁴/D⁵. - Stały thrust coefficient przeniesiony między różnymi śmigłami.
- Model statyczny użyty do fixed-wing w przelocie.
- Natychmiastowa zmiana thrust wraz z komendą.
- Jedna stała czasu dla wszystkich napięć i obciążeń bez walidacji.
- Stałe napięcie baterii i niezależne źródło dla każdego silnika.
- Przyciskanie końcowego thrust limitem prądu zamiast ograniczenia momentu.
- Pomylenie torque aerodynamicznego z całkowitym momentem na ramie w transient.
- Siła przyłożona w środku masy zamiast w hubie.
- Brak momentu reakcyjnego lub zły znak CW/CCW.
- Interpolacja
C_T(J)daleko poza danymi bez flagi. - Dopasowanie modelu i ocena na tym samym sweepie.
- Kopiowanie parametrów przykładowego modelu Gazebo do innego napędu.
- Brak wersji śmigła, ESC, firmware, napięcia i warunków pomiaru.
Dobry model napędu zachowuje jednocześnie siłę, moment, czas i energię. Jeśli zgadza się tylko hover thrust, ale nie RPM, current, transient ani yaw torque, jest dopasowaną tabelą, nie zwalidowanym modelem powertrain. Warstwowa budowa pozwala zacząć od szybkiego kω², a następnie dodawać elektrykę, napływ, termikę i interferencję dopiero wtedy, gdy test ma dane zdolne te zjawiska rozróżnić.
Powiązane tematy#
- Silnik BLDC — budowa i komutacja
- Dobór silnika do drona
- Dobór śmigła
- Dobór ESC
- Hamownia napędu UAV
- Dobór akumulatora
- PX4 i Gazebo
- Walidacja modelu symulacyjnego UAV
Przypisy#
- Open Robotics, Gazebo Sim multicopter motor model example, quadcopter.sdf — konfiguracja stałych czasu, prędkości, ciągu/momentu, rotor drag i kierunku obrotu.
- NASA, Hybrid Modeling of Unmanned Aerial Vehicle Electric Powertrain — połączony model baterii, ESC, silnika i śmigła oraz identyfikacja napędu małego UAV.
- NASA/TM–20210014010, Propeller aerodynamic coefficients and scaling — definicje bezwymiarowych współczynników i skalowanie.
- NASA Glenn Research Center, Propeller Thrust — bilans pędu i podstawowe zależności ciągu śmigła.
- Open Robotics, kod źródłowy
MulticopterMotorModel— równania sił oraz parametry pluginu; zachowanie należy sprawdzać dla przypiętego commitu. - NASA/US Army, Experimental Investigation of Rotorcraft Outwash in Ground Effect — pomiary pola przepływu w ground effect.
- Tyto Robotics, Flight Stand 50 specifications and calibration overview — przykład aparatury do pomiaru napędu; zakres i niepewność dobiera się do badanego zestawu.
- UIUC Applied Aerodynamics Group, Propeller Database, Volumes 1–4 — pomiary śmigieł modelarskich w statyce i locie postępowym.
- maxon, Motor data and simulation — interpretacja parametrów silnika i użycie w modelu elektromechanicznym.
- Microchip Technology, Motor Control Algorithms — Brushless DC Motors — podstawy sterowania i komutacji BLDC.
Źródła z centralnego rejestru
- UIUC Applied Aerodynamics Group: Propeller Database, Volumes 1–4 [baza pomiarów uczelni]
- NASA/TM–20210014010: Propeller aerodynamic coefficients and scaling [publikacja techniczna]
- NASA Glenn: Propeller Thrust and Simple Momentum Theory [materiał edukacyjny instytucji badawczej]
- NASA: Hybrid Modeling of Unmanned Aerial Vehicle Electric Powertrain [publikacja badawcza NASA]
- Gazebo Sim: multicopter motor model example (quadcopter.sdf) [oficjalny przykład i kod projektu open source]
- Gazebo Sim: MulticopterMotorModel source [kod źródłowy projektu open source]
- maxon: Motor data and simulation [dokumentacja producenta]
- Tyto Robotics Flight Stand 50 — specifications and calibration overview [dokumentacja producenta stanowiska]
- Microchip: Motor Control Algorithms — Brushless DC Motors [dokumentacja producenta]
- Sumit Sharma, „Drone Development from Concept to Flight” [książka]