Krzysztof Jaskot, Stanisław Pietraszek 1 Krzysztof Jaskot, Stanisław Pietraszek Politechnika Śląska Instytut Automatyki, Instytut Elektroniki WIELOPROCESOROWY STEROWNIK DLA ROBOTA MOBILNEGO Streszczenie. W artykule przedstawiono budowę dwuprocesorowego sterownika dla robota mobilnego. Omówiono jego budowę, podział zadań realizowanych przez każdy z procesorów oraz sposób wymiany informacji między nimi. Opisano możliwość przeprogramowania i wyposażenia w nowe funkcje dowolnego ze składników systemu bez wprowadzania zmian w pozostałych układach. Przedstawiono także wykorzystanie jednego z procesorów jako układu przetwarzającego informację z różnego typu czujników m.in. przyśpieszenia i zbliżeniowego. 1. Wprowadzenie Budowa i sterowanie małymi robotami mobilnymi w szczególności takimi, które biorą udział w zawodach piłki nożnej robotów np. RoboCup, FIRA (Federation of International Robot-soccer Association) związana jest z szeregiem problemów, które należy rozwiązać. Oprócz części mechanicznej zawierającej układ napędowy i zasilania najważniejszym elementem każdego robota jest układ sterowania sterownik pokładowy. Konstrukcja sprzętowa takiego sterownika zależy głównie od najważniejszego jego elementu tzn. procesora. Analizując właściwości dostępnych mikroprocesorów i mikrokontrolerów można zauważyć, że zastosowanie mikrokontrolerów jest bardziej celowe. Na korzyść mikrokontrolerów przemawia fakt zintegrowania w samej strukturze układu scalonego wielu urządzeń peryferyjnych, które są niezbędne w konstrukcji cyfrowego systemu sterowania. W typowych rozwiązaniach sterowników dla małych robotów mobilnych najczęściej wykorzystywana jest struktura sterowania zbudowana w oparciu o jeden mikrokontroler. Najpopularniejsze są mikrokontrolery 8-bitowe ze względu na swoje wymiary i niskie zapotrzebowanie na energię elektryczną co w przypadku autonomicznej pracy ma ogromne znaczenie (zasilanie bateryjne). Wadą tych rozwiązań jest dosyć mała moc obliczeniowa takich układów np. brak jednostki zmiennoprzecinkowej (koprocesora)
2 wieloprocesorowy sterownik dla robota mobilnego powoduje że czas wykonania np. instrukcji sin() zajmuje ok. 3.5 ms. Jeżeli rozpatrzymy typowy układ sterowania wyposażony w jeden mikrokontroler, który realizuje proces komunikacji radiowej z komputerem nadrzędnym, wykorzystuje algorytm regulacji PID do sterowania prędkością kół, możemy łatwo zauważyć, że obsługa jakichkolwiek dodatkowych układów np. sensorów może powodować poważne opóźnienia w realizacji złożonych algorytmów sterowania. Dlatego ciekawym rozwiązaniem jest umieszczenie mikrokontrolerów w rożnych miejscach systemu [1]. Ich zadaniem jest przetwarzanie i sterowanie lokalnymi procesami (funkcjami), komunikowanie się między sobą oraz wymiana informacji dotycząca realizowanego właśnie zadania. W niniejszym artykule opisano budowę sterownika wykorzystującego dwa mikrokontrolery, sposób komunikacji między procesorami, modyfikację układu pomiaru przyśpieszenia oraz przedstawiono wyniki pomiarów otrzymanych w czasie ruchu robota. 2. Budowa sterownika Do budowy wieloprocesorowego układu sterowania dla robota mobilnego wykorzystano mikrokontrolery rodziny PIC16F8XX firmy Microchip [2,3] główne cechy obu mikrokontrolerów zostały przedstawione w tabeli 1. Za ich wyborem przemawia dobre wsparcie ze strony producenta w środowiska programistyczne asembler/c, możliwość programowania w układzie (ang. ICSP In-Circuit Serial Programming) bez konieczności posiadania zewnętrznego programatora, oraz moduł debugowania (ang. ICD In-Circuit Debugger) co w przypadku procesu tworzenia i testowania algorytmów sterowania umożliwia w łatwy sposób na śledzenie i usuwanie błędów w programie. Sterownik zbudowano z dwóch oddzielnych modułów. Każdy z modułów może pracować samodzielnie i może zostać wykorzystany w budowie innego sterownika. Moduł główny sterownika (ang. Mainboard) przedstawiony na rys.1 (lewy) składa się z mikrokontrolera uk (PIC16F877/20MHz), modułu komunikacji radiowej (RF/RS232), modułu sterującego silnikami (L298N) oraz układu logiki (Logic) pozwalającej na sterowanie kierunkiem obrotu silników. Zadania realizowane przez sterownik to: sterowanie silnikami napędowymi, pomiar prędkości obrotowej kół, przetwarzanie danych pomiarowych, komunikacja z drugim modułem sterownika poprzez magistralę I 2 C [4]. Realizowana jest także komunikacja ze sterownikiem nadrzędnym, którym może być komputer PC, w celu akwizycji danych
Krzysztof Jaskot, Stanisław Pietraszek 3 pomiarowych z poruszającego się robota. Istnieje także możliwość wymiany informacji między robotami [5]. Parametry procesorów PIC Tablica 1 Podstawowe cechy procesora PIC 16F877 PIC 16F876 Architektura RISC RISC Szybkość zegara 20 MHz 20 MHz Pamięć FLASH 8 KB 8 KB Pamięć RAM 368 bajtów 368 bajtów Pamięć EEPROM 256 bajtów 256 bajtów Przerwania 14 13 Przetwornik A/C 10-bit 8 5 Moduł dodatkowy sterownika przeznaczony do obsługi czujników (ang. Sensorboard) przedstawiony na rys.1 (prawy) zbudowany jest z mikrokontrolera uk (PIC 16F876/20MHz), układu komunikacji RS232 (służącego do zmiany oprogramowania sterującego mikrokontrolerem ang. firmware oraz do śledzenia parametrów pracy modułu), zespołu czujników realizujących pomiar odległości od przeszkód (Proximity sensors czujniki zbliżeniowe pracujące w podczerwieni) oraz układu odometrii bezwładnościowej, pracującego w zmodyfikowanym układzie pomiarowym zbudowanego z monolitycznego czujnika mierzącego przyśpieszenie w dwóch osiach. Służy on do wykrywania poślizgów w układzie napędowym a także do detekcji kolizji. Zmiana oprogramowania sterującego dla poszczególnych modułów realizowana jest oddzielnie za pomocą komunikacji RS232. Uaktualnienie oprogramowania może być wykonane w czasie pracy obu modułów. Rys. 1 Schemat blokowy dwuprocesorowego sterownika
4 wieloprocesorowy sterownik dla robota mobilnego Rys. 2 Sterownik robota, moduł główny (lewy), moduł dodatkowy (prawy) 2.1. Sensor bezwładności Jako sensor bezwładności wykorzystano dwuosiowy monolityczny czujnik ADXL 202 [6, 7] z masą zabudowaną na płytce. Pomiar przyśpieszenia z tego czujnika odbywa się za pomocą zliczania czasu trwania sygnału T 1 do czasu całkowitego T 2. Wartość przyśpieszenia otrzymuje się stosując wzór: T A( g) ( 1 0,5) /12.5% T 2 Wadą tego rozwiązania jest maksymalna częstotliwość próbkowania wynosząca 1000Hz. W proponowanym rozwiązaniu czujnik pomiaru przyśpieszenia pracuje w zmodyfikowanym układzie pomiarowym w stosunku do zalecanego przez producenta. Zmiana polegała na rezygnacji z cyfrowego wyjścia z przetwornika DCM (Duty Cycle Modulation) co oznaczało pominięcie wewnętrznej konwersji z postaci analogowej na cyfrową. Do pomiaru wykorzystano dostępny sygnał analogowy rys.3. Wyjście analogowe z układu zostało podane na wzmacniacz. Sygnał pochodzący ze wzmacniacza może być mierzony przez układ A/C mikrokontrolera. Zmiana sposobu pomiaru pozwoliła zwiększyć częstotliwość próbkowania z 1000Hz do częstotliwości zależnej od przetwornika A/C znajdującego się w mikrokontrolerze. Dla naszego układu pomiarowego wynosi 100kHz. (1) Rys. 3 Schemat zmodyfikowanego układu pomiarowego
Krzysztof Jaskot, Stanisław Pietraszek 5 3. Komunikacja Komunikacja między modułem sterownika głównego a modułem sterownika dodatkowego została zrealizowana z wykorzystaniem magistrali szeregowej w standardzie I 2 C (Inter-Integrated Cicuit). Mimo iż magistrale szeregowe nie mają zdolności przepływowych magistral równoległych to wymagają mniejszej liczby przewodów i wyprowadzeń. Magistrala I 2 C nie jest jedynie przewodem połączeniowym zawiera ona wszystkie formaty i procedury komunikacji wewnątrz systemu. Na rys. 4 przedstawiono najczęściej spotykaną sytuację, gdy procesor główny pracuje w trybie urządzenia nadzorującego (ang. Master) a do magistrali dołączona jest pewna liczba urządzeń podporządkowanych (ang. Slave). Urządzeniem nadzorującym jest ten mikrokontroler, który inicjuje transfer danych i generuje sygnał zegarowy. Możliwa jest także praca w trybie Multi- Master Bus gdzie kilka mikrokontrolerów może pracować w trybie nadzorcy, wówczas wykorzystywane są wewnętrzne procedury arbitrażu. Z sytuacją taką możemy mieć do czynienia np. wtedy gdy mikrokontroler dodatkowy zgłasza sytuację awaryjną (np. zderzenie z przeszkodą). Rys. 4 Magistrala I 2 C, konfiguracja Master-Slave Oprogramowanie sterownika master w zależności od potrzeb wynikających z realizowanego algorytmu sterowania może komunikować się ze sterownikiem podrzędnym na kilka sposobów: 1. Możliwe jest otrzymanie paczki danych zawierającej sygnał pomiarowy z wszystkich czujników: Gdzie: P0-P1 wartość sygnału z czujników zbliżeniowych 0-255, Ax, Ay wartość przyspieszenia.
6 wieloprocesorowy sterownik dla robota mobilnego 2. Możemy otrzymać tylko jedną konkretną informację z danego układu pomiarowego np.: wartość przyśpieszenia Ax. Odpowiednie skonstruowane oprogramowanie sterownika podrzędnego pozwala nam nie tylko na żądanie wysyłania gotowych danych ale także pozwala ingerować w sposób przetwarzania informacji w samym mikrokontrolerze. Dzięki temu istnieje możliwość umieszczenia kilku algorytmów realizujących proces pomiarowy i w zależności od potrzeb uruchomienie takiego algorytmu, który w danej chwili jest nam potrzebny. 3. Możliwe jest także przekonfigurowanie naszego sterownika podrzędnego i zmiana np.: algorytmów realizujących pomiar odległości od przeszkód i zwrócenie informacji o tym czy przeszkoda występuje (T-true) lub nie (F-false) Duża dowolność zmiany algorytmów stwarza możliwość testowania różnych konfiguracji i wybrania optymalnej do naszych potrzeb. 4. Opis stanowiska testowego Prezentowany dwuprocesorowy sterownik został zamontowany na dwukołowej platformie jezdnej rys.5. Podstawą konstrukcji testowej platformy jest aluminiowy korpus, w którym osadzona jest nieruchoma oś oraz 2 wysokoobrotowe silniki napędowe prądu stałego o mocy 4.55[W] każdy, dwa przetworniki obrotowo-impulsowe (enkodery) 512 [imp./obr.], akumulatorowe źródło zasilania Ni-Cd o pojemności 450[mAh] i napięciu 7.2[V]. Napęd na koła przenoszony jest za pomocą przekładni zębatych. Robot rozwija prędkość maksymalną ok. 200[cm/s]. Podział poszczególnych funkcji realizowanych przez moduły sterownika przedstawiono na rysunku 6. Sterownik nadrzędny (master) realizuje algorytm sterowania prędkością kół (PID) oraz zarządza modułem podrzędnym (slave). Zadaniem modułu podrzędnego jest pomiar przyśpieszenia środka robota w czasie realizacji trajektorii zadanej oraz pomiar odległości od przeszkód przez czujniki zbliżeniowe. Robot może być wyposażony w dwa czujniki przyśpieszenia oraz od jednego do ośmiu czujników zbliżeniowych.
Krzysztof Jaskot, Stanisław Pietraszek 7 Rys. 5 Robot z dwuprocesorowym sterownikiem Rys. 6 Schemat przedstawiający podział zadań na dwa procesory 5. Wyniki Do celów testowych robot został wyposażony w osiem czujników zbliżeniowych oraz w jeden czujnik przyśpieszenia. Algorytm realizujący bezkolizyjną trajektorię został oparty na zmodyfikowanym algorytmie Braitenberg a [8,9]. Przykładowa trajektoria robota przedstawiona jest na rys. 6a. Rysunek 6b przedstawia prędkość lewego i prawego koła oraz prędkość środka robota w czasie ruchu po trajektorii. Na rysunku 7 przedstawiono fragment pomiaru przyśpieszenia środka robota. Linią punktową przedstawiony jest pomiar obliczony, linią ciągłą pomiar wykonany przy użyciu dodatkowego modułu (sterownika podrzędnego) oraz linia przerywaną pomiar realizowany tylko przez sterownik główny (master).
8 wieloprocesorowy sterownik dla robota mobilnego Rys. 6a,b Przykładowa trajektoria oraz zmierzone prędkości Rys. 7 Pomiar przyśpieszenia z wykorzystaniem układu dwuprocesorowego i jednoprocesorowego Analizując przedstawione przebiegi pomiaru przyśpieszenia można zauważyć, że w przypadku wykorzystania układu dwuprocesorowego pomiar obarczony jest mniejszym błędem niż ma to miejsce w przypadku zastosowania układu jednoprocesorowego. Wynika to ze sposobu pomiaru przyśpieszenia realizowanego przez przetwornik A/C, który wprowadza dodatkowe opóźnienie (czas akwizycji) do algorytmu sterowania. Czujnik przyśpieszenia może być wykorzystany do detekcji poślizgu kół [7] oraz do wykrywania zderzeń z przeszkodami.
Krzysztof Jaskot, Stanisław Pietraszek 9 6. Podsumowanie Układy z wieloprocesorowym systemem sterowania (inteligencji) oferują wyższą niezawodność i większe możliwości dostosowania swojej struktury sterowania do wymaganych celów niż układy posiadające jeden procesor. Prezentowana konstrukcja dwuprocesorowego sterownika w miarę potrzeb może zostać rozszerzona do 128 procesorów adresowanie 7 bitowe. Prezentowana konstrukcja mimo budowy składającej się tylko z dwóch procesorów pokazała, że przeniesienie czasochłonnych procedur obliczeniowych do innej jednostki pozwala na budowę bardziej skomplikowanych algorytmów sterowania oraz otrzymywanie dokładniejszych pomiarów. Inną zaletą systemów wieloprocesorowych jest możliwość przeprogramowania i wyposażenia w nowe funkcje dowolnego ze składników systemu bez wprowadzania zmian w pozostałych układach. Niniejsza praca finansowana była z funduszu KBN 4T11A 01223 w latach 2002/04. LITERATURA: 1. Grabowski R., Navarro-Serment Luis E., Paredis Christian J. J., Khosla K.: Heterogeneous Teams of Modular Robots for Mapping and Exploration, Technical Report, The Robotics Institute, and Department of Electrical and Computer Engineering Carnegie Mellon University. 2. PIC16F87x Data Sheet, Microchip 2001. 3. Pietraszek S. : Mikroprocesory jednoukładowe PIC, HELION, Gliwice 2002. 4. The I 2 C bus specification, Philips Semiconductors, 2000. 5. Jaskot K. : Koncepcja sterowania grupą robotów mobilnych, V Ogólnopolskie Warsztaty Doktoranckie, Istebna-Zaolzie 2003, pp. 46-50. 6. ADXL 202 Karta katalogowa, Analog Devices Inc., 2000. 7. Jedwabny T., Kowalski M., Majchrzak J., Wiczyński G.: Przykład wielosensorycznego systemu pozycjonowania nieholonomicznego robota mobilnego, XIV Krajowa Konferencja Automatyki, Zielona Góra 2002, pp.641-646. 8. Braitenberg V.: Vehicles: Experiments in synthetic psychology, MIT Press, Cambridge 1984. 9. Jaskot K. : An application of neural network to reactive control of a mobile robot, AI- METH Artificial Intelligence Methods, Gliwice 2002, pp.193-196. Recenzent:
10 wieloprocesorowy sterownik dla robota mobilnego A MULTIPROCESSOR CONTROLLER FOR THE MOBILE ROBOT Abstract: The paper presents an experimental multiprocessor controller for little mobile robot. Structure of the main board and the sensor board which basis on the PIC 16F87x micro controllers based on the RISC (35 instructions) Harvard architecture are described. Construction of dual-axis accelerometer and their modified connection to A/D are also shown. A communication protocol between microcontroller is presented. Results of real application are also shown fig. 6a,b and fig. 7.