PRACA DYPLOMOWA MAGISTERSKA -...

45
Politechnika Wroclawska Wydzial Elektroniki Instytut Cybernetyki Technicznej Kierunek: Automatyka i Robotyka (AiR) Specjalność: Robotyka (ARR) PRACA DYPLOMOWA MAGISTERSKA RoboMouse – maly robot mobilny do celów badawczych Autor: Prowadzący pracę: Artur Honisch dr inż. Marek Wnuk, I-6 Opiekun: dr inż. Marek Wnuk, I-6 Ocena pracy: Wroclaw 2001

Transcript of PRACA DYPLOMOWA MAGISTERSKA -...

Page 1: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Politechnika WrocławskaWydział Elektroniki

Instytut Cybernetyki Technicznej

Kierunek: Automatyka i Robotyka (AiR)Specjalność: Robotyka (ARR)

PRACA DYPLOMOWAMAGISTERSKA

RoboMouse – mały robot mobilny do celów badawczych

Autor: Prowadzący pracę:Artur Honisch dr inż. Marek Wnuk, I-6

Opiekun:dr inż. Marek Wnuk, I-6

Ocena pracy:

Wrocław 2001

Page 2: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone
Page 3: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Spis treści

1 Wstęp 4

2 Podstawy teoretyczne 52.1 Ograniczenia fazowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Model kinematyki robota mobilnego . . . . . . . . . . . . . . . . . . . . . . . 62.3 Sterowanie i napęd robota mobilnego . . . . . . . . . . . . . . . . . . . . . . 72.4 Odometria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

3 Konstrukcja robota RoboMouse 103.1 Płytka mikrokontrolera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103.2 Kodery impulsowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.3 Sterowanie silnikami . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.4 Kamery linijkowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.5 Czujniki zbliżeniowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.6 Przetwornik A/C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.7 Komunikacja z komputerem PC . . . . . . . . . . . . . . . . . . . . . . . . . 15

4 Oprogramowanie 164.1 Oprogramowanie mikrokontrolera . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1.1 Funkcje TPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.1.2 Sterownik . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.1.3 Regulator PID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264.1.4 Kamery i czujniki zbliżeniowe . . . . . . . . . . . . . . . . . . . . . . 274.1.5 Komunikacja z komputerem PC . . . . . . . . . . . . . . . . . . . . . 29

4.2 Oprogramowanie wizualizacyjne . . . . . . . . . . . . . . . . . . . . . . . . . 30

5 Podsumowanie 32

A Schematy, opisy wyprowadzeń 33

B Zawartość nośnika CD-ROM 42

1

Page 4: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Spis rysunków

2.1 Ruch koła po płaszczyźnie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52.2 Traktor dwukołowy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Robot mobilny Khepera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.4 Koncepcje napędów kołowego robota mobilnego . . . . . . . . . . . . . . . . 82.5 Koncepcja napędów robota RoboMouse. . . . . . . . . . . . . . . . . . . . . 82.6 Traktor dwukołowy z mechanizmem myszki komputerowej. . . . . . . . . . . 9

3.1 Robot RoboMouse (widok z góry). . . . . . . . . . . . . . . . . . . . . . . . 113.2 Płytka mikrokontrolera. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.3 Koło i koder impulsowy. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.4 Mechanizm myszy komputerowej. . . . . . . . . . . . . . . . . . . . . . . . . 133.5 Kodery impulsowe zastosowane w robocie . . . . . . . . . . . . . . . . . . . . 133.6 Sposób sterowania silnikami. . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.7 Mocowanie silnika. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.8 Kamery linijkowe i czujniki zbliżeniowe. . . . . . . . . . . . . . . . . . . . . . 15

4.1 Sygnały czujnika SFH910. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174.2 Maksymalny zakres wykorzystania rejestru match. . . . . . . . . . . . . . . . 184.3 Diagram stanów funkcji WSPD. . . . . . . . . . . . . . . . . . . . . . . . . . 204.4 Diagram stanów funkcji MSPD. . . . . . . . . . . . . . . . . . . . . . . . . . 224.5 Przebieg błędów regulacji . . . . . . . . . . . . . . . . . . . . . . . . . . . . 284.6 Diagram czasowy odczytu i przetwarzania danych z kamery. . . . . . . . . . 294.7 Okno programu wizualizacyjnego. . . . . . . . . . . . . . . . . . . . . . . . . 30

A.1 Wyprowadzenia kamery linijkowej. . . . . . . . . . . . . . . . . . . . . . . . 33A.2 Rozmieszczenie podzespołów robota RoboMouse. . . . . . . . . . . . . . . . 34A.3 Kodery impulsowe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35A.4 Przetwornik A/C, kamery i czujniki zbliżeniowe. . . . . . . . . . . . . . . . . 36A.5 Sterowanie silnikami. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37A.6 Schemat ideowy płytki mikrokontrolera. . . . . . . . . . . . . . . . . . . . . 39A.7 Schemat wyprowadzeń płytki mikrokontrolera. . . . . . . . . . . . . . . . . . 40A.8 Rozmieszczenie elementów na płytce mikrokontrolera. . . . . . . . . . . . . . 41

2

Page 5: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Spis tabel

4.1 Parametry funkcji WSPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2 Parametry funkcji MSPD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214.3 Parametry funkcji QDEC. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224.4 Parametry funkcji MOD QDEC. . . . . . . . . . . . . . . . . . . . . . . . . . 224.5 Przyporządkowanie kanałów TPU. . . . . . . . . . . . . . . . . . . . . . . . . 234.6 Zmienne zawarte w strukturze Ctrl. . . . . . . . . . . . . . . . . . . . . . . 244.7 Wartości identyfikatora okresu podstawy czasu przerwania cyklicznego. . . . 244.8 Zmienne zawarte w strukturze M Reg. . . . . . . . . . . . . . . . . . . . . . . 264.9 Przyporządkowanie sygnałów kanałom przetwornika A/C. . . . . . . . . . . . 284.10 Adresowanie układu MCY74028. . . . . . . . . . . . . . . . . . . . . . . . . 29

A.1 Złącze dodatkowej płytki z kamerami i czujnikami zbliżeniowymi. . . . . . . 33A.2 Wyprowadzenia płytki mikrokontrolera. . . . . . . . . . . . . . . . . . . . . . 38

3

Page 6: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Rozdział 1

Wstęp

Autonomiczne systemy transportowe, roboty mobilne przeznaczone dla profesjonalnych za-stosowań w przemyśle, a także inteligentne zabawki nabierają coraz większego znaczenia wżyciu codziennym. Wszystkie te urządzenia posiadają wspólną cechę – wyposażone są wsystem lokomocyjny, który umożliwia im realizację zadań ruchu.

Warunkiem ruchu robota wzdłuż żądanej trajektorii jest znajomość jego pozycji i orien-tacji względem zewnętrznego układu odniesienia. Przeto niezbędny staje się układ pracującyna robocie i realizujący zadanie lokalizacji. Znanym rozwiązaniem tego problemu dla koło-wych robotów mobilnych jest nawigacja przyrostowa, zwana też odometrią, w której to napodstawie odczytu koderów impulsowych na kołach wyliczana jest aktualna pozycja orazorientacja robota.

Niniejsze opracowanie prezentuje nowy sposób podejścia do znanego zagadnienia. Celempracy było opracowanie koncepcji robota mobilnego wykorzystującego mechanizm myszkikomputerowej do nawigacji przyrostowej. Wstępnym zadaniem było opracowanie i zbadanieelementów składowych robota. Należało wykonać serię testów pod kątem jakości i przy-datności poszczególnych podzespołów biorąc pod uwagę specyfikę postawionego problemu.Celem finalnym pracy było zbudowanie robota oraz jego oprogramowanie. Ze względu nazastosowany mechanizm myszki komputerowej nazwano robota RoboMouse.

W rozdziale 2 zamieszczono podstawy teoretyczne dotyczące kilku fundamentalnych te-matów związanych z robotami mobilnymi. Obejmuje on zagadnienie ograniczeń fazowych,modelu kinematyki, układu sterowania oraz nawigacji przyrostowej robotów mobilnych. Roz-ważania teoretyczne zostały również zilustrowane elementarnymi przykładami.

Rozdział 3 zawiera opis konstrukcji robota RoboMouse. Szczególną uwagę zwrócono nawłasności mechaniczne i elektryczne elementów użytych do budowy robota, jak również wska-zano na przesłanki jakie kierowały doborem poszczególnych podzespołów. Opis uzupełnionyzostał zdjęciami części składowych robota.

Oprogramowanie robota RoboMouse zostało opisane w rozdziale 4. Po krótkim wstępienaświetlającym strukturę oprogramowania następuje opis poszczególnych modułów: funkcjiTPU, sterownika, regulatora PID, obsługi dodatkowych sensorów, komunikacji z komputeremPC. Druga część rozdziału traktuje o programie wizualizacyjnym pracującym w środowiskusystemu operacyjnego LINUX.

Dodatek A zawiera schematy ideowe, schematy montażowe oraz opisy wyprowadzeń ro-bota RoboMouse. Do pracy dołączony został nośnik CD-ROM, którego zawartość zostałaopisana w dodatku B.

4

Page 7: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Rozdział 2

Podstawy teoretyczne

2.1 Ograniczenia fazowe

Wzajemne związki między elementami układu robotycznego, a także między układem a jegootoczeniem reprezentujemy w formie ograniczeń (więzów) konfiguracyjnych [1]

f(q) = (f1(q), f2(q), . . . , fk(q))T = 0 (2.1)

oraz ograniczeń (więzów) fazowychA(q)q = 0. (2.2)

Przez q ∈ RN oznaczamy współrzędne uogólnione, a przez q ∈ RN prędkości uogólnioneukładu. Postać (2.2) ograniczeń fazowych nazywa się postacią Pfaffa.

Własność ograniczeń fazowych zwana holonomicznością decyduje o tym czy obecnośćograniczeń fazowych prowadzi do ograniczenia dopuszczalnych konfiguracji układu. Ograni-czenia fazowe nazywamy holonomicznymi, jeżeli jest możliwe ich scałkowanie i zastąpienieograniczeniami postaci (2.1). Holonomiczne ograniczenia fazowe można dołączyć do ograni-czeń konfiguracyjnych. Nieholonomiczność ograniczeń (2.2) oznacza, że scałkowanie systemunie jest możliwe i utrudnieniu może ulec sposób osiągania pewnych konfiguracji. Obecnośćtych ograniczeń nie zmniejsza jednak osiągalności konfiguracji.

Przykład (Koło)

Przyjmiemy współrzędne uogólnione układu q = (x, y, θ, φ)T , gdzie x, y są współrzędnymipołożenia, θ orientacją, a φ kątem obrotu koła (zobacz rys. 2.1). Chcemy, żeby koło poruszało

;

<

[

\

θ

φ�r Y

φU

Rysunek 2.1: Ruch koła po płaszczyźnie.

5

Page 8: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

2.2 Model kinematyki robota mobilnego 6

się bez poślizgu. Ruch bez poślizgu bocznego oznacza, że brak jest składowej prostopadłejprędkości

x sin θ = y cos θ.

Przedstawione w postaci Pfaffa ograniczenie wygląda następująco:

(sin θ,− cos θ, 0, 0)q = 0. (2.3)

Warunkiem braku poślizgu wzdłużnego jest zerowa prędkość w punkcie styku koła z podło-żem, co można przedstawić jako

v = rφ.

Po przekształceniu otrzymujemy{x = v cos θ = rφ cos θ

y = v sin θ = rφ sin θ.

W postaci Pfaffa ograniczenie przyjmuje postać[

1 0 0 −r cos θ0 1 0 −r sin θ

]q = 0. (2.4)

W przypadku niespełnienia powyższej zależności może wystąpić jedno z następujących nie-pożądanych zjawisk:

� v < rφ – buksowanie (prędkość obrotu koła jest większa niż prędkość ruchu ciała),

� v > rφ – poślizg (prędkość ruchu ciała jest większa niż prędkość obrotu koła).

2.2 Model kinematyki robota mobilnego

Układ robotyczny opisany na uniwersum fazowym R2N za pośrednictwem l niezależnychograniczeń nieholonomicznych nazywamy robotem mobilnym. Model matematyczny kinema-tyki kołowego robota mobilnego przedstawia się w formie bezdryfowego układu sterowania

q = G(q)u =m∑

i=1

gi(q)ui. (2.5)

Przy założeniu, że układ robotyczny nie podlega ograniczeniom konfiguracyjnym, wymiarprzestrzeni stanu układu wynosi n = N .

Przykład (Traktor dwukołowy)

Model kinematyki robota przedstawionego na rys. 2.2 przyjmuje postać [2]

q =

xy

θ

φ1

φ2

=

− sin θ 0cos θ 0

0 1−1r

− lr

1r

− lr

(u1

u2

)= G(θ)u, (2.6)

gdzie u1 jest prędkością liniową traktora, natomiast u2 prędkością zmian orientacji traktora.Przykładem układu o kinematyce (2.6) jest robot mobilny Khepera przedstawiony na rys. 2.3.

Page 9: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

2.3 Sterowanie i napęd robota mobilnego 7

;�

; �

<�

< �

[

U U

;�

φ1φ2

<�

O O

Rysunek 2.2: Traktor dwukołowy.

X1

Y1

��� � �

Silnik

Punkt podparcia

Enkoder

Rysunek 2.3: Robot mobilny Khepera.

2.3 Sterowanie i napęd robota mobilnego

Wychodząc z modelu kinematyki (2.6) możemy wyznaczyć równania na u1 oraz u2 postaciu1 = r φ2−φ1

2

u2 = −r φ1+φ2

2l.

(2.7)

Po uwzględnieniu zależności (2.7) i przekształceniu równań kinematyki (2.6) otrzymujemyzwiązek pomiędzy składowymi prędkości robota a prędkościami kół

ξ =

xy

θ

=

r sin θ2

− r sin θ2

− r cos θ2

r cos θ2

− r2l

− r2l

(ω1

ω2

), (2.8)

przy czym {ω1 = φ1

ω2 = φ2.

Na rys. 2.4 przedstawione zostały dwie różne koncepcje napędów dwukołowego robota mo-bilnego. Zasadnicza różnica pomiędzy wskazanymi rozwiązaniami polega na tym, że w pierw-szym przypadku silniki napędzające koła, sterowane są oddzielnie za pomocą dwóch regulato-rów. W drugim przypadku następuje niejako sterowanie interaktywne poprzez uwzględnieniew regulatorze ruchu obydwu kół.

W przypadku robota wyposażonego w kodery impulsowe na kołach otrzymujemy infor-mację o prędkościach kół. Wielkościami zadawanymi są również prędkości kół. Rozważającrównania (2.6) widać, że wielkościami, którymi sterujemy są φ1 oraz φ2. Jednocześnie są to

Page 10: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

2.3 Sterowanie i napęd robota mobilnego 8

a) b)

ν1ν2 ω1ω2

ω1ω2

ν1ν2 ω1ω2

ω1ω2

Rysunek 2.4: Koncepcje napędów kołowego robota mobilnego: a) oddzielne sterowanie silni-kami, b) wspólne sterowanie silnikami.

wielkości, które są mierzone za pośrednictwem koderów na kołach. Z punktu widzenia robotajest to więc sterowanie w układzie otwartym, chociaż patrząc od strony napędów sterowa-nie odbywa się w zamkniętej pętli. Przy takim podejściu wielkości u1 i u2 możemy jedyniewyliczyć z zależności (2.7).

µ1µ2

�X���X��7

ν1ν2

ω1ω2

Rysunek 2.5: Koncepcja napędów robota RoboMouse.

Na rys. 2.5 przedstawiona została koncepcja robota mobilnego wykorzystującego me-chanizm myszki komputerowej do nawigacji przyrostowej. Odwołując się jak poprzednio dorównań (2.6) stwierdzamy, że przy takim rozwiązaniu sterowanie z punktu widzenia robotaodbywa się w układzie zamkniętym. Wielkościami zadawanymi są φ1 i φ2, a mierzonymi u1

oraz u2.

Page 11: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

2.4 Odometria 9

2.4 Odometria

Mechanizm myszki komputerowej pozwala na określenie dwóch składowych prędkości robotana płaszczyźnie – składowej postępowej oraz składowej obrotowej. Schemat kinematycznyrobota wykorzystującego taki mechanizm został przedstawiony na rys. 2.6. Zależności doty-

U U

;�

φ1φ2

<�

O O

µ1

µ2

D

Rysunek 2.6: Traktor dwukołowy z mechanizmem myszki komputerowej.

czące nawigacji przyrostowej wyglądają następująco:{u1 = µ1ρu2 = µ2ρ

a,

(2.9)

gdzie

ρ =πd

C.

Wielkości µ1, µ2 oznaczają liczbę impulsów z poszczególnych koderów, ρ jest współczynni-kiem konwersji impulsów z kodera na odległość liniową, d średnicą wałka kodera, a długościąramienia zawieszenia kulki, a C rozdzielczością kodera. Warto podkreślić, że średnica kulkijest bez znaczenia.

Page 12: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Rozdział 3

Konstrukcja robota RoboMouse

Robot mobilny RoboMouse został zmontowany na płytce uniwersalnej. Druki uniwersalnesą rozwiązaniami tymczasowymi, typowymi dla modeli. Cechą konstrukcji prototypowychjest konieczność wprowadzania częstych zmian w trakcie ich powstawania. Poza tym częśćsensorów użytych do budowy robota nie jest już aktualnie dostępna na rynku. Uniemożliwiato zbudowanie większej serii takich robotów, a jednocześnie potwierdza zasadność montażuna druku uniwersalnym.

Płytka główna stanowi podstawę całego robota, umieszczone zostały na niej wszystkiegłówne podzespoły:

� mechanizm myszy komputerowej,

� silniki,

� fotokomórki związane z koderami impulsowymi na kołach,

� płytka mikrokontrolera,

� przetwornik A/C,

� dodatkowe układy logiczne.

Rys. 3.1 przedstawia robota RoboMouse w widoku z góry, a na rys. A.2 pokazano schematmontażowy robota, wraz z opisem wszystkich złączy. Poza główną częścią robota związanąz podstawowymi czynnościami ruchowymi możliwe jest dołączenie opcjonalnego modułu za-wierającego kamery linijkowe1 oraz czujniki zbliżeniowe. Wzbogaca to robota RoboMouse ododatkowe możliwości sensoryczne podczas eksploracji otoczenia.

3.1 Płytka mikrokontrolera

Do sterowania robotem wykorzystano mikrokontroler MC68332 firmy Motorola. Widok płyt-ki mikrokontrolera2 przedstawia rys. 3.2. Płytka zawiera dodatkowo, oprócz jednostki cen-tralnej, pamięć RAM oraz programowalną pamięć flash ROM. Moduły pamięci znajdują sięna odwrotnej stronie płytki. Na obrzeżach wyprowadzone zostały sygnały mikrokontrolera,których przyporządkowanie zamieszczono w tabeli A.2. Konstrukcja taka stwarza możliwośćuniwersalnego wykorzystania układu.

1Kamery linijkowe, uchwyty silników oraz koła były używane w robocie Cyclope i zostały pozyskane dziękiuprzejmości J. D. Nicoud, EPFL Lausanne.

2Płytka mikrokontrolera została wykonana przez firmę ELFIN z Wrocławia.

10

Page 13: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

3.1 Płytka mikrokontrolera 11

Rysunek 3.1: Robot RoboMouse (widok z góry).

Rysunek 3.2: Płytka mikrokontrolera.

Page 14: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

3.2 Kodery impulsowe 12

3.2 Kodery impulsowe

Kodery impulsowe są podstawowymi czujnikami robota RoboMouse. Dzięki nim możliwestaje się określanie bieżącej pozycji, orientacji oraz prędkości robota. Dlatego bardzo istotnąrzeczą jest ich odpowiedni dobór. Wspomniane wyżej sensory występują w robocie w dwóchmiejscach – na kołach oraz w mechaniźmie myszki komputerowej.

Fotokomórka na kołach jest seryjnym czujnikiem typu SFH910 firmy Siemens. Jest ondobrany i dopasowany do rozmiaru szczelin na obrzeżach obręczy kół. Czujnik oraz kołoprzedstawione na rys. 3.3 tworzą zwartą parę, przeto dalsze rozważania na temat ich wza-jemnego dopasowania zostaną pominięte.

Rysunek 3.3: Koło i koder impulsowy.

Odmiennie prezentuje się sprawa doboru mechanizmu myszy komputerowej. Dużą liczbętakich mechanizmów cechuje nie tylko nieznaczna rozdzielczość, ale również niewielka stabil-ność konstrukcji oraz konieczność stosowania określonego typu fotoelementów dopasowanychdo konkretnego typu oraz rozmiaru szczelin. Wszystkie wymienione wady dyskwalifikują temechanizmy, by można je wykorzystać w nawigacji robota mobilnego. Jednocześnie nie na-leży oczekiwać, że producenci myszy komputerowych będą projektować podzespoły w tensposób, aby mogły być one ponownie wykorzystane w innych aplikacjach.

Po przeglądzie dostępnych mechanizmów zdecydowano się na taki, który jest zarów-no stabilny pod względem konstrukcji, jak i nie stawia wygórowanch restrykcji w zakresiedoboru fotoelementów. Zastosowany mechanizm posiada wbudowane szczeliny, których uło-żenie gwarantuje odpowiednie przesłanianie promienia światła emitowanego przez diodę iodbieranego przez fototranzystor. Rozwiązanie takie przedstawione zostało schematyczniena rys. 3.5b).

3.3 Sterowanie silnikami

Rys. 3.6 przedstawia koncepcję sterowania silnikami. Jako końcówkę mocy zastosowano mo-stek tranzystorowy typu L293 firmy SGS-Thomson. Dodatkowe układy logiczne pozwalają nasterowanie silnikami przy użyciu regulowanego wypełnienia przebiegu prostokątnego (PWM)oraz sygnału kierunku obrotu (DIR). Silniki zostały zamontowane w specjalnych uchwytach,

Page 15: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

3.3 Sterowanie silnikami 13

Rysunek 3.4: Mechanizm myszy komputerowej.

a) b)

Rysunek 3.5: Kodery impulsowe zastosowane w robocie RoboMouse: a) na kołach, b) wmechaniźmie myszki komputerowej.

M

PWM

DIR

Rysunek 3.6: Sposób sterowania silnikami.

Page 16: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

3.4 Kamery linijkowe 14

dzięki którym utrzymywane są w osi poprzecznej robota. Dodatkowo uchwyty te posiadająprofilowane wcięcia pełniące rolę gniazda dla osadzenia baterii. Silnik wraz z mocowaniemprzedstawiono na rys. 3.7.

Rysunek 3.7: Mocowanie silnika.

3.4 Kamery linijkowe

Kamery linijkowe stanowią dodatkowe, opcjonalne wyposażenie robota. Są to układy typuTSL214 firmy Texas Instruments. Zostały one umieszczone na oddzielnej płytce, która możebyć dołączona do robota za pomocą odpowiedniego złącza. Rozwiązanie to widoczne jest narys. 3.8.

W celu polepszenia własności optycznych kamer zastosowano soczewki walcowe, zamo-cowane bezpośrednio przed czujnikami. Ograniczenie ilości światła padającego zapewniajądopasowane do kamer i soczewek obudowy.

3.5 Czujniki zbliżeniowe

Na dodatkowej płytce znajdują się, oprócz kamer linijkowych, czujniki zbliżeniowe typuSFH900 firmy Siemens. Są to miniaturowe układy zawierające nadajnik oraz odbiornik pod-czerwieni. Czujnik działa na zasadzie detekcji światła odbitego od przeszkody, a wysłanegoprzez nadajnik. Czułość tego układu jest niewielka, a jej zmiany dokonuje się poprzez dobórrezystora w obwodzie kolektora fototranzystora. Układy tego typu są wykorzystywane jakoczujniki obecności papieru w drukarkach.

3.6 Przetwornik A/C

Przetwornik analogowo-cyfrowy służy do przetwarzania analogowych sygnałów pochodzą-cych z kamer linijkowych oraz czujników zbliżeniowych na postać cyfrową. Zastosowanyukład jest 10-bitowym przetwornikiem typu TLC1541 firmy Texas Instruments. Komunika-cja przetwornika A/C z mikrokontrolerem odbywa się poprzez złącze QSPI.

Page 17: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

3.7 Komunikacja z komputerem PC 15

Rysunek 3.8: Kamery linijkowe i czujniki zbliżeniowe.

Przetwornik TLC1541 wymaga do przetwarzania zewnętrznego generatora przebiegu pro-stokątnego. Generator taki został zbudowany w oparciu o układ 74LS14. Odpowiedni dobórstałej RC pozwolił na uzyskanie częstotliwości przetwarzania równej 1,6 MHz. Jako źródłonapięcia odniesienia dla przetwornika zastosowano układ LM336-2.5 o wartości 2,5 V.

3.7 Komunikacja z komputerem PC

Wszystkie funkcje sterujące niezbędne do autonomicznego funkcjonowania robota zawarte sąw pamięci mikrokontrolera. Jednak sensowne wydaje się, aby istniała możliwość przesyłaniadanych pomiędzy mikrokontrolerem a komputerem PC. Pozwala to na przykład na zmianęlub wizualizację parametrów ruchu robota bez konieczności ponownego przeprogramowaniaelektroniki robota.

Komunikacja z komputerem PC odbywa się za pomocą portu szeregowego. Zastosowanezłącze pozwala wykorzystać kabel stosowany do komunikacji z robotem Khepera. Rozwiązanietakie ogranicza jednak swobodę ruchu robota. Chcąc wyeliminować tę wadę wykorzystanozłącze IrDA3 pozwalające na komunikację bezprzewodową za pomocą podczerwieni.

Układ został zaprojektowany w ten sposób, aby nie wymagał żadnych dodatkowych ste-rowników. Można z niego korzystać jak z normalnego łącza szeregowego. Po włączeniu urzą-dzenie ustawia domyślną prędkość transmisji na 9600 bit/s. Transmisja z tą prędkością niewymaga żadnych dodatkowych zabiegów programistycznych.

3Układ nadawczo-odbiorczy IrDA był projektem studenckim i został wykonany przez Tomasza Sulkę wramach przedmiotu Systemy mikroprocesorowe w automatyce.

Page 18: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Rozdział 4

Oprogramowanie

Oprogramowanie robota RoboMouse składa się z dwóch części. Jedna z nich dotyczy opro-gramowania mikrokontrolera MC68332 [3] [4] znajdującego się na robocie. Druga część jestinterfejsem graficznym pozwalającym użytkownikowi na zmianę, kontrolę oraz wizualizacjępodstawowych parametrów ruchu robota.

4.1 Oprogramowanie mikrokontrolera

W oprogramowaniu mikrokontrolera można wyróżnić poszczególne bloki funkcjonalne. Częśćkodu przeznaczona dla jednostki TPU została napisana w języku TPUMASM (Time Proces-sor Unit Macro Assembler). Opis poszczególnych komend wraz z przykładami można znaleźćw [5] oraz [6]. Pozostała część oprogramowania została napisana w języku C i uruchomionaprzy użyciu skrośnego kompilatora oraz interfejsu BDM (Background Debug Mode).

Koncepcja oprogramowania robota RoboMouse polega na rozdzieleniu poszczególnychzadań na wiele poziomów. Najniższy poziom stanowią funkcje TPU przeznaczone do bez-pośredniej interakcji z czujnikami i silnikami. Na wyższym poziomie znajduje się programsterownika, który wykorzystuje do sterowania robotem funkcję sterowania dostarczoną przezużytkownika. Dodatkowe moduły oprogramowania pozwalają na obsługę kamer linijkowych,czujników zbliżeniowych oraz komunikację z komputerem PC.

Oprogramowanie mikrokontrolera zostało napisane w sposób modułowy, przez co stałosię bardziej przejrzyste. Funkcje obsługi poszczególnych modułów znajdują się w oddzielnychplikach:

� control.h – plik nagłówkowy sterownika, zawiera definicje stałych dla TPU, deklaracjęstruktury pomiarowej oraz deklarację funkcji inicjalizującej sterownik,

� control.c – definicje funkcji sterownika, inicjalizacja TPU, przypisanie funkcji kanałomTPU, inicjalizacja podstawy czasu przerwania cyklicznego, funkcja obsługi przerwaniacyklicznego,

� pid.h – plik nagłówkowy funkcji sterowania, zawiera deklarację struktury sterowaniaoraz funkcji sterowania,

� pid.c – definicja funkcji sterowania,

� main.c – program główny, zawiera wywołania funkcji programowania pamięci flashROM, inicjalizacji sterownika, komunikacji z komputerem PC.

� adc.c – zawiera funkcje obsługi przetwornika A/C konwertującego analogowe dane zkamer i czujników zbliżeniowych na postać cyfrową,

16

Page 19: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 17

� serial.h – plik nagłówkowy modułu przesyłania danych przez port szeregowy,

� serial.c – zawiera funkcje służące do przesyłania danych zebranych w sterowniku pod-czas ruchu robota do komputera PC,

� modbus.h – definicje dla protokołu MODBUS,

� modbus.c – funkcje komunikacji z komputerem PC z wykorzystaniem protokołu MOD-BUS,

� flash.h – definicje stałych i deklaracje funkcji obsługi pamięci flash ROM,

� flash.c – funkcje obsługi pamięci flash ROM,

� qsm.h – definicje rejestrów QSM mikrokontrolera MC68332,

� sim.h – definicje rejestrów SIM mikrokontrolera MC68332,

� tpu.h – definicje rejestrów TPU mikrokontrolera MC68332.

Niniejszy rozdział zawiera jedynie opis algorytmów i metod rozwiązania wybranych proble-mów. Postać źródłowa wszystkich modułów oprogramowania znajduje się na dołączonym dopracy nośniku CD-ROM.

4.1.1 Funkcje TPU

Jednostka TPU mikrokontrolera MC68332 pozwala, oprócz kilku wbudowanych funkcji, naswobodne programowanie własnych funkcji. Własność ta została wykorzystana w procesietworzenia oprogramowania robota RoboMouse. Konieczność pomiaru pozycji i prędkościrobota, a także specyfika użytych sensorów wymagała stworzenia funkcji pomiaru tych wiel-kości.

ZMIANA KIERUNKU OBROTU

IMPULSY

KIERUNEK

Rysunek 4.1: Sygnały czujnika SFH910.

Na rys. 4.1 przedstawione zostały przebiegi sygnałów czujnika SFH910 pracującego jakofotokomórka na kole. Odbiornik tego czujnika składa się z dwóch fotoelementów położonychblisko siebie i dopasowanych do szczelin kodera. Przebiegi z poszczególnych kanałów nie sąjednak bezpośrednio dostępne dla użytkownika, gdyż wbudowany układ logiczny konwertujeje i udostępnia sygnał impulsu oraz sygnał kierunku obrotu. Do obsługi tego typu sygnałówopracowano funkcję WSPD. Do inicjalizacji kanału TPU, do którego doprowadzony zostałsygnał kierunku z czujnika SFH910 służy prosta funkcja INIT DIR.

Page 20: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 18

W przypadku mechanizmu myszy komputerowej mamy do dyspozycji bezpośrednio sy-gnały z poszczególnych kanałów. Umożliwia to wykorzystanie do zliczania impulsów fabrycz-nie dostarczonej funkcji QDEC, która została nieznacznie zmodyfikowana dla potrzeb robotaRoboMouse i nazwana MOD QDEC. Funkcja ta nie ma jednak możliwości pomiaru czasupomiędzy dwoma impulsami potrzebnej dla określenia prędkości ruchu robota, dlatego stwo-rzona do tego celu została dodatkowa funkcja MSPD.

Poniższy opis dotyczy jedynie własnych funkcji, dokumentację funkcji dostarczonychprzez producenta zawierają [7] oraz [8].

Funkcja WSPD

Funkcja WSPD (Wheel Speed) zlicza impulsy pochodzące z kodera na kole, udostępnia znacz-nik czasowy pojawienia się impulsu, odmierza czas pomiędzy dwoma impulsami oraz infor-muje o kierunku obrotu koła.

Ustawienie bitów host service request na %11 powoduje inicjalizację funkcji, podczas któ-rej następuje wybranie podstawy czasu (TCR) oraz ustawienie reakcji na narastające zboczesygnału wejściowego. Wyzwolenie stanu funkcji, w którym zliczane są impulsy, następujepo zrównaniu się wartości TCR z zawartością rejestru match lub przy narastającym zboczusygnału na wejściu kanału. Pierwsza przyczyna wyzwolenia oznacza, że został przekroczo-ny dopuszczalny czas pomiędzy dwoma impulsami. Druga powoduje rozpoczęcie proceduryzliczania. Jeśli poprzednim zdarzeniem było przekroczenie dopuszczalnego czasu pomiędzydwoma impulsami, to różnica znaczników czasowych nie jest obliczana. W przeciwnym wy-padku wyliczana jest różnica pomiędzy aktualną wartością TCR i poprzednio zapamiętanąwartością znacznika czasowego. Zapamiętana zostaje bieżąca wartość TCR, a do rejestrumatch wpisana zostaje wartość TCR+$8000. Maksymalny zakres wykorzystania rejestrumatch został przedstawiony na rys. 4.2. Następnie licznik impulsów zostaje zwiększony lubzmniejszony, w zależności od stanu sygnału wejściowego kanału o numerze o 1 wyższym odtego, do którego przypisano funkcję WSPD. Wymaga to, aby sygnał kierunku z czujnika byłpodłączony do kanału o numerze o 1 wyższym niż sygnał impulsu.

$FFFF $0000

TCR

$7FFF$8000TCR + $8000

Rysunek 4.2: Maksymalny zakres wykorzystania rejestru match.

Tabela 4.1 przedstawia parametry funkcji WSPD przechowywane w parameter RAMkanału. Oznaczenie Y=M111, gdzie M jest wartością bitu mapowania modułu w rejestrzekonfiguracyjnym SIM (Y=$7 lub $F), W jest numerem kanału.

Page 21: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 19

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0$YFFFW0 COUNTER$YFFFW2 PREVTIME$YFFFW4 DIFFTIME$YFFFW6 DIR$YFFFW8 NOT USED$YFFFWA NOT USED

Tabela 4.1: Parametry funkcji WSPD.

COUNTER zawiera liczbę zliczonych impulsów pochodzących z kodera na kole. Licznikjest inkrementowany lub dekrementowany w zależności od stanu sygnału wejściowegona kolejnym kanale TPU. Wymaga to, żeby wyjście informujące o kierunku obrotupochodzące z czujnika było podłączone do kanału o numerze wyższym o 1 niż wyjścieczujnika podające impulsy.

PREVTIME jest znacznikiem czasowym pojawienia się impulsu. Parametr jest wykorzy-stywany do wyliczania czasu pomiędzy dwoma kolejnymi impulsami.

DIFFTIME określa czas pomiędzy dwoma kolejnymi impulsami, wyliczając go na pod-stawie różnicy pomiędzy aktualną wartością TCR oraz poprzednio zapamiętaną wPREVTIME wartością znacznika czasowego. Jeżeli różnica przekracza dopuszczalnąwartość, to do DIFFTIME wpisywana jest wartość $8000.

DIR zawiera kierunek obrotu koła. Parametr przyjmuje wartość 1 lub -1 w zależności odstanu sygnału wejściowego na kolejnym kanale TPU. Wymaga to, żeby wyjście infor-mujące o kierunku obrotu pochodzące z czujnika było podłączone do kanału o numerzewyższym o 1 niż wyjście czujnika podające impulsy.

Poniżej przedstawiony został algorytm funkcji WSPD w celu lepszego zrozumienia jejdziałania, a rys. 4.3 obrazuje diagram przejścia stanów.

Stan 1: INIT COUNTWarunki: HSR1, HSR0, M/TSR, LSR, PIN, FLAG0 = 11xxxx

Skonfiguruj kanał jako wejściowy; capture TCR2; match TCR2Ustaw wrażliwość wejścia na narastające zbocze sygnału wejściowegoUaktywnij M/TSR

Stan 2: COUNTWarunki: HSR1, HSR0, M/TSR, LSR, PIN, FLAG0 = 001xxx

Jeżeli zdarzenie match to {DIFFTIME=$8000Ustaw FLAG0, zaneguj MRL

} w przeciwnym wypadku {Gdy FLAG0 nie jest ustawiona DIFFTIME=ERT–PREVTIMEPREVTIME=ERTMER=ERT+$8000Zgaś FLAG0, zaneguj TDL i MRLZwiększ numer kanału o 1Sprawdź stan wejścia i przywróć poprzedni numer kanałuJeżeli (PSL=1) {COUNTER=COUNTER+1; DIR=1}W przeciwnym razie {COUNTER=COUNTER–1; DIR=–1}

}

Page 22: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 20

11xxxx

FROM ANY STATE

S1INIT_COUNT

001xxx

S2COUNT

HSR=11

M/TSR=1

M/TSR=1

HSR M/TSR LSR PIN FLAG0

XX X X X X

KEY:

Rysunek 4.3: Diagram stanów funkcji WSPD.

Funkcja MSPD

Funkcja MSPD (Mouse ball Speed) udostępnia znacznik czasowy pojawienia się impulsu orazodmierza czas pomiędzy dwoma impulsami pochodzącymi z mechanizmu myszy komputero-wej.

Ustawienie bitów host service request na %11 powoduje inicjalizację funkcji, podczas któ-rej następuje wybranie podstawy czasu (TCR) oraz ustawienie reakcji na narastające zboczesygnału wejściowego. Wyzwolenie stanu funkcji, w którym wyliczana jest różnica czasu po-między dwoma impulsami, następuje po zrównaniu się wartości TCR z zawartością rejestrumatch lub przy narastającym zboczu sygnału na wejściu kanału. Pierwsza przyczyna wyzwo-lenia oznacza, że został przekroczony dopuszczalny czas pomiędzy dwoma impulsami. Drugapowoduje rozpoczęcie procedury obliczeniowej. Jeśli poprzednim zdarzeniem było przekro-czenie dopuszczalnego czasu pomiędzy dwoma impulsami, to różnica znaczników czasowychnie jest obliczana. W przeciwnym wypadku wyliczana jest różnica pomiędzy aktualną war-tością TCR i poprzednio zapamiętaną wartością znacznika czasowego. Zapamiętana zostajebieżąca wartość TCR, a do rejestru match wpisana zostaje wartość TCR+$8000. Maksymal-ny zakres wykorzystania rejestru match został przedstawiony na rys. 4.2.

Tabela 4.2 przedstawia parametry funkcji MSPD przechowywane w parameter RAMkanału. Oznaczenie Y=M111, gdzie M jest wartością bitu mapowania modułu w rejestrzekonfiguracyjnym SIM (Y=$7 lub $F), W jest numerem kanału.

PRETIME jest znacznikiem czasowym pojawienia się impulsu. Parametr jest wykorzysty-wany do wyliczania czasu pomiędzy dwoma kolejnymi impulsami.

DIFTIME określa czas pomiędzy dwoma kolejnymi impulsami wyliczając go na podstawieróżnicy pomiędzy aktualną wartością TCR oraz poprzednio zapamiętaną w PRETI-ME wartością znacznika czasowego. Jeżeli różnica przekracza dopuszczalną wartość doDIFTIME wpisywana jest wartość $8000.

Page 23: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 21

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0$YFFFW0 NOT USED$YFFFW2 PRETIME$YFFFW4 DIFTIME$YFFFW6 NOT USED$YFFFW8 NOT USED$YFFFWA NOT USED

Tabela 4.2: Parametry funkcji MSPD.

Poniżej przedstawiony został algorytm funkcji MSPD w celu lepszego zrozumienia jejdziałania, a rys. 4.4 obrazuje diagram przejścia stanów.

Stan 1: INIT CNTWarunki: HSR1, HSR0, M/TSR, LSR, PIN, FLAG0 = 11xxxx

Skonfiguruj kanał jako wejściowy; capture TCR2; match TCR2Ustaw wrażliwość wejścia na narastające zbocze sygnału wejściowegoUaktywnij M/TSR

Stan 2: CNTWarunki: HSR1, HSR0, M/TSR, LSR, PIN, FLAG0 = 001xxx

Jeżeli zdarzenie match to {DIFTIME=$8000Ustaw FLAG0, zaneguj MRL

} w przeciwnym wypadku {Gdy FLAG0 nie jest ustawiona DIFTIME=ERT–PRETIMEPRETIME=ERTMER=ERT+$8000Zgaś FLAG0, zaneguj TDL i MRL

}

Funkcja INIT DIR

Funkcja INIT DIR (Direction Initialization) służy wyłącznie do inicjalizacji kanału, do któ-rego doprowadzony jest sygnał kierunku obrotu pochodzący z układu detekcji impulsów nakole. Funkcja posiada tylko jeden stan, który jest osiągany poprzez ustawienie bitów hostservice request na %11.

Funkcja MOD QDEC

Funkcja MOD QDEC jest zmodyfikowaną i dostosowaną dla potrzeb robota RoboMousewersją fabrycznie dostarczanej funkcji QDEC. Modyfikacja polega na zastąpieniu parametruTCR1 VALUE, zawierającym ostatnią wartość podstawy czasu TCR1, parametrem PHA-SE informującym o fazie sygnałów doprowadzonych do dwóch kanałów wykorzystującychfunkcję MOD QDEC. Poprzez modyfikację funkcji QDEC uniknięto konieczności stworzeniaoddzielnej funkcji określającej fazę sygnałów.

Dla porównania podano w tabeli 4.3 parametry funkcji QDEC,a w tabeli 4.4 parametryfunkcji MOD QDEC.

Page 24: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 22

11xxxx

FROM ANY STATE

S1INIT_CNT

001xxx

S2CNT

HSR=11

M/TSR=1

M/TSR=1

HSR M/TSR LSR PIN FLAG0

XX X X X X

KEY:

Rysunek 4.4: Diagram stanów funkcji MSPD.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0$YFFFW0 EDGE TIME$YFFFW2 POSITION COUNT$YFFFW4 TCR1 VALUE$YFFFW6 CHAN PINSTATE$YFFFW8 CORR PINSTATE ADDR$YFFFWA EDGE TIME LSB ADDR

Tabela 4.3: Parametry funkcji QDEC.

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0$YFFFW0 EDGE TIME$YFFFW2 POSITION COUNT$YFFFW4 PHASE$YFFFW6 CHAN PINSTATE$YFFFW8 CORR PINSTATE ADDR$YFFFWA EDGE TIME LSB ADDR

Tabela 4.4: Parametry funkcji MOD QDEC.

Page 25: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 23

4.1.2 Sterownik

Struktura sterownika umożliwia użytkownikowi włączenie własnego algorytmu sterowaniarobotem bez konieczności ingerowania w funkcje odwołujące się bezpośrednio do sensorówi silników. Sterownik inicjalizuje jednostkę TPU oraz dokonuje przypisania odpowiednichfunkcji poszczególnym kanałom. Zestawienie kanałów TPU i przyporządkowanie funkcji wrazz opisem sygnałów doprowadzonych do kolejnych kanałów zawiera tabela 4.5.

Nr kanału Definicja kanału Funkcja Sygnał0 QDECA MOD QDEC Impulsy (kula, kanał 1)1 QDECB MOD QDEC Impulsy (kula, kanał 2)2 QDECC MOD QDEC Impulsy (kula, kanał 3)3 QDECD MOD QDEC Impulsy (kula, kanał 4)4 COUNTLEFT WSPD Impulsy (koło lewe)5 INITDIRLEFT INIT DIR Kierunek obrotu (koło lewe)6 COUNTRIGHT WSPD Impulsy (koło prawe)7 INITDIRRIGHT INIT DIR Kierunek obrotu (koło prawe)8 PWMLEFT PWM Wypełnienie impulsu (silnik lewy)9 DIRLEFT DIO Kierunek obrotu (silnik lewy)10 PWMRIGHT PWM Wypełnienie impulsu (silnik prawy)11 DIRRIGHT DIO Kierunek obrotu (silnik prawy)12 MSPEEDPOS MSPD Impulsy (kula, kanał 1)13 MSPEEDORIENT MSPD Impulsy (kula, kanał 3)

Tabela 4.5: Przyporządkowanie kanałów TPU.

Po zainicjowaniu TPU następuje ustawienie cyklicznego przerwania [9], w którym ob-sługiwana jest procedura sterowania. Sterownik dostarcza sygnały z czujników, które mogąbyć wykorzystane w algorytmie sterowania dołączonym przez użytkownika. Funkcja stero-wania powinna generować wielkości sterujące, które będą wykorzystane przez sterownik donapędu silników. Poszczególne zmienne zostały skupione w strukturze Ctrl. Objaśnieniaposzczególnych zmiennych zostały zamieszczone w tabeli 4.6.

extern struct ctrl_s {long PIT_Period;int Curr_Pos_Lin;int Curr_Pos_Rot;int Curr_Vel_Lin;int Curr_Vel_Rot;int Curr_Pos_Left;int Curr_Pos_Right;int Curr_Vel_Left;int Curr_Vel_Right;int U_Left;int U_Right;

} Ctrl;

Posiadając własną funkcję sterowania można ją włączyć do sterownika poprzez wywołaniew programie głównym funkcji inicjalizującej sterownik

InitControl(int pti_period_id, void* control_fun)

z parametrami

Page 26: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 24

Zmienna OpisPIT_Period Okres podstawy czasu przerwania cyklicznego

Curr_Pos_Lin Położenie robotaCurr_Pos_Rot Orientacja robotaCurr_Vel_Lin Prędkość liniowa robotaCurr_Vel_Rot Prędkość kątowa robotaCurr_Pos_Left Położenie koła lewegoCurr_Pos_Right Położenie koła prawegoCurr_Vel_Left Prędkość koła lewegoCurr_Vel_Right Prędkość koła prawego

U_Left Sterowanie silnika lewegoU_Right Sterowanie silnika prawego

Tabela 4.6: Zmienne zawarte w strukturze Ctrl.

� pti_period_id - identyfikator okresu podstawy czasu przerwania cyklicznego,

� control_fun - wskaźnik na funkcję sterowania użytkownika.

Dozwolone wartości parametru pti_period_id zamieszczone zostały w tabeli 4.7.

Identyfikator Okres timera0 1 s1 500 ms2 250 ms3 125 ms4 62,5 ms5 31,25 ms6 15,62 ms7 7,81 ms8 3,9 ms9 1,95 ms10 0,977 ms

Tabela 4.7: Wartości identyfikatora okresu podstawy czasu przerwania cyklicznego.

Przerwanie cykliczne PTIInterrupt jest wywoływane z okresem zadanym przez użyt-kownika poprzez parametr pti_period_id. Procedura obsługi tego przerwania gromadzipomiary z czujników oraz steruje silnikami w ściśle określonych odstępach czasu. Do bezpo-średnich pomiarów wielkości wymienionych poniżej służą wcześniej opisane funkcje TPU.

� Składowa liniowa pozycji robota mierzona za pomocą funkcji MOD QDEC.

Ctrl.Curr_Pos_Lin = TPURAM(QDECA,1)

� Składowa obrotowa pozycji robota mierzona za pomocą funkcji MOD QDEC.

Ctrl.Curr_Pos_Rot = TPURAM(QDECC,1)

� Składowa liniowa prędkości robota mierzona za pomocą funkcji MSPD. Ponieważ funk-cja MSPD dokonuje pomiaru czasu pomiędzy impulsami, należy otrzymany wynik od-wrócić, aby zabobiec niestabilności przy małych prędkościach robota. Uwaga ta dotyczywszystkich pomiarów prędkości.

Page 27: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 25

Ctrl.Curr_Vel_Lin = ((TPURAM(MSPEEDPOS,2) == 0x8000) ? 0 :((0x7FFF/TPURAM(MSPEEDPOS,2)) * TPURAM(QDECA,2)))

� Składowa obrotowa prędkości robota mierzona za pomocą funkcji MSPD.

Ctrl.Curr_Vel_Rot = ((TPURAM(MSPEEDORIENT,2) == 0x8000) ? 0 :((0x7FFF/TPURAM(MSPEEDORIENT,2)) * TPURAM(QDECC,2)))

� Pozycja koła lewego mierzona za pomocą funkcji WSPD.

Ctrl.Curr_Pos_Left = TPURAM(COUNTLEFT,0)

� Pozycja koła prawego mierzona za pomocą funkcji WSPD.

Ctrl.Curr_Pos_Right = TPURAM(COUNTRIGHT,0)

� Prędkość koła lewego mierzona za pomocą funkcji WSPD.

Ctrl.Curr_Vel_Left = ((TPURAM(COUNTLEFT,2) == 0x8000) ? 0 :((0x7FFF/TPURAM(COUNTLEFT,2)) * TPURAM(COUNTLEFT,3)))

� Prędkość koła prawego mierzona za pomocą funkcji WSPD.

Ctrl.Curr_Vel_Right = ((TPURAM(COUNTRIGHT,2) == 0x8000) ? 0 :((0x7FFF/TPURAM(COUNTRIGHT,2)) * TPURAM(COUNTRIGHT,3) * (-1)))

Procedura obsługi przerwania cyklicznego, po wykonaniu serii pomiarów, wywołuje funkcjęsterowania,

ControlFunction()

a następnie wysterowuje silniki za pośrednictwem funkcji PWM oraz DIO.

if (Ctrl.U_Left >= 0) {SetSer(DIRLEFT,1);TPURAM(PWMLEFT,2) = PWMPER - (PWMPER * Ctrl.U_Left) / 100;

} else {SetSer(DIRLEFT,2);TPURAM(PWMLEFT,2) = PWMPER - (PWMPER * Ctrl.U_Left * (-1)) / 100;

}if (Ctrl.U_Right >= 0) {

SetSer(DIRRIGHT,1);TPURAM(PWMRIGHT,2) = PWMPER - (PWMPER * Ctrl.U_Right) / 100;

} else {SetSer(DIRRIGHT,2);TPURAM(PWMRIGHT,2) = PWMPER - (PWMPER * Ctrl.U_Right * (-1)) / 100;

}

Page 28: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 26

4.1.3 Regulator PID

Jako przykład funkcji sterowania użytkownika zaimplementowany został regulator propor-cjonalno-całkująco-różniczkujący. Algorytm sterowania dla ciągłego regulatora PID wyglądanastępująco:

u(t) = Kpe(t) +Ki

∫ t

0e(τ)dτ +Kd

de(t)

dt.

Zmienne dotyczące regulatora PID zostały skupione w strukturze M_Reg. Znaczenie po-szczególnych zmiennych zostało wyjaśnione w tabeli 4.8.Użytkownik zadaje żądane wartościprędkości liniowej i kątowej robota. Regulator korzystając z aktualnych wartości tych pręd-kości wylicza wartości wielkości sterujących, które poprzez sterownik podawane są na silniki.

extern struct m_reg_s {int Kp;int Ki;int Kd;int Set_Vel_Lin;int Set_Vel_Rot;long Last_Err_Lin;long Sum_Err_Lin;long Last_Err_Rot;long Sum_Err_Rot;

} M_Reg;

Zmienna OpisKp Współczynnik wzmocnienia członu proporcjonalnego regulatoraKi Współczynnik wzmocnienia członu całkującego regulatoraKd Współczynnik wzmocnienia członu różniczkującego regulatora

Set_Vel_Lin Zadana prędkość liniowa robotaSet_Vel_Rot Zadana prędkość kątowa robotaLast_Err_Lin Poprzednia wartość błędu prędkości liniowejSum_Err_Lin Suma wartości błędu prędkości liniowejLast_Err_Rot Poprzednia wartość błędu prędkości kątowejSum_Err_Rot Suma wartości błędu prędkości kątowej

Tabela 4.8: Zmienne zawarte w strukturze M Reg.

Poniżej przedstawiona została rzeczywista implementacja regulatora PID jako przykładfunkcji sterowania robotem RoboMouse. Sterowanie ster_lin wyliczane jest poprzez su-mowanie wielkości wyjściowych poszczególnych członów regulatora. Składowa reg_p_linokreśla wartość członu proporcjonalnego i została otrzymana na podstawie błędu prędkościerr_lin, pomnożonego przez współczynnik wzmocnienia M_Reg.Kp. Iloczyn współczynnikawzmocnienia M_Reg.Ki i sumy błędów M_Reg.Sum_Err_Lin daje wartość członu całkują-cego. Dodatkowo, aby zapobiec nadmiernemu wzrostowi wartości reg_i_lin, wprowadzonoograniczenie całkowania REG_I_LIM. Różnica aktualnej i poprzedniej wartości błędu, pomno-żona przez współczynnik wzmocnienia M_Reg.Kd, określa składową różniczkującą regulatora.Sterowanie ster_rot wyliczane jest w taki sam sposób jak sterowanie ster_lin.

Wielkości sterujące dla silników Ctrl.U_Left i Ctrl.U_Right otrzymuje się przez odpo-wiednie zestawienie wcześniej wyznaczonych sterowań. Wartości te muszą zostać następnieprzeskalowane, aby zawierały się w przedziale [-100, 100]. Sterownik dodatkowo sprawdzawielkości sterujące i w razie potrzeby ogranicza je do wskazanego przedziału.

Page 29: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 27

void MPIDControl(void) {

long err_lin, err_rot;long ster_lin, reg_p_lin, reg_i_lin, reg_d_lin;long ster_rot, reg_p_rot, reg_i_rot, reg_d_rot;

err_lin = M_Reg.Set_Vel_Lin - Ctrl.Curr_Vel_Lin;reg_p_lin = M_Reg.Kp * err_lin;M_Reg.Sum_Err_Lin += err_lin;reg_i_lin = (M_Reg.Ki * M_Reg.Sum_Err_Lin);reg_d_lin = M_Reg.Kd * (err_lin - M_Reg.Last_Err_Lin);reg_i_lin = RANGE(reg_i_lin,(-1)*REG_I_LIM, REG_I_LIM);ster_lin = reg_p_lin + reg_i_lin + reg_d_lin;

err_rot = M_Reg.Set_Vel_Rot - Ctrl.Curr_Vel_Rot;reg_p_rot = M_Reg.Kp * err_rot;M_Reg.Sum_Err_Rot += err_rot;reg_i_rot = (M_Reg.Ki * M_Reg.Sum_Err_Rot);reg_d_rot = M_Reg.Kd * (err_rot - M_Reg.Last_Err_Rot);reg_i_rot = RANGE(reg_i_rot,(-1)*REG_I_LIM, REG_I_LIM);ster_rot = reg_p_rot + reg_i_rot + reg_d_rot;

Ctrl.U_Left = (int)((ster_lin + ster_rot) >> 10);Ctrl.U_Right = (int)((ster_lin - ster_rot) >> 10);

M_Reg.Last_Err_Lin = err_lin;M_Reg.Last_Err_Rot = err_rot;

if (Tab_Ind < TAB_SIZE) {Vel_Lin_Tab[Tab_Ind] = Ctrl.Curr_Vel_Lin;Vel_Rot_Tab[Tab_Ind] = Ctrl.Curr_Vel_Rot;Err_Lin_Tab[Tab_Ind] = (int)err_lin;Err_Rot_Tab[Tab_Ind] = (int)err_rot;Tab_Ind++;

}

W procedurze regulatora PID gromadzone są również dane o prędkościach i błędachregulacji, które mogą zostać przesłane za pomocą programu wizualizacyjnego do komputeraPC. Kolejne wartości wysyłane są w postaci jednej kolumny, co umożliwia późniejsze ichprzetworzenie przy pomocy programu GNUPLOT. Wyniki przykładowego eksperymentuzostały przedstawione na rys. 4.5. Wykresy przedstawiają przebieg błędu regulacji dla dwóchskładowych prędkości. Czas wyrażony jest w milisekundach, a wartość błędu w jednostkachzadawanych przez program wizualizacyjny.

4.1.4 Kamery i czujniki zbliżeniowe

Kamery linijkowe i czujniki zbliżeniowe są dodatkowym wyposażeniem robota wzbogaca-jącym go o możliwość interakcji z otoczeniem. Sygnały wyjściowe, zarówno kamer jak iczujników zbliżeniowych, mają postać analogową. Muszą zatem przed dalszą obróbką zostaćprzetworzone na postać cyfrową. Zastosowany układ typu TLC1541 firmy Texas Instrumentsjest 10-kanałowym, 10-bitowym przetwornikiem analogowo-cyfrowym. W obecnej konfigu-

Page 30: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 28

a)

b)

�� �

� �

� �

� �

� �

� �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

� � �

� � �

� � �

� � �

� � �

� �

� � � � � � � � � � � � � � � � � � � � � � � � � � � � � �

Rysunek 4.5: Przebieg błędów regulacji z parametrami Kp=600, Ki=6, Kd=120: a) prędkościliniowej, b) prędkości kątowej.

racji robota wykorzystane są tylko 4 kanały. Opis sygnałów doprowadzonych na wejściaposzczególnych kanałów zawiera tabela 4.9.

Kanał Sygnał7 Lewy czujnik zbliżeniowy8 Prawy czujnik zbliżeniowy9 Lewa kamera10 Prawa kamera

Tabela 4.9: Przyporządkowanie sygnałów kanałom przetwornika A/C.

Obraz zastosowanej kamery linijkowej składa się z 64 pikseli. Kolejne wartości pikselisą wysuwane z częstotliwością przebiegu zegarowego CLK i przetwarzane w przetwornikuA/C na postać cyfrową. Komunikacja przetwornika z mikrokontrolerem odbywa się za po-mocą złącza QSPI [10] z częstotliwością 1,05 MHz. Podczas jednego cyklu następuje wysłanieadresu kanału, który ma zostać przetworzony i odebranie danych z poprzedniej konwersji.Pierwsze odczytane słowo należy więc zignorować, a następne 64 są wartościami kolejnychpikseli. Diagram czasowy procedury odczytu został przedstawiony na rys. 4.6.

Zegar systemowy przetwornika A/C pracuje z częstotliwością 1,6 MHz. Proces przetwa-rzania wymaga 44 impulsów zegarowych, co daje czas 27,5 µs. Mikrokontroler wybiera sy-gnałem CS przetwornik A/C oraz inicjalizuje kamerę poprzez PORTE (PE0 - lewa kamera,PE1 - prawa kamera). Po upływie 2 µs wysyła 10-bitowy adres kanału, który ma zostać prze-tworzony oraz odbiera dane z poprzedniej konwersji. Przy częstotliwości transmisji 1,05 MHzwymaga to czasu 10 µs. Następnie oczekuje 30 µs, by umożliwić prawidłowe przetworzeniedanych. Łączny czas cyklu odczytu jednego piksela z kamery wynosi więc 42 µs.

Page 31: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.1 Oprogramowanie mikrokontrolera 29

SI (Kamera)

CLK (Kamera)

DATA (A/C)

CS (A/C)

1 2 64

Rysunek 4.6: Diagram czasowy odczytu i przetwarzania danych z kamery.

Czujniki zbliżeniowe są sensorami optycznymi działającymi na zasadzie detekcji świa-tła odbitego. Nadajnik czujnika włączany jest za pośrednictwem dekodera 1 z 10 typuMCY74028. Dekoder jest adresowany poprzez PORTE mikrokontrolera. W robocie RoboMo-use zostały wykorzystane jedynie dwa spośród czterech wejść adresowych dekodera. Możliwekombinacje bitów zostały zebrane w tabeli 4.10.

Wejście MCY74028 Wyjście MCY74028(Linia portu uC) (Aktywny czujnik)

B (PE3) A (PE2)0 0 Q0 (Lewy czujnik)0 1 Q1 (Prawy czujnik)1 0 Q2 (Brak połączenia)1 1 Q3 (Brak połączenia)

Tabela 4.10: Adresowanie układu MCY74028.

Jako przykład wykorzystania kamer linijkowych opracowano prosty program demonstra-cyjny, realizujący zadanie śledzenia punktu świetlnego. Kod źródłowy znajduje się w plikucamdemo.c. Funkcja sterująca realizuje prosty algorytm stereowizji bazujący na triangulacji.Wynik działania tego programu, w postaci krótkiego filmu, znajduje się na nośniku CD-ROMdołączonym do pracy.

4.1.5 Komunikacja z komputerem PC

Komunikcja mikrokontrolera z komputerem PC odbywa poprzez łącze szeregowe RS232 z wy-korzystaniem protokołu MODBUS. Występująca implementacja protokołu MODBUS obej-muje 3 funkcje:

� odczyt n rejestrów,

� zapis n rejestrów,

� identyfikacja urządzenia slave.

Inicjalizacji transmisji szeregowej dokonuje się poprzez wywołanie funkcji

MbInit(1)

przy czym parametrem wywołania jest numer urządzenia slave. Uruchomienie transmisjinastępuje po wywołaniu funkcji

Page 32: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.2 Oprogramowanie wizualizacyjne 30

MbStart()

Do obsługi protokołu służy funkcja

MbService()

Przy pomocy rejestrów protokołu MODBUS przesyłane są wartości zadane oraz aktualneprędkości liniowej i kątowej robota, prędkości kół, wartości współczynników wzmocnienia dlaregulatora PID. W czasie ruchu robota mikrokontroler gromadzi dane dotyczące prędkościrobota oraz błędu regulacji. Dane te mogą zostać przesłane jednym strumieniem, bez udziałurejestrów MODBUS, na żądanie użytkownika do komputera PC. Do tego celu służy funkcja

SendTab(int* tab, int size)

z parametrami

� tab - wskaźnik na tablicę zawierającą dane do przesłania,

� size - rozmiar tablicy.

Funkcja ta wysyła dane w postaci jednej kolumny, co pozwala na poźniejszą ich wizualizacjęprzy pomocy programu GNUPLOT.

4.2 Oprogramowanie wizualizacyjne

Oprogramowanie wizualizacyjne zostało napisane przy użyciu biblioteki graficznej Qt i pra-cuje w środowisku systemu operacyjnego LINUX. Okno programu zostało przedstawione narys. 4.7. Program pozwala na interaktywną modyfikację parametrów ruchu robota wraz zobserwacją aktualnych ich wartości.

Rysunek 4.7: Okno programu wizualizacyjnego.

Dwa suwaki służą do zmiany wartości zadanej prędkości liniowej i kątowej. Pola wy-świetlaczy wskazują zarówno zadaną jak i aktualną wartość prędkości liniowej oraz kątowej.

Page 33: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

4.2 Oprogramowanie wizualizacyjne 31

Uruchomienie robota następuje po naciśnięciu przycisku Start. Do zatrzymania robota słu-ży przycisk Stop. Zmiana wartości zadanej prędkości liniowej i kątowej jest także możliwapodczas ruchu robota.

Trzy pola umieszczone w górnej części okna służą do zmiany wartości wzmocnień po-szczególnych członów regulatora PID. W kolejności od lewej pola odpowiadają za wzmocnie-nie członu proporcjonalnego, całkującego oraz różniczkującego. Zmiany wartości wzmocnieńregulatora PID należy dokonywać z zachowaniem szczególnej ostrożności, gdyż dobranienieodpowiednich wartości tych parametrów może prowadzić do utraty kontroli nad ruchemrobota.

Komunikacja robota z komputerem PC odbywa się poprzez łącze szeregowe. Po urucho-mieniu robota mikrokontroler zbiera w tablicach wartości prędkości oraz błędów regulacji.Przyciski LinVel, RotVel, LinErr i RotErr służą do pobrania zgromadzonych w czasie ru-chu robota danych i zapisaniu ich w pliku. Dane przesyłane są w formacie umożliwiającympóźniejsze ich przetwarzanie programem GNUPLOT.

Page 34: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Rozdział 5

Podsumowanie

Celem pracy było opracowanie koncepcji i wykonanie robota mobilnego wykorzystującegomechanizm myszki komputerowej do nawigacji przyrostowej. Po gruntownym przeglądziedostępnych części składowych powstał robot spełniający założenia wstępne pracy.

Wyposażenie w postaci mechanizmu myszki komputerowej umożliwia określenie zarównoaktualnej pozycji i orientacji robota jak i jego prędkości liniowej oraz kątowej. Oprogramowa-nie robota zostało napisane w sposób modułowy, co czyni go bardziej przejrzystym, a jedno-cześnie umożliwia rozbudowę o dalsze funkcje. Struktura sterownika pozwala użytkownikowina dołączenie własnej funkcji sterowania bez konieczności ingerencji w procedury obsługiczujników i silników. Możliwe staje się zatem testowanie różnych algorytmów sterowania przyjednoczesnej minimalizacji przebudowy istniejącego oprogramowania. Jako przykład funkcjisterowania zaimplementowany został regulator PID. Oprogramowanie wizualizacyjne pracu-jące w środowisku systemu operacyjnego LINUX na komputerze PC, umożliwia śledzenie izmianę podstawowych parametrów ruchu robota wykorzystując komunikację bezprzewodowąIrDA.

Po pierwszych udanych testach z robotem wyposażonym w podstawowe podzespoły zde-cydowano się na jego rozbudowę. Prace te zaowocowały dodatkowymi sensorami rozszerza-jącymi możliwości robota RoboMouse. Opcjonalnie dołączony moduł zawiera dwa czujnikizbliżeniowe oraz dwie kamery linijkowe. Przykładem wykorzystania kamer linijkowych jestprosty program demonstracyjny – zadaniem robota jest śledzenie jasnego punktu, na przy-kład diody LED.

Istnieje możliwość rozbudowy robota o dalsze podzespoły sprzętowe i moduły programo-we. A oto kilka propozycji:

� dodanie dalmierza optycznego. Do jego podłączenia zostały przewidziane wolne kon-takty w złączu płytki z kamerami i czujnikami zbliżeniowymi.

� Zaimplementowanie algorytmu sterowania z wykorzystaniem kamer linijkowych i czuj-ników zbliżeniowych.

� Przetwarzanie obrazu z wykorzystaniem stereowizji.

Robot RoboMouse przeznaczony jest do prowadzenia eksperymentów oraz zajęć dydak-tycznych w laboratorium robotyki. Ćwiczenie laboratoryjne mogłoby polegać na opraco-waniu własnej funkcji sterowania, włączeniu jej do sterownika, pobraniu wyników oraz ichwizualizacji. Istnieje więc możliwość testowania różnych algorytmów sterowania na fizycz-nym obiekcie. Poza tym, dysponując niezależnymi pomiarami prędkości z mechnizmu myszykomputerowej i kół, można próbować sterować robotem w obecności poślizgów.

Należałoby już tylko dodać

acta est fabula!

32

Page 35: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Dodatek A

Schematy, opisy wyprowadzeń

Sygnał Opis1 VCC Napięcie zasilania2 SI1 Wejście inicjalizacyjne lewej kamery3 CLK1 Wejście zegarowe lewej kamery4 AO1 Wyjście analogowe lewej kamery5 T1 Kolektor odbiornika lewego czujnika zbliżeniowego6 D1 Anoda nadajnika lewego czujnika zbliżeniowego7 NC Brak połączenia8 NC Brak połączenia9 NC Brak połączenia10 NC Brak połączenia11 T2 Kolektor odbiornika prawego czujnika zbliżeniowego12 D2 Anoda nadajnika prawego czujnika zbliżeniowego13 SI2 Wejście inicjalizacyjne prawej kamery14 CLK2 Wejście zegarowe prawej kamery15 AO2 Wyjście analogowe prawej kamery16 GND Masa

Tabela A.1: Złącze dodatkowej płytki z kamerami i czujnikami zbliżeniowymi.

CLKSI GND AONC VDD

Rysunek A.1: Wyprowadzenia kamery linijkowej.

33

Page 36: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

34

�������

����

�����

�� ���

CD74HCT1474LS32

������

LM336

VCC GND VCCGNDNCNCNC

NC

GND

GND

GND

RxD

TxD

GND AO2 CLK2 SI2 D2 T2 D1 T1 AO1 CLK1 SI1 VCCNC NC NC NC

Rysunek A.2: Rozmieszczenie podzespołów robota RoboMouse.

Page 37: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

35

���

� � �

�� �

������

��������

���� � �����

����� ��!!�"

�#����$

%� ��&

��'(' ) ��'�*#���� '+#���,�*#-

��.�� �

+#���/������)����

�����0����*#

1�23

1� +044�+�

1� +044�+�

1� 23

1� 23

1� 23

15+044�+�

16+044�+�

�� ��!

�� ��7

�� ��7

�� ��!

�� ��7

�� ��7

8��

8��

8��

8��

8��

8��

(��5�0���

(��5�0���

+�

+�

�!

��

(�35�0���

��

��

(�%5�0���

+�

+!

/�

��

(� �%09�!

/�

��

(� �%09�!

�5 ��!

�6 ��!

�9 ��!

��!��!

�����!

�����!

8��

8��

+�+�

+�+5

Rysunek A.3: Kodery impulsowe.

Page 38: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

36

���

� � �

�� �

������

��������

���� � �����

����� ��!!�"

�#����$

%� ��&

��'(' ) ��'�*#���� '�+*,�*#-

��.�� ������/����*#

�0���������12)���������

�!

��

��

��

��

��

��

3

�3

4

�4

5

�5

��

��!

��

602�78

�4

�9��78

�5

�6�

�3

�:%;

��

�:%�

��

2(

��

��

��(� 7�

����

�6�2

�2�6<��!

��8

4

5(� 3�7���

�!

��(�:3�7���

�� �:��

�� ���

�9��78

�9��78

=>� 7������,�

�� �:��

?���:%;

�:%;

�!

��

��

��

@!

@�

��

@�

@�

��

@�

@�

@�

3

@3

@4

5

@5

(� ��93�!�4

�?:����

A >(� �%/5!! �

A >(� �%/5!!B

� B�

�� ��C �� ��C?��

?��

DEE= �6

�78

�2

FGE H�2

DEEI FGE =>

(� �7���

DEE= �6

�78

�2

FGE H�2

DEEI FGE =>

(3�7���

�� !,��

�� !,��

B�

B�

?��

B�

B�

?�� ���8!

<���

���8�

<���

�� �!!

�� �!!

B�

B�

Rysunek A.4: Przetwornik A/C, kamery i czujniki zbliżeniowe.

Page 39: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

37

���

� � �

�� �

������

��������

���� � �����

�������� !"

�#����$

%� ��&

��'(')� ��'�*#����)'+����,�*#-

��.��)�

+���������

�����/����*#

� �

(��0�1���

� �

(��0�1���

!

�2

(��0�1���

��

����

(�0�1���

+�+33�

�4

5��

3(�

3(�

5��

0

�4

5��

�2

3(�

��

3(�

��

5��

��

(� 1� ��4

+�+33�

6��

6��

(��0�/���

!

(�0�/���

7 7!

7�27��

Rysunek A.5: Sterowanie silnikami.

Page 40: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

38

A B C D

1 − V CC V CC GND2 GND RESET RXD TXD3 CLKOUT IRQ7 PCS3 PCS24 IRQ6 IRQ5 PCS1 PCS05 IRQ4 IRQ3 SCK MOSI6 IRQ2 IRQ1 MISO A187 R/W A17 A168 SIZ0 SIZ1 A15 A149 DS AS A13 A12

10 AV EC RMC A11 A1011 DSACK1 DSACK0 A9 A812 D15 D14 A7 A613 D13 D12 A5 A414 D11 D10 A3 A215 D9 D8 A1 A016 D7 D6 TP1 TP017 D5 D4 TP3 TP218 D3 D2 TP5 TP419 D1 D0 TP7 TP620 CS3 CS4 TP9 TP821 CS5 CS8 TP11 TP1022 CS9 CS10 TP13 TP1223 T2CLK TP15 TP1424 GND V CC V CC GND

Tabela A.2: Wyprowadzenia płytki mikrokontrolera.

Page 41: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

39

Rysunek A.6: Schemat ideowy płytki mikrokontrolera.

Page 42: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

40

Rysunek A.7: Schemat wyprowadzeń płytki mikrokontrolera.

Page 43: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

41

Rysunek A.8: Rozmieszczenie elementów na płytce mikrokontrolera.

Page 44: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Dodatek B

Zawartość nośnika CD-ROM

Software – oprogramowanie robota.

Linux – program wizualizacyjny i funkcje komunikacji za pomocą protokołu MOD-BUS pracujące w środowisku systemu operacyjnego LINUX.

Mc68332 – oprogramowanie mikrokontrolera. Zawiera funkcje TPU, sterownik, re-gulator PID, funkcje obsługi przetwornika A/C i portu szeregowego, programdemonstracyjny z wykorzystaniem kamer linijkowych, pliki nagłówkowe z defini-cjami rejestrów mikrokontrolera MC68332.

Pdf – dokumentacje i noty aplikacyjne układów użytych przy budowie robota.

Film – krótkie filmy w formacie MPEG-1 obrazujące działanie programu demonstracyjnego,realizującego śledzenie punktu świetlnego.

Foto – zdjęcia w formacie JPEG poszczególnych elementów składowych robota.

Praca – tekst pracy.

42

Page 45: PRACA DYPLOMOWA MAGISTERSKA - rab.ict.pwr.wroc.plrab.ict.pwr.wroc.pl/~mw/Stud/Dypl/honisch/praca.pdf · Rozdział 1 Wstęp Autonomiczne systemy transportowe, roboty mobilne przeznaczone

Literatura

[1] K. Tchoń, A. Mazur, I. Dulęba, R. Hossa, R. Muszyński. Manipulatory i roboty mobilne.Akademicjka Oficyna Wydawnicza PLJ, Warszawa, 2000.

[2] J.P. Laumond, S. Sekhavat, F. Lamiraux. Guidelines in nonholonomic motion planningfor mobile robots. Raport instytutowy 97438, LAAS, 1998.

[3] Motorola. MC68332 User’s Manual. Motorola Literature Distribution; P.O. Box 20912;Phoenix, Arizona 85036, 1992.

[4] Motorola. CPU32 Central Processor Unit. Motorola Literature Distribution; P.O. Box20912; Phoenix, Arizona 85036, 1990.

[5] Motorola. TPUMASM Time Processor Unit Macro Assembler. Motorola LiteratureDistribution; P.O. Box 20912; Phoenix, Arizona 85036, 1994.

[6] Amy Dyson, Munir Bannoura. TPU Microcoding for Beginners. AMT Publishing,Detroit MI, Austin TX, 1999.

[7] Motorola. TPU Time Processor Unit. Motorola Literature Distribution; P.O. Box20912; Phoenix, Arizona 85036, 1996.

[8] Motorola. TPU Literature. Motorola Literature Distribution; P.O. Box 20912; Phoenix,Arizona 85036, 1996.

[9] Motorola. SIM System Integration Module. Motorola Literature Distribution; P.O. Box20912; Phoenix, Arizona 85036, 1992.

[10] Motorola. QSM Queued Serial Module. Motorola Literature Distribution; P.O. Box20912; Phoenix, Arizona 85036, 1991.

43