Projekty robotów: Projekt oprogramowania sterującego ruchem robota TWIN-CATT na telefony z systemem operacyjnym Google Android / cz.4z7


Projekty robotów: Projekt oprogramowania sterującego ruchem robota TWIN-CATT na telefony z systemem operacyjnym Google Android / cz.4z7

Łukasz Przystalski
www.przystalski.pl

Artykuł opisuje sposób realizacji projektu oprogramowania sterującego ruchem robota z wykorzystaniem telefonów z systemem operacyjnym Android firmy Google. System ten jest bezpłatny i coraz częściej stosowany w urządzeniach przenośnych. Projekt dotyczy trzech rodzajów programów, każdy wykorzystuje inne możliwości telefonu, jak i samego inspekcyjnego robota mobilnego TWIN-CATT.

Spis treści:

1. Wstęp
2. Android oraz App Inventor
3. Program wykorzystujący przyciski na ekranie dotykowym
4. Projekt programu z wykorzystaniem wbudowanego akcelerometru
5. Projekt programu do programowania robota online
6. Podsumowanie

1. Wstęp

Budowa mechaniczna robota dobiegła końca. Co więcej, zaprojektowano i wykonano całą elektronikę wchodzącą w skład robota. Całość – choć działa prawidłowo – jednak nie porusza się. Czegoś brak – układu sterowania nadrzędnego. W projekcie zdecydowano się na sterowanie robota przy pomocy operatora. Nie implementowano algorytmów jazdy autonomicznej robota. Człowiek dokonujący inspekcji posiada obraz z obu kamer zamontowanych na robocie i sam widząc to, co się dzieje wokół, podejmuje decyzje o kolejnym ruchu robota. Niemożliwością jest realizacja zagadnienia sterowania bez pojęcia komunikacji. W przypadku robota TWIN-CATT zdecydowano się na łatwą w implementacji komunikację bezprzewodową przy pomocy technologii Bluetooth.

Z wielu możliwości urządzeń sterujących wybrano urządzenia przenośne takie jak: telefon, laptop, lecz także nietypowe urządzenie, jakim jest bezprzewodowa rękawica z akcelerometrem. Zastosowanie telefonów daje szerokie grono potencjalnych odbiorców. Spośród wielu producentów oprogramowania dla telefonów wybrano system operacyjny firmy Google o nazwie Android. Android to nowy i cieszący się coraz większym uznaniem system, dający wiele możliwości programistycznych dla zwykłych użytkowników.

2. Android oraz App Inventor

Android jest darmową platformą dla telefonów komórkowych. Platforma Android zawiera zintegrowany zestaw oprogramowania dla urządzeń przenośnych. W skład Platformy wchodzi system operacyjny, oprogramowanie pośrednie (middleware), interfejs i aplikacje. Platforma Android nie jest związana z jakimikolwiek ograniczeniami praw autorskich – jest dostępna na licencji Apache License. Forma licencji – powszechny i darmowy dostęp do technologii – jest gwarantem tego, że nie zabraknie na tę platformę aplikacji. Do celów programistycznych, firma Google wprowadziła specjalne oprogramowanie zwane App Inventor. Oprogramowanie to pozwala na projektowanie programów dla urządzeń posiadających system operacyjny Android. Jedynym warunkiem jest posiadanie konta na poczcie Gmail od Google. Wygląd okna kreatora grafiki programu przedstawiony jest na rysunku 1.

Okno kreatora składa się z paska PALETA, z którego można wybrać interesujące nas elementy, takie jak przyciski, pole tekstowe, pole rysunkowe i wiele innych. Na środku okna znajduje się podgląd i interaktywny kreator graficzny. Trzeci segment – komponenty – przedstawia listę wykorzystanych elementów. Po prawej stronie znajduje się pasek właściwości, zmieniający swoją zawartość w zależności od zaznaczonego elementu. Po podłączeniu telefonu do komputera, uaktywnia się możliwość wysłania programu do pamięci telefonu. Okno App Inventor odpowiada tylko za dobór komponentów oraz ich rozmieszczenie w programie, dlatego dodano specjalny edytor blokowy. Pozwala on na ustawienie odpowiednich relacji, działań pomiędzy składnikami programu. Uruchamiany jest przez kliknięcie w przycisk "Open the Blocks Editor". Okno edytora blokowego pokazano na rysunku 2.

Widoczne okno pozwala w sposób blokowy tworzyć program. Programowanie graficzne jest proste oraz nie wymaga od użytkownika wnikliwej znajomości języka programowania. Bloki są podzielone na kilka grup, co zostało przedstawione na rysunku 3.

Objaśnienie:
> Definition – grupa złożona z bloczków pozwalających na zdefiniowanie zmiennych, nazwanie ich
> Text – w tej grupie znalazły się wszelkie bloczki pozwalające na operacje z tekstem, takie jak: sprawdzanie długości, przyrównywanie łańcuchów znaków, łączenie
> Math – grupa zawierająca wszelkie bloczki związane z działaniami matematycznymi, wliczając funkcje trygonometryczne
> Logic – grupa z bloczkami z działaniami typu prawda i fałsz
> Control – grupa zawierająca procedury kontrolne, bloczki "jeżeli", "dla każdego", zamknięcie aplikacji, wyłączenie ekranu
> Colors – grupa z bloczkami kolorów.

Poza powyższymi bloczkami udostępniono dostęp do bloczków związanych z urządzeniami, które zostały dodane w trakcie budowy graficznej programu. W trakcie realizacji programu sterującego pracą robota, wykorzystano bloczki odpowiedzialne za przyciski, obsługę przyciśnięcia, komunikaty, łączność Bluetooth. Przykładową operację zdefiniowania pewnej zmiennej o nazwie "zmienna" ukazuje rysunek 4.

Operacja przypisania zmiennej "zmienna" wartości liczbowej 121 oraz nadanie jej liczbowego (całkowitego) typu, następuje po przeciągnięciu myszką bloczka NUMBER i ułożeniu ich, tak jak puzzle. Wynik powyższej operacji ukazuje rysunek 5.

Budowa puzzli umożliwia podział bloczków na te, które pasują do siebie – są możliwe do połączenia oraz te, których łączyć nie wolno. Edytor dodatkowo na bieżąco sprawdza możliwości połączeniowe różnych typów danych i ewentualnie ostrzega przed możliwymi komplikacjami. Środowisko programistyczne jest bardzo przyjazne, jednocześnie pozwala na wiele możliwych kombinacji, oraz wykorzystanie praktycznie większości zasobów telefonu.

3. Projekt programu wykorzystującego przyciski umieszczone na ekranie dotykowym

Początkowym problemem w projektowaniu oprogramowania jest samo połączenie Bluetooth, rozumianym jako wyświetlenie dostępnych w zasięgu telefonu urządzeń oraz połączenie z wybranym urządzeniem. Na stronie www.appinventorbeta.com/learn/reference/components znajduje się dokładna baza informacyjna związana z wszystkimi dostępnymi elementami, które można wykorzystać podczas projektu programu. Zamieszczono również przykładowe implementacje niektórych trudniejszych zagadnień, takich jak użycie nadajnika Bluetooth. Kod programu dotyczący pobrania listy urządzeń, wybory i połączenia jest długi. Początkowo podczas inicjalizacji ekranu program sprawdza, czy jest włączony moduł Bluetooth. Jeśli nie, zostaje wyświetlony stosowny komunikat. Jeśli moduł jest uruchomiony, przy pomocy małej bazy danych – TinyDB, pobierana jest lista urządzeń wraz z adresami. W celu wybrania urządzenia, do którego chce się podłączyć, należy kliknąć przycisk "Wybierz urządzenie". W chwili wybrania konkretnej pozycji z listy, adres urządzenia przypisywany jest do specjalnego bloczka "BluetoothClient1.Connect". Po kliknięciu przycisku "Połącz" zostaje nawiązane połączenie przez specjalny bloczek "BTConnectDevice", co powoduje jednocześnie zmianę napisu na przycisku "Połącz" na napis "Rozłącz". W ten sposób zrealizowano skomplikowany proces połączenia urządzenia Bluetooth, jakim jest moduł BTM-222 robota, do telefonu.

Kolejnym krokiem projektu programu do sterowania robota przy pomocy ekranu dotykowego, była konfiguracja przycisków. Zdecydowano się na rozwiązanie ze strzałeczkami. Zasada działania przycisków, polega na tym, że pojedyncze kliknięcie strzałeczki do góry powoduje wzrost wartości prędkości gąsienicy o 4 jednostki. Prędkość w pakiecie danych musi zawierać się w zakresie od 0 do 58. Oznacza to, że istnieje 59 stopni prędkości gąsienicy, w skali procentowej, co 1.7%. W celu minimalizacji ilości kliknięć przycisków przez użytkownika, aby wysterować robota z pełną prędkością, podzielono zakres co 4 jednostki. W efekcie 14 kliknięć przycisku do przodu powoduje wysterowanie robota z pełną prędkością. Ta zasada dotyczy również sterowania do jazdy do tyłu oraz skręcania robotem. Fragment programu, odpowiedzialny za obsługę przycisku ze strzałką do góry, jazdy do przodu przedstawiono na rysunku 6.

W przypadku wciśnięcia przycisku, następuje aktywacja przycisków "Połącz" oraz wybór urządzenia. Zmienne "lewa" i "prawa" zostają wyzerowane. Identyczną funkcję spełnia warunek AccelerometerSensor1.Shaking. Jest to gotowy bloczek, uaktywniający się podczas lekkiego potrząśnięcia telefonem, co może oznaczać upadek telefonu lub typowy odruch dla przestraszonego użytkownika. Wygląd rzeczywisty programu sterującego przedstawia rysunek 7.

Program jest bardzo prosty w obsłudze, sterowanie odbywa się intuicyjnie. Grafikę dobrano w sposób minimalistyczny, użytkownik nie jest zarzucany zbędnymi informacjami, okienkami.

4. Projekt programu z wykorzystaniem wbudowanego akcelerometru

Podczas prób związanych z sterowaniem robotem przy pomocy klawiatury, zauważono jak powolnym, lecz dokładnym procesem jest inkrementacja oraz dekrementacja prędkości. Oprogramowanie App Inventor pozwala na wykorzystanie wbudowanego akcelerometru wchodzącego w skład elektroniki telefonu. Podczas odczytów wartości pochodzących z akcelerometru, oznaczono osie telefonu, co przedstawiono na rysunku 8.

Na rysunku 8 widoczne są strzałki, które oznaczają kierunek wzrostu wartości mierzonych. Punkt przecięcia się osi stanowi odczyty o wartości zero. Odpowiada to w rzeczywistości położeniu poziomemu telefonu. Gdy przechylamy telefon ku sobie, wartości mierzone na osi y wzrastają od 0 do 10. Gdy go odchylamy od siebie, wartości maleją od 0 do -10. Identycznie jest w przypadku osi x, odpowiadającej kierunkowi lewo/prawo. W wyniku doświadczeń na telefonie, sformułowano następujące wnioski: z powodu relatywnego odczucia poziomu, ustalono poziom (wysyłanie komunikatów stop do robota) w zakresie odczytów +/-1. Następnie zauważono, że w przypadku odczytów większych niż +/-7, telefon jest nie wygodny do utrzymania. W związku z powyższym ustalono wartości sterujące z zakresu +/-1 do +/-7. Widok okna programu przedstawia rysunek 9.

Pierwszy wiersz zawiera przycisk "Wybierz urządzenie". Po włączeniu modułu Bluetooth w telefonie i kliknięciu przycisku, wyświetlona zostaje aktualna lista urządzeń Bluetooth znajdujących się w zasięgu telefonu. W celu połączenia się z robotem, należy wybrać pozycję 00:12:6F:09:98:28 ROBOT. Przycisk "Połącz" potwierdza połączenie z wybranym urządzeniem. Fragment kodu odpowiedzialny za nawiązanie połączenia, wyszukanie urządzeń w zasięgu jest identyczne, jak w przypadku programu sterującego ruchem robota z wykorzystaniem przycisków na wyświetlaczu dotykowym. W przypadku użycia akcelerometru, ważna jest możliwość uruchomienia go wtedy, gdy chce tego użytkownik. Brak takiej opcji mógłby spowodować nagły skok prędkości, przy założeniu, że użytkownik podłączający telefon z użyciem akcelerometru trzymałby telefon pod dużym kątem. Do uruchomienia procedury odczytu wartości mierzonych z akcelerometru, służy przycisk "Start". Fragment kodu przedstawiający obsługę tego przycisku ukazano na rysunku 10.

Wciśnięcie przycisku pozwala sprawdzić, czy rzeczywiście moduł Bluetooth telefonu sparował się z jakimś urządzeniem. Jeśli tak, zostaje uniemożliwiona opcja "Połącz" oraz wybór innego urządzenia z listy. Następnie zostaje uruchomiona funkcja zwana Clock1.Timer, oraz ustawiony zostaje czas taktowania na 100ms. Clock1.Timer powoduje taktowanie programu co przypisany odcinek czasowy, podany w milisekundach. Przycisk "Stop" powoduje dezaktywację akcelerometru oraz wyłączenie odliczania przez funkcję Clock1.Timer. Tę samą operację powoduje również potrząśnięcie telefonem. Jest to gest, który towarzyszy większości użytkownikom w czasie paniki lub gdy telefon przypadkowo wypadnie z rąk.

5. Projekt programu do programowania robota online

Zdobyte doświadczenia, związane z projektowaniem oprogramowania na system operacyjny Android, pozwoliły na napisanie dodatkowej aplikacji. Zadaniem tej aplikacji jest umożliwienie użytkownikowi programowania robota online. Pod pojęciem "online", rozumie się działanie – wykonywanie przez robota zaprogramowanych ruchów, pod warunkiem utrzymywania połączenia z urządzeniem nadającym. Pod pojęciem programowania rozumie się możliwość wybrania pewnej skończonej ilości sekwencji ruchów do wykonania. Założono możliwość zaprogramowania 4 różnych rozkazów wykonywanych sekwencyjnie w pętli. Rozkazy są przechowywane wyłącznie w pamięci telefonu. W momencie zerwania połączenia lub wyłączenia programu, robot wykonuje ostatni ruch, po czym następuje zatrzymanie pracy. Wygląd zaprojektowanej aplikacji przedstawiono na rysunku 11.

Program, z powodu wielu parametrów, które możliwe są do wpisania przez użytkownika, jest graficznie ‘znacznej wysokości’. W telefonie z ekranem o ograniczonym obszarze (320×240 pikseli), program po prawej stronie posiada suwak pozwalający na przesuwanie widocznego fragmentu ekranu. Pierwszy wiersz pozwala na prawidłowe zainicjowanie połączenia z urządzeniem sterowanym, takim jak robot. Kolejny przycisk powoduje wyczyszczenie parametrów zapisanych uprzednio w rozkazach w razie pomyłki. Następnych pięć wierszy związanych jest z koniecznością podania informacji dla prawidłowego wykonania programu. Prędkość podawana jest, tak jak wymaga tego protokół komunikacyjny, z zakresu od 0 do 57. Podanie wartości w centymetrach lub w stopniach zależy od wybranego trybu ruchu robota. Przerwa czasowa określa czas pomiędzy kolejnymi ruchami robota. Przykładowo może zajść potrzeba postoju robota, aby inny robot lub pracownik załadował dany przedmiot na robota. Po podaniu prawidłowych parametrów (program sprawdza czy dane są formatu numerycznego oraz z odpowiednich zakresów) przycisk "Rozkaz 1" oraz kolejne, powodują zapisanie wpisanych wartości do danego rozkazu. Rozkazy zgodnie z założeniem wykonują się po kolei, od pierwszego do czwartego po wciśnięciu przycisku "Wykonaj Polecenia".

6. Podsumowanie

System operacyjny Google Android jest nowoczesnym rozwiązaniem. Dostępność do kodu źródłowego daje nieograniczone możliwości programistyczne. Jest pewne, że aplikacje na tę platformę będą wciąż rozwijane, a coraz nowsze moduły elektroniczne instalowane na pokładzie urządzeń przenośnych dawać będą szerokie możliwości dla hobbystów elektroników – programistów. Głównym zadaniem było zaprojektowanie różnych aplikacji na Androida, które powinny wykorzystywać różne, nowoczesne sposoby sterowania tak złożonym urządzeniem, jakim jest robot mobilny. Pierwsza aplikacja była wstępem do zagadnienia programowania na platformie operacyjnej Android. Wykorzystano przyciski umieszczone na ekranie dotykowym. Program mimo swojej prostoty jest niezwykle użyteczny. Kolejny program wykorzystuje wbudowany akcelerometr. Im bardziej telefon jest pochylony w danym kierunku (przód, tył, lewo, prawo) tym większa jest prędkość ruchu robota, a ruch zależy od kierunku wychylenia. Ostatnim program pozwala na programowanie ruchów robota online. Dostępne jest zapisanie 4 rozkazów, które wykonują się w kolejności. Przedstawione oprogramowanie jest jedynie wstępem do zagadnienia programowania na system operacyjny Android. Głównym celem było pokazanie, że korzystanie z najnowszych technologii nie jest zagadnieniem skomplikowanym – przy prawidłowym podejściu do problemu oraz odpowiedniemu przygotowaniu aplikacji przez producenta oprogramowania.

…Zapraszam serdecznie do lektury kolejnych artykułów!

Łukasz Przystalski
tel. 517-19-20-90
lukasz@przystalski.pl
www.przystalski.pl
gg: 1248364

Źródło: Copyright by Łukasz Przystalski. Kopiowanie treści tylko za formalną zgodą autora.

Zobacz też:


Roboty coraz bliżej ludzi dzięki mięśniom inspirowanym naturą
ModuBot – elastyczna robotyka modułowa od MultiProjekt
Największe Targi Automatyki Przemysłowej i Robotyki w Polsce!
Czy roboty przewyższają koszty zatrudnienia?
Dlaczego pasta lutownicza często sprawia problemy techniczne?
Grupa RENEX na stoisku Yamaha podczas targów MOTEK 2024
Sztuczne oko zrewolucjonizuje widzenie robotów
Stwórz przedsiębiorstwo przyszłości z naszym audytem technologicznym – wywiad z MultiProjekt Automatyka