Mały robot mobilny obserwujacy otoczenie przy pomocy kamery

background image

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

background image

Dedykuje RODZICOM

background image

Spis treści

Spis rysunków . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

4

Spis tablic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

6

1. Wstęp

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.1.

Cel i zakres pracy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

1.2.

Realizacja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

7

2. Wprowadzenie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

3. Konstrukcja mechaniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

4. Część elektroniczna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

4.1.

Sterownik

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

4.2.

Układ napędowy

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

4.3.

Kodery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

4.4.

Czujniki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.4.1.

Moduł kompasu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.4.2.

Moduł sonaru . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

4.4.3.

Dalmierz optyczny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

26

4.5.

Kamera

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

4.6.

Moduł transceivera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

4.6.1.

Opis ogólny układu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

4.6.2.

Rozwiązanie układowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

32

4.6.3.

Format transmisji radiowej

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

5. Oprogramowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

5.1.

Środowisko programistyczne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

5.2.

Mikrokontrolery - oprogramowanie

. . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

5.3.

Opis ważniejszych procedur

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

5.3.1.

Sterowanie serwomechanizmami . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

5.3.2.

Obsługa czujników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

5.3.3.

Sterowanie układem napędowym . . . . . . . . . . . . . . . . . . . . . . . . . .

42

6. Przebieg i wyniki eksperymentów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

7. Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51

Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

A.

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

background image

Spis rysunków

2.1

Model podwozia Rocker-Bogi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

2.2

Sześciokołowy robot Fido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

2.3

Robot SIMROV2 podczas obrotu w miejscu

. . . . . . . . . . . . . . . . . . . . . . . . .

10

2.4

Widok robota w fazie konstrukcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

3.1

Widok ogólny konstrukcji robota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

3.2

Widok robota z boku . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

3.3

Widok robota z przodu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13

3.4

Widok robota z tyłu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

3.5

Budowa zawieszenia konstrukcji

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

3.6

Zachowanie się robota podczas najazdu na przeszkodę . . . . . . . . . . . . . . . . . . . .

15

3.7

Budowa wewnętrzna serwomechanizmu HS-311 . . . . . . . . . . . . . . . . . . . . . . . .

15

3.8

Sprzężenie serwomechanizmu z kołem zewnętrznym

. . . . . . . . . . . . . . . . . . . . .

16

3.9

Montaż układów kół skrętnych do konstrukcji . . . . . . . . . . . . . . . . . . . . . . . . .

17

3.10 Ustawienie kół podczas obrotu w miejscu . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

4.1

Główne funkcje sterowników . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

4.2

Poszczególne bloki sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

4.3

Silnik RH158-12-200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

4.4

Struktura wewnętrzna mostka L298N . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

21

4.5

Zależność prędkości silnika od sterującego sygnału PWM . . . . . . . . . . . . . . . . . .

21

4.6

Zasada działania układu AS5040 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

22

4.7

Sprzężenie kodera z silnikem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

23

4.8

Widok i opis wyprowadzeń modułu CMPS03 . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.9

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

4.17 Schemat radiomodemu

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

4.18 Format ramki przesyłanych danych

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

background image

5.1

Sposób wyliczenia kątów skętu kół . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

5.2

Format instrukcji sterującej procesorem pomocniczym . . . . . . . . . . . . . . . . . . . .

39

5.3

Sygnał sterujący serwomechanizmem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

5.4

Odpowiedź silnika na skok jednostkowy . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

5.5

Symulacja obiektu silnika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

6.1

Pomiar odległości do obiektu - seria 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

6.2

Pomiar odległości do obiektu - seria 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

6.3

Robot podczas obrotu w miejscu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

6.4

Robot podczas pokonywania przeszkody . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

6.5

Widok z kamery zarejestrowany podczas pracy nocą . . . . . . . . . . . . . . . . . . . . .

49

A.1

Schemat układów radiomodemów

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

A.2

Schemat płytki procesora ATmega128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

A.3

Schemat sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

A.4

Widok płytki sterownika

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

A.5

Widok płytki procesora ATmega128 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

A.6

Widok płytki radiomodemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

57

A.7

Widok ścieżek płytki sterownika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

A.8

Widok ścieżek płytki procesora

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

A.9

Widok ścieżek płytki radiomodemu

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

58

background image

Spis tablic

4.1

Parametry silników RH158-12-200 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

4.2

Sterowanie silnikiem za pomocą mostka L298N . . . . . . . . . . . . . . . . . . . . . . . .

22

4.3

Zawartość rejestrów kompasu CMPS03

. . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.4

Zawartość rejestrów sonaru SFR08 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

25

4.5

Niektóre komendy konfiguracyjne sonaru SFR08 . . . . . . . . . . . . . . . . . . . . . . .

26

4.6

Parametry kamery i odbiornika . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

29

6.1

Wyniki pierwszej serii pomiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

6.2

Wyniki drugiej serii pomiarów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

47

background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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).

background image

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.

background image

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

background image

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.

background image

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

1

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

background image

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

background image

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,

background image

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.

background image

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.

background image

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

background image

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

background image

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

2

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

background image

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

3

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.

background image

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.

background image

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

4

(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

background image

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

background image

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

background image

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

5

, 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.

background image

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

background image

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.

background image

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;

background image

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.

background image

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)

background image

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.

background image

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

background image

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.

background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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.

background image

48

Mały robot mobilny obserwujący otoczenie przy pomocy kamery

Rys. 6.4. Robot podczas pokonywania przeszkody

background image

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ą

background image

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.

background image

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

background image

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.

background image

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.

background image

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

background image

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

background image

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

background image

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

background image

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


Document Outline


Wyszukiwarka

Podobne podstrony:
Technika renowacji?chów płaskich przy pomocy płynnych folii
OII04 Wyznaczanie logarytmicznego dekrementu tlumienia przy pomocy wahadla fizycznego
Przejście pacjenta z wózka do łóżka przy pomocy jednej osoby
Wyznaczanie indukcji magnetycznej przy pomocy teslomierza hallotronowego v6 (2)
Wyznaczanie współczynnika rozszerzalności liniowej ciał stałych przy pomocy dylatometru 1 (2)
63 Modelowanie przy pomocy Low Polygon Character
O7?dania zależności współczynnika załamania cieczy od temperatury przy pomocy refraktometru
Mały robot kuchenny
Pomiar mom bezw, przy pomocy wahadla fizycznego
Sprawko w11 Mis, MIBM WIP PW, fizyka 2, laborki fiza(2), 51-Badanie własności promieniowania gamma
Komunikacja przy pomocy komputera
cw3, Wyznaczanie gęstości ciał o kształtach regularnych przy pomocy mierników długości i wag o różne
Pomiar współczynnika załamania światła przy pomocy mikroskopu v2 (2)
Leczenie mięśniaków macicy przy pomocy zogniskowanej wiązki ultradźwięków
Wyznaczenie składowej poziomej indukcji pola magnetycznego Ziemi przy pomocy busoli statycznych, Num

więcej podobnych podstron