Uploaded by tyxrlaphnwgsqsbswn

Mały robot mobilny obserwujacy otoczenie przy pomocy kamery

advertisement
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
1. Wstęp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1. Cel i zakres pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2. Realizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
7
7
2. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
3. Konstrukcja mechaniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
4. Część elektroniczna . . . . . . . . . .
4.1. Sterownik . . . . . . . . . . . . . .
4.2. Układ napędowy . . . . . . . . . .
4.3. Kodery . . . . . . . . . . . . . . . .
4.4. Czujniki . . . . . . . . . . . . . . .
4.4.1. Moduł kompasu . . . . . . .
4.4.2. Moduł sonaru . . . . . . . .
4.4.3. Dalmierz optyczny . . . . .
4.5. Kamera . . . . . . . . . . . . . . .
4.6. Moduł transceivera . . . . . . . . .
4.6.1. Opis ogólny układu . . . . .
4.6.2. Rozwiązanie układowe . . .
4.6.3. Format transmisji radiowej
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
18
20
22
24
24
25
26
28
30
30
32
35
5. Oprogramowanie . . . . . . . . . . . . . . .
5.1. Środowisko programistyczne . . . . . . .
5.2. Mikrokontrolery - oprogramowanie . . .
5.3. Opis ważniejszych procedur . . . . . . .
5.3.1. Sterowanie serwomechanizmami .
5.3.2. Obsługa czujników . . . . . . . .
5.3.3. Sterowanie układem napędowym
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
36
36
36
38
38
40
42
6. Przebieg i wyniki eksperymentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
45
7. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
53
A.
54
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Spis rysunków
2.1
2.2
2.3
2.4
Model podwozia Rocker-Bogi . . . . . . . . .
Sześciokołowy robot Fido . . . . . . . . . . .
Robot SIMROV2 podczas obrotu w miejscu
Widok robota w fazie konstrukcji . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
9
10
10
11
3.1
3.2
3.3
3.4
3.5
3.6
3.7
3.8
3.9
3.10
Widok ogólny konstrukcji robota . . . . . . . . . . . .
Widok robota z boku . . . . . . . . . . . . . . . . . .
Widok robota z przodu . . . . . . . . . . . . . . . . .
Widok robota z tyłu . . . . . . . . . . . . . . . . . . .
Budowa zawieszenia konstrukcji . . . . . . . . . . . .
Zachowanie się robota podczas najazdu na przeszkodę
Budowa wewnętrzna serwomechanizmu HS-311 . . . .
Sprzężenie serwomechanizmu z kołem zewnętrznym .
Montaż układów kół skrętnych do konstrukcji . . . . .
Ustawienie kół podczas obrotu w miejscu . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
12
13
13
14
14
15
15
16
17
17
4.1
4.2
4.3
4.4
4.5
4.6
4.7
4.8
4.9
4.10
4.11
4.12
4.13
4.14
4.15
4.16
4.17
4.18
Główne funkcje sterowników . . . . . . . . . . . . . . . . . . .
Poszczególne bloki sterownika . . . . . . . . . . . . . . . . . . .
Silnik RH158-12-200 . . . . . . . . . . . . . . . . . . . . . . . .
Struktura wewnętrzna mostka L298N . . . . . . . . . . . . . .
Zależność prędkości silnika od sterującego sygnału PWM . . .
Zasada działania układu AS5040 . . . . . . . . . . . . . . . . .
Sprzężenie kodera z silnikem . . . . . . . . . . . . . . . . . . .
Widok i opis wyprowadzeń modułu CMPS03 . . . . . . . . . .
Widok i opis wyprowadzeń modułu SFR08 . . . . . . . . . . .
Charakterystyka przetwarzania czujnika GP2Y02A02YK . . .
Wynik aproksymacji charakterystyki czujnika GP2Y02A02YK
Widok dalmierza GP2Y02A02YK . . . . . . . . . . . . . . . .
Bezprzewodowa kamera WS-212AS wraz z odbiornikiem . . . .
Obrotowy korpus kamery . . . . . . . . . . . . . . . . . . . . .
Moduł CC1000 . . . . . . . . . . . . . . . . . . . . . . . . . . .
Schemat modułu CC1000 . . . . . . . . . . . . . . . . . . . . .
Schemat radiomodemu . . . . . . . . . . . . . . . . . . . . . .
Format ramki przesyłanych danych . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
18
19
20
21
21
22
23
24
25
26
27
27
28
29
30
30
33
35
5.1
5.2
5.3
5.4
5.5
Sposób wyliczenia kątów skętu kół . . . . . . . . . . .
Format instrukcji sterującej procesorem pomocniczym
Sygnał sterujący serwomechanizmem . . . . . . . . . .
Odpowiedź silnika na skok jednostkowy . . . . . . . .
Symulacja obiektu silnika . . . . . . . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
38
39
39
44
44
6.1
6.2
6.3
6.4
6.5
Pomiar odległości do obiektu - seria 1 . . . . . . . .
Pomiar odległości do obiektu - seria 2 . . . . . . . .
Robot podczas obrotu w miejscu . . . . . . . . . . .
Robot podczas pokonywania przeszkody . . . . . . .
Widok z kamery zarejestrowany podczas pracy nocą
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
45
46
47
48
49
A.1
A.2
A.3
A.4
A.5
A.6
A.7
A.8
A.9
Schemat układów radiomodemów . .
Schemat płytki procesora ATmega128
Schemat sterownika . . . . . . . . . .
Widok płytki sterownika . . . . . . .
Widok płytki procesora ATmega128 .
Widok płytki radiomodemu . . . . . .
Widok ścieżek płytki sterownika . . .
Widok ścieżek płytki procesora . . .
Widok ścieżek płytki radiomodemu .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
54
55
56
57
57
57
58
58
58
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Spis tablic
4.1
4.2
4.3
4.4
4.5
4.6
Parametry silników RH158-12-200 . . . . . . . .
Sterowanie silnikiem za pomocą mostka L298N .
Zawartość rejestrów kompasu CMPS03 . . . . .
Zawartość rejestrów sonaru SFR08 . . . . . . . .
Niektóre komendy konfiguracyjne sonaru SFR08
Parametry kamery i odbiornika . . . . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
20
22
24
25
26
29
6.1
6.2
Wyniki pierwszej serii pomiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Wyniki drugiej serii pomiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
46
47
Rozdział 1
Wstęp
Od końca lat sześćdziesiątych ubiegłego wieku kiedy to został stworzony pierwszy, autonomiczny 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 identyfikacji nieznanego terenu. Powstają, bo mają pomagać i zastępować człowieka w rzeczach niebezpiecznych, 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 sterowane, 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 odpowiedni 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, niebezpieczna, 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 lokomocyjny 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 odpowiedniego 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 robota inspekcyjnego, którego konstrukcję w znacznym stopniu wzorowano na robotach znanych 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 ograniczenia. 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 sterownikiem 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 konstrukcji 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), opatentowane 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ą, musiał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 podwozia sposób ustawienia zewnętrznych kół sterujących podczas obrotu robota w miejscu przedstawia 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 zbudowanych 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 trudnoś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 konstrukcji 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 rozwierceniu, 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ędowych. 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
Rys. 3.2. Widok robota z boku
1.
2.
3.
4.
5.
-
serwomechanizmy modelarskie;
łożyska z mocowaniami;
akumulator żelowy;
płyta z pleksi;
wachacze z aluminium.
Rys. 3.3. Widok robota z przodu
1.
2.
3.
4.
5.
6.
-
silniki napędowe;
przekładnie planetarne;
kamera;
moduł sonaru;
łożyska z mocowaniami;
wsporniki dystansowe.
13
14
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. 3.4. Widok robota z tyłu
1.
2.
3.
4.
-
łożyska z mocowaniami;
widełki aluminiowe;
wsporniki dystansowe;
obrotowy korpus kamery.
Akumulator oraz płytki sterownika i zasilacza, umieszczono na kwadratowej, aluminiowej płycie 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 umieszczonych 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 pomocą 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 znamionowym 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 zewnę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.
2.
3.
4.
5.
6.
7.
8.
9.
-
serwo z końcówką tarczową;
koło z oponą;
aluminiowe widełki;
łożyska;
tuleje dystansowe;
mocowanie łożyska;
oś obrotowa pionowa;
oś obrotowa pozioma;
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. Zewnetrzne 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 autonomicznego. 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 zewnę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 trybie porównania;
• dwa 16-bitowe timery/liczniki z osobnymi preskalerami, mogące dodatkowo pracować w trybie 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 I2 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 I2 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-2001 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
Pobór prądu przy max. obciążeniu
Pobór prądu bez obciążenia
Prędkość przy max. obciążeniu
Prędkość bez obciążenia
Przekładnia
Max. moment
1
12 V
580 mA
< 140 mA
23 rpm
33 rpm
198,5:1
100 Ncm
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 mikrokontrolera, 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, przedstawia 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ędkość 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, koniecznym 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 Austriamicrosystems. 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ą programowania 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.
2.
3.
4.
5.
magnes;
tuleja mocująca;
uklad AS5040;
płytka drukowana;
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 I2 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
0
1
2, 3
4, 5
6, 7
8, 9
10, 11
15
Funkcja
Numer wersji oprogramowania
Zgrubna, bajtowa informacja od 0 dla 0◦ do 255 dla 359.9◦
Informacja dokładna w postaci słowa 2 bajtowego
od 0 dla 0◦ do 3599 dla 359.9◦
Test Wewnętrzny - Sensor1
Test Wewnętrzny - Sensor2
Test Wewnętrzny - kalibracja wartości sensora 1
Test Wewnętrzny - kalibracja wartości sensora 2
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 I2 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 I2 C i w obsłudze 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 informację o natężeniu światła padającego na sonar.
Tabela 4.4. Zawartość rejestrów sonaru SFR08
Adres
0
1
2
3
..
.
Odczyt
Wersja oprogramowania
Foto Sensor
1 echo MSB
1 echo LSB
..
.
Zapis
Konfiguracja
Rejestr wzmocnienia
Rejestr zasięgu
—
..
.
34
35
17 echo MSB
17 echo LSB
—
—
Informacja ta odświeżana jest przy każdym pomiarze odległości i zmienia się od 2-3 dla całkowitej 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 dokonywanych 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 uaktualnieniu 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]
0x50
0x51
0x52
AKCJA
Pomiar - wynik zwracany w calach
Pomiar - wynik zwracany w centymetrach
Pomiar - wynik zwracany w mikrosekundach
0xA0
0xA5
0xAA
1 sekwencja dla zmiany adresu I2 C
3 sekwencja dla zmiany adresu I2 C
2 sekwencja dla zmiany adresu I2 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 odbijającej światło posłużono się jej aproksymacją (Rys. 4.11) wielomianem2 piątego stopnia (4.1).
Y [mm] = −11.395x5 + 105.11x4 − 385.15x3 + 710.25x2 − 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 czujników, co jak wykazały badania i eksperymenty szerzej opisane w Rozdziale 6, ma swoje uzasadnienie. 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 3
firmy JMK. Kamera posiada wbudowany nadajnik o mocy 50 mW. Obraz za pomocą odpowiedniego 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
Rozdzielczość
Czułość
Automatyczna migawka
Częstotliwość pracy
Moc wyj. nadajnika
Zasięg
Zasilanie
PAL
380 linii TV
0,1 LUX (F 2.0)
1/60 sec - 1/6000 sec
900 - 1200 MHz
50 mW
do 100m w otwartej przestrzeni
DC 9 - 12V (do 500 mA)
Kamera, jak to ukazuje Rys. 4.14, została zamocowana za pomocą łożysk tocznych w obrotowym 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 obracanie 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 cyfrowych 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 dwukierunkowej transmisji danych na niewielkie odległości. Do budowy toru radiowego współpracującego
z robotem wykorzystano dwa gotowe moduły4 (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 I2 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 obniż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 zależ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 sygnał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ładzie 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 narastają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 odbieranego 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 miernika 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 zakres 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 dBm5 , 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
FREQ_1A
FREQ_0A
FREQ_2B
FREQ_1B
FREQ_0B
FSEP1
FSEP0
CURRENT
FRONT_END
PA_POW
PLL
LOCK
CAL
MODEM2
MODEM1
MODEM0
MATCH
FSCTR
PRESCALER
TEST4
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
(adr
01h)
02h)
03h)
04h)
05h)
06h)
07h)
08h)
09h)
0Ah)
0BH)
0CH)
0DH)
0EH)
0FH)
10H)
11H)
12H)
13H)
1CH)
42H)
-
49H
60H
00H
49H
58H
19H
02H
C7H
nadawanie 81H, odbiór 44H
12H
0FFH
50H
80H
26H
8EH
6FH
27H
70H
01H
00H
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 opracowano 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 radiomodemó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 radiomodemów wygląda następująco:
• urządzenie A wysyła interfejsem RS232 do radiomodemu A dane, które chce transmitować 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 potwierdzenia;
• radiomodem B w momencie wykrycia startowego bajtu danych w odbieranej ramce blokuje 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 potwierdzenia, 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łatnym ś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 oprogramowania korzystano z wersji AVR Libc1.2.3, lecz od tego czasu pojawiły się kolejne uaktualnienia. 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 napisane 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ę robota 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ę robota 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 radiomodemem, 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 warstwy (informacje), może przejąć kontrolę nad funkcjonowaniem robota.
Obie powyższe warstwy zarządzają wszystkimi funkcjami robota, gdyż to z ich poziomu zarzą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 wykorzystaniu, 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 algorytmy 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 mikrokontroleró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 stosunkowo 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:
140
R[mm] + 117, 5
140
tg β =
R[mm] − 117, 5
a zatem jak wynika z równań 5.1 i 5.2:
tg α =
(5.1)
(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ównania 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 wspomnianego 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 poziomie. 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ć powtarzane 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 pomię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ł wyposaż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 zastosowaniom 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 danych. Czujniki te, właściwie nie wymagają żadnej obsługi ze strony jednostki centralnej robota. Gotowy wynik, dostępny w kilku formatach, może być z nich odczytywany za pomocą
magistrali I2 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 I2 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);
i2c.rx_byte[1]=i2c_receive(I2C_CONTINUE);
i2c.rx_byte[0]=i2c_receive(I2C_QUIT);
i2c_stop();
//adres do odczytu
//odczyt MSB + Ack
//odczyt LSB + Nack
Kat=i2c.rx_word;
i2c_start();
i2c_transmit(SONAR);
i2c_transmit(0);
i2c_transmit(0x51);
//
//
//
adres rejestru konfiguracyjnego
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
i2c_start();
i2c_transmit(SONAR+1);
//adres
i2c.rx_byte[1]=i2c_receive(I2C_CONTINUE);
i2c.rx_byte[0]=i2c_receive(I2C_QUIT);
i2c_stop();
Odleglosc =
czytanego rejestu
do odczytu
//odczyt MSB + Ack
//odczyt LSB + Nack
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 odpowiednich 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óbkowania Tp podczas którego wyznaczane są dyskretne wartości sygnałów.
Dyskretyzacja algorytmu PID :
u(t) = Kp e(t) + Ki
Z
0
t
e(t)dt + Kd
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
0
t
e(t)dt ≈
k
X
i=0
e(i)Tp
de(t)
e(k) − e(k − 1))
≈
dt
Tp
(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 wartoś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 niepożą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 okresie próbkowania wynoszącym Tp =1 ms, zliczano impulsy pochodzące z enkoderów sprzężonych
z silnikami. Odpowiedź silnika na skok jednostkowy uzyskaną podczas jego włączenia, przedstawia 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 :
1
K(s) =
(5.7)
0, 018s + 1
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 wyznaczonej 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 wykonywanych 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, zmierzonej 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
Odległość [cm]
10
17
25,5
34,5
55
93,5
125
145
SFR08
[cm]
10
17
26
35
55
93
125
145
GP2Y02A02YK
[cm]
10
17
25
34
55
93
124
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 wykonany 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
Odległość [cm]
10,5
16
25
38
49,5
65
110
140
SFR08
[cm]
11
17
26
39
51
67
112
143
GP2Y02A02YK
[cm]
10
16
25
38
50
66
111
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. Utrzymywanie 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 prostoliniowego toru jazdy wynosiło ok. 7cm. Trudniejsze do zbadania było utrzymanie jednopunktowoś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 przeszkody.
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 powtarzalnoś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 odpowiadał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 moduł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 jakim 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 zbudowanych 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łasne ź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 obserwowanie otoczenia robota nawet podczas jego pracy w nocy lub w miejscach całkowicie ciemnych. 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 skonstruowanego 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łowiek bez dodatkowego wyposażenia mógłby jedynie oszacować.
Mimo wcześniejszych założeń co do poruszania się robota jedynie po prostoliniowych torach, 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 pewnego 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ń algorytmó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 oprogramowania.
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łanych 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.
Polecamy serwis z poradami dotyczącymi procesu pisania prac magisterskich - prace
magisrterskie - serwis z wytycznymi, wskazówkami, normami - całkowicie za darmo
Polecamy serwis darmowe _ prace mgr z bankowości - strona z darmowym i fragmentami
prac dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy serwis darmowe _ prace mgr z prawa - strona z darmowym i fragmentami prac
dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy solidny serwis darmowe prace mgr z prawa - znajdziecie tam darmowe fragmenty prac
dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy serwis z darmowymi referatami - darmowe prace - strona z darmowym referatami, esejami,
konspektami prac...
Polecamy serwis darmowe _ prace mgr z _ pedagogiki - strona z darmowym i fragmentami
prac dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy internetowy serwis darmowe _prace mgr z _zarządzania - strona z całkowicie
darmowym i fragmentami prac dyplomowych - prace licencjackie, magisterskie, semestralne i
zaliczeniowe.
Poradnik jak pisać prace dyplomowe znajdziesz na stronie abcpisania.
Forum o serwisach zajmujących się pisaniem prac licencjackich. Zamawialiście prace licencjackie,
chcecie o tym napisać? To jest właśnie odpowiednie miejsce - forum o pracach magisterskich
Mamy specjalistów z zakresu bankowości, rachunkowości, finansów, ekonomii, marketingu,
zarządzania, filologii polskiej, pedagogiki, socjologii, zarządzania zasobami ludzkimi, prawa,
administracji, hotelarstwa i turystyki.
Pisanie prac magisterskich i licencjackich
Nie kopiujemy z innych prac, nie przepisujemy, a każda z naszych prac tworzona jest bezpośrednio
pod potrzeby klienta i wykorzystywana tylko przez niego!
Prace magisterskie - dobre
Serwis "Prace magisterskie" pomoże napisać prace magisterskie i prace licencjackie zapracowanym
studentom.
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
+3V
D
D
R1
220k
P1.1
+5V
P1.2
C
22pF
T2
BC847
U3
MODUL CC1000
ANT
B
+3V
3
11
2
4
5
6
1
P1.0
P1.3
/DCLK
RESET
4
Q1
11,059MHz
5
OSCIN
OSCOUT
2
3
6
7
8
9
11
P3.0
P3.1
P3.2/INT0
P3.3/INT1
P3.4/T0
P3.5/T1
P3.7
P1.0/AIN0
P1.1/AIN1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
D2
D3
D4
D5
Rxd
Txd
+5V
D1
R3
47k
R4 1k
Nadawanie
Z1
P1.0
P1.1
P1.2
P1.3
D6
D7
Ucc
GND
1
2
Diody pomiaru zasiegu
20
C11
100nF
10
B
Z2
RS232
+5V
+3V
U2
Vo Vi
LP2950 -3.0
C4
100n
GND
1
C5
1uF
A
GND
2
3
C
+5V
3
1
2
T3
BC847
1
12
13
14
15
16
17
18
19
U1
GND
A
R8
1k
GND
10
8
VCC
GND
DCLK
CC1000
RSSI
DIO
PCLK
PDATA
PALE
CHP
GND
C9
22pF
GND
R2
47k
89C2051
1
R7
1k
GND
czerwona
10k
C8
GND
GND
GND
10n
R6
GND
12
9
7
C10
zielona
R5
4k7
+5V
P1.0
C7
10uF
C6
470nF
2
T1
BC847
4
A
B
C
JB
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PG0
PG1
GND
VCC
PG4
PG3
PE1
PE0
PE3
PE2
PE5
PE4
PE7
PE6
PB1
PB0
PB3
PB2
PB5
PB4
PB7
PB6
GND
100n
C3
L1
10u
VCC
PF4
PF5
PF6
PF7
J1
ISP
1
2
3
4
JTAG
GND
R1
10k
VCC
J3
J4
PB1
PE0
PE1
1
2
3
4
JA
2
PF0
PF1
PF2
PF3
PB2
PB3
PB4
PB5
PB6
PB7
PB0
PE2
PE3
PE4
PE5
PE6
PE7
GND
VCC
2
PG4
19
18
1
20
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
62
63
64
61
60
59
58
57
56
55
54
VCC
(RD) PG1
(WR) PG0
(A8) PC0
(A9) PC1
(A10) PC2
(A11) PC3
(A12) PC4
(A13) PC5
(A14) PC6
(A15) PC7
(AD0) PA0
(AD1) PA1
(AD2) PA2
(AD3) PA3
(AD4) PA4
(AD5) PA5
(AD6) PA6
(AD7) PA7
(ALE) PG2
VCC
3
PG4 (TOSC1)
PG3 (TOSC2)
/PEN
RESET
GND
GND
3
ATMEGA128
XTAL1
XTAL2
PB0 ( SS )
(INT0 / SCL) PDO
PB1 (SCK)
(INT1 / SDA) PD1
PB2 (MOSI)
(INT2 / RXD1) PD2
PB3 (MISO)
(INT3 / TXD1) PD3
PB4 (OC0)
(IC1) PD4
PB5 (OC1A)
(XCK1) PD5
PB6 (OC1B)
(T1) PD6
PB7 (OC2 / OC1C)
(T2) PD7
PE0 (PDI / RXD0)
PE1 (PDO / TXD0)
PE2 (AC+ / XCK0)
PE3 (AC- / OC3A)
PE4 (INT4 / OC3B)
PE5 (INT5 / OC3C)
PE6 (INT6 / T3)
PE7 (INT7 / IC3)
AREF
AGND
AVCC
PF0 (ADC0)
PF1 (ADC1)
PF2 (ADC2)
PF3 (ADC3)
PF4 (ADC4 / TCK)
PF5 (ADC5 / TMS)
PF6 (ADC6 / TDO)
PF7 (ADC7 / TDI)
52
21
VCC
VCC
GND
GND
22
53
D
1
U1
24
23
25
26
27
28
29
30
31
32
34
33
35
36
37
38
39
40
41
42
51
50
49
48
47
46
45
44
43
X1
16Mhz
C1
22p
GND
PD0
PD1
PD2
PD3
PD4
PD5
PD6
PD7
PG1
PG0
PC0
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PA0
PA1
PA2
PA3
PA4
PA5
PA6
PA7
PG2
GND
C2
22p
PA2
PA1
PA4
PA3
PA6
PA5
PG2
PA7
PC6
PC7
PC4
PC5
PC2
PC3
PC0
PC1
GND
PA0
VCC
PF7
PF6
PF5
PF0
PF1
PF2
PF3
PF4
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
JC
48
47
46
45
44
43
42
41
40
39
38
37
36
35
34
33
64
63
62
61
60
59
58
57
56
55
54
53
52
51
50
49
4
JD
4
A
B
C
D
Dodatek A.
55
Rys. A.2. Schemat płytki procesora ATmega128
PG3
A
B
C
D
2
1
1
2
3
ISP 4
J3
rs232
Z7
GND
100n
C3
L1
10u
+5V
Akumulator
2
1
sck
100uF
J1
1 In
1
GND
R1
10k
+5V
J4
1N5819
4
Feed
2
Out
GND
+5V
1
2
3
JTAG 4
GND
On
Gnd
LM2575
3
Cin
5
VCC
Cout
2
3
4
5
6
7
8
9
62
63
64
61
60
59
58
57
56
55
54
330uF
19
18
1
20
ss 10
sck 11
mosi12
miso13
14
15
16
17
330uH
(RD) PG1
(WR) PG0
(A8) PC0
(A9) PC1
(A10) PC2
(A11) PC3
(A12) PC4
(A13) PC5
(A14) PC6
(A15) PC7
(AD0) PA0
(AD1) PA1
(AD2) PA2
(AD3) PA3
(AD4) PA4
(AD5) PA5
(AD6) PA6
(AD7) PA7
(ALE) PG2
100nF GND
C4
2
PG4 (TOSC1)
PG3 (TOSC2)
/PEN
RESET
GND
2
XTAL1
XTAL2
PB0 ( SS )
(INT0 / SCL) PDO
PB1 (SCK)
(INT1 / SDA) PD1
PB2 (MOSI)
(INT2 / RXD1) PD2
PB3 (MISO)
(INT3 / TXD1) PD3
PB4 (OC0)
(IC1) PD4
PB5 (OC1A)
(XCK1) PD5
PB6 (OC1B)
(T1) PD6
PB7 (OC2 / OC1C)
(T2) PD7
PE0 (PDI / RXD0)
PE1 (PDO / TXD0)
PE2 (AC+ / XCK0)
PE3 (AC- / OC3A)
PE4 (INT4 / OC3B)
PE5 (INT5 / OC3C)
PE6 (INT6 / T3)
PE7 (INT7 / IC3)
AREF
AGND
AVCC
+5V
100nF
+5V
PF0 (ADC0)
PF1 (ADC1)
PF2 (ADC2)
PF3 (ADC3)
PF4 (ADC4 / TCK)
PF5 (ADC5 / TMS)
PF6 (ADC6 / TDO)
PF7 (ADC7 / TDI)
ATMEGA128
2200uF
52
21
1
U1
24
23
25
26
27
28
29
30
31
32
34
33
35
36
37
38
39
40
41
42
51
50
49
48
47
46
45
44
43
GND
16Mhz
C1
22p
X1
GND
C2
22p
10
12
5
7
6
11
+5V
Out1
Out2
100n
C7
GND
R3
330
Z5
Enkodery
+5V R4
4k7
8
13
14
2
3
GND
GND
R2 330
2
1
3
3
SI4946
VCC
GND
U3
In1 L298N
In2
Out3
Out4
In3
In4
Gnd
EnA
EnB
9
Vcc
SenseA
1
VCC
VCC
GND
GND
22
53
4
Vs
SenseB
15
4
3
2
1
R5
4k7
GND
Scl
Sda
D5
D6
D7
D8
D1
D2
D3
D4
2
1
5
4
3
2
1
4
3
2
1
silnikL
silnikP
Z4
Z3
2
1
VCC
Kamera
Z6
J2C
+5V
Z2a
J2C
Z2
3
2
1
GND
C9
22p
C8
22p
GND
16Mhz
Q2
3
2
1
s1
s2
s3
s4
3
2
1
2
3
4
5
6
11
12
13
14
15
ss 16
mosi17
miso18
sck 19
9
10
J6 J5 GND
+5V
J4
+5V
4
C10
100n
C11
220u
AVCC
AREF
GND
GND
s4
s3
J3
4
3
2
1
3
2
1
GND
+5V
GND
J1
s1
ATMEGA8
PD0 (RXD)
(ADC0) PC0
PD1 (TXD)
(ADC1) PC1
PD2 (INT0)
(ADC2) PC2
PD3 (INT1)
(ADC3) PC3
PD4 (XCK/T0) (ADC4/SDA) PC4
PD5 (T1)
(ADC5/SCL) PC5
PD6 (AIN0)
(RESET) PC6
PD7 (AIN1)
PB0 (ICP)
PB1 (OC1A)
PB2 (SS/OC1B)
PB3 (MOSI/OC2)
PB4 (MISO)
PB5 (SCK)
PB6 (XTAL1/TOSC1)
PB7 (XTAL2/TOSC2)
7
VCC
GND
8
s2
J2
U4
3
2
1
23
24
25
26
27
28
1
GND
+5V
20
21
22
A
B
C
D
56
Mały robot mobilny obserwujący otoczenie przy pomocy kamery
Rys. A.3. Schemat sterownika
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
Polecamy serwis z poradami dotyczącymi procesu pisania prac magisterskich - prace
magisrterskie - serwis z wytycznymi, wskazówkami, normami - całkowicie za darmo
Polecamy serwis darmowe _ prace mgr z bankowości - strona z darmowym i fragmentami
prac dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy serwis darmowe _ prace mgr z prawa - strona z darmowym i fragmentami prac
dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy solidny serwis darmowe prace mgr z prawa - znajdziecie tam darmowe fragmenty prac
dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy serwis z darmowymi referatami - darmowe prace - strona z darmowym referatami, esejami,
konspektami prac...
Polecamy serwis darmowe _ prace mgr z _ pedagogiki - strona z darmowym i fragmentami
prac dyplomowych - prace magisterskie, licencjackie, semestralne, zaliczeniowe.
Polecamy internetowy serwis darmowe _prace mgr z _zarządzania - strona z całkowicie
darmowym i fragmentami prac dyplomowych - prace licencjackie, magisterskie, semestralne i
zaliczeniowe.
Poradnik jak pisać prace dyplomowe znajdziesz na stronie abcpisania.
Forum o serwisach zajmujących się pisaniem prac licencjackich. Zamawialiście prace licencjackie,
chcecie o tym napisać? To jest właśnie odpowiednie miejsce - forum o pracach magisterskich
Mamy specjalistów z zakresu bankowości, rachunkowości, finansów, ekonomii, marketingu,
zarządzania, filologii polskiej, pedagogiki, socjologii, zarządzania zasobami ludzkimi, prawa,
administracji, hotelarstwa i turystyki.
Pisanie prac magisterskich i licencjackich
Nie kopiujemy z innych prac, nie przepisujemy, a każda z naszych prac tworzona jest bezpośrednio
pod potrzeby klienta i wykorzystywana tylko przez niego!
Prace magisterskie - dobre
Serwis "Prace magisterskie" pomoże napisać prace magisterskie i prace licencjackie zapracowanym
studentom.
Download