Autor omawianego projektu jest ogromnym fanem robotów latających: wszelkiego rodzaju dronów, helikopterów etc. Kolejnym jego projektem miał być quadrocopter, jednakże nie byle jaki. Prezentowana poniżej konstrukcja to projekt inteligentnego quadrocoptera wyposażonego w kamerę, do rozpoznawania obrazów. Dzięki temu dron ten jest w stanie autonomicznie podążać za czerwoną piłeczką lub ludzką twarzą.
System drona oparty jest o Raspberry Pi Zero z Pi Camera. Dodatkowo wykorzystano moduł MultiWii. Jest to kontroler lotu do autonomicznego drona, który pozwala na dużą elastyczność, ponieważ oparty jest o Arduino. Więcej na jego temat poniżej.
Co ten dron potrafi? Czemu jest taki szczególny?
Najprościej mówiąc – dlatego że jest inteligentny i autonomiczny. Z pewnością dużo inteligentniejszy niż dowolny inny dron dostępny w sklepach. Ten dron nigdy nie uderzy w drzewo czy ścianę. Posiada wbudowane funkcje takie jak automatyczne podążanie za czerwoną piłeczką czy ludzką twarzą (a nie są to jeszcze jego maksymalne możliwości!).
Autor projektu napisał w Pythonie prosty program rozpoznający kształty. Dzięki temu, można wydawać mu rozkazy typu „leć do przodu”, „leć do tyułu” czy „skreć” jedynie pokazując mu przedmioty o danym kształcie. Niewiele innych maszyn to potrafi. Autor spędził nad projektem pięć miesięcy, zaczynając od zera (i wykorzystując oczywiście pewne gotowe rozwiązania, ale to i tak dobry wynik – przyp.red.).
Czego nauczę się z tego artykułu?
Po przeczytaniu niniejszego tekstu powinieneś być w stanie samodzielnie zbudować podobny, inteligentny quadrocopter rozpoznający twarze i czerwone piłeczki. W treści artykułu przejdziemy przez podstawy budowania dronów, jak i bardziej zaawansowane tematy z tym związane. Zajmiemy się także szczegółami oprogramowania rozpoznającego obrazy. W ramach projektu autor skonstruował dwie podobne maszyny, jedną wyposażoną w cztery, a drugą w sześć silników. W ramach niniejszego projektu omówimy jednakże prostszą konstrukcję, stabilniejszego quadrocoptera.
Plany na przyszłość
W przyszłości chciałbym stworzyć drony, które mogłyby realizować ważne zadania w sposób zupełnie autonomiczny. Takie pojazdy mogłyby samodzielnie wyszukiwać zaginione osoby np. w górach, albo też lokalizować zwierzęta czy nawet namierzać przestępców w grupie ludzi. Sterowane byłyby autonomiczne i nawigowałyby z wykorzystaniem GPSa.
[Na stronie projektu autor udostępnia więcej filmików i GIFów, na których widać działanie drona – silnik Elektrody nie obsługuje za dobrze GIFów, więc ich tutaj nie umieściłem - przyp.red.]
Zanim zajmiemy się jednak samą konstrukcją obejrzyjmy film, podsumowujący tło projektu jak i pewne informacje dotyczące motywacji, poprzednich projektów itp.
Krok 1: Videoprezentacj
To krótka wersja filmu, poświęconego projektowi. Pełna wersja prezentowana była w Brukseli na specjalnej demonstracji – za jakiś czas powinien on także być dostępny on-line.
Krok 2: Pełen projekt
W poniższym projekcie zbudujemy pojedynczego, inteligentnego drona. Zaznaczenie tego nie jest bez znaczenia, bo autor pracuje także nad rojem dronów, które będą wykazywać stosowne zachowania, jak np. rój pszczół. Prezentowany on będzie na targach MILSET Expo Sciences International.
Na zdjęciu powyżej widzimy drona w wersji 1.0. Była ona w stanie jedynie omijać przeszkody i nic więcej. Od tego czasu rozwinięta została kolejna, druga wersja drona, który nie tylko potrafi rozpoznawać przeszkody, ale także rozpoznawać na obrazach twarze itp.
Krok 3: Inspiracja i tło powstania konstrukcji
Osiem miesięcy temu autor projektu doznał otwartego złamania kości ramiennej podczas wypadku rowerowego. Wypadek miał miejsce w lesie, więc w momencie gdy nie był on w stanie się podnieść po wypadku zdany był na innych – dopiero przechodząca przypadkiem tamtędy para mogła udzielić mu pomocy i wezwać lekarzy.
Całe zajście było dosyć straszne, jak i miało poważne implikacje zdrowotne – autor stracił sporo krwi, a lekarze musieli usunąć mu część mięśnia z ramienia. Częściowo jest to wina długiego oczekiwania na pomoc. Wtedy te narodził się pomysł autonomicznych latających robotów, które mogłyby pomagać ludziom szybko i sprawnie. Nie popadajmy oczywiście w skrajności, aczkolwiek tego rodzaju sytuacja doskonale podkreśla zalety inteligentnych i autonomicznych systemów – taki dron doskonale poradziłby sobie w tej sytuacji.
Miasto w którym mieszka autor otoczone jest górami. W górach zdarza się wiele wypadków. W górach tych żyje też wiele zwierząt: niedźwiedzie, wilki, orły czy myszołowy. To te ostatnie były największą inspiracją dla autora. Żyją one w niewielkich grupkach i wykorzystując swoje doskonałe zmysły jak i unikalną technikę lotu, doskonale radzą sobie w tych warunkach.
Autonomiczne drony także mogłyby działać podobnie. Można wyposażyć je w doskonałe zmysły, zwłaszcza wzrok, a także nauczyć działać w grupie i wspólnie rozwiązywać problemy – tak jak myszołowy.
Te wszystkie kwestie sprawiły, że autor postanowił skonstruować inteligentnego drona, która mógłby np. przeczesywać góry w poszukiwaniu osób, które uległy wypadkom. Tak samo mógłby przeczesywać rejony po katastrofach czy klęskach żywiołowych. Jest wiele potencjalnych zastosowań dla tego typu systemów, gdzie mogłyby ratować ludzkie życie.
Krok 4: Szczegóły techniczne projektów
Autor skonstruował już dwa drony – z Arduino i z Raspberry Pi Zero wyposażone w kamerę. Jeden to hexacopter, drugi quadrocopter. Mają różne możliwości – jak ludzie. Jeden jest lepszy fizycznie, drugi lepiej liczy. Oba wyposażone są kamery FullHD i możliwość transmitowania obrazu do operatora w czasie rzeczywistym. Oba są także wyposażone w GPS.
Drony dostępne komercyjnie mają podobne wyposażenie i podobne możliwości. W najlepiej wyposażonych dronach na rynku także dostępne są takie opcje jak tryby „follow me” czy automatyczne powroty do miejsca startu i autonomiczne lądowanie. Jednakże… to za mało. Autor zapragnął skonstruować pojazd, który ma większe możliwości niż te. Drona, który potrafi coś więcej niż tylko latać sterowanym przez operatora i nagrywać filmiki 4K.
Opisane drony są w pewnym sensie inteligentne. Obie maszyny komunikują się ze sobą i centralnym serwerem, przesyłając dane pochodzące ze wszystkich wbudowanych w pojazdy sensorów. Wykorzystując te sensory drony, zupełnie jak zwierzęta, są w stanie podchodzić do różnych problemów i próbować je rozwiązać.
Zasięg komunikacji pomiędzy dronami wynosi aż 1,8 kilometra. Wbudowane w oprogramowanie dronów algorytmy pozwalają na naukę – za każdym lotem pojazdy zachowują się coraz lepiej: coraz lepiej rozpoznają i reagują na teren jaki ich otacza etc. Wraz z zwiększającą się bazą danych, jaką zgromadziły drony, ich działania stają się coraz lepsze.
Drony wyposażone są w następujący sprzęt i oprogramowanie:
a) Raspberry Pi Zero – komputer pokładowy
b) Raspberry Pi Camera – do detekcji terenu, roślin, obiektów i twarzy (w zasadzie wszystko zależy id programu).
c) Kontroler Lotu APM – oparty na Arduino kontroler lotu, odpowiadający za balansowanie quadrocopterem, analizę sygnałów z GPSa i kontrolę silników (to już gotowy i istniejący moduł z własnym oprogramowaniem)
d) Mechanizm drona – istniejąca już rama hexacoptera z silnikami, uchwytem na kamerę, baterią o pojemności 10300 mAh i wbudowanym modułem GPS.
e) Sensor światła do detekcji słońca
f) Barometr do pomiaru ciśnienia i obliczania względnej wysokości
g) Ultradźwiękowy czujnik odległości do pomiaru odległości od twardych przedmiotów w pomieszczeniu jak i na dworze
h) Moduł komunikacji szeregowej o zasięgu 1,8 km – pozwala na komunikację z dronem jak i z serwerem
i) Kamerę 4K 24 fps / 2K 30 fps – do nagrywania przebiegu lotu
j). Transmiter wideo 5,8 GHz – przekazuje obraz z kamery do operatora, co umożliwia obserwowanie widoku z kamery w czasie rzeczywistym podczas lotu (zasięg do 2000 m).
Krok 5: Początek montażu projektu
Wiele powiedzieliśmy już na temat inspiracji i motywacji do stworzenia tego rodzaju quadrocoptera. Zacznijmy teraz zatem jego montaż. W pierwszej kolejności zebrać musimy potrzebne elementy, jednakże zanim zakupimy jakiekolwiek fizyczne elementy dobrze jest nabyć trochę wiedzy na temat software i hardware, jakie będziemy montować i instalować w pojeździe.
Dobrze jest mieć podstawowe doświadczenie w programowaniu, zwłaszcza w Pythonie i/lub C++. Dalej, przyda nam się pewne doświadczenie w zakresie kontrolerów lotu dla takich pojazdów. Wszystkie programy autora, jakie zamieszczone są w projekcie, napisane są w C++ na Arduino lub w Pythonie, jednakże niniejszy artykuł to nie miejsce na naukę tych języków, więc zagadnieniom podstawowym i tłumaczeniu co jak działa nie poświęcimi tutaj zbyt wiele miejsca.
Jeśli chodzi o umiejętności związane z elektroniką, to podstawowa wiedza o tym jak działają typowe elementy i umiejętność lutowania to wszystko czego nam trzeba. W systemie wykorzystujemy moduł kontroli lotu MultiWii – zasadniczo jest to Arduino Mini Pro z dodatkowymi sensorami.
Uwaga Nie jest to projekt dla każdego, szczególnie jeśli nie miał wcześniej do czynienia z elektroniką i programowaniem, aczkolwiek może to być pierwszy dron jaki budujesz – w artykule znajdą się wszystkie potrzebne do jego budowy informacje.
Główne cechy inteligentnego drona:
* Rozpoznawanie twarzy
* Rozpoznawanie czerwonej piłeczki
* Śledzenie tych dwóch kształtów
* Automatyczne kierowanie lotem poprzez moduł Raspberry Pi
* Logowanie danych lotu poprzez Raspberry Pi Zero z WiFi
* Unikanie zderzenia z ludźmi
* Unikanie drzew (pomiar + obliczanie ich wielkości)
* Inne, podstawowe funkcje dronów: nawigacja po GPS, przesyłanie strumienia wideo na żywo, utrzymywanie wysokości, pozycji etc
* Automatyczny powrót do bazy/miejsca startu
* Telemetria wysyłana poprzez Bluetooth
To całkiem kompleksowy system, ale na pewno z poniższym artykułem uda nam się go zrealizować.
Krok 6: Porady dla początkujących
W tym dziale można by napisać wiele, jednakże zamiast publikować tutaj ogromna bazę wiedzy lepiej jest wskazać na jej źródła. Jeśli przebrniecie przez to tutoriale z pewnością będziecie wiedzieć w jaki sposób zabrać się do montowania drona. Zasadniczo są trzy rzeczy, jakie musimy ‘ogarnąć’: jak zaprogramować Raspberry Pi w Pythonie, jak zbudować drona oraz jak korzystać z modułu MultiWii FC. W prezentowanym projekcie wykorzystane zostały dokładnie te same techniki, co w zaprezentowanych poniżej tutorialach:
Jak zbudować drona:
Jak korzystać z Raspberry Pi Zero W wraz z OpenCV do rozpoznawania twarzy:
A także tutaj oraz tutaj.
Jak korzystać z modułu Multiwii Crius SE 2.5:
Filmy te obejrzeć można równie dobrze przed jak i po zrealizowaniu tego projektu, aczkolwiek dużo przyjemniej się go realizuje, gdy się wie co się robi – kopiowanie kodu bez jego zrozumienia to żadna frajda, ani też niczego się w ten sposób nie nauczymy.
Krok 7: Zbierzmy potrzebne materiały
Do zmontowania opisywanego drona potrzebować będziemy szereg podzespołów jak i odpowiednie oprogramowanie. Jeśli chodzi o kontroler lotu wybrany został MultiWii, z uwagi na to, że można programować go w środowisku Arduino, a dodatkowo posiada szereg opcji, jakich nie ma np. Naza, APM czy Pixhawk.
Potrzebować będziemy:
* Rama quadrocoptera w zestawie z silnikami, śmigłami etc.
* Moduł kontroli lotu MultiWii SE 2.5 z GPSem, wyświetlaczem OLED, sonarem i interfejsem Bluetooth
* Baterię 3S1P o napięciu 11,1 V i pojemności 3000 mAh.
* Kamerę wideo – GoPro, SJCAM lub dowolną inną, która pozwala na nagrywaniu filmu w jakości 4K
* Raspberry Pi Zero
* RasPi Cam – kamerę dedykowaną do Raspberry Pi
* Nadajnik i odbiornik systemu kontroli radiowej
* Nadajnik i odbiornik obrazu
Wszystkie te elementy sprzedawane są jako kit, więc ich kompatybilność nie powinna być problemem. Trudnością może być jednak nabycie Raspberry Pi Zero z uwagi na ogromne zainteresowanie tym modułem.
Dodatkowo, jeśli dysponujemy większym lub mniejszym budżetem niż pokazany powyżej zmienić możemy kamerę, jaką montujemy w systemie, na inną.
Dalej, potrzebne nam będzie odpowiednie oprogramowanie do stworzenia softu dla drona:
* Arduino IDE do pobrania z www.arduino.cc
* Oprogramowanie dla MultiWii do pobrania z https://code.google.com/archive/p/multiwii/
* Raspbian OS do pobrania z www.raspberry.org
* Aplikacja na telefono EZ-GUI do pobrania z http://ez-gui.com/
Po pobraniu możemy zabierać się za montaż układu. Najpierw musimy jednakże zgromadzić stosowne narzędzia.
Krok 8: Narzędzia
Potrzebny nam będzie całkiem nieźle wyposażony warsztat. Do zmontowania tego drona potrzebujemy:
* Śrubokręt
* Multimetr
* Taśma klejąca
* Spinki do kabli
* Nożyczki
* Obcinaczki do kabli
* Przyrząd do zdejmowania izolacji z kabli
* Linijka
* Śrubki
* Lutownica
* Komputer z potrzebnym na oprogramowaniem do zaprogramowania wszystkich modułów.
Krok 9: Kod programu i schemat połączeń
Pobieramy spakowany plik – tutaj – znajdziemy w nim otwarte i darmowe oprogramowanie stworzone przez autora projektu. W paczce znajdziemy algorytmy podążania za czerwoną piłeczką, twarzą a także wstępnie skalibrowane oprogramowanie dla modułu MultiWii. Można skorzystać z zawartego w paczce konfiguratora dla tego modułu, ale rekomenduje się aplikację EZ GUI na telefon.
Wypakowane z paczki pliki potrzebne będą nam w dalszych krokach.
Zaprezentowane powyżej płytki z opisami pinów pokazują nam gdzie co zostanie podłączone do poszczególnych modułów. Układ jest bardzo prosty, wystarczy wykorzystać dedykowane kable do goldpinów, aby połączyć ze sobą systemy w całość. W pierwszej kolejności musimy dołączyć pin UART RX (odbiór) modułu MultiWii do pinu 15 Raspberry Pi Zero. Możemy teraz podłączyć zasilanie do tych dwóch modułów. Pozostałe elementy, jakie podłączać będziemy do systemu, są po prostu różnymi sensorami itp. Typu plug&play, więc ich podłączanie nie wymaga bardziej skomplikowanych operacji (i większość z nich zaprezentowana jest na poradnikowych filmach powyżej).
Krok 10: Montaż MultiWii na platformie quadrocoptera
Na zdjęciach widzimy już zmontowaną ramę pojazdu. Wraz z kitem dostarczana jest instrukcja montażu. Czterema metalowymi śrubkami przykręcamy moduł MultiWii na środku platfiormy na podwyższeniu. Następnie podłączamy moduł ESC – elektroniczny kontroler prędkości, sterujący silnikami drona i spinami jego kable spinkami w eleganckie wiązki. Upewnijmy się, że dobrze podłączyliśmy wszystkie kable do kontrolera silników – inaczej nasz quadrocopter nie wystartuje.
Krok 11: Dołączanie GPS i płytki nawigacyjnej
Te dwa moduły, służące do odnajdywania się drona w świecie rzeczywistym, dostarczane są już skalibrowane, więc wystarczy tylko podłączyć moduł GPS do niewielkiej płytki nawigacyjnej z interfejsem I2C, a następnie całość wpiąć w port I2C modułu MultiWii. Gotowe! GPS od tego momentu już działa.
Krok 12: Bluetooth
Moduł MultiWii dostarczany jest wraz z modułe, Bluetooth. Wystarczy podłączyć go do portu UART w module MultiWii i umieścić na pokładzie quadrocoptera.
Uwaga Jeśli korzystamy z Raspberry Pi musimy odłączyć pin RX od modułu Bluetooth, jaki podpięty jest do MultiWii.
Krok 13: Odbiornik RC
Odbiornik sterowania radiowego dronem zamontowany został w tylnej części i podłączony do modułu MultiWii. Podłączamy piny opisane jako: Throttle, Roll, Pitch, Yaw oraz Aux1 do odpowiednich pinów w kontrolerze lotu.
Krok 14: Mocowanie elementów
Po zamontowaniu modułów i spięciu wiązek kabli spinkami możemy przymocować kontroler do ramy quadrocoptera. Zasadniczo można go na tym etapie przetestować
Krok 15: Pierwsze uruchomienie i szybki test
Po podłączeniu zasilania do płytki moduł GPS powinien dosyć szybko się zsynchronizować. Uruchomiony powinien być także Bluetooth.
Krok 16: Dodatkowy wyświetlacz OLED
W zestawie znajdziemy także OLEDowy ekran Crius, który przydaje się niezmiernie do wyświetlania podstawowych informacji o dronie. Na ekranie prezentowane są różne informacje: tryb pracy, stan baterii, żyroskopów etc. W zmodyfikowanej wersji autor dodał jeszcze swoje imię do ekranu, ale można zmienić to w kodzie.
Instalacja ekranu jest bardzo prosta – zajmuje on drugi z portów I2C w MultiWii. Podłączamy go tam i montujemy ekran w wygodnym dla nas miejscu. Zmienianie wyświetlanych danych realizuje się z pomocą kombinacji drążków na sterowniku radiowym.
Krok 17: Miernik napięcia baterii
Potrzebne nam będą dwa oporniki – 51 kΩ i 33 kΩ. Robimy z nich dzielnik napięcia baterii, którego wyjście podłączamy do pinu A3 modułu MultiWii. Na ekranie OLED powinien pojawić się wynik pomiaru.
Krok 18: Buzzer alarmu o niskim stanie baterii
W systemie zamontować możemy prosty buzzer. Podłączamy go do pinu ósmego modułu MultiWii. Będzie on wydawał ostrzegawcze dźwięki, gdy napięcie baterii osiągnię 10,7 V lub 9,9 V. Wartości te można zmodyfikować w programie.
Krok 19: Montaż górnej płytki
Do zamontowania górnej płytki w układzie potrzebować będziemy 16 śrubek M2.5, jakie dołączone są do zestawu. Z ich pomocą montujemy górny pokład drona do jego ramy.
Krok 20: Nadajnik wideo
W dronie umieszczono nadajnik wideo pracujący przy częstotliwości 5,8 GHz. Nadajnik ten ma około 2 km zasięgu. Przymocujmy go mocno opaskami zaciskowymi do górnego pokładu tak, aby nie odpadł nawet przy dużej prędkości lotu.
Krok 21: Porządek w kablach
Utrzymywanie porządku w kablach pojazdu jest niezwykle istotne z uwagi na dużą ilość małych elementów i modułów montowanych na ramie quadrocoptera. Musimy także pamiętać, że potrzebujemy w układzie jeszcze trochę miejsca na Rapsberry Pi i baterię. Do spinania kabli, aby uniknąć powstawania z nich poplątanego ‘makaronu’, idealnie nadają się opaski zaciskowe.
Krok 22: Kamera FPV
Jako że dla autora konstrukcji uzyskanie czystego i wysokiej jakości obrazu było priorytetem zamontował na pokładzie drona kamerę SJCAM 5000x Elite. Oczywiście można zamontować też inną, podobną kamerę, która mieścić się będzie w naszym budżecie.
Krok 23: Raspberry Pi Zero W
Najpierw podłączamy kamerę do modułu Raspbverry Pi, a następnie montujemy całość z przodu drona, tak aby kamera mogła obserwować dron pojazdu. Podłączenie RPi do MultiWii jest bardzo proste – potrzebne są nam tylko trzy kable:
* GND do masy
* 5 V do zasilania MultiWii (5 V)
* TX na RPi do RX w naszym module (odłączmy Bluetooth).
I gotowe! O wiele więcej problemów związanych było z stworzeniem oprogramowania do tego zestawu.
Krok 24: Oprogramowanie MultiWii
Z pobranego wcześniej spakowanego pliku wykorzystajmy program MultiWii 2.3 –navi7b i załadujmy go do MultiWii poprzez Arduino IDE (autor robił to przez wersję 1.8.1). W menu IDE wybieramy Arduino Pro Mini, 5 V i 16 MHz. Po załadowaniu programu dron powinien się samoczynnie skalibrować i przestać mrugać diodami LED.
Oprogramowanie jakie właśnie wgraliśmy, jest poszerzoną wersją normalnego firmware. Dodano szereg dodatkowych funkcji, takich jak nawigowanie pomiędzy punktami poprzez GPS, obsługę OLED, komunikację z Raspberry Pi etc.
Krok 25: Domowe testy drona
Nigdy nie testujcie dronów w małych pomieszczeniach – to po prostu niebezpieczne. Autor nie mógł się powstrzymać i pierwsze próby przeprowadził we własnym pokoju. Na szczęście wszystko zadziałało.
Krok 26: Połączenie do Raspberry Pi po SSH
Do połączenia się z Raspberry Pi potrzebne jest nam połączenie poprzez SSH po WiFi. Jeśli mamy połączenie z Internetem, to moduł będzie w stanie dodatkowo zebrać dane dotyczące pogody – temperaturę, wiatr etc. Na tej podstawie dron sam wie, czy na dworze są bezpieczne warunki do lotu. Ta część kodu jest jednakże mocno prototypowa, więc czasami nie działa idealnie.
Autor do programowani na RPi wykorzystał zdalny pulpit i podłączył się do komputera z poziomu PC. Kod, zanim uznano za finalny, był wielokrotnie testowany i poprawiany. Gotowy program pozwala na nawigowanie dronem z pomocą przedmiotów. Raspberry Pi wysyła po prostu komunikaty do MultiWii po porcie szeregowym, resztą zajmuje się kontroler ruchu. To jakie wysyła kody zależne jest od tego co widzi kamera podłączona do ‘Maliny’.
Jak zainstalować dołączony program
To bardzo proste. Z spakowanej paczki z programami kopiujemy pliki w Pythonie na Raspberry Pi. Następnie łączymy się z komputerem poprzez SSH lub RDP i w terminalu wpisujemy:
Od teraz skrypt działa i pozwala na rozpoznawanie obrazów.
Krok 27: Testy
Nigdy nie latajmy w pomieszczeniu. Zwłaszcza, jeżeli w pomieszczeniu znajduje się człowiek. Autor na szczęście nie miał problemów z uruchomieniem drona i stabilnym lotem, ale jeśli by miał, to mogłoby się to bardzo nieprzyjemnie zakończyć.
Krok 28: Pilotowanie drona – wskazówki i BHP
Jeśli korzystamy z trybów podążania za czerwoną piłką lub za twarzą, to upewnijmy się, że w polu widzenia Raspberry Pi znajduje się tylko jeden wyraźny, czerwony przedmiot lub jedna twarz. Jeśli będzie ich więcej system działać może niestabilnie.
Źródło: http://www.instructables.com/id/Ultimate-Intelligent-Fully-Automatic-Drone-Robot-w/
System drona oparty jest o Raspberry Pi Zero z Pi Camera. Dodatkowo wykorzystano moduł MultiWii. Jest to kontroler lotu do autonomicznego drona, który pozwala na dużą elastyczność, ponieważ oparty jest o Arduino. Więcej na jego temat poniżej.
Co ten dron potrafi? Czemu jest taki szczególny?
Najprościej mówiąc – dlatego że jest inteligentny i autonomiczny. Z pewnością dużo inteligentniejszy niż dowolny inny dron dostępny w sklepach. Ten dron nigdy nie uderzy w drzewo czy ścianę. Posiada wbudowane funkcje takie jak automatyczne podążanie za czerwoną piłeczką czy ludzką twarzą (a nie są to jeszcze jego maksymalne możliwości!).
Autor projektu napisał w Pythonie prosty program rozpoznający kształty. Dzięki temu, można wydawać mu rozkazy typu „leć do przodu”, „leć do tyułu” czy „skreć” jedynie pokazując mu przedmioty o danym kształcie. Niewiele innych maszyn to potrafi. Autor spędził nad projektem pięć miesięcy, zaczynając od zera (i wykorzystując oczywiście pewne gotowe rozwiązania, ale to i tak dobry wynik – przyp.red.).
Czego nauczę się z tego artykułu?
Po przeczytaniu niniejszego tekstu powinieneś być w stanie samodzielnie zbudować podobny, inteligentny quadrocopter rozpoznający twarze i czerwone piłeczki. W treści artykułu przejdziemy przez podstawy budowania dronów, jak i bardziej zaawansowane tematy z tym związane. Zajmiemy się także szczegółami oprogramowania rozpoznającego obrazy. W ramach projektu autor skonstruował dwie podobne maszyny, jedną wyposażoną w cztery, a drugą w sześć silników. W ramach niniejszego projektu omówimy jednakże prostszą konstrukcję, stabilniejszego quadrocoptera.
Plany na przyszłość
W przyszłości chciałbym stworzyć drony, które mogłyby realizować ważne zadania w sposób zupełnie autonomiczny. Takie pojazdy mogłyby samodzielnie wyszukiwać zaginione osoby np. w górach, albo też lokalizować zwierzęta czy nawet namierzać przestępców w grupie ludzi. Sterowane byłyby autonomiczne i nawigowałyby z wykorzystaniem GPSa.
[Na stronie projektu autor udostępnia więcej filmików i GIFów, na których widać działanie drona – silnik Elektrody nie obsługuje za dobrze GIFów, więc ich tutaj nie umieściłem - przyp.red.]
Zanim zajmiemy się jednak samą konstrukcją obejrzyjmy film, podsumowujący tło projektu jak i pewne informacje dotyczące motywacji, poprzednich projektów itp.
Krok 1: Videoprezentacj
To krótka wersja filmu, poświęconego projektowi. Pełna wersja prezentowana była w Brukseli na specjalnej demonstracji – za jakiś czas powinien on także być dostępny on-line.
Krok 2: Pełen projekt
W poniższym projekcie zbudujemy pojedynczego, inteligentnego drona. Zaznaczenie tego nie jest bez znaczenia, bo autor pracuje także nad rojem dronów, które będą wykazywać stosowne zachowania, jak np. rój pszczół. Prezentowany on będzie na targach MILSET Expo Sciences International.
Na zdjęciu powyżej widzimy drona w wersji 1.0. Była ona w stanie jedynie omijać przeszkody i nic więcej. Od tego czasu rozwinięta została kolejna, druga wersja drona, który nie tylko potrafi rozpoznawać przeszkody, ale także rozpoznawać na obrazach twarze itp.
Krok 3: Inspiracja i tło powstania konstrukcji
Osiem miesięcy temu autor projektu doznał otwartego złamania kości ramiennej podczas wypadku rowerowego. Wypadek miał miejsce w lesie, więc w momencie gdy nie był on w stanie się podnieść po wypadku zdany był na innych – dopiero przechodząca przypadkiem tamtędy para mogła udzielić mu pomocy i wezwać lekarzy.
Całe zajście było dosyć straszne, jak i miało poważne implikacje zdrowotne – autor stracił sporo krwi, a lekarze musieli usunąć mu część mięśnia z ramienia. Częściowo jest to wina długiego oczekiwania na pomoc. Wtedy te narodził się pomysł autonomicznych latających robotów, które mogłyby pomagać ludziom szybko i sprawnie. Nie popadajmy oczywiście w skrajności, aczkolwiek tego rodzaju sytuacja doskonale podkreśla zalety inteligentnych i autonomicznych systemów – taki dron doskonale poradziłby sobie w tej sytuacji.
Miasto w którym mieszka autor otoczone jest górami. W górach zdarza się wiele wypadków. W górach tych żyje też wiele zwierząt: niedźwiedzie, wilki, orły czy myszołowy. To te ostatnie były największą inspiracją dla autora. Żyją one w niewielkich grupkach i wykorzystując swoje doskonałe zmysły jak i unikalną technikę lotu, doskonale radzą sobie w tych warunkach.
Autonomiczne drony także mogłyby działać podobnie. Można wyposażyć je w doskonałe zmysły, zwłaszcza wzrok, a także nauczyć działać w grupie i wspólnie rozwiązywać problemy – tak jak myszołowy.
Te wszystkie kwestie sprawiły, że autor postanowił skonstruować inteligentnego drona, która mógłby np. przeczesywać góry w poszukiwaniu osób, które uległy wypadkom. Tak samo mógłby przeczesywać rejony po katastrofach czy klęskach żywiołowych. Jest wiele potencjalnych zastosowań dla tego typu systemów, gdzie mogłyby ratować ludzkie życie.
Krok 4: Szczegóły techniczne projektów
Autor skonstruował już dwa drony – z Arduino i z Raspberry Pi Zero wyposażone w kamerę. Jeden to hexacopter, drugi quadrocopter. Mają różne możliwości – jak ludzie. Jeden jest lepszy fizycznie, drugi lepiej liczy. Oba wyposażone są kamery FullHD i możliwość transmitowania obrazu do operatora w czasie rzeczywistym. Oba są także wyposażone w GPS.
Drony dostępne komercyjnie mają podobne wyposażenie i podobne możliwości. W najlepiej wyposażonych dronach na rynku także dostępne są takie opcje jak tryby „follow me” czy automatyczne powroty do miejsca startu i autonomiczne lądowanie. Jednakże… to za mało. Autor zapragnął skonstruować pojazd, który ma większe możliwości niż te. Drona, który potrafi coś więcej niż tylko latać sterowanym przez operatora i nagrywać filmiki 4K.
Opisane drony są w pewnym sensie inteligentne. Obie maszyny komunikują się ze sobą i centralnym serwerem, przesyłając dane pochodzące ze wszystkich wbudowanych w pojazdy sensorów. Wykorzystując te sensory drony, zupełnie jak zwierzęta, są w stanie podchodzić do różnych problemów i próbować je rozwiązać.
Zasięg komunikacji pomiędzy dronami wynosi aż 1,8 kilometra. Wbudowane w oprogramowanie dronów algorytmy pozwalają na naukę – za każdym lotem pojazdy zachowują się coraz lepiej: coraz lepiej rozpoznają i reagują na teren jaki ich otacza etc. Wraz z zwiększającą się bazą danych, jaką zgromadziły drony, ich działania stają się coraz lepsze.
Drony wyposażone są w następujący sprzęt i oprogramowanie:
a) Raspberry Pi Zero – komputer pokładowy
b) Raspberry Pi Camera – do detekcji terenu, roślin, obiektów i twarzy (w zasadzie wszystko zależy id programu).
c) Kontroler Lotu APM – oparty na Arduino kontroler lotu, odpowiadający za balansowanie quadrocopterem, analizę sygnałów z GPSa i kontrolę silników (to już gotowy i istniejący moduł z własnym oprogramowaniem)
d) Mechanizm drona – istniejąca już rama hexacoptera z silnikami, uchwytem na kamerę, baterią o pojemności 10300 mAh i wbudowanym modułem GPS.
e) Sensor światła do detekcji słońca
f) Barometr do pomiaru ciśnienia i obliczania względnej wysokości
g) Ultradźwiękowy czujnik odległości do pomiaru odległości od twardych przedmiotów w pomieszczeniu jak i na dworze
h) Moduł komunikacji szeregowej o zasięgu 1,8 km – pozwala na komunikację z dronem jak i z serwerem
i) Kamerę 4K 24 fps / 2K 30 fps – do nagrywania przebiegu lotu
j). Transmiter wideo 5,8 GHz – przekazuje obraz z kamery do operatora, co umożliwia obserwowanie widoku z kamery w czasie rzeczywistym podczas lotu (zasięg do 2000 m).
Krok 5: Początek montażu projektu
Wiele powiedzieliśmy już na temat inspiracji i motywacji do stworzenia tego rodzaju quadrocoptera. Zacznijmy teraz zatem jego montaż. W pierwszej kolejności zebrać musimy potrzebne elementy, jednakże zanim zakupimy jakiekolwiek fizyczne elementy dobrze jest nabyć trochę wiedzy na temat software i hardware, jakie będziemy montować i instalować w pojeździe.
Dobrze jest mieć podstawowe doświadczenie w programowaniu, zwłaszcza w Pythonie i/lub C++. Dalej, przyda nam się pewne doświadczenie w zakresie kontrolerów lotu dla takich pojazdów. Wszystkie programy autora, jakie zamieszczone są w projekcie, napisane są w C++ na Arduino lub w Pythonie, jednakże niniejszy artykuł to nie miejsce na naukę tych języków, więc zagadnieniom podstawowym i tłumaczeniu co jak działa nie poświęcimi tutaj zbyt wiele miejsca.
Jeśli chodzi o umiejętności związane z elektroniką, to podstawowa wiedza o tym jak działają typowe elementy i umiejętność lutowania to wszystko czego nam trzeba. W systemie wykorzystujemy moduł kontroli lotu MultiWii – zasadniczo jest to Arduino Mini Pro z dodatkowymi sensorami.
Uwaga Nie jest to projekt dla każdego, szczególnie jeśli nie miał wcześniej do czynienia z elektroniką i programowaniem, aczkolwiek może to być pierwszy dron jaki budujesz – w artykule znajdą się wszystkie potrzebne do jego budowy informacje.
Główne cechy inteligentnego drona:
* Rozpoznawanie twarzy
* Rozpoznawanie czerwonej piłeczki
* Śledzenie tych dwóch kształtów
* Automatyczne kierowanie lotem poprzez moduł Raspberry Pi
* Logowanie danych lotu poprzez Raspberry Pi Zero z WiFi
* Unikanie zderzenia z ludźmi
* Unikanie drzew (pomiar + obliczanie ich wielkości)
* Inne, podstawowe funkcje dronów: nawigacja po GPS, przesyłanie strumienia wideo na żywo, utrzymywanie wysokości, pozycji etc
* Automatyczny powrót do bazy/miejsca startu
* Telemetria wysyłana poprzez Bluetooth
To całkiem kompleksowy system, ale na pewno z poniższym artykułem uda nam się go zrealizować.
Krok 6: Porady dla początkujących
W tym dziale można by napisać wiele, jednakże zamiast publikować tutaj ogromna bazę wiedzy lepiej jest wskazać na jej źródła. Jeśli przebrniecie przez to tutoriale z pewnością będziecie wiedzieć w jaki sposób zabrać się do montowania drona. Zasadniczo są trzy rzeczy, jakie musimy ‘ogarnąć’: jak zaprogramować Raspberry Pi w Pythonie, jak zbudować drona oraz jak korzystać z modułu MultiWii FC. W prezentowanym projekcie wykorzystane zostały dokładnie te same techniki, co w zaprezentowanych poniżej tutorialach:
Jak zbudować drona:
Jak korzystać z Raspberry Pi Zero W wraz z OpenCV do rozpoznawania twarzy:
A także tutaj oraz tutaj.
Jak korzystać z modułu Multiwii Crius SE 2.5:
Filmy te obejrzeć można równie dobrze przed jak i po zrealizowaniu tego projektu, aczkolwiek dużo przyjemniej się go realizuje, gdy się wie co się robi – kopiowanie kodu bez jego zrozumienia to żadna frajda, ani też niczego się w ten sposób nie nauczymy.
Krok 7: Zbierzmy potrzebne materiały
Do zmontowania opisywanego drona potrzebować będziemy szereg podzespołów jak i odpowiednie oprogramowanie. Jeśli chodzi o kontroler lotu wybrany został MultiWii, z uwagi na to, że można programować go w środowisku Arduino, a dodatkowo posiada szereg opcji, jakich nie ma np. Naza, APM czy Pixhawk.
Potrzebować będziemy:
* Rama quadrocoptera w zestawie z silnikami, śmigłami etc.
* Moduł kontroli lotu MultiWii SE 2.5 z GPSem, wyświetlaczem OLED, sonarem i interfejsem Bluetooth
* Baterię 3S1P o napięciu 11,1 V i pojemności 3000 mAh.
* Kamerę wideo – GoPro, SJCAM lub dowolną inną, która pozwala na nagrywaniu filmu w jakości 4K
* Raspberry Pi Zero
* RasPi Cam – kamerę dedykowaną do Raspberry Pi
* Nadajnik i odbiornik systemu kontroli radiowej
* Nadajnik i odbiornik obrazu
Wszystkie te elementy sprzedawane są jako kit, więc ich kompatybilność nie powinna być problemem. Trudnością może być jednak nabycie Raspberry Pi Zero z uwagi na ogromne zainteresowanie tym modułem.
Dodatkowo, jeśli dysponujemy większym lub mniejszym budżetem niż pokazany powyżej zmienić możemy kamerę, jaką montujemy w systemie, na inną.
Dalej, potrzebne nam będzie odpowiednie oprogramowanie do stworzenia softu dla drona:
* Arduino IDE do pobrania z www.arduino.cc
* Oprogramowanie dla MultiWii do pobrania z https://code.google.com/archive/p/multiwii/
* Raspbian OS do pobrania z www.raspberry.org
* Aplikacja na telefono EZ-GUI do pobrania z http://ez-gui.com/
Po pobraniu możemy zabierać się za montaż układu. Najpierw musimy jednakże zgromadzić stosowne narzędzia.
Krok 8: Narzędzia
Potrzebny nam będzie całkiem nieźle wyposażony warsztat. Do zmontowania tego drona potrzebujemy:
* Śrubokręt
* Multimetr
* Taśma klejąca
* Spinki do kabli
* Nożyczki
* Obcinaczki do kabli
* Przyrząd do zdejmowania izolacji z kabli
* Linijka
* Śrubki
* Lutownica
* Komputer z potrzebnym na oprogramowaniem do zaprogramowania wszystkich modułów.
Krok 9: Kod programu i schemat połączeń
Pobieramy spakowany plik – tutaj – znajdziemy w nim otwarte i darmowe oprogramowanie stworzone przez autora projektu. W paczce znajdziemy algorytmy podążania za czerwoną piłeczką, twarzą a także wstępnie skalibrowane oprogramowanie dla modułu MultiWii. Można skorzystać z zawartego w paczce konfiguratora dla tego modułu, ale rekomenduje się aplikację EZ GUI na telefon.
Wypakowane z paczki pliki potrzebne będą nam w dalszych krokach.
Zaprezentowane powyżej płytki z opisami pinów pokazują nam gdzie co zostanie podłączone do poszczególnych modułów. Układ jest bardzo prosty, wystarczy wykorzystać dedykowane kable do goldpinów, aby połączyć ze sobą systemy w całość. W pierwszej kolejności musimy dołączyć pin UART RX (odbiór) modułu MultiWii do pinu 15 Raspberry Pi Zero. Możemy teraz podłączyć zasilanie do tych dwóch modułów. Pozostałe elementy, jakie podłączać będziemy do systemu, są po prostu różnymi sensorami itp. Typu plug&play, więc ich podłączanie nie wymaga bardziej skomplikowanych operacji (i większość z nich zaprezentowana jest na poradnikowych filmach powyżej).
Krok 10: Montaż MultiWii na platformie quadrocoptera
Na zdjęciach widzimy już zmontowaną ramę pojazdu. Wraz z kitem dostarczana jest instrukcja montażu. Czterema metalowymi śrubkami przykręcamy moduł MultiWii na środku platfiormy na podwyższeniu. Następnie podłączamy moduł ESC – elektroniczny kontroler prędkości, sterujący silnikami drona i spinami jego kable spinkami w eleganckie wiązki. Upewnijmy się, że dobrze podłączyliśmy wszystkie kable do kontrolera silników – inaczej nasz quadrocopter nie wystartuje.
Krok 11: Dołączanie GPS i płytki nawigacyjnej
Te dwa moduły, służące do odnajdywania się drona w świecie rzeczywistym, dostarczane są już skalibrowane, więc wystarczy tylko podłączyć moduł GPS do niewielkiej płytki nawigacyjnej z interfejsem I2C, a następnie całość wpiąć w port I2C modułu MultiWii. Gotowe! GPS od tego momentu już działa.
Krok 12: Bluetooth
Moduł MultiWii dostarczany jest wraz z modułe, Bluetooth. Wystarczy podłączyć go do portu UART w module MultiWii i umieścić na pokładzie quadrocoptera.
Uwaga Jeśli korzystamy z Raspberry Pi musimy odłączyć pin RX od modułu Bluetooth, jaki podpięty jest do MultiWii.
Krok 13: Odbiornik RC
Odbiornik sterowania radiowego dronem zamontowany został w tylnej części i podłączony do modułu MultiWii. Podłączamy piny opisane jako: Throttle, Roll, Pitch, Yaw oraz Aux1 do odpowiednich pinów w kontrolerze lotu.
Krok 14: Mocowanie elementów
Po zamontowaniu modułów i spięciu wiązek kabli spinkami możemy przymocować kontroler do ramy quadrocoptera. Zasadniczo można go na tym etapie przetestować
Krok 15: Pierwsze uruchomienie i szybki test
Po podłączeniu zasilania do płytki moduł GPS powinien dosyć szybko się zsynchronizować. Uruchomiony powinien być także Bluetooth.
Krok 16: Dodatkowy wyświetlacz OLED
W zestawie znajdziemy także OLEDowy ekran Crius, który przydaje się niezmiernie do wyświetlania podstawowych informacji o dronie. Na ekranie prezentowane są różne informacje: tryb pracy, stan baterii, żyroskopów etc. W zmodyfikowanej wersji autor dodał jeszcze swoje imię do ekranu, ale można zmienić to w kodzie.
Instalacja ekranu jest bardzo prosta – zajmuje on drugi z portów I2C w MultiWii. Podłączamy go tam i montujemy ekran w wygodnym dla nas miejscu. Zmienianie wyświetlanych danych realizuje się z pomocą kombinacji drążków na sterowniku radiowym.
Krok 17: Miernik napięcia baterii
Potrzebne nam będą dwa oporniki – 51 kΩ i 33 kΩ. Robimy z nich dzielnik napięcia baterii, którego wyjście podłączamy do pinu A3 modułu MultiWii. Na ekranie OLED powinien pojawić się wynik pomiaru.
Krok 18: Buzzer alarmu o niskim stanie baterii
W systemie zamontować możemy prosty buzzer. Podłączamy go do pinu ósmego modułu MultiWii. Będzie on wydawał ostrzegawcze dźwięki, gdy napięcie baterii osiągnię 10,7 V lub 9,9 V. Wartości te można zmodyfikować w programie.
Krok 19: Montaż górnej płytki
Do zamontowania górnej płytki w układzie potrzebować będziemy 16 śrubek M2.5, jakie dołączone są do zestawu. Z ich pomocą montujemy górny pokład drona do jego ramy.
Krok 20: Nadajnik wideo
W dronie umieszczono nadajnik wideo pracujący przy częstotliwości 5,8 GHz. Nadajnik ten ma około 2 km zasięgu. Przymocujmy go mocno opaskami zaciskowymi do górnego pokładu tak, aby nie odpadł nawet przy dużej prędkości lotu.
Krok 21: Porządek w kablach
Utrzymywanie porządku w kablach pojazdu jest niezwykle istotne z uwagi na dużą ilość małych elementów i modułów montowanych na ramie quadrocoptera. Musimy także pamiętać, że potrzebujemy w układzie jeszcze trochę miejsca na Rapsberry Pi i baterię. Do spinania kabli, aby uniknąć powstawania z nich poplątanego ‘makaronu’, idealnie nadają się opaski zaciskowe.
Krok 22: Kamera FPV
Jako że dla autora konstrukcji uzyskanie czystego i wysokiej jakości obrazu było priorytetem zamontował na pokładzie drona kamerę SJCAM 5000x Elite. Oczywiście można zamontować też inną, podobną kamerę, która mieścić się będzie w naszym budżecie.
Krok 23: Raspberry Pi Zero W
Najpierw podłączamy kamerę do modułu Raspbverry Pi, a następnie montujemy całość z przodu drona, tak aby kamera mogła obserwować dron pojazdu. Podłączenie RPi do MultiWii jest bardzo proste – potrzebne są nam tylko trzy kable:
* GND do masy
* 5 V do zasilania MultiWii (5 V)
* TX na RPi do RX w naszym module (odłączmy Bluetooth).
I gotowe! O wiele więcej problemów związanych było z stworzeniem oprogramowania do tego zestawu.
Krok 24: Oprogramowanie MultiWii
Z pobranego wcześniej spakowanego pliku wykorzystajmy program MultiWii 2.3 –navi7b i załadujmy go do MultiWii poprzez Arduino IDE (autor robił to przez wersję 1.8.1). W menu IDE wybieramy Arduino Pro Mini, 5 V i 16 MHz. Po załadowaniu programu dron powinien się samoczynnie skalibrować i przestać mrugać diodami LED.
Oprogramowanie jakie właśnie wgraliśmy, jest poszerzoną wersją normalnego firmware. Dodano szereg dodatkowych funkcji, takich jak nawigowanie pomiędzy punktami poprzez GPS, obsługę OLED, komunikację z Raspberry Pi etc.
Krok 25: Domowe testy drona
Nigdy nie testujcie dronów w małych pomieszczeniach – to po prostu niebezpieczne. Autor nie mógł się powstrzymać i pierwsze próby przeprowadził we własnym pokoju. Na szczęście wszystko zadziałało.
Krok 26: Połączenie do Raspberry Pi po SSH
Do połączenia się z Raspberry Pi potrzebne jest nam połączenie poprzez SSH po WiFi. Jeśli mamy połączenie z Internetem, to moduł będzie w stanie dodatkowo zebrać dane dotyczące pogody – temperaturę, wiatr etc. Na tej podstawie dron sam wie, czy na dworze są bezpieczne warunki do lotu. Ta część kodu jest jednakże mocno prototypowa, więc czasami nie działa idealnie.
Autor do programowani na RPi wykorzystał zdalny pulpit i podłączył się do komputera z poziomu PC. Kod, zanim uznano za finalny, był wielokrotnie testowany i poprawiany. Gotowy program pozwala na nawigowanie dronem z pomocą przedmiotów. Raspberry Pi wysyła po prostu komunikaty do MultiWii po porcie szeregowym, resztą zajmuje się kontroler ruchu. To jakie wysyła kody zależne jest od tego co widzi kamera podłączona do ‘Maliny’.
Jak zainstalować dołączony program
To bardzo proste. Z spakowanej paczki z programami kopiujemy pliki w Pythonie na Raspberry Pi. Następnie łączymy się z komputerem poprzez SSH lub RDP i w terminalu wpisujemy:
Code: bash
Od teraz skrypt działa i pozwala na rozpoznawanie obrazów.
Krok 27: Testy
Nigdy nie latajmy w pomieszczeniu. Zwłaszcza, jeżeli w pomieszczeniu znajduje się człowiek. Autor na szczęście nie miał problemów z uruchomieniem drona i stabilnym lotem, ale jeśli by miał, to mogłoby się to bardzo nieprzyjemnie zakończyć.
Krok 28: Pilotowanie drona – wskazówki i BHP
Jeśli korzystamy z trybów podążania za czerwoną piłką lub za twarzą, to upewnijmy się, że w polu widzenia Raspberry Pi znajduje się tylko jeden wyraźny, czerwony przedmiot lub jedna twarz. Jeśli będzie ich więcej system działać może niestabilnie.
Źródło: http://www.instructables.com/id/Ultimate-Intelligent-Fully-Automatic-Drone-Robot-w/
Cool? Ranking DIY