OPOLCHESS – robot do gry w szachy (3) Układ sterowania
Podstawą układu sterowania robota jest komputer PC z programem rozgrywającym partie w szachy, który decyduje o wykonywanych ruchach. Komputer ten poprzez łącze szeregowe komunikuje się z mikroprocesorami umieszczonymi w złączach manipulatora, chwytaka i szachownicy.
Położenie złącz manipulatora napędzanych serwomechanizmami modelarskimi zadawane jest w postaci impulsów prostokątnych o ustalonej szerokości. Do ich generowania wykorzystano sprzętowe generatory PWM procesorów rodziny ATmega. Przyjęto koncepcję jednoczesnej realizacji ruchów niezależnie wszystkimi przegubami. Przyjętą strukturę układu sterowania robota pokazano na rys. 1.
Algorytm działania
Komputer komunikuje się z robotem przez interfejs RS-232 [1], przesyłając rozkazy zawierające numery pól na szachownicach, z których i na które należy przesunąć bierki, bez informacji o rodzaju bierki. W pamięci mikroprocesorów, przeznaczonych do sterowania złączami kinematycznymi, zapisane zostały tablice wartości odpowiadające wypełnieniom impulsów PWM, przy jakich chwytak osiąga położenie bazowe, dowolnego pola na szachownicy i polach dodatkowych oraz wrzutni zbitych bierek. Procedura komunikacyjna wykonywana jest cyklicznie i obejmuje wysłanie rozkazu ruchu dla robota oraz zbieranie danych o ruchu przeciwnika, czyli człowieka.
Wykonanie ruchu przez robota: komputer poprzez interfejs RS-232 wysyła 14-bajtowy telegram do modułu komunikacyjnego umieszczonego przy szachownicy oraz modułów sterujących pracą przegubów i chwytakiem. Po odebraniu danych moduły te za pośrednictwem czterowejściowej bramki AND uruchamiają przerwanie zewnętrzne INT0 procesora w module komunikacyjnym. Następnie moduł komunikacyjny odsyła do komputera odebraną ramkę sprawdzając poprawność transmisji. W przypadku błędów transmisji lub braku potwierdzenia odebrania ramki przez dowolny procesor, po upływie zadanego czasu transmisja jest ponawiana.
Po sprawdzeniu poprawności otrzymanych danych komputer wysyła kolejny telegram zawierający rozkaz rozpoczęcia wykonania ruchu do modułu komunikacyjnego. Moduł komunikacyjny generuje przerwania zewnętrzne INT0 w procesorach sterujących napędami przegubów, co powoduje jednoczesne rozpoczęcie wykonywania ruchów wszystkich przegubów. Zakończenie wykonania ruchu przez złącza zgłaszane jest do modułu komunikacyjnego liniami przerwań i dalej łączem RS-232 do komputera. Teraz jest kolej na ruch człowieka.
W trakcie wykonywania ruchu przez człowieka moduł komunikacyjny kontroluje cyklicznie stan na szachownicy. W tym celu w module szachownicy zamontowano układy rejestrów wejściowych, do których podłączono czujniki hallotronowe oraz rejestry wyjściowe, do których podłączono podświetlające pola szachownicy diody LED (rys. 2.). Do komunikacji z szachownicą zastosowano interfejs SPI.
Informacja o każdej zarejestrowanej zmianie ustawień bierek na szachownicach przesyłana jest do komputera. Rozpoznanie podniesienia bierki sygnalizowane jest człowiekowi podświetleniem pola, z którego bierka została zdjęta. Założeniem projektu jest, że za kontrolę legalności ruchu odpowiada program komputerowy. Po rozpoznaniu wykonania legalnego ruchu podświetlenie pola jest wyłączane, co sygnalizuje człowiekowi, że jego ruch został zakończony.
Układy elektroniczne
Do realizacji przyjętego algorytmu opracowano układ elektroniczny zgodny ze schematem blokowym (rys. 1). Ramię robota zostało wyposażone w moduły elektroniczne sterujące pracą serwomechanizmów (rys. 3). Podstawowymi elementami tych modułów są mikrokontrolery ATmega8 [3]. Ich zadaniem jest odbieranie rozkazów z komputera i odpowiednie wysterowanie serwomechanizmów. Do sterowania każdego złącza zastosowano oddzielny mikroprocesor.
Rozkazy z komputera wysyłane są w postaci numerów pól tablic, w których w każdym procesorze zapisano odpowiadające zadanemu położeniu pola na szachownicy wypełnienie sygnału PWM. Procesory zmieniają szerokość impulsów z ustaloną stałą czasową umożliwiając poprawne wykonanie rozruchu i hamowania, ponieważ regulatory w serwomechanizmach mają zbyt krótką stałą czasową. W module kontrolującym pracę chwytaka zastosowano mikroprocesor ATmega8 [3] w obudowie SMD (rys. 3).
Układ elektroniczny zamontowany w szachownicy składa się z modułu szachownicy głównej i dwóch modułów szachownic bocznych. Umieszczono je pod polami szachownic (rys. 4.). Odpowiednio połączone tworzą układ, którego zadaniem jest zbieranie informacji o rozmieszczeniu bierek na szachownicy i sygnalizacja optyczna rozpoznania ruchu człowieka.
Modułem pracującym niezależnie od pozostałych jest układ kontroli odkładania bierek, zastosowanym w szufladzie. Wykorzystano w nim również mikroprocesor ATmega8 (rys. 5). Układ ten ma wyjście PWM do serwomechanizmu odsuwającego bierki, czujniki optyczne i obwody sygnalizacji stanu pracy. Ostatnim elementem układu elektronicznego robota jest moduł komunikacyjny, wykonany na bazie mikroprocesora ATmega32 [4] (rys. 6), wyposażony w interfejs szeregowy do komunikacji z komputerem.
|
|
Komunikacja z komputerem
Do komunikacji z komputerem zastosowano protokół transmisji kompatybilny z protokołem USS [5]. Transmisja odbywa się w trybie asynchronicznym półdupleksowym. Telegram składa się z 14 bajtów. Znaczenie poszczególnych bajtów różni się jednak od standardu USS. Podczas transmisji komputer-moduł komunikacyjny, bajty 3 – 8 zawierają numery kolejnych pól tablic zawierających wartości wypełnienia sygnałów PWM, odpowiadające sześciu pozycjom na szachownicy. Umożliwia to realizację trzech pojedynczych ruchów, składających się na najbardziej złożony ruch w szachach czyli promocję z biciem. Bajt 12 to bajt informacyjny. Stosowany jest w celu potwierdzanie poprawności transmisji. Informacja ta przeznaczona jest tylko dla modułu komunikacyjnego.
Podsumowanie
Projekt robota do gry w szachy jest obecnie w końcowej fazie realizacji. Robot został uruchomiony z zastosowaniem programu testowego. Program szachowy działa prawidłowo. Aktualnie trwają prace nad przystosowaniem programu komputerowego do współpracy z układem sterowania robota. Modernizowany jest również sposób realizacji ruchów. Obecnie wszystkie ruchy wykonywane są w jednakowym czasie. Trwają prace nad uzależnieniem czasu realizacji ruchu od jego długości. Autorzy wierzą, że w najbliższej przyszłości robot rozegra pierwszą partię szachów z człowiekiem.
Bibliografia
- Daniluk A.: RS 232C - praktyczne programowanie. Wyd. Helion, Gliwice 2002.
- Grębosz J.: Symfonia C++, Tom 1, 2, 3, Wyd. Oficyna Kallimach, Kraków 1996.
- Dokumentacja mikroprocesora ATmega8 firmy ATMEL.
- Dokumentacja mikroprocesora ATmega32 firmy ATMEL.
- Dokumentacja Using USS Protocol with MICRO-MASTER MM420.
- Witkowski A.: Mikrokontrolery AVR programowanie w języku C przykłady zastosowań. Wyd. Prac. Komp. Jacka Skalmierskiego, Katowice 2006.
Część 1 • • • • • Część 2 • • • • •