Sytuacja kobiet w IT w 2024 roku
9.07.20197 min
Jakub Ładowski
EDC - Engineering Design Center

Jakub ŁadowskiEmbedded Software EngineerEDC - Engineering Design Center

Zaprogramuj drona i wygraj go w warszawskim Hackathonie

Programista – programiście, czyli nietypowy Hackathon robiony przez ziomków dla ziomków.

Zaprogramuj drona i wygraj go w warszawskim Hackathonie

Już za 3 miesiące odbędzie się hackathon, którego tematem przewodnim będą bezzałogowe systemy powietrzne i analiza danych. Każdy, kto stanie się uczestnikiem konkursu, będzie zespołowo współtworzył system komunikacji z takim urządzeniem. Jest to doskonała okazja do tego, by w kreatywny i oryginalny sposób pobawić się programowaniem i analizą danych z obszaru UAV

Tak naprawdę każdy może wygrać! A gdy wątpisz w swoje umiejętności i nie czujesz się pewnie w naszej tegorocznej tematyce, to proponujemy poniższą wiedzę w pigułce, która szybko i mamy nadzieję - skutecznie sprawi, że poczujesz pasję do tych latających urządzeń. 

O co chodzi z tymi dronami? I dlaczego to takie wciągające?

Aktualnie drony posiadają najróżniejsze właściwości, a ich konstrukcja również rozwija się w błyskawicznym tempie. Obok najpopularniejszych 4-wirnikowych samolotów z tej dziedziny istnieją również urządzenia m.in. 1-wirnikowe, 8-wirnikowe, czy też 16-wirnikowe. 

W zależności od zastosowania, mogą być ogromne (jak choćby Triton MQ-4C) lub malutkie – wielkości połowy kciuka! Ich zastosowań jest coraz więcej, a niedawno powstały pierwsze bezzałogowe statki powietrzne służące do przewozu ludzi! Jednak to dopiero początek starań o futurystyczne miejskie taksówki, latające nad korkami. 

Głównym problemem takich rozwiązań jest energia. Do zasilenia małych dronów potrzeba ciężkich baterii Li-Po (litowo-polimerowych).  Czego w takim razie trzeba użyć, aby zasilić samolot unoszący ludzi? Moment, w którym wynalezione zostaną lekkie ogniwa o dużej pojemności, będzie na pewno krokiem milowym w technologii konstruowania dronów. 

Obecnie czas lotu drona bywa różny. Zazwyczaj nie przekracza jednak 40 minut, a osiągnięcie takiego wyniku jest niemałym wyzwaniem. Oczywiście duży wpływ na to zagadnienie ma wyposażenie BSP (bezzałogowe statki powietrzne), ponieważ każdy czujnik musi być zasilony. Mimo wszystko apetyt rośnie w miarę jedzenia i liczymy, że takie rozwiązania prędzej niż później się pojawią i będziemy mogli z nich korzystać.

Jak zbudowany jest taki dron? Jak nim sterować?

Współczesne drony składają się z elementów mechanicznych, oprogramowania oraz z elektroniki. „Mózgiem” drona jest mikrokontroler. To on analizuje sygnały przychodzące do czujników i decyduje, co robić z tymi danymi. Jego zadaniem jest takie sterowanie silnikami, aby dron poruszał się tak, jak my tego chcemy.

Poniżej sam zobacz na załączonym, uproszczonym schemacie, jak taki system sterujący może wyglądać na przykładzie 4-wirnikowca. Skupiliśmy się tylko na najważniejszych częściach umożliwiających latanie (GPS niekoniecznie, ale warto o nim wspomnieć już teraz). Przerywana linia oznacza połączenie bezprzewodowe.

BSP może posiadać różne sensory, ale podstawowy i niezbędny do latania to akcelerometr. który mierzy przyspieszenia w osiach. Dzięki temu dron wie, w którą stronę się porusza). Niestety każdy czujnik jest skazany na działanie szumu pomiarowego, dlatego w  połączeniu z wibracjami wywołanymi przez silniki, utrudnia znacznie analizowanie sygnału. 

Aby zwiększyć dokładność wyznaczania położenia, stosuje się żyroskop oraz magnetometr. Często istnieje potrzeba wykonania lotu poza zasięgiem pola widzenia (tzw. BVLOS – „Beyond Visual Line of Sight”) – wtedy z pomocą przychodzi GPS. 

Podsumujmy: do samego latania musimy mieć przynajmniej akcelerometr, a najlepiej: akcelerometr, żyroskop, magnetometr (zestaw tych trzech to tzw. IMU), no i oczywiście GPS.

Na powyższym rysunku jest jeden mały szczegół, który warto zauważyć: strzałka skierowana od IMU do GPS. Dlaczego? GPS daje nam pozycję globalną (jesteś w Warszawie pod Pałacem Kultury i Nauki, przy fontannie), natomiast IMU mówi nam: „poruszyłeś się trochę w lewo”, „teraz trochę w prawo”, „a teraz to lecisz w przód”. Ponadto sygnał z GPS otrzymujemy kilka razy na sekundę, natomiast z IMU nawet kilka tysięcy! Dlatego bierzemy najpierw pozycję globalną z GPS i korygujemy ją poprzez IMU.

Do określania pozycji może pomóc analiza obrazu z kamery. Jak? Wystarczy,
że rozpoznamy horyzont i już mamy „jakąś” informację o położeniu drona. Pisząc „rozpoznamy horyzont” mamy oczywiście na myśli sieć neuronową, która zrobi to za nas.

W zależności od przeznaczenia drona, może być on wyposażony w czujnik odległości. To wprowadza ogromną zaletę: możemy nauczyć go omijać przeszkody! Wyobraź sobie: chcemy, aby dron poleciał w określone miejsce, zabrał paczkę i wrócił. No więc:

  1. Zaznaczamy palcem na tablecie, gdzie dron ma lecieć (mapy online – zero problemu)
  2. Dron wybiera trasę – wysokie bloki są zaznaczone na mapie, więc omija je bez wahania
  3. Wczoraj zaczął się remont bloków
  4. Nasz dron spektakularnie rozbił się o dźwig stojący obok bloku...


Słabo... prawda? No właśnie... Z pomocą przychodzą nam czujniki odległości – od radarów, przez lidary, po najtańsze ultradźwiękowe sensory. Który wybrać? Na to pytanie jest bardzo prosta odpowiedź: tą, która jest dla Ciebie znana. Musisz otworzyć portfel i teraz: jeśli widzisz dolary – radar/lidar, jeśli pajęczyny – czujnik ultradźwiękowy. 

Ceny radarów oraz lidarów potrafią przekroczyć 20000 (i mówimy tu o dolarach), natomiast ceny czujników ultradźwiękowych zaczynają się od 20zł. Jednak przy profesjonalnych rozwiązaniach (np. wyznaczania optymalnej ścieżki lotu), niezbędne jest zbudowanie wirtualnej mapy 3D – do tego potrzebujemy wysokiej klasy lidaru lub radaru.

Sterowanie, sterowaniem, a co z tym programowaniem?

Nie oszukujmy się, każdy z nas ma pokusę, aby sprzęty w wielu sytuacjach nas wyręczały. Po co właściwie sterować dronem, skoro równie dobrze mógłby latać sam, tam gdzie my chcemy?

Jak wspomnieliśmy na początku, „mózgiem” drona jest mikrokontroler. Znajduje się on oczywiście na płytce (żeby fizycznie można było wszystko do niego podłączyć). Taki mikroprocesor na płytce nazywamy autopilotem. Jest on odpowiedzialny za sterowanie: od odczytywania wartości z akcelerometrów, do odpowiedniego sterowania silnikami. 

Mówiąc „programowanie drona” mamy na myśli programowanie mikrokontrolera, który steruje dronem. Czy chcąc zaprogramować drona musisz sam napisać milion linijek kodu? Nie! Istnieje wiele gotowych rozwiązań, które mają otwarty kod – Twoje zadanie ogranicza się do zorientowania się jak on działa (a zasada działania jest bardzo podobna w każdym autopilocie).

Gdy kupujemy drona w sklepie, otrzymujemy drona (szok) oraz kontroler. To on, poprzez wychylenie drążka, wysyła radiowe sygnały „skręć w prawo”, „leć w górę” itp. Wiele modeli oferuje możliwość podłączenia smartfona do kontrolera, dzięki czemu możemy mieć obraz z kamery na żywo. 

Ba! Nie musimy nawet używać kontrolera, możemy sterować drona telefonem! To otwiera nam nowe możliwości: możemy napisać aplikację na smartfon, wtedy dron będzie mógł wykonywać misje! Jakie misje? Przykładowo: mamy obraz z kamery, zaznaczamy obiekt na naszym telefonie, a nasza aplikacja instruuje drona: „lataj dookoła zaznaczonego budynku”.

W otwartych kodach źródłowych autopilotów dostępnych w Internecie, obsługa czujników takich jak: akcelerometr, żyroskop, magnetometr, jest już wykonywana. Co więcej, komunikacja drona ze stacją naziemną/tabletem/kontrolerem też już jest zaimplementowana. Super! Czyli, że już nie trzeba nic robić? Absolutnie nie. 

Gdy zapoznasz się z kodem źródłowym autopilota, zobaczysz, że zrobione zostały tylko (i aż!) podstawowe rzeczy (wymagane do latania). Wgranie takiego autopilota nie zapewni omijania przeszkód, czy analizy obrazu z kamery. Podsumujmy: wiemy, co steruje dronem i co to znaczy „zaprogramować drona”, pora na zadania dla superbohatera. I tu wchodzisz Ty! Cały na biało. To właśnie do Ciebie należy znalezienie sposobu, jak analizować obraz lub dane ze specjalistycznych czujników (np. z lidaru). Tutaj jest pole do popisu dla programisty.

Do analizy obrazu najczęściej wykorzystuje się dedykowany układ graficzny (drugi mikrokontroler na płytce, który będzie komunikował się z naszym „mózgiem” drona). Wyobraźmy sobie, że chcemy żeby dron latał za naszym kotem. Dzięki sieciom neuronowym potrafimy rozpoznać, co jest na obrazie, który dostajemy z kamery, ale jak to zrobić? Otóż: robimy np. 200 zdjęć naszego kota, znajdujemy sieć neuronową w internecie, która rozpoznaje koty (tak... już ktoś to zrobił), wgrywamy na nasz układ graficzny – w tym momencie dron, będzie wisiał w powietrzu, natomiast będzie wiedział, w którym miejscu na ekranie jest nasz pupil. 

Teraz piszemy program, który będzie ruszał dronem tak, aby kotek był zawsze na środku. Aplikacja działająca na układzie graficznym, w zależności od ruchu  zwierzątka, będzie wysyłała rozkaz do mikrokontrolera „leć w prawo”, „dawaj w tył trochę”, czy „Kot nam ucieka! Naprzód!”.

Powyższy przykład wydaje się błahy, ale gdybyśmy zastanowili się głębiej, to programowanie dronów może mieć naprawdę niebagatelny wpływ na naszą rzeczywistość i może całkiem efektywnie usprawniać nasze życie, np.:

  • Szybkie dostarczanie paczek
  • Dostarczanie leków, tam gdzie droga naziemna jest trudna do przebycia
  • Monitoring parkingów
  • Śledzenie uciekających przestępców
  • Gaszenie pożarów
  • Lokalizacja dziur w drogach
  • Liczenie uczestników na demonstracjach
  • Rolnictwo precyzyjne
  • Poszukiwanie zaginionych
  • Inspekcja linii wysokiego napięcia


W naszym centrum inżynieryjnym EDC również znajdujemy wiele oryginalnych zastosowań tych urządzeń w lotnictwie i kto wie, do czego nas te działania doprowadzą i jak bardzo zrewolucjonizują cały przemysł lotniczy. W związku z tym, bardzo gorąco zachęcamy Was do tej hackathonowej przygody z dronami. Wypełniajcie formularze, przyjeżdżajcie i spędźcie z nami twórczo te 24 jesienne godziny! 

Wydarzenie odbędzie się 11 października 2019 roku podczas tegorocznej Nocy w Instytucie Lotnictwa w Warszawie -  już po raz trzeci! Serdecznie zapraszamy do wzięcia udziału w Hackathonie organizowanym przez nas - programistów z Engineering Design Center (wspólnego przedsięwzięcia GE i Sieci Badawczej Łukasiewicz – Instytut Lotnictwa).

W nagrodę zwycięskiemu zespołowi chcielibyśmy wręczyć własne drony, by mógł dalej eksplorować możliwości tych urządzeń i bawić się nim w najlepsze. Jest również opcja zgłosić się samodzielnie i już na miejscu dołączyć do któregoś z zespołów. 


Jeśli już jesteś gotowy, radośnie zacierasz ręce i chcesz zapoznać się ze szczegółowym regulaminem oraz wypełnić konkursowy formularz, odwiedź naszą stronę!

<p>Loading...</p>