Instytut Cybernetyki Technicznej
Praca Magisterska
Mały robot mobilny obserwujący otoczenie przy
pomocy kamery
Tomasz Salamon
Promotor: dr Marek Wnuk
Ocena:
Wrocław 2005
Dedykuje RODZICOM
Spis treści
Spis rysunków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
Spis tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Cel i zakres pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
Realizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
2. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3. Konstrukcja mechaniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
4. Część elektroniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Kodery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Czujniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Moduł kompasu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Moduł sonaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Dalmierz optyczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
Moduł transceivera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Opis ogólny układu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
Rozwiązanie układowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
5. Oprogramowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Środowisko programistyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
Mikrokontrolery - oprogramowanie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Sterowanie serwomechanizmami . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Obsługa czujników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
Sterowanie układem napędowym . . . . . . . . . . . . . . . . . . . . . . . . . .
42
6. Przebieg i wyniki eksperymentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
7. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Spis rysunków
Model podwozia Rocker-Bogi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Sześciokołowy robot Fido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
Robot SIMROV2 podczas obrotu w miejscu
. . . . . . . . . . . . . . . . . . . . . . . . .
10
Widok robota w fazie konstrukcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
Widok ogólny konstrukcji robota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
Widok robota z boku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Widok robota z przodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
Widok robota z tyłu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
Budowa zawieszenia konstrukcji
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
Zachowanie się robota podczas najazdu na przeszkodę . . . . . . . . . . . . . . . . . . . .
15
Budowa wewnętrzna serwomechanizmu HS-311 . . . . . . . . . . . . . . . . . . . . . . . .
15
Sprzężenie serwomechanizmu z kołem zewnętrznym
. . . . . . . . . . . . . . . . . . . . .
16
Montaż układów kół skrętnych do konstrukcji . . . . . . . . . . . . . . . . . . . . . . . . .
17
3.10 Ustawienie kół podczas obrotu w miejscu . . . . . . . . . . . . . . . . . . . . . . . . . . .
17
Główne funkcje sterowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
Poszczególne bloki sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
19
Silnik RH158-12-200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Struktura wewnętrzna mostka L298N . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
21
Zależność prędkości silnika od sterującego sygnału PWM . . . . . . . . . . . . . . . . . .
21
Zasada działania układu AS5040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
Sprzężenie kodera z silnikem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
Widok i opis wyprowadzeń modułu CMPS03 . . . . . . . . . . . . . . . . . . . . . . . . .
24
Widok i opis wyprowadzeń modułu SFR08 . . . . . . . . . . . . . . . . . . . . . . . . . .
25
4.10 Charakterystyka przetwarzania czujnika GP2Y02A02YK
. . . . . . . . . . . . . . . . . .
26
4.11 Wynik aproksymacji charakterystyki czujnika GP2Y02A02YK . . . . . . . . . . . . . . .
27
4.12 Widok dalmierza GP2Y02A02YK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
4.13 Bezprzewodowa kamera WS-212AS wraz z odbiornikiem . . . . . . . . . . . . . . . . . . .
28
4.14 Obrotowy korpus kamery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
4.15 Moduł CC1000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
4.16 Schemat modułu CC1000 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
4.18 Format ramki przesyłanych danych
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
35
Sposób wyliczenia kątów skętu kół . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
Format instrukcji sterującej procesorem pomocniczym . . . . . . . . . . . . . . . . . . . .
39
Sygnał sterujący serwomechanizmem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
39
Odpowiedź silnika na skok jednostkowy . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
Symulacja obiektu silnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
44
Pomiar odległości do obiektu - seria 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
Pomiar odległości do obiektu - seria 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
Robot podczas obrotu w miejscu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
Robot podczas pokonywania przeszkody . . . . . . . . . . . . . . . . . . . . . . . . . . . .
48
Widok z kamery zarejestrowany podczas pracy nocą . . . . . . . . . . . . . . . . . . . . .
49
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
54
Schemat płytki procesora ATmega128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
55
Schemat sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
56
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Widok płytki procesora ATmega128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Widok płytki radiomodemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
57
Widok ścieżek płytki sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
Widok ścieżek płytki procesora
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
Widok ścieżek płytki radiomodemu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
Spis tablic
Parametry silników RH158-12-200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
Sterowanie silnikiem za pomocą mostka L298N . . . . . . . . . . . . . . . . . . . . . . . .
22
Zawartość rejestrów kompasu CMPS03
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
Zawartość rejestrów sonaru SFR08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
25
Niektóre komendy konfiguracyjne sonaru SFR08 . . . . . . . . . . . . . . . . . . . . . . .
26
Parametry kamery i odbiornika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
Wyniki pierwszej serii pomiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
Wyniki drugiej serii pomiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
47
Rozdział 1
Wstęp
Od końca lat sześćdziesiątych ubiegłego wieku kiedy to został stworzony pierwszy, auto-
nomiczny robot mobilny - Shakey, robotyka a w szczególności robotyka mobilna, posunęła
się daleko naprzód. Inteligentne maszyny znajdują coraz więcej zastosowań, podbijają kosmos,
trafiają do fabryk oraz zwykłych domów. Używane są w systemach dozoru, do penetracji i iden-
tyfikacji nieznanego terenu. Powstają, bo mają pomagać i zastępować człowieka w rzeczach nie-
bezpiecznych, nudnych oraz precyzyjnych, gdyż potrafią pracować cały czas z tą samą jakością,
niezależną od pory dnia czy istniejącego zagrożenia.
Z wielu typów robotów mobilnych dużą, popularną grupę stanowią roboty zdalnie ste-
rowane, które oczywiście posiadając pewną autonomię, wiele zadań wykonują samodzielnie.
Rola człowieka sprowadza się jedynie do czuwania nad prawidłowym przebiegiem całej operacji
oraz podejmowania krytycznych decyzji. Mając do dyspozycji robota wyposażonego w odpo-
wiedni do otoczenia system lokomocyjny, czujniki oraz odpowiednią kamerę, człowiek może na
odległość badać, obserwować środowiska gdzie jego fizyczna obecność jest niemożliwa, niebez-
pieczna, zagrożona. Słynny przykład takiego zastosowania robotów mobilnych stanowią misje
robotów marsjańskich, dzięki którym zebrano tak wiele informacji o miejscach gdzie jeszcze nie
stanęła ludzka stopa.
1.1. Cel i zakres pracy
Podstawowym celem pracy była budowa mobilnego robota wyposażonego w kamerę umoż-
liwiającą obserwację otoczenia w jakim robot miałby się poruszać. Informacje o środowisku
zebrane przy pomocy kamery oraz innych sensorów powinny być przesyłane drogą radiową
do sterownika zewnętrznego lub komputera PC. Robot powinien mieć własne źródło zasilania
pozwalające mu pracować nieprzerwanie przez czas nie krótszy niż dwie godziny. System loko-
mocyjny robota ma umożliwiać mu także poruszanie się po niewielkich nierównościach podłoża.
1.2. Realizacja
Realizacja powyższych założeń musiała zostać poprzedzona analizą i wyborem odpowied-
niego systemu lokomocyjnego. To właśnie typ podwozia definiował kierunek kolejnych prac
8
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
konstrukcyjnych. Układ jezdny robota zbudowano w oparciu o podwozie sześciokołowe, któ-
rego cztery zewnętrzne koła są skrętne, a dwa środkowe to koła napędowe. Realizacja właśnie
tych założeń, ze względu na pewien stopień skomplikowania, pochłonęła znaczną część czasu.
Dopiero po zbudowaniu wózka rozpoczęto dalsze prace nad:
•
mechanizmem sterowania kamerą umożliwiającym poruszanie nią w pionie i poziomie;
•
budową pary radiomodemów zapewniających bezprzewodową komunikację z robotem oraz
dwustronne przesyłanie danych;
•
budową sterownika pokładowego i zewnętrznego sterownika pomocniczego;
•
budową zasilacza impulsowego współpracującego z pokładowym akumulatorem żelowym
w jaki wyposażono robota oraz opracowaniem odpowiedniego układu jego ładowarki;
•
opracowaniem odpowiednich procedur sterowania wynikających z konstrukcji robota;
•
przeprowadzeniu badań, testów i eksperymentów wstępnych;
•
napisaniem odpowiedniego oprogramowania zajmującego się sterowaniem robota, obsługą
czujników i komunikacją ze sterownikiem zewnętrznym;
•
przeprowadzeniem testów i eksperymentów końcowych;
•
opracowaniem kilku algorytmów autonomicznego poruszania się robota.
Niniejsze opracowanie opisuje budowę małego robota mobilnego, posiadającego cechy ro-
bota inspekcyjnego, którego konstrukcję w znacznym stopniu wzorowano na robotach zna-
nych nam z eksploracji Marsa. Opis konstrukcji mechanicznej robota zawarto w Rozdziale 3.
Szczególną uwagę zwrócono tu na własnośći układu jezdnego oraz pewne wynikające ograni-
czenia. Rozdział 4 poświęcono opisowi części elektronicznej. Zawarto w nim opisy sterownika
robota, układu napędowego, oraz czujników w jakie został wyposażony. Wskazano tu również
na przesłanki jakie kierowały doborem poszczególnych podzespołów. Oba rozdziały uzupeł-
nione zostały zdjęciami oraz poglądowymi rysunkami. Oprogramowanie robota zostało opisane
w Rozdziale 5. Po wstępie naświetlającym strukture oprogramowania przedstawiono sposób
w jaki realizowane są poszczególne funkcje robota, jego komunikacja z zewnętrznym sterow-
nikiem oraz sposób obsługi czujników. Niektóre opisy uzupełniono fragmentami rzeczywistego
kodu źródłowego napisanego w jezyku C. W Rozdziale 6 opisano sposób realizacji, przebieg
oraz wyniki doświadczeń i eksperymentów przeprowadzonych przy wykorzystaniu gotowej kon-
strukcji robota. Dodatek A zawiera schematy ideowe, widoki zaprojektowanych płytek oraz
schematy montażowe.
Rozdział 2
Wprowadzenie
Pierwowzorem układu jezdnego konstruowanego robota było podwozie opracowane przez
inżyniera mechanika Don’a Bicklera [1] w Jet Propulsion Laboratory (JPL) mieszczącego się
w California Institute of Technology. Podwozie to, zwane Rocker-Bogi (Rys. A.9), opaten-
towane przez JPL w 1989 r. [2] wykorzystywane było przez NASA w budowie wielu robotów,
w tym we wszystkich robotach marsjańskich.
Rys. 2.1. Model podwozia Rocker-Bogi
Dzięki specyficznej konstrukcji takie sześciokołowe zawieszenie umożliwiać miało poruszanie
się robota nawet po bardzo nierównej, kamienistej powierzchni. Z oczywistych względów, zanim
pierwszy robot wyposażony w takie podwozie mógł zostać wysłany w przestrzeń kosmiczną, mu-
siało ono zostać poddane szeregowi testów i eksperymentów, zwłaszcza w trudnych warunkach
przypominających kamienistą powierzchnię Marsa. W laboratoriach NASA powstało szereg
robotów o takim podwoziu lub jego różnych modyfikacjach, które następnie musiały sprostać
trudnym, pustynnym warunkom.
10
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Na Rys. 2.2 przedstawiono robota FIDO - jednego z pierwszych robotów z takim układem
lokomocji, odbywającego testy na pustyni Nevada.
Rys. 2.2. Sześciokołowy robot Fido
Takie sześciokołowe zawieszenie wymaga specjalnego sterowania. Specyficzny dla takiego pod-
wozia sposób ustawienia zewnętrznych kół sterujących podczas obrotu robota w miejscu przed-
stawia Rys. 2.3.
Rys. 2.3. Robot SIMROV2 podczas obrotu w miejscu
Rozdział 2. Wprowadzenie
11
W niniejszej pracy przedstawiono opis konstrukcji robota mobilnego o układzie lokomocyjnym
wzorowanym na podwoziu Rocker-Bogi. Z oczywistych względów wynikających z ograniczeń
w dostępie do profesjonalnych, często bardzo drogich, materiałów tudzież narzędzi, zbudowana
konstrukcja układu jezdnego robota odbiega parametrami od swych pierwowzorów zbudowa-
nych w laboratoriach NASA. Niemniej jednak, mając na uwadze założenia co do środowiska
pracy konstruowanego robota, stanowi ona zwartą, solidną konstrukcję z łatwością spełniającą
stawiane jej oczekiwania. W niniejszym dokumencie pominięto dokładną analizę mechaniczno
- kinematyczną takiego typu zawieszenia z racji mnogości tego typu opracowań chociażby w [1]
i [3], skupiono sie natomiast na przedstawieniu jej możliwości, zalet, a także pewnych trud-
ności wynikających ze sposobu sterowania. Praca przedstawia przebieg i sposób powstawania
konstrukcji mechanicznej i elektronicznej robota, opisuje jego możliwości oraz sposób w jaki
został oprogramowany. Dokument ten podsumowuje pewien zamknięty etap prac wykonanych
nad robotem, którego możliwości ciągle są i będą poszerzane, poprzez rozwój oprogramowania,
udoskonalanie konstrukcji czy wyposażenie w kolejne czujniki.
Poniższy Rys. 2.4 przedstawia zdjęcie budowanego robota wykonane podczas końcowej fazy
konstrukcji.
Rys. 2.4. Widok robota w fazie konstrukcji
Rozdział 3
Konstrukcja mechaniczna
Widok ogólny konstrukcji robota przedstawiono na Rys. 3.1. W celu uzyskania wytrzymałej kon-
strukcji o możliwie małym ciężarze, większość z jej komponentów składowych została wykonana
z aluminium. We wszystkich miejscach konstrukcji związanych z ruchem obrotowym zostały
zastosowane łożyska toczne. Większość mocowań łożysk wykonano z aluminium. W miejscach
narażonych na większe obciążenia stosowano mocowania wytoczone z mosiądzu.
Układ jezdny bazuje na sześciu kołach zaopatrzonych w gumowe opony, które zwiększają ich
Rys. 3.1. Widok ogólny konstrukcji robota
przyczepność do podłoża. W konstrukcji wykorzystano koła zakupione w sklepie ze sprzętem
AGD jako części zamienne do odkurzaczy. W cztery zewnętrzne koła, po odpowiednim rozwier-
ceniu, wtłoczono po dwa łożyska toczne. Dwa pozostałe, zfrezowano w ich środkowej części do
płaskiej powierzchni, do której przykręcono tuleje w których osadzono wały silników napędo-
wych. Kamerę za pomocą dwóch łożysk osadzono w aluminiowym korpusie, który umożliwia jej
obrót w pionie, cały korpus może obracać się w poziomie dzięki łożysku osadzonemu na górnej,
poziomej płycie pleksi. Płyta ta zamocowana jest na podwoziu za pomocą czterech wsporników
dystansowych. Na kolejnych rysunkach: Rys. 3.2, Rys. 3.3 i Rys. 3.4, wyszczególnione zostały
części składowe konstrukcji robota.
Rozdział 3. Konstrukcja mechaniczna
13
Rys. 3.2. Widok robota z boku
1. - serwomechanizmy modelarskie;
2. - łożyska z mocowaniami;
3. - akumulator żelowy;
4. - płyta z pleksi;
5. - wachacze z aluminium.
Rys. 3.3. Widok robota z przodu
1. - silniki napędowe;
2. - przekładnie planetarne;
3. - kamera;
4. - moduł sonaru;
5. - łożyska z mocowaniami;
6. - wsporniki dystansowe.
14
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. 3.4. Widok robota z tyłu
1. - łożyska z mocowaniami;
2. - widełki aluminiowe;
3. - wsporniki dystansowe;
4. - obrotowy korpus kamery.
Akumulator oraz płytki sterownika i zasilacza, umieszczono na kwadratowej, aluminiowej pły-
cie zamocowanej poprzez łożyska do trzech charakterystycznych punktów robota. Jak pokazuje
Rys. 3.5, punkty te leżą na planie trójkąta równobocznego. Cała konstrukcja robota, w tym
także górna płyta poprzez cztery wsporniki dystansowe, zawieszona jest na łożyskach umieszczo-
nych właśnie w tych punktach. W środku tak powstałego trójkąta znajduje się środek ciężkości
całej konstrukcji robota.
Rys. 3.5. Budowa zawieszenia konstrukcji
Rozdział 3. Konstrukcja mechaniczna
15
Każde z tych trzech miejsc mocowania konstrukcji leży w połowie odcinka łączącego dwa koła
podwozia. Dzięki temu, wszelkie podniesienia kół powstałe w wyniku pokonywania przeszkód,
przenoszone są połowicznie na konstrukcję robota - Rys. 3.6.
Rys. 3.6. Zachowanie się robota podczas najazdu na przeszkodę
Skręty kołami zewnętrznymi, a także obroty kamerą w pionie i poziomie, realizowane są za po-
mocą serwomechanizmów modelarskich. W uproszczeniu, serwomechanizm składa się z silnika
prądu stałego o dużej sprawności oraz przekładni mechanicznej, której zadaniem jest redukcja
wysokich obrotów silnika oraz zapewnienie dużego momentu obrotowego. W konstrukcji użyto
sześciu standardowych serwomechanizmów typu HS-311 firmy Hitec, o momencie znamiono-
wym 3, 5 kg · cm, których zakres obrotu wynosił nieco ponad 180
◦
. Budowę wewnętrzną takiego
serwomechanizmu przedstawia Rys. 3.7.
Rys. 3.7. Budowa wewnętrzna serwomechanizmu HS-311
16
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Na Rys. 3.8 przedstawiono przekrój poprzeczny połączenia serwomechanizmu z jednym z ze-
wnętrznych kół skrętnych. W ten sam sposób zrealizowane jest sprzężenie serw z pozostałymi
kołami oraz obrotowym korpusem kamery. Widoczna na rysunku pionowa oś obrotowa, została
na końcu odpowiednio zfrezowana i osadzona na wcisk w wyprofilowanym otworze. Wystające
końce osi poziomej po nagwintowaniu zaopatrzone zostały w ozdobne nakrętki. Cały układ
osadzony jest w aluminiowym profilu mocującym do którego przykręcono serwa i który stanowi
punkt mocowania układu do konstrukcji.
Rys. 3.8. Sprzężenie serwomechanizmu z kołem zewnętrznym
1. - serwo z końcówką tarczową;
2. - koło z oponą;
3. - aluminiowe widełki;
4. - łożyska;
5. - tuleje dystansowe;
6. - mocowanie łożyska;
7. - oś obrotowa pionowa;
8. - oś obrotowa pozioma;
9. - aluminiowy profil mocujący.
W celu zachowania jednotorowości kół przednich i tylnych, układy kół przednich przykrę-
cono do konstrukcji krótszym bokiem profilu natomiast tylne dłuższym (Rys. 3.9).
Rozdział 3. Konstrukcja mechaniczna
17
Rys. 3.9. Montaż układów kół skrętnych do konstrukcji
Dodatkową zaletą konstrukcji opartych o podwozie sześciokołowe, oprócz oczywistej możliwości
przewożenia większych ciężarów, jest bardzo dobra stabilizacja toru jazdy robota. Zewnetrzne
koła skrętne ustawione do jazdy na wprost, doskonale stabilizują prostoliniowy tor jazdy robota
nawet przy nieznacznej różnicy w prędkościach kół napędowych umieszczonych pośrodku. Ze-
wnetrzne koła ustawione pod odpowiednim katem (Rys. 3.10), także dobrze stabilizuja obrót
Rys. 3.10. Ustawienie kół podczas obrotu w miejscu
robota w miejscu, nawet podczas ruchu robota po stosunkowo nierównej nawierzchni. Do wad
zaliczyć można jedynie trudniejsze sterowanie robotem oraz pewien stopień skomplikowania
mechaniki konstrukcji.
Rozdział 4
Część elektroniczna
4.1. Sterownik
Konstruowany robot posiada wewnetrzny sterownik nadający robotowi charakter autono-
micznego. Sterownik dokonuje pomiaru wszystkich niezbędnych parametrów ruchu, wylicza
i wymusza odpowiednią prędkość kół napędowych i odpowiedni skręt kół sterujących. Dzięki
temu robot potrafi samodzielnie poruszać się w otoczeniu, a także odpowiednio reagować na
napotkane przeszkody. Sterownik ponadto zapewnia radiową komunikację ze sterownikiem ze-
wnętrznym, umożliwiającym przejęcie kontroli nad robotem przez operatora lub komuter PC.
Główne funkcje sterowników przedstawione zostały w postaci schematu blokowego na Rys. 4.1.
Rys. 4.1. Główne funkcje sterowników
Rozdział 4. Część elektroniczna
19
Poszczególne bloki wchodzące w skład układu elektronicznego sterownika pokładowego
przedstawiono na Rys. 4.2.
Rys. 4.2. Poszczególne bloki sterownika
”Sercem” całego układu elektronicznego jest nowoczesny mikrokontroler ATmega128
zawierający między innymi:
•
dwa 8-bitowe timery/liczniki z osobnymi preskalerami, mogące dodatkowo pracować w try-
bie porównania;
•
dwa 16-bitowe timery/liczniki z osobnymi preskalerami, mogące dodatkowo pracować w try-
bie porównania lub przechwytywania;
•
licznik czasu rzeczywistego współpracyjący z osobnym zewnętrznym oscylatorem;
•
dwa 8-bitowe kanały PWM;
•
sześć kanałów PWM z programowaną rozdzielczością od 2 do 16 bitów;
•
sześć kanałów 10 bitowego przetwornika A/C;
•
podwójny USART;
•
sprzętowy interfejs I
2
C;
•
sprzętowy interfejs SPI;
•
128 kB pamięci typu FLASH;
•
4 kB pamięci typu SRAM;
•
4 kB pamięci EEPROM.
20
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Fizycznie, układ sterownika podzielony jest na trzy osobne płytki:
•
płytkę radiomodemu;
•
płytkę zasilacza impulsowego (przetwornicy);
•
płytkę sterownika właściwego, obejmującą:
◦
mikrokontroler główny ATmega128;
◦
mikrokontroler pomocniczy ATmega8;
◦
sterownik silników L298N;
◦
złącza serwomechanizmów;
◦
złącza czujników;
◦
złącza magistral I
2
C, SPI, RS232;
◦
złącze interfejsu JTAG do programowania uP.
Szczegółowy schemat układu wraz z widokami płytek zamieszczono w Dodatku A.
4.2. Układ napędowy
Do budowy układu napędowego konstruowanego robota wykorzystano dwa silniki typu
RH158-12-200
produkcji Micromotors (Rys. 4.3), których parametry zestawiono w Tabeli 4.1.
Rys. 4.3. Silnik RH158-12-200
Tabela 4.1. Parametry silników RH158-12-200
Napięcie
12 V
Pobór prądu przy max. obciążeniu
580 mA
Pobór prądu bez obciążenia
< 140 mA
Prędkość przy max. obciążeniu
23 rpm
Prędkość bez obciążenia
33 rpm
Przekładnia
198,5:1
Max. moment
100 Ncm
1
Silniki bezpłatnie ofiarowała firma DiscoTECH z Warszawy - www.discotech.waw.pl
Rozdział 4. Część elektroniczna
21
Do bezpośredniego sterowania silnikami użyto podwójnego mostka L298N, umożliwiają-
cego sterowanienie dwoma silnikami za pomocą sygnałów PWM i sygnałów wyboru kierunku.
Jego strukturę wewnętrzną przedstawiono na Rys. 4.4.
Rys. 4.4. Struktura wewnętrzna mostka L298N
Wejścia sterujące EnA i EnB układu L298N zostały dołączone do wyjść PWM mikro-
kontrolera, na których generowany jest sygnał o stałej częstotliwości. Programowa zmiana jego
współczynnika wypełnienia decyduje o prędkości obrotowej silników. Poniższy Rys. 4.5, przed-
stawia rzeczywistą zależność wpływu sygnału PWM na prędkość silników podczas poruszania
się robota. Prędkość zmierzona na podstawie impulsów z koderów przeliczona została na pręd-
kość obrotową kół napędowych, oraz wynikającą z niej prędkość postępową robota.
Rys. 4.5. Zależność prędkości silnika od sterującego sygnału PWM
22
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
O kierunkach obrotów silników decydują stany podawane na wejścia In1, In2 oraz In3, In4.
W Tabeli 4.2 przedstawiono sekwencję sygnałów sterujących silnikiem dołączonym do wyjść
Out1 i Out2 drivera L298N. Podobnie zrealizowane jest sterowanie drugim z silników dołą-
czonym do wyjść Out3 i Out4.
Tabela 4.2. Sterowanie silnikiem za pomocą mostka L298N
4.3. Kodery
Ponieważ użyte w układzie napędowym silniki nie posiadały wbudowanych koderów, ko-
niecznym stało się wyposażenie powyższych silników w odpowiednie układy pełniące taką rolę.
Do tego celu użyte zostały 10 bitowe, magnetyczne kodery AS5040 produkowane przez Au-
striamicrosystems. Charakteryzują się one m.in. :
•
dwoma rodzajami informacji wyjściowej:
◦
interfejs szeregowy;
◦
wyjście typu PWM.
•
trzema programowanymi rodzajami sygnałów wyjściowych:
◦
- kwadraturowe A i B;
◦
- impulsy + kierunek obrotu;
◦
- 3 fazowe (np.dla silników bezszczotkowych).
•
programowalną przez użytkownika rozdzielczością 7, 8, 9 lub 10 bitów;
•
maksmalną prędkością pracy do 10 000 rpm.
Rys. 4.6. Zasada działania układu AS5040
Szczegółowy opis można znaleźć w nocie aplikacyjnej [4]. Użytkownik drogą programowa-
nia może skonfigurować rozdzielczość oraz odpowiedni typ sygnałów wyjściowych. Domyślnie,
Rozdział 4. Część elektroniczna
23
układy te ustawione mają 10 bitową rozdzielczość i tryb generacji sygnałów kwadraturowych.
Oznacza to, że na pełen obrót współpracującego z nimi magnesu (Rys. 4.6), układ generuje
dwa przesunięte w fazie sygnały po 256 impulsów. Właśnie tak skonfigurowane układy zostały
zaadaptowane do pracy z silnikami napędowymi robota. Sposób montażu ilustruje Rys. 4.7.
Rys. 4.7. Sprzężenie kodera z silnikem
1. magnes;
2. tuleja mocująca;
3. uklad AS5040;
4. płytka drukowana;
5. obejma mocująca.
24
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
4.4. Czujniki
4.4.1. Moduł kompasu
Użyty w projekcie moduł kompasu CMPS03 (Rys. 4.8) jest układem zaprojektowanym
specjalnie do zastosowań w robotyce, głównie do celów nawigacji. Zbudowany został w oparciu
o magnetyczne sensory Philipsa KMZ51 i mikroprocesor PIC 16F872 o bardzo niskim poborze
prądu. Układ zasilany jest napięciem 5V i nominalnie pobiera 15mA prądu.
Rys. 4.8. Widok i opis wyprowadzeń modułu CMPS03
Informacje o aktualnym kącie obrotu możemy uzyskać na dwa sposoby :
•
poprzez wyjście PWM (Pin 4) na którym dostępny jest sygnał o współczynniku wypełnienia
proporcjonalnym do kąta obrotu: od 1ms dla 0
◦
do 36,99ms dla 359.9
◦
•
poprzez odczyt odpowiednich rejestrów mikroprocesora PIC za pomocą magistrali I
2
C
w których dostępne są już gotowe, wstępnie przetworzone informacje
Opis zawartości dostępnych rejestrów wraz z ich adresami zestawiono w Tabeli 4.3:
Tabela 4.3. Zawartość rejestrów kompasu CMPS03
Adres
Funkcja
0
Numer wersji oprogramowania
1
Zgrubna, bajtowa informacja od 0 dla 0
◦
do 255 dla 359.9
◦
2, 3
Informacja dokładna w postaci słowa 2 bajtowego
od 0 dla 0
◦
do 3599 dla 359.9
◦
4, 5
Test Wewnętrzny - Sensor1
6, 7
Test Wewnętrzny - Sensor2
8, 9
Test Wewnętrzny - kalibracja wartości sensora 1
10, 11
Test Wewnętrzny - kalibracja wartości sensora 2
15
Kalibracja
W celu prawidłowego funkcjonowania moduł kompasu wymaga zamontowania go w pozycji
poziomej. W konstrukcji robota moduł ten został zamontowany pod górną płytą z pleksi.
Główny sterownik robota komunikuje się z kompasem za pomocą magistrali I
2
C, z poziomu
której układ ten dostępny jest pod fabrycznie przypisanym adresem C0h.
Rozdział 4. Część elektroniczna
25
4.4.2. Moduł sonaru
Jednym z głównych czujników w jakie został wyposażony robot jest moduł sonaru SFR08,
którego widok przedstawiono na Rys. 4.9. Układ ten zbudowano w oparciu o mikroprocesor
PIC 16F872 gwarantujący niski pobór prądu, (typowo od 12mA w trybie skanowania do 3mA
w trybie oczekiwania). Komunikacja z modułem odbywa się za pomocą magistrali I
2
C i w obsłu-
dze przypomina komunikację z szeregową pamięcią typu 24xx. Sonar, dostępny jest z poziomu
magistrali pod adresem E0h, lecz adres ten w razie potrzeby można zmienić zmieniając wartość
w odpowiednich rejestrach.
Rys. 4.9. Widok i opis wyprowadzeń modułu SFR08
Dzięki wyposażeniu sonaru w fotorezystor, oprócz informacji o odległości do najbliższej
przeszkody, możemy odczytać z modułu informację o natężeniu światła padającego na układ.
Opis zawartości rejestrów sonaru wraz z ich adresami zestawiono w Tabeli 4.4.
Wszystkie 36 rejestrów układu mogą być z powodzeniem odczytywane, jednak tylko pierwsze
trzy nadają się również do zapisu. Odczytując zawartość rejestru o adresie 1, uzyskujemy in-
formację o natężeniu światła padającego na sonar.
Tabela 4.4. Zawartość rejestrów sonaru SFR08
Adres
Odczyt
Zapis
0
Wersja oprogramowania
Konfiguracja
1
Foto Sensor
Rejestr wzmocnienia
2
1 echo MSB
Rejestr zasięgu
3
1 echo LSB
—
..
.
..
.
..
.
34
17 echo MSB
—
35
17 echo LSB
—
Informacja ta odświeżana jest przy każdym pomiarze odległości i zmienia się od 2-3 dla całko-
witej ciemności do 248 dla bardzo silnego światła padającego na moduł. Wpisując informację
do tego rejestru zmieniamy dopuszczalne wzmocnienie analogowe układu. Odczytując kolejne
dwa rejestry (2 i 3), uzyskamy 2-bajtowy wynik ostatniego pomiaru odległości, w rejestrze 2
znajduje sie starszy bajt (MSB) informacji, a w rejestrze 2 młodszy (LSB). W zależności od
konfiguracji, powyższy wynik pomiaru może zawierać informację w calach, centymetrach lub
26
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
mikrosekundach. Wpisując informację do rejestru 2 wpływamy na dopuszczalny zasięg dokony-
wanych pomiarów. Odczyt rejestru 0 niesie ze sobą informację o wersji oprogramowania modułu.
W czasie wykonywania pomiaru, sonar ustawia magistralę w stan wysoki. Próba odczytu w tym
czasie wersji oprogramowania (rejestru 0) kończy się zwrotem wartości 255 (FFh). Udana próba
odczytu rejestru 0, świadczy o zakończeniu przez moduł przetwarzania informacji i uaktual-
nieniu rejestrów zawierających dane o odległości. Rozpoczęcie pomiaru następuje wraz z chwilą
zapisu do rejestru konfiguracyjnego (rejestr 0) odpowiedniej komendy. Pełny spis dostępnych
komend i szczegółowy opis modułu znaleźć można w nocie katalogowej [5].
Kilka najczęściej używanych zestawiono w Tabeli 4.5.
Tabela 4.5. Niektóre komendy konfiguracyjne sonaru SFR08
KOMENDA [hex]
AKCJA
0x50
Pomiar - wynik zwracany w calach
0x51
Pomiar - wynik zwracany w centymetrach
0x52
Pomiar - wynik zwracany w mikrosekundach
0xA0
1 sekwencja dla zmiany adresu I
2
C
0xA5
3 sekwencja dla zmiany adresu I
2
C
0xAA
2 sekwencja dla zmiany adresu I
2
C
4.4.3. Dalmierz optyczny
Kolejnym z czujników w jakie został wyposażony robot jest odbiciowy sensor GP2Y02A02YK
produkcji SHARP’a. Umożliwia on pomiar odległości w zakresie od 20 do 150cm. Obsługa
czujnika sprowadza się do pomiaru napięcia wystawianego przez sensor, którego zależność od
odległości przedstawia charakterystyka na Rys. 4.10.
Rys. 4.10. Charakterystyka przetwarzania czujnika GP2Y02A02YK
Rozdział 4. Część elektroniczna
27
Rys. 4.11. Wynik aproksymacji charakterystyki czujnika GP2Y02A02YK
Ponieważ powyższa charakterystyka nie jest liniowa, do wyliczenia odległości przeszkody odbi-
jającej światło posłużono się jej aproksymacją (Rys. 4.11) wielomianem
piątego stopnia (4.1).
Y [mm] = −11.395x
5
+ 105.11x
4
− 385.15x
3
+ 710.25x
2
− 690.56x + 333.08
(4.1)
gdzie x – napięcie wystawiane przez czujnik
Napięcie na czujniku mierzone jest za pomocą wewnętrznego przetwornika A/C mikroprocesora
sterującego, który przy pomocy procedury zawierającej powyższy wielomian wylicza dystans
do przeszkody. Czujnik, jak to pokazuje Rys. 4.12, został umieszczony na obrotowym korpusie
sprzężonym mechanicznie z kamerą.
Rys. 4.12. Widok dalmierza GP2Y02A02YK
2
Postać wielomianu opracowana została przez jednego z użytkowników forum dyskusyjnego portalu
www.avrfreaks.net
28
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Takie rozmieszczenie obu widocznych na zdjęciu sensorów, daje dodatkową możliwość pomiaru
odległości do obiektów obserwowanych za pośrednictwem kamery. Wzbogaca to możliwości
konstruowanego robota w cechy robota inspekcyjnego. Ponadto, przy najczęstszym, poziomym
ustawieniu kamery istnieje możliwość wzajemnej weryfikacji danych otrzymanych z obu czuj-
ników, co jak wykazały badania i eksperymenty szerzej opisane w Rozdziale 6, ma swoje uza-
sadnienie. W zależności od rodzaju przeszkody (materiału z jakiego jest zbudowana, koloru
powierzchni, itp.), dane pomiarowe każdego z tych czujników mogą być obarczone różnym błę-
dem. Pomiary dokonane przez dwa różne czujniki, plus dodatkowa informacja w postaci obrazu
z kamery, pozwala operatorowi w sposób wiarygodny i dokładny ocenić dystans dzielący robota
od obiektu.
4.5. Kamera
W konstrukcji robota użyta została bezprzewodowa, kolorowa kamera typu WS-212AS
firmy JMK. Kamera posiada wbudowany nadajnik o mocy 50 mW. Obraz za pomocą odpo-
wiedniego odbiornika można oglądać na ekranie telewizora, komputera wyposażonego w kartę
TV lub innego urządzenia posiadającego wejście Video. Na Rys. 4.14 przedstawiono widok
całego zestawu.
Rys. 4.13. Bezprzewodowa kamera WS-212AS wraz z odbiornikiem
Kamera wyposażona jest w zestaw dwunastu podświetlających diod IRED, umożliwiających
pracę kamery w całkowitej ciemności. Podświetlanie włączane jest automatycznie przy spadku
zewnętrznego oświetlenia poniżej określonej wartości. Dokładne parametry powyższego zestawu
zestawiono w poniższej Tabeli 4.6.
3
Kamerę wraz z odbiornikiem nabyto dzięki uprzejmości firmy Multitech http://multitech.pl, która to
udzieliła na ten zestaw bardzo dużego rabatu.
Rozdział 4. Część elektroniczna
29
Tabela 4.6. Parametry kamery i odbiornika
System
PAL
Rozdzielczość
380 linii TV
Czułość
0,1 LUX (F 2.0)
Automatyczna migawka
1/60 sec - 1/6000 sec
Częstotliwość pracy
900 - 1200 MHz
Moc wyj. nadajnika
50 mW
Zasięg
do 100m w otwartej przestrzeni
Zasilanie
DC 9 - 12V (do 500 mA)
Kamera, jak to ukazuje Rys. 4.14, została zamocowana za pomocą łożysk tocznych w ob-
rotowym korpusie i sprzężona mechanicznie z serwomechanizmem umożliwiającym obracanie
kamerą w kierunku pionowym. Cały korpus osadzony na łożysku zamocowanym do górnej płyty
robota, może być obracany w kierunku poziomym za pomocą kolejnego serwomechanizmu.
Rys. 4.14. Obrotowy korpus kamery
Powyższy mechanizm, ze względu na zastosowanie serwomechanizmów, pozwala na obraca-
nie kamerą w prawo, w lewo i do góry o kąt maksymalnie 90
◦
. Obrót kamery w dół ograniczony
jest do ok. - 60
◦
ze względu na śrubę mocującą korpus do łożyska. Niemniej jednak spoglądanie
kamerą bezpośrednio pod siebie nie wydaje się mieć konkretnego zastosowania.
30
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
4.6. Moduł transceivera
4.6.1. Opis ogólny układu
Układ transceivera CC1000 jest jednoukładowym nadajnikiem/odbiornikiem danych cy-
frowych pracującym w zakresie częstotliwości 300-1000 MHz. Biorąc pod uwagę możliwości
tego układu w stosunku do jego ceny, stanowi on idealne rozwiązanie problemu dwukierunko-
wej transmisji danych na niewielkie odległości. Do budowy toru radiowego współpracującego
z robotem wykorzystano dwa gotowe moduły
(Rys. 4.15) zawierające układ CC1000 wraz
z kilkoma niezbędnymi elementami, przystosowującymi go do pracy w paśmie 433 MHz.
Rys. 4.15. Moduł CC1000
Schemat ideowy przedstawiono na Rys. 4.16. Podłączony układ CC1000 należy zaprogramować
ponieważ wszystkie parametry przechowywane są w wewnętrznej pamięci RAM i po włączeniu
zasilania przyjmują wartości domyślne.
Rys. 4.16. Schemat modułu CC1000
4
Moduły zakupiono dzięki uprzejmości firmy Propox www.propox.com, która udzieliła na nie bardzo
dużego rabatu
Rozdział 4. Część elektroniczna
31
Programowanie odbywa się poprzez trzy linie oznaczone na schemacie jako:
•
PCLK – sygnał zegarowy (wejście);
•
PDATA – sygnał danych (wejście/wyjście);
•
PALE – sygnał wybóru dane/adres (wejście).
Wykresy czasowe są dokładnie przedstawione w nocie aplikacyjnej [6]. Dostęp do okre-
ślonego rejestru uzyskuje się wysyłając do układu najpierw adres rejestru przy linii PALE
ustawionej w stan niski po czym należy zmienić jej stan na wysoki i zapisać lub odczytać
dany rejestr. Adres rejestru jest 7-bitowy. Najmłodszy bit odpowiada za kierunek przesyłu
danych (podobnie jak dla magistrali I
2
C). Stan wysoki oznacza zapis, niski odczyt z układu.
Przed wysłaniem bajt adresu trzeba przesunąć o jedną pozycję w lewo, wsuwając na pozycję
b0 bit określąjący kierunek przesłania danych. Z internetowej strony producenta można pobrać
darmowy program SmartRF Studio, który generuje pełny zestaw nastaw, którymi należy
zaprogramować rejestry układu by uzyskać odpowiednie parametry transmisji łącza.
Układ posiada zaawansowany system zarządzania energią. Poszczególne bloki funkcjonalne
można załączyć lub wyłączyć przestawiając bity w rejestrze MAIN (adres 00h). Aby można było
zaprogramować rejestry musi być włączony przynajmniej oscylator (bit CORE PD ustawiony
na L). Przed rozpoczęciem programowania należy wykonać reset układu. Aby to zrobić należy
włączyć oscylator (bit CORE PD ustawiony na L), a następnie kolejno wyzerować i ustawić
bit RESET N (w rejestrze MAIN). Reset powoduje wpis wartości domyślnych do wszystkich
rejestrów. Dlatego też po jego wykonaniu trzeba programować wszystkie rejestry.
W karcie katalogowej układu [6] przedstawione są procedury czasowe, których zachowanie
jest konieczne dla poprawnego uruchomienia poszczególnych bloków oraz sposobu przełączania
nadawanie/odbiór. Jeśli nie ma konieczności każdorazowego przełączania układu w tryb ob-
niżonego poboru mocy można przełączać bezpośrednio z nadawania na odbiór i odwrotnie co
upraszcza procedury sterowania transceiverem. Przełączenie wymaga zmiany wpisów w nastę-
pujących rejestrach:
•
Nadawanie:
PA POW (adres 0Bh) = 00h
MAIN (adres 00h) = 0E1h
CURRENT (adres 09h) = 81h
Odczekać 200uS
PA POW (adres0Bh) = 0F F h
•
Odbiór:
MAIN = 11h
CURRENT = 44h
Odczekać 200uS
Ze względu na zastosowany sposób modulacji sygnału (FSK) częstotliwości nadawania
i odbioru są różne (wpisy do rejestrów FREQ xA oraz FREQ xB). Różnica wynika z zadanej
częstotliwości separacji (odstęp między częstotliwością reprezentującą jedynkę logiczną i zero).
Dokładne wzory podaje nota katalogowa. Odstęp między częstotliwościami nadawania i odbioru
jest równy połowie częstotliwości separacji. Trzeba jednak pamiętać, że częstotliwość pracy za-
leży także od ustawionego współczynnika podziału, który wpisuje się do rejestru PLL (adres
32
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
0Ch, bity REFDIV). Jeśli program przyjmie różne współczynniki dla nadawania i odbioru
(bardzo często), podczas przełączania nadawanie/odbiór należy także każdorazowo zmieniać
wpis do rejestru PLL. I tu ważna uwaga wynikająca z erraty [7] : podczas zmiany częstotliwości
pracy w niektórych sytuacjach może nastąpić zatrzaśnięcie się generatora, który pomimo wpisu
nowej wartości dalej będzie generował dotychczasową. Wtedy konieczny jest reset syntezera czę-
stotliwości (wyzerowanie i ustawienie bitu FS RESET N w rejestrze FSCTRL). Najlepiej więc
przyjąć taką częstotliwość kanału, aby przejście między nadawaniem i odbiorem następowało
przy takim samym współczynniku podziału REFDIV. Można także skorzystać z gotowych
zestawów parametrów proponowanych przez producenta.
Wartym podkreślenia jest, że po włączeniu zasilania i zaprogramowaniu rejestrów powinno
się przeprowadzić kalibrację, czyli wewnętrzną procedurę dobrania optymalnych parametrów
pracy bloków wewnętrznych transceivera. Kalibrację należy także przeprowadzić każdorazowo
gdy nastąpi zmiana napięcie zasilania o więcej niż 0,3 V lub zmiana temperatury otoczenia
o ponad 40
◦
C.
Oprócz linii programujących (PALE, PCLK, PDATA) moduł posiada dwie linie służące wy-
łącznie do transmisji docelowych danych: DCLK (wyjście), DIO (wejście/wyjście). Zasadnicza
różnica w obsłudze polega na tym, że sygnał zegarowy na linii DCLK generowany jest przez
układ transcivera. Dane odbierane na linii DIO są ważne podczas narastającego zbocza sy-
gnału DCLK, natomiast w przypadku nadawania, dana wyjściowa musi być wystawiona przez
procesor przed narastającym zboczem sygnału DCLK.
4.6.2. Rozwiązanie układowe
Układ CC1000 został zaprojektowany do pracy z napięciem zasilania 2.1 – 3.6 V. Układy
wejściowe linii interfejsu nie mogą pracować z napięciem wyższym niż napięcie zasilania. W ukła-
dzie radiomodemu, którego schemat przedstawiono na Rys. 4.17, zastosowano bardzo prosty
ogranicznik napięć złożony z diod zenera 3V. Do bezpośredniej obsługi i komunikacji z modu-
łem użyto procesora AT 89C2051. Procesor ten dba o prawidłowe zaprogramowanie rejestrów
układu CC1000 po włączeniu zasilania, oraz pełni ważną rolę bufora danych, które mogą być:
•
odbierane droga radiową poprzez dołączony moduł a następnie retransmitowane do układu
nadrzędnego interfejsem RS232;
•
odbierane z układu nadrzędnego poprzez UART procesora i retransmitowane poprzez moduł
CC1000 torem radiowym.
Sygnał DCLK jest zanegowany przy pomocy tranzystora T1 i przyłączony na jedno z wejść
przerwań (INT1), dzięki czemu program obsługi znacznie się upraszcza. Zanegowanie linii DIO
wynika z faktu iż AT89C2051 nie posiada możliwości zgłoszenia przerwania zboczem narasta-
jącym sygnału INT a jedynie poziomem lub zboczem opadającym. Trzy wolne piny procesora
wykorzystano na realizację prostego przetwornika A/C umożliwiającego pomiar poziomu od-
bieranego sygnału. Okazało sie to wręcz nieocenione przy różnych eksperymentach, a bardzo
trudne do obserwacji w przypadku częstego przełączania nadawanie/odbiór. Realizacja mier-
nika jest możliwa dzięki wyprowadzeniu RSSI na którym, podczas odbioru, pojawia się napięcie
proporcjonalne do sygnału z anteny nadawczej (a właściwie odwrotnie proporcjonalne). Jak
wynika z [6], sygnałowi -105 dBm odpowiada 1.1V, a –50 dBm napięcie 0.1V. Idea pomiaru
poziomu sygnału polega na pomiarze czasu ładowania kondensatora dołączonego do jednego
z wejść komparatora analogowego. Drugie wejście komparatora podłączone jest właśnie do
wyprowadzenia RSSI układu CC1000. W chwili wykrycia przez procesor początku odbieranej
Rozdział 4. Część elektroniczna
33
Rys. 4.17. Schemat radiomodemu
informacji następuje otwarcie tranzystora T1 i ładowanie kondensatora C6 poprzez rezystor
R1. Przez czas potrzebny do wyrównania napięć na wejściach komparatora są zliczane impulsy
zegarowe DCLK. Przy dalszym wzroście napięcia następuje zmiana stanu komparatora, a liczba
zliczonych impulsów to właśnie poziom sygnału z anteny. W przypadku powyższego układu za-
kres zmian wynosił od 1 dla odległości mniejszej niż kilka metrów do 44 dla granicy zasięgu.
Prostota układu okupiona jest następującymi wadami:
•
układ nie działa dla trybu transmisji danych typu Transparent Asynchronus UART z prostej
przyczyny: moduł nie generuje w tym trybie impulsów na wyjściu DCLK;
•
dla różnych szybkości transmisji danych zmieniają się wskazania: ponieważ w tym samym
czasie występuje więcej impulsów zegarowych.
Czułość odbiornika (Sensitivity RX) przyjmuje największą wartość (-110dBm) dla stałej
szybkości transmisji danych 2400 i kodowania Manchester. A przy tak zrealizowanej transmisji
powyższe ograniczenia nie występują. Ograniczając moc nadawania do 10 dBm
, zasięg można
poprawić jedynie przez zastosowanie kierunkowych anten o większym zysku w stosunku do
anteny prętowej. Ważna jest oczywiście polaryzacja sygnału, która powinna być taka sama
dla nadajnika i odbiornika (obydwie anteny ustawione pionowo lub poziomo). Sprawdzony
5
Jest to maksymalna moc z jaką mogą w tym paśmie pracować nielicencjonowane urządzenia nadawcze.
34
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
doświadczalnie podczas eksperymentów zasięg łączności wynosił około 600m dla poniższych
parametrów transmisji:
•
częstotliwość: - 433.134 MHz;
•
moc wyjściowa: - 10 dBm;
•
antena prętowa: - 16,4 cm;
•
wolna przestrzeń pomiędzy antenami;
•
kodowanie: - Manchester;
•
szybkość transmisji: 2400;
•
separacja: - 64 kHz.
Wartości nastaw wygenerowanych przez program SmartRF Studio, które wpisane zostały do
rejestrów układów CC1000, wyglądały następująco:
FREQ_2A
(adr 01h) - 49H
FREQ_1A
(adr 02h) - 60H
FREQ_0A
(adr 03h) - 00H
FREQ_2B
(adr 04h) - 49H
FREQ_1B
(adr 05h) - 58H
FREQ_0B
(adr 06h) - 19H
FSEP1
(adr 07h) - 02H
FSEP0
(adr 08h) - C7H
CURRENT
(adr 09h) - nadawanie 81H, odbiór 44H
FRONT_END (adr 0Ah) - 12H
PA_POW
(adr 0BH) - 0FFH
PLL
(adr 0CH) - 50H
LOCK
(adr 0DH) - 80H
CAL
(adr 0EH) - 26H
MODEM2
(adr 0FH) - 8EH
MODEM1
(adr 10H) - 6FH
MODEM0
(adr 11H) - 27H
MATCH
(adr 12H) - 70H
FSCTR
(adr 13H) - 01H
PRESCALER (adr 1CH) - 00H
TEST4
(adr 42H) - 25H
Rozdział 4. Część elektroniczna
35
4.6.3. Format transmisji radiowej
Dla zapewnienia prawidłowego przesyłania informacji, przesyłane dane obudowano w ramkę
zawierającą blok startowy (preambułę) niezbędną na ustalenie parametrów wzmacniacza wej-
ściowego odbiornika oraz mechanizm kontroli błędów CRC. Dokładny format ramki opraco-
wano w oparciu o artykuł [8]. Tak utworzona ramka danych, schematycznie przedstawiona na
Rys. 4.18, zawiera:
•
16 bajtów preambuły AAh (jej długość zależy od wybranego sposobu kodowania);
•
1 bajt początku danych (10h);
•
liczbę bajtów w ramce;
•
zanegowaną liczbę bajtów w ramce;
•
blok danych o długości 1 ... 35 bajtów;
•
sumę CRC16.
Rys. 4.18. Format ramki przesyłanych danych
Tor radiowy współpracujący z opisywanym robotem składa się z dwóch układów radiomode-
mów, spośród których jeden zawsze pracuje jako nadajnik a drugi jako odbiornik. Przykładowa
transmisja danych pomiędzy urządzeniami A i B wyposażonymi w układy powyższych radio-
modemów wygląda następująco:
•
urządzenie A wysyła interfejsem RS232 do radiomodemu A dane, które chce transmi-
tować do urządzenia B, poprzedzone bajtem zawierającym ich liczbę (1...35);
•
radiomodem A, otrzymawszy wszystkie dane blokuje UART, obudowuje dane w format
powyższej ramki, wylicza sumę CRC16 tak powstałego ciągu danych i transmituje całość
drogą radiową do radiomodemu B po czym przełącza się w tryb odbioru oczekując po-
twierdzenia;
•
radiomodem B w momencie wykrycia startowego bajtu danych w odbieranej ramce blo-
kuje swój UART, a po odebraniu danych wylicza własną sumę CRC16 i porównuje ją z sumą
otrzymaną. W przypadku zgodności transmituje dane interfejsem RS232 do urządzenia B,
jednocześnie przełączając się w tryb nadawania, transmituje potwierdzenie w postaci 16
bajtów preambuły;
•
jeśli radiomodem A w ciągu czasu proporcjonalnego do ilości przesyłanych danych nie
otrzyma powyższego potwierdzenia odbioru, jeszcze dwukrotnie podejmuje próbę transmisji
tych danych;
•
dopiero po otrzymaniu potwierdzenia od odbiornika lub po trzykrotnej transmisji bez po-
twierdzenia, radiomodem A odblokowuje przerwanie własnego UARTu.
Rozdział 5
Oprogramowanie
5.1. Środowisko programistyczne
Sterownik pokładowy robota wyposażony jest w mikrokontroler ATmega128, stanowiący
procesor główny oraz pomocniczy układ ATmega8, sterujący wszystkimi serwomechanizmami.
Sterownik zewnętrzny, którego zadaniem jest obsługa wyświetlacza LCD, klawiatury PC oraz
komunikacja z radiomodemem i komputerem PC, zbudowany został w oparciu o mikrokontroler
AT90S2313. Oprogramowanie do wszystkich, powyższych układów zostało napisane w bezpłat-
nym środowisku AVR-GCC, będącym kompilatorem języka C dla mikrokontrolerów AVR.
Środowisko to, jako produkt typu open-source dostępne dla wielu platform, jak Linuks czy
Windows, ciągle jest rozwijane i wzbogacane o nowe biblioteki. Podczas pisania oprogramowa-
nia korzystano z wersji AVR Libc1.2.3, lecz od tego czasu pojawiły się kolejne uaktualnie-
nia. AVR-GCC generuje wszystkie niezbędne pliki dla AvrStudio - darmowego, firmowego
pakietu Atmela, który uznawany jest za znakomity symulator i debugger procesorów AVR.
Pakiet ten umożliwia współpracę z zewnętrznym układem adaptera JTAG, który zapewnia
nieograniczony dostęp do zasobów mikrokontrolera, dając tym samym nieocenione możliwości
programiście i znacznie podnosząc komfort prac, zwłaszcza uruchomieniowych.
5.2. Mikrokontrolery - oprogramowanie
Znaczna większość oprogramowania sterowników została napisana w języku C, jedynie
w podprogramach obsługi niektórych przerwań stosowano wstawki asemblerowe. Natomiast
oprogramowanie mikrokontrolerów wchodzących w skład radiomodemów w całości zostało na-
pisane w asemblerze. Wynika to przede wszystkim z potrzeby jak najszybszego działania tych
układów, bo szybkość ta bezpośrednio przekłada się na maksymalną szybkość transmisji .
Struktura oprogramowania robota, tak jak to ma miejsce w wielu tego typu konstrukcjach,
rozdzielona jest na pewne poziomy wykonywanych zadań zwane poziomami kompetencji lub
warstwami oprogramowania. Najniższy poziom, podstawowa warstwa oprogramowania, zawiera
procedury służące bezpośredniej obsłudze układu jezdnego robota, jak np.:
•
sterowanie silnikami;
•
obsługa przerwań koderów sprzężonych z silnikami;
Rozdział 5. Oprogramowanie
37
•
wymuszenie odpowiedniej pozycji zewnętrznych kół skrętnych.
Dodatkowo w warstwie tej zaimplementowano procedurę, która w przypadku poruszania się ro-
bota do przodu, sprawdza czy w odległości ok.15 cm bezpośrednio przed robotem nie znajduje
się jakaś przeszkoda, jeśli taki fakt zaistnieje, wówczas wstrzymuje silniki. Funkcja, bazując na
danych pomiarowych pochodzących z sonaru, już na poziomie tej warstwy dba o inteligentne
zachowanie sie robota np. w przypadku wtargnięcia jakiegoś obiektu na tor jego jazdy.
Bezpieczna odległość została tak dobrana, by zagwarantować bezkolizyjne zatrzymanie się ro-
bota przy jego pełnej prędkości, a także, by po takim awaryjnym zatrzymaniu robot mógł
wykonać obrót tuż przed przeszkodą bez potrzeby cofania.
Nadrzędna, wyższa warstwa obejmuje procedury odpowiedzialne za komunikację z radio-
modemem, obsługę czujników, sterowanie kamerą. Na poziomie tej warstwy oprogramowanie
dba o prawidłową realizację powierzonych zadań oraz rozstrzygnięcie ewentualnie zaistniałych
zdarzeń. Sterownik zewnętrzny poprzez dane wysyłane (rozkazy) i dane odbierane od tej war-
stwy (informacje), może przejąć kontrolę nad funkcjonowaniem robota.
Obie powyższe warstwy zarządzają wszystkimi funkcjami robota, gdyż to z ich poziomu za-
rządzane są wszystkie komponenty w jakie go wyposażono. Oprogramowanie skupione na tych
dwóch poziomach jest na stałe wpisane w pamięć sterownika pokładowego. O jego wykorzy-
staniu, o tym jaką funkcję w danym momencie wykonuje, bądź ma wykonać robot, decyduje
najwyższa warstwa oprogramowania lub poprzez transmisję radiową sterownik zewnętrzny.
Warstwa najwyższa, w przeciwieństwie do pozostałych, zawiera oprogramowanie wymienne
(tworzone przez użytkownika). Znajdują się tu opracowywane algorytmy sterowania robotem,
np. algorytmy jego autonomicznego poruszania się. Sterownik robota posiada złącze interfejsu
JTAG poprzez które w wygodny sposób, za pomocą wcześniej wspomnianego adaptera JTAG,
można zmienić znajdujące się w sterowniku oprogramowanie. Zawarte na tym poziomie algo-
rytmy mogą być aktywowane drogą radiową przez sterownik zewnętrzny, który ponadto może:
•
pełnić rolę przełącznika algorytmów zawartych w najwyższej warstwie, jednocześnie nie
angażując się bezpośrednio w sterowanie robotem;
•
współsterować robotem wraz z wybranym algorytmem, np. aktywowany algorytm steruje
jazdą robota po określonej trajektorii a operator, poprzez sterownik zewnętrzny, steruje
ruchem kamery obserwując na monitorze interesujące go otoczenie robota;
•
chwilowo lub całkowicie przejąć kontrolę nad niektórymi lub wszystkimi funkcjami robota;
•
może nic nie wnosić do sterowania robotem i jedynie żądać przesłania mu co jakiś czas, lub
tylko w danym momencie, odczytów z czujników będących na wyposażeniu robota.
Stosowane środowisko programistyczne znacznie ułatwiało napisanie oprogramowania mi-
krokontrolerów w sposób modułowy. Funkcje zostały zgrupowane w biblioteki dołączane do
programu głównego. Dzięki temu, przy znacznym stopniu złożoności projektu, oprogramowanie
wydaje się być bardziej przejrzystym. Sposób oprogramowania mikrokontrolerów wchodzących
w skład radiomodemów został szeroko opisany w Podrozdziale 4.6, który w całości poświęcono
tym układom.
W kolejnym podrozdziale przedstawiono sposoby w jaki zostały opracowane niektóre ważniejsze
procedury sterowania robotem, często wynikające z jego specyficznej konstrukcji.
38
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
5.3. Opis ważniejszych procedur
5.3.1. Sterowanie serwomechanizmami
W pierwotnych założeniach wynikających ze specyfiki sześciokołowego układu jezdnego,
robot miał poruszać się po liniach prostych, a zmiana kierunku jazdy odbywać się miała przez
obrót robota w miejscu. W konstrukcjach takiego typu, zewnętrzne koła skrętne ustawione do
jazdy na wprost, doskonale stabilizują prostoliniowy tor jazdy robota nawet przy nieznacznej
różnicy w prędkościach kół napędowych umieszczonych pośrodku. Zewnętrzne koła ustawione
pod odpowiednim kątem, także dobrze stabilizują obrót robota w miejscu, nawet przy sto-
sunkowo nierównej nawierzchni. Po pierwszych udanych testach z podwoziem robota wyposa-
żonym w podstawowe, niezbędne do jazdy podzespoły, zdecydowano sie na jego funkcjonalną
rozbudowę, umożliwiającą mu jazdę po różnego rodzaju łukach. Konieczne stało się zatem
opracowanie funkcji wyliczającej odpowiedni kąt skrętu zewnętrznych kół robota, który jak
widać to z rys. 5.1, wynika z rozmiarów układu jezdnego.
Rys. 5.1. Sposób wyliczenia kątów skętu kół
Na podstawie geometrii podwozia można stwierdzić, że:
tg α =
140
R[mm] + 117, 5
(5.1)
tg β =
140
R[mm] − 117, 5
(5.2)
a zatem jak wynika z równań 5.1 i 5.2:
α = arc tg
140
R[mm] + 117, 5
(5.3)
β = arc tg
140
R[mm] − 117, 5
(5.4)
Rozdział 5. Oprogramowanie
39
Promień R liczony jest od punktu środkowego robota i jest promieniem łuku po jakim ma
poruszać się robot. Jak łatwo zauważyć, przy obrocie robota w miejscu promień R = 0. Rów-
nania 5.3 i 5.4 zostały zaimplementowane w procesorze pomocniczym sterownika pokładowego
zajmującego się obsługą serwomechanizmów. Wyliczanie kątów skrętu kół przez ten procesor
ma swe logiczne uzasadnienie i dodatkowo pozwala na odciążenie głównego mikrokontrolera,
którego rola w tym przypadku sprowadza się do przesłania magistralą SPI wartości wspomnia-
nego promienia R. Przyjęto, że dla skrętów robota w prawo (jak na Rys. 5.1) wartość promienia
R będzie podawana jako liczba dodatnia, natomiast dla takiego samego skrętu wykonywanego
w lewo, promień będzie podawany z minusem. Format instrukcji przesyłanych magistralą SPI
do procesora podrzędnego schematycznie przedstawiono na Rys. 5.2.
Rys. 5.2. Format instrukcji sterującej procesorem pomocniczym
Procesor nadrzędny przesyła magistralą najpierw kod rozkazu a następnie dane dotyczące
sterowania. Całość, dla zabezpieczenia danych przed błędami transmisji, zaopatrzono w sumę
CRC. Kod rozkazu o wartości 1, oznacza przesyłanie przez procesor nadrzędny danych dotyczą-
cych sterowania kamerą. Pierwszy bajt danych po takim rozkazie dotyczy pionowego kąta pod
jakim ma zostać ustawiona kamera, kolejny bajt jest informacją o kącie obrotu kamery w po-
ziomie. Kod rozkazu o wartości 2 oznacza przesyłanie w następnej kolejności danych o wartości
promienia skrętu. Procesor pomocniczy po otrzymaniu informacji o promieniu, wylicza kąty
skrętu kół i odpowiednio wysterowywuje serwomechanizmy sprzężone mechanicznie z kołami.
Zalecany przez producenta sposób sterowania serwami przedstawia Rys. 5.3.
Rys. 5.3. Sygnał sterujący serwomechanizmem
Impulsowi o długości 1ms odpowiada lewe, skrajne wychylenie serwa. Impuls o długości
2ms powoduje obrót serwa do prawej, skrajnej pozycji. Impulsy sterujące powinny być powta-
rzane co okres 20ms. Wymóg nadawania ich w stosunkowo dużym odstępie czasowym wynika
ze specyfiki budowy wewnętrznych układów elektronicznych serwomechanizmów modelarskich.
40
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Ich głównym przeznaczeniem jest współpraca z standardową, modelarską aparaturą zdalnego
sterowania, która umożliwia sterowanie jednocześnie czterema serwami. Taki odstęp czasu po-
między kolejnymi impulsami umożliwia przesłanie w jego trakcie informacji do pozostałych
serwomechanizmów.
Do generacji sygnałów sterujących wszystkimi sześcioma serwami robota, wykorzystano dwa
wolne liczniki mikrokontrolera ATmega8. Licznik T1 (16bitowy) generuje odpowiedniej długości
impulsy sterujące, które powtarzane są w odstępach czasowych generowanych przez 8bitowy
licznik T2. Gdyby do sterowania serwami użyto sprzętowego sygnału PWM, na zmianę kąta
obrotu w całym dostępnym zakresie 0 - 180
◦
, miałaby wpływ ograniczona możliwość zmian
współczynnika wypełnienia w zakresie 5 - 10%. Powyżej opisany sposób umożliwił sterowanie
serwami z większą rozdzielczością, która wyniosła ok. 1.8
◦
.
5.3.2. Obsługa czujników
Konstruowany robot, oprócz kamery będącej głównym nośnikiem informacji, został wy-
posażony w szereg sensorów, z których najważniejszymi są układy sonaru SFR08 i cyfrowego
kompasu CMPS03. Oba układy są specjalistycznymi czujnikami służącymi głównie zastoso-
waniom w robotyce. Posiadają własne procesory sterujące dzięki którym, zaraz po włączeniu
zasilania, samodzielnie przeprowadzają określone procedury pomiarowe oraz przetwarzanie da-
nych. Czujniki te, właściwie nie wymagają żadnej obsługi ze strony jednostki centralnej ro-
bota. Gotowy wynik, dostępny w kilku formatach, może być z nich odczytywany za pomocą
magistrali I
2
C. Dodatkowa zaleta w postaci bardzo małego pobieranego prądu, predysponuje te
układy do zastosowań zwłaszcza w małych robotach. Układy szerzej opisano w Podrozdziale 4.4
poświęconym czujnikom, poniżej natomiast przedstawiono fragment kodu źródłowego funkcji
umożliwiającej odczyt danych pomiarowych z obu sensorów. Procedura bazuje na sprzętowym
interfejsie magistrali I
2
C mikrokontrolera ATmega128, pełniącego rolę głównego sterownika
robota. Po jej wykonaniu w zmiennej Kat znajdą się dane odczytane z kompasu CMPS03,
natomiast w zmiennej Odleglosc, dane o zmierzonej przez sonar SFR08 odległości do obiektu.
//----------------------------------------------------------------------
#define COMPASS
0xC0
// adres kompasu
#define SONAR
0xE0
// adres sonaru
int Kat, Odleglosc;
union i2c_union {
unsigned int
rx_word;
unsigned char rx_byte[2];
} i2c;
i2c_start();
i2c_transmit(COMPASS);
i2c_transmit(2);
//adres czytanego rejestru
Rozdział 5. Oprogramowanie
41
i2c_start();
i2c_transmit(COMPASS+1);
//adres do odczytu
i2c.rx_byte[1]=i2c_receive(I2C_CONTINUE);
//odczyt MSB + Ack
i2c.rx_byte[0]=i2c_receive(I2C_QUIT);
//odczyt LSB + Nack
i2c_stop();
Kat=i2c.rx_word;
i2c_start();
i2c_transmit(SONAR);
i2c_transmit(0);
//
adres rejestru konfiguracyjnego
i2c_transmit(0x51);
//
konfiguracja sonaru by przeliczał
//
odległość na cm
do{ i2c_start();
i2c.rx_byte[0]=i2c_transmit(SONAR);
i2c_stop(); }
while(i2c.rx_byte[0] != 0);
// czekamy na wykonanie pomiaru
// w czasie wykonywania pomiaru, sonar ustawia magistrale w stan wysoki.
// po udanym polaczenia, funkca i2c_transmit() zwraca wartosc 0
i2c_start();
i2c_transmit(SONAR);
i2c_transmit(2);
//adres czytanego rejestu
i2c_start();
i2c_transmit(SONAR+1);
//adres do odczytu
i2c.rx_byte[1]=i2c_receive(I2C_CONTINUE);
//odczyt MSB + Ack
i2c.rx_byte[0]=i2c_receive(I2C_QUIT);
//odczyt LSB + Nack
i2c_stop();
Odleglosc =
i2c.rx_word;
//-----------------------------------------------------------------------
W zależności od celu dokonywanego pomiaru oraz jego wymaganej dokładności, tak otrzymane
dane przekazywane są dalej lub zapamiętywane a następnie uśredniane. Najnowsze dane o kącie
i odległościach zmierzonych przez sensory SFR08 i GP2Y02A02YK, umieszczane są w rejestrach
z których w każdej chwili można je odczytać za pomocą zewnętrznego sterownika. Sposób
realizacji pomiaru za pomocą czujnika GP2Y02A02YK szerzej opisano w Podrozdziale 4.4.3,
w całości poświęconemu temu czujnikowi.
42
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
5.3.3. Sterowanie układem napędowym
Na poruszanie się robota po określonych trajektoriach, zasadniczy wpływ oprócz odpo-
wiednich skrętów kół zewnętrznych, ma zapewnienie odpowiedniej prędkości środkowych kół
napędowych. Jak wynika to z Rys. ??, przy tak realizowanym torze jazdy, koło lewe musi
obracać się szybciej od koła prawego. Stosunek prędkości wynika z różnej długości łuków, które
muszą być pokonane jednocześnie przez oba koła napędowe. Aby zapewnić odpowiednio dobrą
regulację prędkości, w sterowniku robota zaimplementowano algorytm regulatora PID.
W systemie wyposażonym w mikrokontroler, algorytm PID musi być realizowany w sposób
dyskretny. Charakterystyczną cechą takiego regulatora jest praca ze stałym okresem próbko-
wania T
p
podczas którego wyznaczane są dyskretne wartości sygnałów.
Dyskretyzacja algorytmu PID :
u(t) = K
p
e(t) + K
i
Z
t
0
e(t)dt + K
d
de(t)
dt
(5.5)
polega na wprowadzeniu dyskretnych wartości sygnału uchybu regulatora oraz zastąpieniu całki
sumą, a pochodnej - różnicą pierwszego rzędu :
Z
t
0
e(t)dt ≈
k
X
i=0
e(i)T
p
de(t)
dt
≈
e(k) − e(k − 1))
T
p
(5.6)
Do programowej realizacji algorytmu regulatora PID opracowano poniższą strukturę PID state
oraz odpowiednią procedurę. Fragment kodu przedstawiono poniżej:
//-----------------------------------------------------
// - x0
- wielkość zadana
// - mes_x
- wielkość zmierzona
// - Iminus1 - wartość całki z poprzedniego kroku
// - eminus1 - wartość uchybu z poprzedniego kroku
// - ki
- wzmocnienie członu całkującego; odwrotność stałej zdwojenia
// - kp
- wzmocnienie członu proporcjonalnego
// - kd
- wzmocnienie członu różniczkującego
// - y
- wartość na wyjściu
// - Tp
- okres próbkowania
typedef struct{
//typ będący modelem obiektu PID
Rozdział 5. Oprogramowanie
43
double x0;
double mes_x;
double Iminus1;
double eminus1;
double y;
double ki;
double kp;
double kd;
int y_min;
int y_max;
}PID_state;
PID_state regulator_PID(PID_state x)
{
double e;
double de;
double I;
e=x.x0-x.mes_x;
I=x.ki*Tp*(e+x.eminus1)/2+x.Iminus1;
de=(e-x.eminus1)/Tp;
x.eminus1=e;
x.y=x.kp*e+x.kd*de+I;
if((x.y>x.y_max)||(x.y<x.y_min))
{
if(x.y>x.y_max)
{x.y=x.y_max;}
else if(x.y<x.y_min)
{x.y=x.y_min;}
}
else
{x.Iminus1=I;}
return x;
}
Przy tak skonstruowanym algorytmie, występowało czasem zjawisko nadmiernego wzrostu war-
tości sygnału związanego z całkowaniem (ang. windup efect ). Przyczyniało się ono do dłuższego
niż potrzeba pozostawania sygnału sterującego na poziomie ograniczenia co wywoływało nie-
pożądane przeregulowania. Ograniczenie szkodliwych skutków tego zjawiska dokonano przez
zwykłe zatrzymywanie działania części całkującej regulatora PID w chwili, gdy jego sygnał
wyjściowy osiągał ograniczenie.
W celu dobrania optymalnych nastaw regulacji, z obiektów regulowanych czyli silników,
ściągnięto charakterystyki umożliwiające wyznaczenie pomocnych stałych czasowych. W okre-
sie próbkowania wynoszącym T
p
=1 ms, zliczano impulsy pochodzące z enkoderów sprzężonych
z silnikami. Odpowiedź silnika na skok jednostkowy uzyskaną podczas jego włączenia, przed-
stawia poniższy Rys. 5.4.
44
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. 5.4. Odpowiedź silnika na skok jednostkowy
Z powyższej charakterystyki odczytano stałą czasową τ = 0,18ms umożliwiającą wyznaczenie
transmitancji silnika :
K(s) =
1
0, 018s + 1
(5.7)
Obiekt o takiej transmitancji poddano symulacjom w programie Matlab, jak widać na Rys. 5.5,
wiernie oddawał on rzeczywiste parametry charakterystyki silnika.
Rys. 5.5. Symulacja obiektu silnika
Wykorzystując pakiet Simulink, przeprowadzono symulacje regulatora z obiektem o wyzna-
czonej transmitancji, które pomogły dobrać odpowiednie nastawy programowego regulatora
PID.
Rozdział 6
Przebieg i wyniki eksperymentów
W trakcie prac nad konstrukcją mechaniczną i elektroniczną robota, został przeprowadzony
szereg badań i testów wstępnych, które bezpośrednio rzutowały na dalszy kierunek wykony-
wanych prac i rozwój konstrukcji. O doświadczeniach tych wspominały poprzednie rozdziały.
Po ukończeniu budowy robota, został on poddany bardzo wielu eksperymentom weryfikującym
jego teoretyczne działanie w rzeczywistych warunkach. Przebieg i wyniki niektórych z nich
opisuje niniejszy rozdział.
W warunkach jak na Rys.6.1 przeprowadzono serię pomiarów odległości do przeszkody, zmierzo-
nej przez sensory robota. Ponieważ oba czujniki umieszczone są na korpusie kamery, na zdjęciu
zamieszczono dodatkowo obraz obiektu zarejestrowany przez kamerę. Odczyty pomiarowe obu
czujników robota, przesyłane do sterownika zewnętrznego, zestawiono w Tabeli 6.1.
Rys. 6.1. Pomiar odległości do obiektu - seria 1
46
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Tabela 6.1. Wyniki pierwszej serii pomiarów
Rzeczywista
SFR08
GP2Y02A02YK
Odległość [cm]
[cm]
[cm]
10
10
10
17
17
17
25,5
26
25
34,5
35
34
55
55
55
93,5
93
93
125
125
124
145
145
144
Jak wskazały przeprowadzone pomiary, odległość do takiego rodzaju obiektów, mierzona
jest przez oba sensory w dość dokładny sposób. Na dodatkowe podkreślenie zasługuje fakt, że
pomiary przesyłane do zewnętrznego sterownika nie były w żaden sposób uśredniane.
Bardzo podobnie wypadły pomiary dla obiektów o innym kolorze powierzchni. Odbiciowy
czujnik GP2Y02A02YKN z oczywistych względów wykazywał największy błąd pomiaru dla
obiektów o czarnej powierzchni. Na końcu zakresu pomiarowego wynoszącego 150 cm, błąd ten
wynosił maksymalnie 4cm, a więc nie przekraczał 3%.
W kolejnej serii pomiarów, obiektem do którego mierzono dystans był fotelowy materac wy-
konany z gąbki. Doświadczenie to miało na celu weryfikację pomiarów wykonywanych przez
sonar, gdyż jak wiadomo gąbka jest materiałem tłumiącym ultradźwięki. Otrzymane wyniki
zestawiono w Tabeli 6.2.
Rys. 6.2. Pomiar odległości do obiektu - seria 2
Rozdział 6. Przebieg i wyniki eksperymentów
47
Tabela 6.2. Wyniki drugiej serii pomiarów
Rzeczywista
SFR08
GP2Y02A02YK
Odległość [cm]
[cm]
[cm]
10,5
11
10
16
17
16
25
26
25
38
39
38
49,5
51
50
65
67
66
110
112
111
140
143
139
Uzyskane wyniki wskazują na nieznaczne błędy pomiaru odległości do obiektów takiego
typu, mierzonej przez oba czujniki. Największy błąd z jakim odległość została zmierzona przez
sonar wynosił zaledwie 3cm. Biorąc pod uwagę stosunkowo niekorzystny jak dla tej metody
pomiarowej obiekt, wydaje się on być bardzo dobrym wynikiem.
Sposób i jakość poruszania się robota została wielokrotnie zweryfikowana wizualnie. Utrzy-
mywanie prostoliniowego toru jazdy sprawdzano w długim korytarzu, którego podłoga zawierała
prostoliniowe elementy (panele podłogowe). Na długości 6 metrów zboczenie robota z prostoli-
niowego toru jazdy wynosiło ok. 7cm. Trudniejsze do zbadania było utrzymanie jednopunkto-
wości obrotu robota w miejscu. Wizualnie po wykonaniu kilkudziesięciu takich obrotów, punkt
obrotu nie ulegał przesunięciu. Ponadto, przy obrocie robota na piaszczystej nawierzchni, koła
robota zostawiały pojedyncze ślady - Rys.6.3.
Rys. 6.3. Robot podczas obrotu w miejscu
Zgodnie z przewidywaniami, robot bardzo dobrze pokonuje stosunkowo sporej wielkości
przeszkody. Robot o całkowitej masie 7 kg, wyposażony w koła o promieniu 4cm, z łatwością
pokonywał przeszkody o wysokości 1cm, a przy dobrej nawierzchni także 2cm. Na kolejnych
zdjęciach pokazany został typowy sposób zachowania się robota podczas pokonywania prze-
szkody.
48
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. 6.4. Robot podczas pokonywania przeszkody
Rozdział 6. Przebieg i wyniki eksperymentów
49
Robot, dzięki zastosowaniu opisanych wcześniej sensorów oraz bezprzewodowej kamery,
może pełnić także funkcję robota inspekcyjnego. Kamera wyposażona w podświetlenie, umoż-
liwia sterowanie robotem także w całkowicie ciemnych pomieszczeniach. Poniżej przedstawiono
obrazy zarejestrowany przez kamerę podczas takiej pracy.
Rys. 6.5. Widok z kamery zarejestrowany podczas pracy nocą
50
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Jak okazało się już podczas wstępnych doświadczeń i eksperymentów z wykorzystywanymi
silnikami, nie mogą one poruszać się z dowolnie małą prędkością. Silniki wyposażone w tak duże
przekładnie, przy stopniowym zwiększaniu współczynnika wypełnienia sterującego nimi sygnału
PWM, zaczynają od razu pracować z pewną prędkością, odpowiadającą minimalnej prędkości
ruchu robota. Dzięki zastosowaniu programowo zrealizowanej regulacji PID, prędkość tą udało
sie obniżyć do wartości ok. 4cm/s. Maksymalna prędkość z jaką może poruszać się robot wynosi
12cm/s. Przez to, że podczas ruchu postępowego robota, jedno koło napędowe może poruszać
się maksymalnie 3 razy szybciej od drugiego, mocno ograniczony został zakres jazdy robota po
łukach. Dodatkowo, końcowe eksperymenty wskazały na pewne problemy w uzyskaniu powta-
rzalności sterowań niektórych skrętów serwomechanizmów, co dodatkowo zmniejszyło zakres
łuków możliwych do osiągnięcia podczas jazdy robota. Z powyższych względów, w obecnym
stanie konstrukcji robota, zaimplementowano możliwość poruszania się robota tylko po kilku
łukach, dzięki którym jednak może on w wygodniejszy sposób np. omijać przeszkody.
Również wielokrotnie zweryfikowane zostało poprawne działanie cyfrowego kompasu bę-
dącego na wyposażeniu robota. Z racji dużej ilości znajdujących się w robocie metalowych
elementów, kompas, po umieszczeniu go na pokładzie robota, wymagał programowej kalibracji,
której procedurę dokładnie opisuje [9], a po której jego wskazania w znacznym stopniu od-
powiadały rzeczywistym. Kompas, zamontowany poziomo pod górną płytą pleksi, przekazuje
sterownikowi robota informacje o kącie odchylenia od skalibrowanego kierunku północnego.
Jak pokazały przeprowadzone eksperymenty, informacje te mogą być obarczone błędem tym
większym, im większe jest odchylenie od poziomu górnej płyty robota, a przez to samego mo-
dułu kompasu. Przy wjeździe robota na maksymalną możliwą do pokonania przeszkodę, błąd
wskazań wynosił ok. 7
◦
. Ponadto, przy zbliżeniu się robota na odległość ok.15 cm do dużych
metalowych obiektów, stwierdzono błędy w zakresie do 10
◦
.
Mocna, solidna konstrukcja robota oraz górna, pozioma płyta o dużej, wolnej powierzchni,
umożliwia przewożenie robotem obiektów o stosunkowo dużej masie. Obciążenie robota podczas
testów dodatkową masą 5 kg, poza oczywistym wpływem na możliwość pokonywania przeszkód,
nie wpłynęło znacząco na sposób poruszania się robota po płaskich nawierzchniach. Mimo braku
konkretnego zastosowania powyższej właściwości, wskazuje ona na sporą wytrzymałość całej
konstrukcji oraz możliwość wyposażenia robota w dodatkowe elementy, które nie przyniosą
istotnych zmian w sposobie poruszania się robota.
Rozdział 7
Podsumowanie
Celem pracy było opracowanie odpowiedniej koncepcji oraz wykonanie mobilnego robota,
którego system lokomocyjny pozwalałby na jego poruszanie się po niewielkich nierównościach
podłoża, oraz który, dzięki wyposażeniu go w kamerę, umożliwiałby obserwację otoczenia w ja-
kim się porusza. W wyniku przeprowadzonych prac konstrukcyjnych powstał mały, mobilny
robot wyposażony w sześciokołowy układ jezdny, wzorowany na zawieszeniu robotów zbudowa-
nych w laboratoriach NASA. Zbudowane podwozie z powodzeniem spełniło wcześniej stawiane
mu oczekiwania i pozwoliło na sprawne poruszanie się robota w środowiskach o stosunkowo
dużych nierównościach podłoża. Jak doświadczalnie sprawdzono, robot z łatwością poruszał
się po trawniku, piaszczystej drodze, a także dobrze radził sobie na drodze kamienistej. Wła-
sne źródło zasilania w postaci żelowego akumulatora, pozwala mu przy włączonej kamerze,
pracować nieprzerwanie przez czas przynajmniej siedmiu godzin. Bezprzewodowa, kolorowa
kamera w jaką go wyposażono, poprzez własne, wbudowane podświetlanie, umożliwia obser-
wowanie otoczenia robota nawet podczas jego pracy w nocy lub w miejscach całkowicie ciem-
nych. Mechanizm mocowania kamery umożliwia sterowanie jej obrotem zarówno w pionie jak
i w poziomie, pozwalając tym samym na bogatą i obszerną obserwację środowiska pracy robota.
Ponadto, dwa czujniki mierzące odległość umieszczone na jej korpusie, pozwalają dodatkowo na
dokładny pomiar odległości do obserwowanych obiektów. Dzięki wyposażeniu robota w układy
radiomodemów, informacje z wszystkich czujników robota przekazywane są drogą radiową do
sterownika zewnętrznego, który następnie umożliwia ich prezentację na wyświetlaczu LCD.
Sterownik zewnętrzny umożliwia zdalne sterowanie całym robotem lub jedynie częścia jego
funkcji, których resztą zarządza wówczas sam robot. Wszystkie te, tak bogate możliwości skon-
struowanego robota, ukazują mnogość jego potencjalnych zastosowań. Na pewno predysponują
go przede wszystkim do prac o charakterze inspekcyjnym i badawczym. Operator dzięki tak
wyposażonemu robotowi może na odległość badać środowiska, w którym jego fizyczna obecność
z pewnych względów jest niemożliwa, zagrożona lub po prostu zbędna. Ponadto, umożliwia on
obserwację ciemnego otoczenia, w którym człowiek samodzielnie nie byłby wstanie zobaczyć
niczego. Czujniki, jakie posiada robot, są źródłem bogatych, dokładnych informacji, które czło-
wiek bez dodatkowego wyposażenia mógłby jedynie oszacować.
Mimo wcześniejszych założeń co do poruszania się robota jedynie po prostoliniowych to-
rach, dodatkowo powstałe oprogramowanie, umożliwia mu także jazdę po łukach. Ze względu
na własności wykorzystanych silników oraz serwomechanizmów, nie są to krzywizny o dowolnie
wybranych promieniach skrętu. Pomimo, że robot może poruszać się po łukach jedynie z pew-
nego zakresu, to i tak w znacznym stopniu poprawiło to jakość sposobu sterowania robotem
oraz możliwość omijania przez niego przeszkód. Sterownik zewnętrzny umożliwia sterowanie
robotem przez komputer PC, co pozwala na jego wykorzystanie do implementacji i badań al-
gorytmów sterowania. Robot sterowany samodzielnie lub poprzez komputer, dzięki zbieranym
danym o kącie i odległości przeszkód, przesyłanym następnie do komputera PC, może być
wykorzystywany do budowania mapy otoczenia. Ponadto, komputer PC, na podstawie obrazu
przesyłanego do niego z kamery robota, może poprzez odpowiednie oprogramowanie analizować
i rozpoznawać pewne elementy otoczenia robota a następnie tak nim sterować, by je omijał lub
podążał w ich kierunku. Spory zapas pamięci programu sterownika pozwala na implementację
wielu algorytmów autonomicznego poruszania się robota, oraz rozwój już istniejącego oprogra-
mowania.
Niniejszy dokument podsumowuje pewien zamknięty etap prac wykonanych nad robotem,
którego możliwości będą w dalszym ciągu poszerzane. W dalszych pracach przewidziano między
innymi opracowanie komputerowego programu umożliwiającego wizualizację danych przesyła-
nych z sensorów oraz sterowanie robotem poprzez komputer. Należało by także zastanowić się
nad zmianą sposobu sterowania zewnętrznymi kołami skrętnymi, tak by umożliwić poruszanie
się robota po dowolnie wybranych krzywiznach.
Bibliografia
[1] D. Bickler. ”The New Family of JPL Planetary Surface Vehicles, in Missions, Technologies and
Design of Planetary Mobile Vehicles”, pp. 301-306, D. Moura, Ed., Cepadues-Editions Publisher,
Toulouse France. 1993.
[2] D. Bickler. US Patent Number 4,840,394—Articulated Suspension Systems, US Patent Office,
Washington, D.C. 1989.
[3] Chottiner J. E. ”Simulation of a Six-Wheeled Martain Rover Called the Rocker-Bogie”, M.S.
Thesis, The Ohio State University, Columbus, Ohio. 1992.
[4] www.austriamicrosystems.com. ”AS5040DataSheetRev12”.
[5] www.robot electronics.co.uk/htm/srf08tech.shtml.
[6] www.chipcon.com. ”CC1000 Preliminary Datasheet (rev. 2.1)”. 2004.
[7] www.chipcon.com. ”CC1000 Errata Note 001, rev. 1.0”.
[8] Ryszard Szymaniak. ”Radiomodem 433 MHz”. Elektronika Praktyczna. 2/2004.
[9] www.robot electronics.co.uk/htm/cmps03tech.shtml.
Dodatek A
Rys. A.1. Schemat układów radiomodemów
1
2
3
4
A
B
C
D
4
3
2
1
D
C
B
A
PALE
6
PDATA
5
PCLK
4
DCLK
3
DIO
2
CHP
1
GND
12
RSSI
11
V
C
C
10
GND
9
ANT
8
GND
7
CC1000
U3
MODUL CC1000
GND
RESET
1
OSCIN
4
OSCOUT
5
P1.7
19
P3.0
2
P1.6
18
P3.1
3
P1.5
17
P3.2/INT0
6
P1.4
16
P3.3/INT1
7
P1.3
15
P3.4/T0
8
P1.2
14
P3.5/T1
9
P1.1/AIN1
13
P3.7
11
P1.0/AIN0
12
GND
10
Ucc
20
U1
89C2051
GND
+5V
Q1
11,059MHz
C8
22pF
C9
22pF
GND
R6
10k
C7
10uF
+5V
C11
100nF
R3
47k
D1
Nadawanie
R4 1k
GND
+3V
C10
10n
GND
R5
4k7
/DCLK
R2
47k
D2
D3 D4 D5
P1.0
P1.1
P1.2
P1.3
P1.0
P1.3
P1.0
GND
+5V
C6
470nF
GND
P1.1
P1.2
R1
220k
Vi
1
2
Vo
3
U2
LP2950 -3.0
C5
1uF
C4
100n
+5V
+3V
T1
BC847
T2
BC847
GND
T3
BC847
D6
cz
er
w
on
a
D7
zi
el
on
a
R7
1k
R8
1k
+5V
+3V
Diody pomiaru zasiegu
1
2
Z1
GND
1
2
Z2
RS232
Rxd
Txd
Dodatek A.
55
Rys. A.2. Schemat płytki procesora ATmega128
1
2
34
A
B
C
D
4
3
2
1
D
C
B
A
(AD
0) P
A0
51
(AD
1) P
A1
50
(AD
2) P
A2
49
(AD
3) P
A3
48
(AD
4) P
A4
47
(AD
5) P
A5
46
(AD
6) P
A6
45
(AD
7) P
A7
44
(A
LE) P
G2
43
(A
8) P
C0
35
(A
9) P
C1
36
(A
10) P
C2
37
(A
11) P
C3
38
(A
12) P
C4
39
(A
13) P
C5
40
(A
14) P
C6
41
(A
15) P
C7
42
(RD
) P
G1
34
(WR
) P
G0
33
PF0 (
ADC
0)
61
PF1 (
ADC
1)
60
PF2 (
ADC
2)
59
PF3 (
ADC
3)
58
PF4 (
ADC
4 / T
CK)
57
PF5 (
ADC
5 / T
M
S)
56
PF6 (
ADC
6 / T
DO)
55
PF7 (
ADC
7 / T
D
I)
54
AR
EF
62
AGND
63
AVCC
64
PE0 (P
D
I /
RXD
0)
2
PE1 (P
DO
/ T
XD
0)
3
PE2 (
AC
+ /
XCK
0)
4
PE3 (
AC
- /
OC
3A)
5
PE4 (I
N
T4 /
OC
3B)
6
PE5 (I
N
T5 /
OC
3C)
7
PE6 (I
N
T6 / T3)
8
PE7 (I
N
T7 / I
C
3)
9
P
B
0 ( SS )
10
P
B
1 (S
CK)
11
P
B
2 (
MO
SI)
12
P
B
3 (
M
IS
O)
13
P
B
4 (
OC
0)
14
P
B
5 (
OC
1A)
15
P
B
6 (
OC
1B)
16
P
B
7 (
OC
2 /
OC
1C)
17
(I
N
T0 / S
C
L) P
DO
25
(I
N
T1 / S
DA
) P
D1
26
(I
N
T2 /
RXD
1) P
D2
27
(I
N
T3 / T
XD
1) P
D3
28
(I
C
1) P
D4
29
(XCK
1) P
D5
30
(T1) P
D6
31
(T2) P
D7
32
X
T
A
L2
23
X
T
A
L1
24
GN
D
53
GN
D
22
VC
C
21
VC
C
52
/PEN
1
R
ESET
20
P
G
4 (T
O
S
C
1)
19
P
G
3 (T
O
S
C
2)
18
U1
A
T
M
E
GA
128
X1
16
M
hz
C1 22p
C2 22p
GND
GND
GND
VCC
C3
100n
GND
R1 10k
J1
GND
VCC
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10
10
11
11
12
12
13
13
14
14
15
15
16
16
JA
PE0
PE1
PE2
PE3
PE4
PE5
PE7
P
B0
P
B1
P
B2
P
B3
P
B4
P
B5
P
B6
P
B7
PE6
L1 10u
1 2 3 4
J3
ISP
PE0 PE1
P
B1
PE2 PE3 PE4 PE5 PE6 PE7
P
B0
P
B2
P
B3
P
B4
P
B5
P
B6
P
B7
PG
4
PG
3
P
G3
P
G4
VCC
GND
P
D0
P
D1
P
D2
P
D3
P
D4
P
D5
P
D6
P
D7
17
17
18
18
19
19
20
20
22
22
23
23
24
24
25
25
26
26
27
27
28
28
29
29
30
30
31
31
32
32
21
21
JB
P
D0
P
D1
P
D2
P
D3
P
D4
P
D5
P
D6
P
D7
33
33
34
34
35
35
36
36
37
37
38
38
39
39
40
40
41
41
43
43
44
44
45
45
46
46
47
47
48
48
42
42
JC
49
49
50
50
51
51
52
52
53
53
54
54
55
55
56
56
57
57
58
58
59
59
60
60
61
61
62
62
63
63
64
64
JD
P
C7
P
C6
P
C5
P
C4
P
C3
P
C2
P
C1
P
C0
P
C7
P
C6
P
C5
P
C4
P
C3
P
C2
P
C1
P
C0
P
A7
P
A6
P
A5
P
A4
P
A3
P
A2
P
A1
P
A0
P
A7
P
A6
P
A5
P
A4
P
A3
P
A2
P
A1
P
A0
P
G1
P
G0
P
G1
P
G0
P
G2
PF0 PF1 PF2 PF3 PF4
PF5
PF6
PF7
P
G2
VCC
GND
VCC
VCC
PF0 PF1
PF2 PF3
PF4 PF5 PF6 PF7
GND
VCC
1
2
3
4
J4
JT
AG
GND
56
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. A.3. Schemat sterownika
1
2
34
A
B
C
D
4
3
2
1
D
C
B
A
+5V
In1
5
In2
7
E
nA
6
In3
10
In4
12
E
nB
11
Sen
seA
1
Sen
seB
15
Vs
4
O
ut1
2
O
ut2
3
O
ut4
14
O
ut3
13
G
nd
8
Vcc
9
U3
L
298N
1
2
Z3
silnikP
1
2
Z4
silnikL
GND
C7
100n
V
CC
GND
D1
D5
D2
D6
D3 D4
D7 D8
1
2
3
4
Z2
J2C
+5V
R2
330
R
3
330
R4
4k7
R5
4k7
Sda
Scl
1
2
Z7
rs232
(R
E
S
ET
) PC6
1
P
D
0 (R
XD)
2
P
D
1 (
TXD)
3
P
D
2 (I
NT
0)
4
P
D
3 (I
NT
1)
5
P
D
4 (
X
C
K
/T
0)
6
VC
C
7
GN
D
8
PB6 (
XTAL
1/
TO
SC1)
9
PB7 (
XTAL
2/
TO
SC2)
10
P
D
5 (
T
1)
11
P
D
6 (
A
IN
0)
12
P
D
7 (
A
IN
1)
13
PB0 (ICP)
14
PB1 (
O
C1
A)
15
PB2 (SS/
O
C1B)
16
PB3 (
MO
SI/
O
C2)
17
PB4 (
M
IS
O)
18
PB5 (SC
K)
19
AV
CC
20
A
R
EF
21
GND
22
(AD
C0) PC0
23
(AD
C1) PC1
24
(AD
C2) PC2
25
(AD
C3) PC3
26
(AD
C4/S
DA
) PC4
27
(AD
C5/SC
L
) PC5
28
U4
ATMEGA8
GND
+5V
Q
2
16
M
hz
C8 22p
C9 22p
GND
GND
GND
sck
m
iso
m
osi
ss
1
2
3
J5
1
2
3
J6
1
2
3
J4
1
2
3
J3
1
2
3
J2
1
2
3
J1
GND
+5V
GND
+5V
s1
s2
s3 s4
s2
s1
s3
s4
1
2
3
4
5
Z
2a
J2C
1
2
3
4
Z5
E
nkodery
+5V
GND
GND
+5V
C11
100n
C10
220u
GND
GND
1
2
Z6
K
am
era
V
CC
(AD
0) P
A0
51
(AD
1) P
A1
50
(AD
2) P
A2
49
(AD
3) P
A3
48
(AD
4) P
A4
47
(AD
5) P
A5
46
(AD
6) P
A6
45
(AD
7) P
A7
44
(ALE
) P
G2
43
(A
8) PC0
35
(A
9) PC1
36
(A
10) PC2
37
(A
11) PC3
38
(A
12) PC4
39
(A
13) PC5
40
(A
14) PC6
41
(A
15) PC7
42
(R
D
) P
G1
34
(W
R) P
G0
33
PF0 (
AD
C0)
61
PF1 (
AD
C1)
60
PF2 (
AD
C2)
59
PF3 (
AD
C3)
58
PF4 (
AD
C4 /
T
C
K)
57
PF5 (
AD
C5 /
TM
S)
56
PF6 (
AD
C6 /
TDO)
55
PF7 (
AD
C7 /
TD
I)
54
A
R
EF
62
AGND
63
AV
CC
64
P
E
0 (P
D
I / R
XD
0)
2
P
E
1 (P
DO
/
TXD
0)
3
P
E
2 (
A
C+ /
X
C
K
0)
4
P
E
3 (
A
C- /
O
C3
A)
5
P
E
4 (I
NT
4 /
O
C3B)
6
P
E
5 (I
NT
5 /
O
C3C)
7
P
E
6 (I
NT
6 /
T
3)
8
P
E
7 (I
NT
7 / IC3)
9
PB0 ( SS )
10
PB1 (SC
K)
11
PB2 (
MO
SI)
12
PB3 (
M
IS
O)
13
PB4 (
O
C0)
14
PB5 (
O
C1
A)
15
PB6 (
O
C1B)
16
PB7 (
O
C2 /
O
C1C)
17
(I
NT
0 / SC
L
) P
DO
25
(I
NT
1 / S
DA
) P
D1
26
(I
NT
2 / R
XD
1) P
D2
27
(I
NT
3 /
TXD
1) P
D3
28
(IC1) P
D4
29
(X
C
K
1) P
D5
30
(T
1) P
D6
31
(T
2) P
D7
32
XTAL2
23
XTAL1
24
GN
D
53
GN
D
22
VC
C
21
VC
C
52
/P
EN
1
R
E
S
ET
20
P
G
4 (
TO
SC1)
19
P
G
3 (
TO
SC2)
18
U1
ATMEGA
128
X1
16
M
hz
C1 22p
C2 22p
GND
GND
GND
C3
100n
GND
R1 10k
J1
GND
L1
10u
1 2
3
4
J3
ISP
GND
1 2
3
4
J4
JTAG
ss
sck
m
osi
m
iso
sck
+5V
+5V
+5V
+5V
SI4946
1
3
5
4
2
In
O
ut
Feed
On
G
nd
LM
2575
330uH
2200uF
Cout
330uF
Cin
100uF
1N
5819
100nF
1
2
A
ku
m
ulator
V
CC
GND
+5V
C4
100nF
GND
Dodatek A.
57
Rys. A.4. Widok płytki sterownika
Rys. A.5. Widok płytki procesora ATmega128
Rys. A.6. Widok płytki radiomodemu
58
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. A.7. Widok ścieżek płytki sterownika
Rys. A.8. Widok ścieżek płytki procesora
Rys. A.9. Widok ścieżek płytki radiomodemu