Adventure Works Propozycje sprzeda*y

advertisement
Projekt i implementacja
systemu kontrolującego
zdalnie sterowany pojazd z
wykorzystaniem platform
Android i Arduino
Piotr Szarański
Promotor: mgr inż. Zbigniew Rosiek
Cel pracy

Stworzenie kompletnego i funkcjonalnego systemu zdalnego sterowania, w
skład którego wchodzą:

Zdalnie sterowany pojazd

Kontroler zdalnie
sterowanego pojazdu
Zakres pracy

Projekt i implementacja oprogramowania wbudowanego w pojazd zdalnie
sterowany


Projekt i implementacja oprogramowania wbudowanego w kontroler pojazdu
zdalnie sterowanego


Podzespołami pojazdu będzie zawiadywać wybrana platforma Arduino,
oprogramowanie sterujące zostanie wykonane w postaci typowego dla tej
platformy szkocu w języku programowania C++
Kontrolerem pojazdu zdalnie sterowanego będzie telefon komórkowy
„smartphone” z systemem operacyjnym Google Android, oprogramowanie sterujące
zostanie zrealizowane w postaci aplikacji APK napisanej w języku programowania
Java.
Projekt elektroniczny zdalnie sterowanego pojazdu z wyszczególnieniem
bloków funkcyjnych i niezbędnych obliczeń

W oparciu o projekt zostanie skonstruowany pojazd dla celów demonstracyjnych.
Wymagania systemu


Zdalnie sterowany pojazd

Zrealizowany w oparciu o platformę Arduino - popularną platformę elektronicznego
prototypowania

Pojazd wyposażony w:

Kamerę wideo o rozdzielczości VGA (640x480) osadzoną na ramieniu o dwóch stopniach swobody

Sensor napięcia zasilającego

Oświetlenie pokładowe
Kontroler pojazdu zdalnie sterowanego

Telefon komórkowy typu „smartphone” z najpopularniejszym obecnie mobilnym systemem
operacyjnym - Google Android

Sterowanie pojazdem przy użyciu ekranu dotykowego


Napęd pojazdu

Kamera i oświetlenie pokładowe

Ramię kamery wideo
Prezentowanie danych sensorycznych pojazdu przy użyciu ekranu dotykowego

Siła sygnału i opóźnienie transmisji danych

Obraz z pokładowej kamery wideo

Napięcie zasilające pojazdu
Wyzwania

Budowa systemu zdalnego sterowania pojazdem jako zagadnienie
mechatroniczne

Informatyka

Elektronika

Mechanika

Opracowanie protokołu wymiany danych sterujących kontroler - pojazd

Strumieniowanie obrazu z pojazdu do kontrolera


Wybór odpowiedniej metody strumieniowania obrazu - niskie wymagania
sprzętowe, małe opóźnienia

Wydajna implementacja odtwarzacza strumieni na telefonie Google Android
Projekt elektroniczny modułów pojazdu:

Napęd

Oświetlenie

Sterowanie ramieniem kamery

Zasilanie
Analiza

Przegląd pojazdów zdalnie sterowanych

Budowa

Komunikacja





Sterowanie
Pojazd zdalnie sterowany w ujęciu mechatronicznym

Sensoryka

Aktoryka

Mechanika

Obliczenia
Platforma Google Android

Dostępne media transmisyjne

Przechowywanie danych

Metody programowania
Platforma prototypowania elektronicznego Arduino

Budowa

Potencjał elektroniczny

Możliwości rozbudowy

Metody programowania
Strumieniowanie materiału wideo z niskim opóźnieniem
Projekt systemu

Przypadki użycia

Diagramy aplikacji kontrolera i wbudowanej w pojazd:


Architektury

Klas

Maszyny stanowej

Aktywności

Harmonogramowania
Schemat bazy danych aplikacji sterującej
Projekt systemu

Makiety ekranów aplikacji strującej
Projekt systemu

Projekt elektronicznych układów pojazdu

Moduł napędowy

Moduł kamery

Moduł oświetlenia

Sensor napięcia zasilającego

Moduł zasilający
Projekt systemu
Implementacja

Platforma Arduino Yun sterująca działaniem pojazdu zdalnie sterowanego

Autorska płyta zawierająca elektroniczne sterowniki modułów wykonawczych
pojazdu osadzona na platformie Arduino Yun

Sterownik oświetlenia bazuje na tranzystorze bipolarnym NPN w układzie ze
wspólnym emiterem

Sterownik silników napędowych bazuje na układzie DRV8833 firmy Texas
Instruments

Silniki krokowe sterowane bezpośrednio z ATMEGA 32u4

Autorski program dla mikrokontrolera Atmel ATMEGA 32u4 zawiadujący pracą
podzespołów pojazdu dla platformy Arduino Yun

Autorski program dla kontrolera pojazdu na platformę Google Android

Komunikacja kontrolera z pojazdem oparta na standardzie WiFi 802.11 b/g/n

Gniazdo sieciowe dedykowane komendom kontrolera i danym sensorycznym
pojazdu

Gniazdo sieciowe dedykowane strumieniowi wideo
Problemy na etapie imlementacji


Opracowanie wydajnej metody obsługi strumienia wideo na platformie Google
Android i Arduino Yun

Wykorzystanie kodeka o małych opóźnieniach oraz niskich wymaganiach
pamięciowych i obliczeniowych - M-JPEG

Opracowanie wydajnego mechanizmu operowania na strumieniu M-JPEG

Opracowanie wydajnego mechanizmu dekodowania i prezentowania materiału
wideo
Opracowanie wydajnej, nieblokującej metody komunikacji kontrolera z
pojazdem

Wykorzystanie wątków działających w tle aplikacji (polling ekranu dotykowego)

Ucieczka przed algorytmem Nagle`a (TCP_NODELAY)

Pakiety danych o niewielkiej i stałej długości

Unikanie alokacji nowych obiektów z powodu negatywnego wpływu procesu
odśmiecania pamięci (Garbage Collection) na płynność działania aplikacji
kontrolera

Niewystarczająca wydajność prądowa modułu zasilającego
Realizacja
Realizacja
Panel informacyjny:
• Opóźnienie sygnału
• Napięcie zasilające
• Moc odbieranego
sygnału
Obraz z kamery wideo
prezentowany w tle
Pole dotykowe sterujące
napędem pojazdu
Pole włączające i
wyłączające
oświetlenie
Pole włączające i
wyłączające kamerę
Pole dotykowe sterujące
pozycją kamery
Realizacja
Regulatory napięcia LM2490T 5V
z kondensatorami filtrującymi
Tranzystor NPN BC548B wraz z rezystorami
ograniczającymi prąd i ściągającym do
masy
Sterownik silników prądu stałego
DRV8833
Wyprowadzenia od lewej: do silników
prądu stałego, krokowych, oświetlenia,
zasilania
Testy

Testy przeprowadzone osobiście oraz z udziałem osób trzecich

Testy funkcjonalne w oparciu o listę przypadków użycia

Profilowanie aplikacji kontrolera


Śledzenie alokacji pamięci

Obciążenie procesora

Aktywność Garbage Collectora oraz jego wpływ na płynność aplikacji
Profilowanie systemu operacyjnego Linux OpenWRT pojazdu

Analiza statystyk interfejsu sieciowego Arduino Yun pod kątem obciążenia, błędów i
retransmisji pakietów

Analiza statystyk obciążenia procesora i pamięci RAM układu Atheros AR9331
Wnioski z testów

Funkcjonalność systemu zgodna z wymaganiami

Napęd w stylu gąsienicowym daje duże zdolności manewrowania

Niskiej jakości antena WiFi wbudowana w Arduino Yun ogranicza użyteczny dystans
między kontrolerem a pojazdem




Maksymalny zasięg w terenie otwartym wynosi około 10 metrów

Antena o niejednorodnej charakterystyce kierunkowej dodatkowo ogranicza ten dystans
Profilowanie aplikacji kontrolera nie wykazuje problemów

Mała aktywność Garbage Collectora bez długich pauz w działaniu systemu (<10ms)

Niewielka alokacja pamięci

Bezpieczny margines obciążenia CPU
Profilowanie systemu operacyjnego Linux OpenWRT nie wykazuje problemów

Brak błędów i retransmisji pakietów

Niskie obciążenie CPU i RAM
Dzieci w wieku 8 i 2 lata są zachwycone, dziecko niespełna miesięczne jest
niespokojne
Podsumowanie i wnioski



System operacyjny Google Android jest rozwiniętym i nowoczesnym systemem
operacyjnym

Bogactwo API i narzędzi wspierających tworzenie aplikacji udostępniane przez
Android SDK

Programowanie w języku Java, który jest mniej wymagający niż np. w Objective C
znanym z platformy Apple IOS
Platforma elektronicznego prototypowania Arduino tworzy tanie i dostępne
możliwości interakcji z otoczeniem

Pozyskiwania danych z otaczającego świata

Materializowania pracy programów poza ekranem komputera
Wykorzystanie cech obu platform pozwala tworzyć złożone systemy o
szerokim spektrum zastosowań i wysokiej użyteczności
Prezentacja modelu demontracyjnego
Download