Quadcopter – gps NEO-6M, gps PH i gps RTH

zmr-250_neo6m_installPraktycznie wszystko już jest i działa, telemetria pracuje, pozostało tylko dołożyć odbiornik GPS aby początkujący operator mógł łatwo znaleźć swoją zgubę. Moduł GPS będzie trzeba skonfigurować co jednak nie jest takie proste bo obsługa programu do tego przeznaczonego nie jest za grosz intuicyjna. Potem trzeba będzie wybrać mu jakieś fajne miejsce na ramie, podłączyć, i wykonać prostą konfigurację w Cleanflight. Omówimy sobie też nowe tryby lotu które nam się pojawiły, czyli GPS HOLD oraz GPS HOME.

O GPS słów kilka w bardzo dużym skrócie
Start na zimno, na ciepło, na gorąco, łapanie fixa – co to jest? Każdy odbiornik GPS posiada zapisane w pamięci dane o położeniu każdego z satelitów w przestrzeni. Niestety każdy satelita systemu GPS który orbituje wokół ziemi nie zawsze będzie perfekcyjnie w tym miejscu gdzie być powinien, i nie dość że jego lot trzeba czasem korygować, to specjalnie do tego przeznaczone stacje naziemne sprawdzają faktyczne położenie satelitów i wysyłają im właśnie takie dane o położeniu. Każda z satelitów transmituje te dane na ziemię tak aby odbiorniki GPS mogły sobie je zaktualizować, bo bez tego określana przez nie pozycja byłaby obarczona sporym błędem. Dane te mają różną „datę ważności”, i gdy odbiornik stwierdzi że są nieaktualne, to będzie musiał je odebrać. Transmisja jest dosyć powolna, dla tego odebranie tych danych trwa tak długo, a w razie jakichś komplikacji i jej przerwania (przysłonięcia gps, słabego sygnału z powodu pogody), odbiornik musi czekać na kolejną transmisję i znów będzie próbował odebrać ją na nowo – w całości. To właśnie jest start na zimno.

Start na zimno może trwać od pojedynczych minut nawet do minut kilkunastu, start na zimno wystąpi gdy odbiornik nie będzie używany przez kilka godzin (po około 5 godzinach dane się dezaktualizują). Start na ciepło jest wtedy gdy dane są w miarę aktualne i GPS wie gdzie jest i wie których satelitów nasłuchiwać – i trwa to wtedy kilkanaście do kilkudziesięciu sekund. Start na ciepło nastąpi już po około 20 minutach od ostatniego używania. Start na gorąco to tylko odebranie z satelitów zegarów które umożliwią ustalenie pozycji – wtedy fixa łapiemy w kilka sekund lub natychmiastowo. Oczywiście im lepsze algorytmy w odbiorniku są zastosowane, tym lepszy pożytek z tych danych on zrobi. Jest jeszcze jeden typ startu, fabryczny, czyli odbiornik nie posiada jakichkolwiek danych o tym gdzie się znajduje (na jakim kontynencie, w jakiej strefie czasowej, nic) i musi nasłuchiwać wszystkich sygnałów i odbierać dane z każdego „widzialnego” satelity. Taki start będzie trwał od kilkunastu minut do dwudziestu kilku lub dłużej.

Fix 2D to ustalenie tylko współrzędnych, wymaga minimum trzech satelitów. Fix 3D to ustalenie współrzędnych oraz wysokości nad poziomem morza, wymaga minimum czterech satelitów, ale różne moduły mogą różnie sobie z tym radzić i pewnie będą wymagać większej ich ilości. Fix 3D jest wymagany do lotów GPS, jeśli kontroler lotu polega na wysokości podawanej przez GPS a nie przez barometr.

Bardzo dobrym pomysłem przed wyjściem z modelem jest podłączenie mu zasilania i położenie gdzieś na parapecie, tak aby GPS mógł odebrać sobie dane z satelitów już w domu, i pozwolenie mu na ustalenie pozycji. Wtedy uruchomienie modelu w miejscu właściwym pozwoli na dużo szybsze ustalenie pozycji przez GPS bo większość danych będzie aktualna. Można też wziąć ze sobą jakąś zdechłą baterię i tą podłączyć do modelu już w miejscu właściwym, i dać mu te kilka czy nawet kilkanaście minut na złapanie fixa – tak aby nie marnować baterii na której będziemy latać. Wtedy przepięcie baterii na tą właściwą będzie oznaczało start na gorąco i natychmiastową gotowość do lotu. Przed startem upewnij się że GPS złapał fixa 3D (przez OSD lub telemetrię, lub stan diody na GPS/kontrolerze lotu), tym bardziej jeśli będą wykonywane loty w asyście GPS, np return to home czy hold GPS. Załączenie jednego z tych trybów lotu podczas gdy GPS nie ustalił pozycji najczęściej powoduje ucieczkę modelu do domu, tzn gdzieś w kierunku Chin :)

Wybór modułu GPS
gpsOczywiście, im droższy tym lepszy. Ja osobiście jak to laik w tej dziedzinie wybrałem najtańszy moduł z wyjściem szeregowym (UART) jaki tylko znalazłem, i był to NEO-6M z ebay za 12$. Ale chyba nie warto na takiej rzeczy oszczędzać i kupić coś lepszego, bo ze swojego zakupu jakoś specjalnie zadowolony nie jestem – GPS działa słabo. Odbiera słaby sygnał i nie z tak wielu satelit z ilu powinien. Start na zimno trwa 10-20 minut. Dla porównania NEO-M8N o kórym czytałem opinie, że bez najmniejszego problemu łapie fixa w piwnicy, antena posiada wbudowany filtr który zablokuje śmietnik pochodzący z anteny FPV – jednak cena 40-50$ skutecznie odstrasza. Mój moduł to goła płytka z dołączaną anteną bardzo krótkim kabelkiem. W handlu dostępne są zestawy dedykowane do kopterów, gdzie antena lub antena wraz z modułem są zamontowane na specjalnym maszcie. Takie zestawy występują również z wbudowanym kompasem, bo kompas (czy jak kto woli magnetometr) umieszczony na płytce kontrolera lotu będzie jednak dużo bardziej narażony na zakłócenia elektromagnetyczne.

gps2A więc na co zwrócić uwagę? Przede wszystkim moduł musi być wyposażony w złącze UART, dobrze jeśli będzie można go zasilić z 5V bo to ułatwi kabelkologię. Zazwyczaj nowszy odbiornik (z wyższym numerkiem) będzie miał lepsze i bardziej dopracowane algorytmy ustalania pozycji. Zwróć też uwagę na odświeżanie, tani moduł będzie miał odświeżanie pozycji z częstotliwością 1Hz, czyli będzie aktualizował współrzędne raz na sekundę. Jest to dosyć wolno, a ma to spore znaczenie przy locie GPS czy choćby nawet zawisie GPS. Lepszy odbiornik będzie oferował odświeżanie pozycji na poziomie 10Hz (czyli 10 razy na sekundę) a to już jest w pełni wystarczające nawet do lotów autonomicznych. Warto zwrócić uwagę na to jakie systemy odbiornik obsługuje, bo oprócz klasycznego (amerykańskiego) GPS istnieje również rosyjski GLONASS (globalny), chiński BEIDOU (obejmuje Azję ale w planach jest cały świat) czy europejski GALILEO (którego budują budują i końca nie widać).

Wstępna konfiguracja modułu GPS

neo6m_ucenter_uartAby moduł działał tak jak trzeba, lub w ogóle współpracował, należy go wstępnie skonfigurować przeznaczonym do tego narzędziem – choć nie zawsze jest to konieczne. W moim przypadku, dla modułu Ublox 6M odpowiednim narzędziem będzie uCenter – pobieramy, rozpakowujemy, i instalujemy. Jeśli masz moduł innego producenta, poszukaj odpowiedniego dla niego oprogramowania. Do przeprowadzenia konfiguracji potrzebny będzie nam konwerter USB-UART, który bezpośrednio łączymy z płytką modułu VCC->VCC, GND->GND, TX->RX, RX->TX. Uruchamiamy uCenter i od razu możemy kliknąć Connect – domyślne ustawienia powinny być prawidłowe, a sprowadzają się one głównie do wyboru portu oraz jego prędkości. Jeśli nie możesz połączyć się z modułem, sprawdź czy nie zamieniłeś miejscami linii RX i TX (powinny być skrosowane) i czy ustawienia portu są prawidłowe (z prędkością możesz poeksperymentować, domyślna powinna wynosić 9600). Program nie informuje nas jakoś specjalnie o sukcesie połączenia, musimy rzucić okiem na prawą stronę programu w którym są okna które wyświetlają odebrane dane. Jeśli coś się w nich dzieje – połączenie jest ok.

Zmiana ustawień modułu

ucenter_configure

W sumie nie jest tego wiele, ale obsługa programu u-center jest koszmarnie nieintuicyjna. Z menu kontekstowego wybieramy View > Configuration View lub ciskamy Ctrl+F9. Na liście z lewej wybieramy pozycję z kartą ustawień, a po prawej w karcie zmieniamy ustawienia. Za każdym razem przed zmianą karty należy nacisnąć na Send aby wysłać ustawienia do modułu.
NAV5 – zmieniamy Dynamic Model na Pedestrian – jest to opcja dla modułu przemieszczanego „pieszo” (do 30m/s) i pozwoli ona na ustalanie dokładniejszej pozycji i jej mniejszy dryft, lecz gorzej będzie sobie radziła przy wyższych prędkościach. Opcja ta świetnie sprawdzi się w większości modeli. Portable – prędkość przemieszczania do 130m/s, jeśli latamy bardzo szybko i nie bawimy się w zawisy, to ta powinna być lepsza.
PRT – tutaj możemy zmienić prędkość portu UART, w polu Baudrate wybieramy odpowiednią prędkość, np 57600 która jest domyślną dla Cleanflight. Po zmianie prędkości i wysłaniu danych moduł się rozłączy, aby się połączyć ustaw nową prędkość połączenia w programie. Przy prędkości 115200 może wstępować utrata pakietów.
RATE – zawiera ustawienie m.in. częstotliwości wysyłania danych, dla neo-6m z domyślnych 1000ms można zmienić np na 100ms aby dane były przesyłane 10 razy na sekundę, nie spowoduje to zwiększenia dokładności, ale kontroler lotu lepiej będzie się orientował podczas lotu wspomaganego GPS. Jeśli moduł nie pozwala na tak duże odświeżanie, można ustawić np. 200ms.
CFG – tutaj zaznaczamy Save current configuration i klikamy na Send aby zachować zmiany w pamięci stałej. Jeśli tego nie zrobimy to moduł przywróci poprzednie ustawienia po restarcie.

u-center-3d

A tak wygląda podgląd na niektóre dane. Normalnie satelitów jest więcej i sygnał jest silniejszy, ale w tym przypadku moduł leżał na biurku przy komputerze jak to widać na jednym z wcześniejszych zdjęć. Powyższej zmiany ustawień nie trzeba w zasadzie robić jeśli moduł fabrycznie ma dobre ustawienia, a prędkość komunikacji można również zmienić w kontrolerze lotu – jeśli ten na to pozwala.

Montaż modułu na ramie

zmr-250_neo6m_installWybranie miejsca na antenę i moduł GPS. Muszą one być z dala od anteny nadajnika wideo, anteny odbiornika RC (jeśli również nadaje) i z dala od źródeł zakłóceń, czyli przetwornic, regulatorów, przewodów prądowych, i w małym quadzie 250 może być na prawdę ciężko zamontować sensownie ten GPS. Należy po prostu poeksperymentować, u mnie GPS był zakłócany przez kamerę FPV oraz nadajnik wideo, a antena 433MHz nie robiła na nim najmniejszego wrażenia – więc zamontowałem go obok tej właśnie anteny z tyłu ramy. Myślę że włókno węglowe pomoże powstrzymać niewielkie zakłócenia z regulatorów i reszty elektroniki, a jeśli chodzi o anteny – cóż, jeśli mocno sieją to coś jest z nimi nie tak.

gps_mastW przypadku problemu ze znalezieniem miejsca, GPS można zamontować na maszcie ponad całą konstrukcją tak aby nic go nie przysłaniało. Można kupić taki gotowy zestaw, lub dokupić sam maszt do istniejącego GPSa. Jeśli nie możemy poradzić sobie z zakłóceniami, można zmontować lub kupić miedziany ekran w kształcie trapezu, montowany pomiędzy podstawą masztu a anteną GPSa – nie dość że blokuje on śmieci z anten na dole, to odbija sygnał satelitów sprawiając że moduł będzie dostawał go więcej. Taki ekran najlepiej wykonać z laminatu szklano-epoksydowego jednostronnie pokrytego miedzią – wystarczy pociąć płytki i je polutować – bądź w wersji lżejszej z samoprzylepnej folii miedzianej naklejonej na jakiś lekki szkielet. Blacha miedziana będzie tu zdecydowanie zbyt ciężka. Oczywiście można też próbować użyć folii aluminiowej bądź innej. Jeśli jednak mamy poważny problem z zakłóceniami i np. po włączeniu nadajnika wideo GPS od razu gubi fixa – to znaczy że mamy problem albo z kiepskim GPSem, albo co bardziej prawdopodobne z kiepskim nadajnikiem wideo albo z niedopasowaniem jego anteny. Harmoniczne z żadnej z używanych u nas częstotliwości nie pokrywają się bezpośrednio z częstotliwościami pracy GPSu, i nie powinny znacząco na niego wpływać, ale umieszczenie jego odbiornika w pobliżu silnego nadajnika i tak spowoduje zagłuszenie sygnału z satelitów – można to porównać do próby dogadania się na głośnym koncercie. Częstotliwość naszej mowy może się bardzo różnić od częstotliwości hałasu, ale amplituda tej drugiej będzie tak wysoka, że kompletnie nie usłyszymy co ktoś do nas mówi – właśnie tak słaby jest sygnał docierający z satelit w porównaniu z sygnałem wysyłanym przez nasze własne anteny.

Podłączenie modułu GPS do kontrolera lotu

flip32_neo6m_connectionJeśli moduł można zasilić z 5V, zasilanie można podprowadzić z kontrolera lotu. Jeśli wymaga on napięcia niższego, należy skorzystać z przetwornicy step-down/buck ustawionej na właściwe napięcie. Można też z niej skorzystać jeśli zasilanie przy kontrolerze lotu jest zaśmiecone i GPS przez to nie pracuje poprawnie. Gdzie połączyć linie danych? Do wolnego portu UART na kontrolerze, ja skorzystam z portu UART2. Więcej o portach szeregowych płytki Flip32 pisałem tutaj – porty uart we flip32.

Konfiguracja GPS w Cleanflight

cleanflight_uart_port_set

Na sam początek konfiguracja portu UART pod który moduł został podłączony – zakładka Ports. Jak wyżej pisałem, u mnie będzie to UART2 czyli piny CH3 i CH4. Prędkość pozostawiam domyślną 57600, bo właśnie taką ustawiłem w module GPS. Jeśli jednak występują problemy z przesyłaniem danych, warto ją zmniejszyć.

cleanflight_gps_config

W zakładce Configuration włączamy funckję GPS. W zależności od typu modułu wybieramy protokół, NMEA lub UBLOX. Ground Assistance Type to typ systemu wspomagania satelitarnego, będąc w Europie wybieramy European EGNOS co powinno nieco przyśpieszyć złapanie fixa, ale można również pozostawić Auto-detect. Magnetometer Declination to deklinacja magnetyczna. Parametr ten służy do poprawnego określenia biegunów geograficznych ziemi na podstawie biegunów magnetycznych – bo te się ze sobą nie pokrywają. Deklinacja magnetyczna zależy od kilku czynników i nieustannie się zmienia, więc należy ją co jakiś czas uaktualniać.

magnetic_declination

Aby poznać deklinację dla naszego położenia geograficznego, wystarczy udać się na stronę www.magnetic-declination.com i tam kliknąć na mapę. Jak widać wpisana przeze mnie jakieś pół roku temu deklinacja w cleanflight trochę się zmieniła.

cleanflight_gps_tab

Po zapisaniu ustawień, jeśli wszystko jest skonfigurowane i podłączone dobrze, w zakładce GPS powinniśmy zobaczyć jak moduł odbiera dane z satelitów, a jeśli damy mu troszkę więcej czasu to powinien ustalić naszą pozycję.


Dla modułów UBLOX, Cleanflight wspiera automatyczną konfigurację. To znaczy że nie trzeba ręcznie konfigurować modułu programem uCenter, bo kontroler lotu wyśle mu właściwą konfigurację po każdym restarcie. Aby uaktywnić, w karcie CLI użyj polecenia set gps_auto_config=1 a następnie save. Wysyłana konfiguracja będzie zapisywana tylko w pamięci ulotnej, to znaczy że po restarcie moduł przywróci konfigurację która jest zapisana w pamięci stałej – stąd kontroler lotu przy każdym starcie będzie wysyłał ją na nowo.

Tryby lotu GPS PH i GPS RTH

gps_modesTryb GPS RTH (Return To Home) to automatyczny powrót modelu do miejsca startu, a właściwie w tym przypadku do miejsca w którym model został ostatni raz uzbrojony. Ponieważ w chwili obecnej Cleanflight jest w tej kwestii dopiero rozwijany, to różnie może sobie radzić z utrzymywaniem wysokości podczas takiego lotu (na razie brak konfigurowalnej wysokości), w zależności od wersji oraz wybranego kontrolera PID. Zawsze można do takiego trybu dodatkowo włączyć tryb BARO. Tryb GPS PH (Position Hold) to utrzymywanie stałej pozycji, w której tryb ten został aktywowany. Przed startem (uzbrojeniem) upewnij się że GPS złapał fixa, choć kontroler lotu teoretycznie nie powinien pozwolić na aktywację tych trybów jeśli jest inaczej. Tryby lotu GPS wymagają obecności magnetometru na pokładzie – bez niego kontroler lotu nie będzie wiedział w którą stronę model jest skierowany i nie będzie potrafił przemieszczać go w odpowiednim kierunku.

Uwaga – w bieżącej wersji Celanflight (w chwili powstawania tego artykułu 1.10.0) tryby GPS są niedopracowane i pozostawione głównie w ramach eksperymentu. RTH oraz PH działają bardzo kulawo i nie należy im powierzać kontroli nad maszyną bez nadzoru, a przy wietrze mogą całkowicie zawieść.

Aby móc uaktywnić tryby lotu GPS, należy najpierw włączyć i skonfigurować GPS. Aby włączyć te tryby przechodzimy do zakładki Modes, gdzie przypisujemy tryb lotu do kanału przełącznika i ustawiamy zakres jego zadziałania – tryby lotu w Cleanflight. Obydwa tryby lotu GPS należy aktywować w parze z trybem lotu stabilizowanego Angle lub Horizon.

Jeśli chodzi o wysokość, należy odróżnić wysokość podawaną przez barometr która jest wysokością mierzoną od miejsca uzbrojenia maszyny, od wysokości GPS która jest wysokością nad poziomem mórz i oceanów (tzn jest to nieco bardziej skomplikowane) – więc ta druga zawsze będzie większa o wysokość naszej pozycji nad poziomem morza.

Cleanflight musi się jeszcze dorobić trybów GPS z prawdziwego zdarzenia, to znaczy dobrych algorytmów lotu w tych trybach, dedykowanych ustawień (np wysokości lotu), automatycznego lądowania dla RTH, czy w pełni konfigurowalnego failsafe do zaprzyjaźnienia z trybem RTH. W obecnej chwili GPS można traktować raczej jako narzędzie do znajdowania modelu w połączeniu z telemetrią, niż jako coś co będzie samo sterowało modelem.

…multicoptery – spis wszystkich tematów

5.00 avg. rating (97% score) - 2 votes

12 komentarzy

  1. Ten pierwszy gps( zielone pcb) nie posiada epromu, trzeba go dolutowac do padów obok wyjścia sygnału uart. Dodatkowo do pinu 3 można dodac diode led, która zasygnalizuje fixa 3d. Kolejne zdjęcia i kolejny gps( niebieske pcb) łapie mi fixa3d na coldstart w mniej niż minute

  2. Dodatkowo ten z pierwszego zdjecia to nie jest ubox neo6m tylko jakis chiński zamiennik, który cieżko ustawic. Na zdjęciu jeszcze bez epromu.

    • Bo ten zielony to tylko foto dla przyozdobienia tekstu, ale tak myślałem że może wprowadzać w błąd, będzie trzeba to zmienić :) Wpis jeszcze wymaga rozwinięcia, bo temat tylko jest poruszony powierzchownie, i zapewne z czasem to zrobię. Pozdrawiam.

  3. Warto też dodać że ublox czasem wymaga i 15 minut na zapisanie danych w epromie/flashu wiec nie ma co panikowac np. jak ja :)

  4. http://www.rcgroups.com/forums/showthread.php?t=2495732 – tutaj powstaje odłam Cleanflight’a pisany przes rosjanina który główny nacisk kładzie właśnie na zawansowane tryby lotu GPS .Jeśli chodzi o tani i dobry GPS – to polecam BN-880 z BG za 17$ – działa z moja 250-ką wyśmienicie i jest odporny na zakłócenia („widzi” do 17 satelit).

    • A z jakim kontrolerem działa?

      Ja mam flip32 i zastanawiam się właśnie nad BN-880 lub BN-800 i nie wiem który lepszy.

  5. Witam…
    Gratuluję bardzo fajnej strony i podejmowanej tematyki…
    hm…
    ale w tej części dot. GPS (merytorycznie bez zarzutu) bardzo razi mnie gramatyka…
    piszesz np. : „Niestety każda satelita systemu GPS która orbituje… ” a powinno być „Niestety każdy satelita systemu GPS który orbituje…”
    albo:
    „… i musi nasłuchiwać wszystkich sygnałów i odbierać dane z każdej „widzialnej” satelity”
    powinno być
    „… i musi nasłuchiwać wszystkich sygnałów i odbierać dane z każdego „widzialnego” satelity”…
    Bardzo źle brzmi też zdanie:
    ” Fix 3D to ustalenie współrzędnych oraz wysokości nad poziomem morza, wymaga minimum czterech satelit, ale różne moduły mogą różnie sobie z tym radzić i pewnie będą wymagać większej ilości satelit. „.
    To raczej powinno wyglądać tak:
    „Fix 3D to ustalenie współrzędnych oraz wysokości nad poziomem morza, wymaga minimum czterech satelitów, ale różne moduły mogą różnie sobie z tym radzić i pewnie będą wymagać większej ilości satelitów”.

    … po prostu satelita to rodzaj męski (facet) ten satelita a nie ta satelita(rodzaj żeński) …
    pozdro…
    Jarek S.

    • Spoko, poprawione, następnym razem w takiej sprawie zapraszam przez kontakt prywatny :)

  6. a jest jakis modul gps o duzej dokladnosci tzn. centymetrowej

  7. Kup normalny GPS i nie opowiadaj pierdołów że trzeba 20min na fixa czekać ;)

  8. Zakupiłem UBLOX 7M próbuję go skonfigurować niby wszystko pięknie w uCenter ale od 40 minut łapie i gubi satelity nigdy nie ma więcej jak 2.

    GPS wystawiony poza balkon i ten sam problem ma ktoś jakieś rady ?

  9. Prosze o dodanie poradnika kalibracji kompasu w clean Flight ;P

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Proszę pozostawić te dwa pola tak jak są: