politechnika wrocławska wydział elektroniki praca dyplomowa
Transkrypt
politechnika wrocławska wydział elektroniki praca dyplomowa
POLITECHNIKA WROCŁAWSKA WYDZIAŁ ELEKTRONIKI K IERUNEK : S PECJALNO Ś Ć : Automatyka i Robotyka Robotyka PRACA DYPLOMOWA MAGISTERSKA System śledzenia położenia dla platformy mobilnej Position tracking system for a mobile platform AUTOR : Michał Mielnicki P ROWADZ ACY ˛ PRAC E˛: dr inż. Bogdan Kreczmer O CENA PRACY: WROCŁAW 2010 Prac˛e dedykuj˛e rodzicom. Spis treści 1 Wst˛ep 3 2 Kinematyka i dynamika platformy mobilnej klasy (2,0) 2.1 Kinematyka nieholonomicznej platformy mobilnej klasy (2,0) 2.2 Model dynamiki . . . . . . . . . . . . . . . . . . . . . . . . . 2.3 Sterownik kinematyczny Lee, Lee i Tenga . . . . . . . . . . . 2.4 Sterownik dynamiczny - algorytm dokładnej linearyzacji . . . 2.5 Wyznaczanie drogi na podstawie przyspieszeń . . . . . . . . . 2.6 Wyznaczanie pr˛edkości obrotowej na podstawie przyspieszeń . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.7 Zjawisko aliasingu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 5 7 9 10 10 . . . . . . . . . . . . . . . . . . 12 13 3 Pakiety do wyszukiwania znaczników w obrazie wideo 3.1 Przeglad ˛ narz˛edzi do wyszukiwania znaczników . . . . . . . . . . . . . . . . . 3.2 ARToolKit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 15 16 4 Platforma mobilna 4.1 Ogólna charakterystyka . . . . . . . . . . . . 4.2 Czujniki . . . . . . . . . . . . . . . . . . . . 4.2.1 Enkoder magnetyczny AS5045 . . . . 4.2.2 Akcelerometr MMA7260 . . . . . . . 4.2.3 Żyroskop ADIS16100 . . . . . . . . 4.3 Filtr analogowy dolnoprzepustowy MAX7400 4.4 Sterownik serwomechanizmów MC9S12A64 4.5 Sterownik główny AT91SAM7S256 . . . . . 4.6 Układ zasilania . . . . . . . . . . . . . . . . 4.7 Komunikacja poprzez Bluetooth . . . . . . . 4.8 Układ nap˛edowy . . . . . . . . . . . . . . . 4.9 Opis oprogramowania . . . . . . . . . . . . . 4.9.1 MC68S12a64 . . . . . . . . . . . . . 4.9.2 AT91SAM7s256 . . . . . . . . . . . 19 19 20 20 22 23 25 26 28 30 30 33 35 35 35 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Aplikacja sterujaca ˛ 37 6 Badania 6.1 Identyfikacja serwomechanizmów . . . . . . . . . . . . . . . . . . . . . . . . 6.2 Dokładność pomiaru pozycji i orientacji na podstawie obrazu wideo . . . . . . 6.2.1 Wyznaczanie stabilności pomiaru położenia na podstawie obrazu wideo 39 39 40 40 2 SPIS TREŚCI 6.2.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9 7 Wyznaczanie dokładności pomiaru dwóch znaczników wzgl˛edem siebie . . . . . . . . . . . . . . . . . . . . . . . . Wyznaczanie przebytej drogi na podstawie enkoderów magnetycznych Skalowanie i wyznaczanie zera akceleromatru . . . . . . . . . . . . . Wyznaczanie przebytej drogi na podstawie przyspieszeń . . . . . . . Wyznaczanie pr˛edkości katowej ˛ na podstawie żyroskopu . . . . . . . Wykrywanie przeszkód . . . . . . . . . . . . . . . . . . . . . . . . . Śledzenie trajektorii bez korekcji z obrazu wideo . . . . . . . . . . . Korekcja położenia pochodzaca ˛ od systemu wizyjnego . . . . . . . . Podsumowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 45 46 48 51 51 53 55 57 A Schematy elektroniki 59 B Wymiary robota 65 C Fotografie 69 Bibilografia 76 Rozdział 1 Wst˛ep Poruszanie si˛e dowolnego robota mobilnego wia˛że si˛e z problemem określania jego położenia. Każdy poruszajacy ˛ si˛e obiekt powinien posiadać informacj˛e dokad ˛ zmierza oraz gdzie aktualnie si˛e znajduje. W celu określenia pozycji można zastosować wiele rodzajów układów sensorycznych. Wybór zależy od warunków pracy, zakłóceń, wymaganej dokładności oraz obszaru poruszania si˛e obiektu. Globalnym systemem nawigacji jest system GPS stosowany do określania pozycji obiektów poruszajacych ˛ si˛e na dużych odległościach. Za jego pomoca˛ można określić pozycj˛e samolotu, czy samochodu. Jednak gdy samochód wjedzie do tunelu sygnał znika i pojazd traci łaczność ˛ z satelita.˛ Takiego systemu nie można stosować w obszarach wymagajacych ˛ wysokiej precyzji określania położenia. Inne systemy zawieraja˛ układy sensoryczne wyposażone w żyroskopy, akcelerometry,akcelerometry, enkodery, czy też kompasy. Położenie można dodatkowo określić używajac ˛ znaczników radiowych. Sygnały radiowe wykorzystywane sa˛ m.in. w rolnictwie do dokładnego określania pozycji maszyny wykonujacej ˛ prace na polu. Systemy takie charakteryzuja˛ si˛e wysoka˛ precyzja,˛ jednak niezb˛edne jest wcześniejsze, bardzo dokładne rozstawienie nadajników radiowych. Do wykrywania przeszkód cz˛esto służa˛ dalmierze optyczne wykorzystujace ˛ fale podczerwone oraz sonary. Dodatkowo coraz cz˛eściej stosuje si˛e kamery określajace ˛ położenie obiektów oraz wykrywajace ˛ przeszkody. Aby zapewnić niezawodność systemu śledzenia położenia stosuje si˛e systemy posiadajace ˛ kilka rodzajów czujników. W przypadku platform mobilnych najcz˛eściej wykorzystywanymi czujnikami sa˛ enkodery zliczajace ˛ obroty kół. Tego rodzaju czujniki zwykle bardzo dobrze nawiguja˛ robota, jednak gdy koła ulegaja˛ poślizgom pozycja odczytana może być nieprawidłowa. Do wykrywania poślizgów i zderzeń moga˛ służyć czujniki przyspieszenia. W ramach niniejszej pracy przewidziana jest realizacja systemu śledzenia pozycji platformy mobilnej oraz wykonanie samej platformy, która ma być lokalizowana przez stworzony system. Przewiduje si˛e, że b˛edzie on zrealizowany w oparciu o układ wizyjny i istniejacy ˛ pakiet oprogramowania pozwalajacy ˛ na identyfikacj˛e znaczników. Oprócz lokalizacji platformy za pomoca˛ systemu wizyjnego, jej pozycja ma być również wyznaczana na podstawie wskazań enkoderów oraz czujników bezwładnościowych. Oprogramowanie całego stanowiska powinno umożliwić porównanie wskazań w odniesieniu do systemu wizyjnego. Należy również określić eksperymentalnie bład ˛ wyznaczenia położenia platformy za pomoca˛ samego systemu wizyjnego. Rozdział 2 Kinematyka i dynamika platformy mobilnej klasy (2,0) 2.1 Kinematyka nieholonomicznej platformy mobilnej klasy (2,0) Przyjmujac ˛ założenie, że platforma mobilna porusza si˛e bez poślizgów i buksowania kół, można wyprowadzić ograniczenia fazowe w postaci Pfaffa[14] A(q)q̇ = 0 (2.1) Takie ograniczenia dla platform mobilnych oznaczaja,˛ że w punkcie kontaktu koła z podłożem wektor pr˛edkości jest zerowy. W tym celu należy przyjać ˛ nast˛epujacy ˛ wektor stanu, który zawiera wszystkie współrz˛edne niezb˛edne do wyznaczenia równań kinematyki platformy mobilnej x y (2.2) q= θ , φ 1 φ2 gdzie x, y - współrz˛edne robota, θ - orientacja, φ1 , φ2 - katy ˛ obrotu kół wokół ich własnej osi. Brak poślizgu bocznego można określić poniższym równaniem: ẋ · sinθ − ẏcosθ = 0. (2.3) Ograniczenia na poślizg wzdłużny i brak buksowania kół zostały przedstawione w ogólnej postaci dla i-tego koła jako: Vi − Rφi = 0, (2.4) ẋi = Vi cosθ, (2.5) ẏi = Vi sinθ, (2.6) gdzie Vi to pr˛edkość liniowa i-tego koła, a xi i yi to jej składowe wzdłuż odpowiednich osi. Pr˛edkość liniowa˛ można przedstawić w postaci sumy składowych Vi = ẋi cosθ + ẏi sinθ. Pr˛edkość koła pierwszego w kierunku każdej z osi można wyprowadzić nast˛epujaco: ˛ (2.7) 6 2. Kinematyka i dynamika platformy mobilnej klasy (2,0) Rysunek 2.1 Ruch robota na płaszczyźnie. x1 = x + L2 sinθ, y1 = y − L2 cosθ, po zróżniczkowaniu ẋ1 = ẋ1 + θ̇ L2 cosθ, ẏ1 = ẏ1 − θ̇ L2 sinθ. Podstawiajac ˛ powyższe zależności do równania (2.7) oraz korzystajac ˛ z zależności (2.4) otrzymujemy ostatecznie równanie opisujace ˛ brak poślizgów wzdłużnych koła pierwszego ẋ1 cosθ + ẏ1 sinθ + L θ̇ − Rφ̇1 = 0. 2 (2.8) Analogicznie wyprowadzajac ˛ ograniczenie dla drugiego koła ostatecznie otrzymano ẋ2 cosθ + ẏ2 sinθ − L θ̇ − Rφ̇2 = 0. 2 (2.9) Ostatecznie równania (2.3) (2.8) (2.9) można zapisać w postaci Pfaffa: sinθ −cosθ 0 0 0 L −R 0 A(q)q̇ = cosθ sinθ 2 L cosθ sinθ − 2 0 −R ẋ ẏ θ̇ φ̇1 φ̇2 . (2.10) Nast˛epnie należy znaleźć macierz G(q), której kolumny rozpinaja˛ przestrzeń liniowa˛ jadra ˛ macierzy A(q) oraz spełniajac ˛ a˛ warunek A(q)G(q)[nxm] ≡ 0, (2.11) gdzie m = n − l, l-liczba zmiennych stanu, n-ilość ograniczeń. Można ja˛ wybrać w nast˛epujacy ˛ sposób: cosθ cosθ sinθ sinθ 2 − L2 (2.12) G(q) = L . 2 0 R 2 0 R 2.2. Model dynamiki 7 Ostatecznie można przedstawić model kinematyki platformy mobilnej klasy (2,0) w postaci bezdryfowego układu sterowania q̇ = ẋ ẏ θ̇ φ̇1 φ̇2 cosθ cosθ sinθ sinθ 2 = − L2 L 2 0 R 2 0 R η1 η2 ! = G(q)η. (2.13) Pr˛edkości pomocnicze η1 i η2 (spełniaja˛ rol˛e sterowań) maja˛ sens przeskalowanych pr˛edkości obrotu poszczególnych kół platformy, co opisuje 4 i 5 wiersz równania (2.13). Za pomoca˛ pr˛edkości η1 i η2 można wyrazić pr˛edkość liniowa˛ v i obrotowa˛ ω platformy v ω 2.2 ! = η1 + η2 2 L (η1 − η2 ) ! . (2.14) Model dynamiki W celu wyprowadzenia modelu dynamiki robota z ograniczeniami (2.1), należy najpierw zdefiniować funkcj˛e Lagrange’a[8] (zwana˛ lagranżjanem) dla układu swobodnego (bez ograniczeń fazowych): L(q, q̇) = K(q, q̇) − V (q), (2.15) gdzie K(q, q̇) - energia kinetyczna układu, V (q) - energia potencjalna układu swobodnego. Na mocy zasady najmniejszego działania Hamiltona, równania dynamiki układu robotycznego przyjmuja˛ postać równań Eulera-Lagrange’a[8] d ∂L(q, q̇) ∂L(q, q̇) − = F, dt ∂ q̇ ∂q (2.16) gdzie wektor F symbolizuje uogólnione siły niepotencjalne działajace ˛ na układ (m.in. sterowania). Układ (2.16) jest układem równań różniczkowych drugiego rz˛edu, ∂ 2 L(q, q̇) ∂L(q, q̇) ∂ 2 L(q, q̇) q̈ + q̇ − = F. 2 ∂ q̇ ∂q∂ q̇ ∂q (2.17) Energia kinetyczna ma postać formy kwadratowej pr˛edkości uogólnionej z symetryczna˛ i dodatnio określona˛ macierza˛ 1 K(q, q̇) = q̇ T Q(q)q̇. (2.18) 2 Podstawiajac ˛ zależność (2.18) do równania (2.17) otrzymujemy nast˛epujac ˛ a˛ postać ogólna˛ równania dynamiki układu robotycznego[14] Q(q)q̈ + C(q, q̇)q̇ + D(q) = F, gdzie (2.19) 8 2. Kinematyka i dynamika platformy mobilnej klasy (2,0) Q(q) - macierz bezwładności układu, C(q, q̇) = D(q) = 1 ∂ d dt Q(q) − 2 ∂q (Q(q)q̈) ∂V (q) ∂q - macierz sił Coriolisa i odśrodkowych, - wektor sił grawitacji. Zgodnie z zasada˛ d’Alemberta siły uogólnione F zapewniajace ˛ spełnienie ograniczeń fazowych (2.1) nie wykonuja˛ pracy na dopuszczalnych przemieszczeniach. Ponieważ na robota działaja˛ uogólnione siły zewn˛etrzne (w postaci sterowań silnikami) na mocy zasady d’Alemberta i równania (2.17) otrzymujemy zmodyfikowana˛ postać równań dynamiki Q(q)q̈ + C(q, q̇)q̇ + D(q) = AT (q)λ + Bu, (2.20) gdzie λ = (λ1 , λ2 , · · · , λl ) jest wektorem niezdeterminowanych mnożników Lagrange’a, B - macierz sterowań. Z postaci ograniczeń fazowych zdefiniowanych równaniem (2.1) wynika, że dla układu istnieja˛ pewne pomocnicze pr˛edkości spełniajace ˛ zależność q̇ = G(q)η, (2.21) q̈ = Ġ(q)η + G(q)η̇ (2.22) a po zróżniczkowaniu W celu wyeliminowania mnożników Lagrange’a korzystamy z zależności GT (q)AT (q) = 0 (2.23) i mnożymy lewostronnie równanie (2.20) przez GT (q). Dodatkowo korzystajac ˛ z zależności (2.21) oraz (2.22) otrzymujemy równania ruchu dla układu z ograniczeniami fazowymi (2.1) bez mnożników Lagrange’a GT (q)Q(q)G(q)η̇ + GT (q)(Q(q)Ġ(q) + C(q, q̇)G(q))η + GT (q)D(q) = GT (q)Bu, (2.24) co można skrótowo zapisać w postaci Q∗ (q)η̇ + C ∗ (q, q̇)η + D∗ (q) = B ∗ u. (2.25) W przypadku skonstruowanej platformy mobilnej kolejne macierze maja˛ nast˛epujac ˛ a˛ postać[10]: Q∗ (q) = Mt + Ip 2 (L 2) Mt − ∗ Mt − + 4Mk Ip 2 (L 2) B = " Mt + 2 R 0 0 2 R Ip 2 (L 2) Ip 2 (L 2) + 4Mk , (2.26) # , (2.27) gdzie Mk – masa koła, Mt – całkowita masa platformy z kołami, Ip – całkowity moment bezwładności platformy wzgl˛edem osi OZ jej lokalnego układu współrz˛ednych, L – szerokość platformy, R – promień koła. Macierze C(q, q̇) i D(q) maja˛ wszystkie elementy zerowe. 2.3. Sterownik kinematyczny Lee, Lee i Tenga 2.3 9 Sterownik kinematyczny Lee, Lee i Tenga Rozważmy równanie wyprowadzone w punkcie 2.1 kinematyki platformy jezdnej klasy (2,0): ẋ cosθ · v ẏ = sinθ · v , ω θ̇ v ω ! = η1 + η2 2 L (η1 − η2 ) ! , (2.28) gdzie (x, y) jest wektorem współrz˛ednych kartezjańskich środka osi, na której umieszczone sa˛ koła robota, natomiast θ jest jej orientacja˛ wzgl˛edem osi OX lokalnego układu odniesienia (rysunek 2.1). Zadaniem platformy jest śledzenie pewnej trajektorii. Trajektoria zadana musi spełniać warunki ograniczeń nieholonomicznych nałożonych na układ (brak poślizgów i buksowania kół). Pr˛edkości vd i ωd sa˛ to pr˛edkości jakie musi mieć pojazd, aby realizować zadana˛ trajektori˛e (xd (t), yd (t), ωd (t)). W celu przedstawienia algorytmu sterowania kinematyka˛ zdefiniujmy bł˛edy śledzenia trajektorii w taki sposób ex cosθ sinθ 0 xd − x xe ye = Rot(Z, −θ) ey = −sinθ cosθ 0 yd − y . eθ 0 0 1 θd − θ θe (2.29) Algorytm Lee, Lee i Tenga zapewnia asymptotyczna˛ zbieżność bł˛edów odniesienia xe , ye , θe do zera. Sterowanie vr , ωr zapewniajace ˛ zbieżność bł˛edów odniesienia do zera[10] przedstawiono na poniższych równaniach: vr = k0 xe + vd cosθe , (2.30) ωr = 1 + εye β + k1 (θe + ), α a+Λ (2.31) gdzie β=ε ḣye −hωd xe +hvd sinθe hye 2 − (1+Λ) 2 Λ (ye vd sinθe − k0 xe ) 1+Λ εhθe ye e α = a + εhx − (1+Λ) 2Λ q 1+Λ 2 2 2 Λ = θe + xe + ye , (2.32) 1 gdzie k0 , k1 > 0, h(t) = 1+γcos(t−t0 ), 0 < γ < 1, oraz 0 < ε < 2(1+γ) . Działanie algorytmu zależy od dobranych parametrów. Warto wspomnieć, że wybór parametrów zależy od rodzaju trajektorii zadanej. Pr˛edkości referencyjne niezb˛edne do działania sterownika dynamicznego (punkt 2.4) uzyskujemy korzystajac ˛ z przekształcenia η1ref = 21 (v + Lω) η2ref = 12 (v − Lω). (2.33) 10 2.4 2. Kinematyka i dynamika platformy mobilnej klasy (2,0) Sterownik dynamiczny - algorytm dokładnej linearyzacji Do obiektu robotycznego (2.25) dołaczamy ˛ sterowanie postaci[10] u = (B ∗ )−1 {Q∗ ω + C ∗ η}, (2.34) gdzie ω jest wektorem nowych wejść do układu zlinearyzowanego. Wówczas równanie zamkni˛etej p˛etli układu (2.25) ze sterowaniem (2.34) jest nast˛epujace ˛ η̇ = ω. (2.35) Aby zapewnić śledzenie trajektorii w powyższym układzie liniowym wybierzmy nast˛epujace ˛ sterowanie ω = η̇r − Km (η − ηr ), (2.36) przy czym macierz Km jest diagonalna i dodatnio określona. 2.5 Wyznaczanie drogi na podstawie przyspieszeń Pr˛edkość jest zmiana˛ położenia w czasie, natomiast przyspieszenie określa szybkość zmiany pr˛edkości. Innymi słowy pr˛edkość jest pochodna˛ położenia a przyspieszenie jest pochodna˛ pr˛edkości. Zachodzi także relacja odwrotna. Całkujac ˛ przyspieszenie otrzymujemy pr˛edkość oraz analogicznie otrzymujemy położenie po scałkowaniu pr˛edkości. Podsumowujac, ˛ położenie otrzymujemy po dwukrotnym scałkowaniu wartości przyspieszenia[12] V = Zt a dt, (2.37) 0 s= Zt V dt = 0 Zt Zt ( a dt)dt. 0 (2.38) 0 Przedstawiona zależność jest prawdziwa dla układów ciagłych. ˛ W układach dyskretnych jakimi sa˛ niewatpliwie ˛ systemy mikroprocesorowe pomiary dokonywane sa˛ w odst˛epach czasu (najcz˛eściej stałych). Im cz˛eściej próbkujemy sygnał, tym dokładniejszy mamy obraz sygnału wejściowego. W przypadku dyskretyzacji całkowania równanie (2.38) staje si˛e suma˛ pobranych próbek sygnału (ponieważ całka jest interpretowana jako pole pod krzywa) ˛ s= n X i=1 Vi ∆t = n X i X ( ak ∆t)∆t, (2.39) i=1 k=1 gdzie ∆t - okres próbkowania, Vi - wartość pr˛edkości po i próbkach, ak - k-ta próbka wartości przyspieszenia. Ilustracj˛e równania (2.39) przedstawia rysunek 2.2. Wspomniany sposób całkowania nazywany jest całkowaniem metoda˛ prostokatów. ˛ Jest to najprostszy sposób numerycznego wyznaczania całki z funkcji (rysunek 2.3). Najwi˛eksza˛ wada˛ tej metody jest spora niedokładność obliczanej sumy ze wzgl˛edu na dyskretny charakter dokonywanych pomiarów. Bład ˛ całkowania wzrasta wraz ze zwi˛ekszaniem si˛e cz˛estotliwości badanego sygnału. Ilustracj˛e problemu przedstawia rysunek 2.4. Warto zwrócić uwag˛e, że przy sygnale narastajacym ˛ metoda prostokatów ˛ generuje zawsze niższa˛ sum˛e niż sygnał rzeczywisty, natomiast przy sygnale opadajacym ˛ suma jest nieco wi˛eksza od badanego sygnału (rysunek 2.5. Wyznaczanie drogi na podstawie przyspieszeń 11 Rysunek 2.2 Otrzymywanie drogi na podstawie przyspieszeń. Rysunek 2.3 Całkowanie metoda˛ prostokatów. ˛ 2.3), co prowadzi do wniosku, że poruszajac ˛ si˛e z pewnym przyspieszeniem a w czasie t, a nast˛epnie z przyspieszeniem −a w takim samym czasie nie powrócimy do punktu startowego. Jednym z najprostszych sposobów minimalizacji bł˛edów całkowania jest zastosowanie metody trapezów (rysunek 2.5). Nazwa metody pochodzi od reprezentacji kolejnych próbek w postaci trapezów prostokat˛ nych (rysunek 2.5). Każda próbka sygnału dzielona jest na dwie cz˛eści. Jedna z nich jest prostokatem, ˛ który mieści si˛e całkowicie pod krzywa.˛ Kolejna jest trójkatem ˛ powstałym przez podzielenie pozostałej cz˛eści prostokata ˛ na dwa równe trójkaty. ˛ Z powstałych cz˛eści składany jest trapez. Pole powierzchni n-tej próbki przedstawia zależność (2.40) zgodnie z rysunkiem 2.5. ! P robkan − P robkan−1 P olen = P robkan−1 + T, 2 gdzie T oznacza czas pomi˛edzy kolejnymi próbkowaniami. (2.40) 12 2. Kinematyka i dynamika platformy mobilnej klasy (2,0) Rysunek 2.4 Bład ˛ całkowania metoda˛ prostokatów. ˛ Rysunek 2.5 Całkowanie metoda˛ trapezów. 2.6 Wyznaczanie pr˛edkości obrotowej na podstawie przyspieszeń Metoda opiera si˛e na zjawisku przyspieszenia odśrodkowego. Jest ono zależne od wartości pr˛edkości katowej ˛ oraz promienia krzywizny po jakiej porusza si˛e obiekt (2.41) a= ω2 . r (2.41) Przekształcajac ˛ równanie (2.41) otrzymujemy zależność modułu pr˛edkości obrotowej od wartości przyspieszenia odśrodkowego √ |ω| = ar. (2.42) Ponieważ w skonstruowanym robocie oś Y akcelerometru pokrywa si˛e z osia˛ symetrii platformy (rysunek 2.6) możliwe jest bezpośrednie odczytanie przyspieszenia odśrodkowego a = ay . Aby otrzymać kierunek obracania si˛e robota należy odczytać znak przyspieszenia z osi prostopadłej, a dokładniej znak pr˛edkości liniowej po okr˛egu (scałkowana wartość przyspieszenia (punkt 2.5). Dodatnia pr˛edkość liniowa w kierunku osi x akcelerometru jest równoważna z dodatnia˛ pr˛edkościa˛ obrotowa.˛ Orientacj˛e platformy uzyskujemy dzi˛eki scałkowaniu wartości pr˛edkości obrotowej θ= Z t 0 ωdt. (2.43) 2.7. Zjawisko aliasingu 13 Rysunek 2.6 Położenie akcelerometru w skonstruowanej platformie mobilnej. 2.7 Zjawisko aliasingu Z przetwarzaniem sygnału analogowego na cyfrowy wia˛że si˛e poj˛ecie dyskretyzacji. Polega ono na wykonywaniu pomiarów badanego sygnału w określonych odst˛epach czasu, ograniczonych z góry maksymalna˛ cz˛estotliwościa˛ pracy przetwornika. W technice mikroprocesorowej wia˛że si˛e to ze zamiana˛ sygnału napi˛ecia na reprezentacj˛e liczbowa˛ zgodna˛ z rozdzielczościa˛ zastosowanego przetwornika. Ze wzgl˛edu na dyskretny charakter wykonywanych pomiarów nie wiadomo jak wyglada ˛ przebieg sygnału pomi˛edzy dokonanymi próbkowaniami. Aby sygnał cyfrowy prawidłowo odwzorowywał sygnał analogowy niezb˛edna jest wiedza na temat widma cz˛estotliwościowego sygnału analogowego. Bez niej wykonane pomiary moga˛ dać bł˛edne wyniki, co ilustruje rysunek 2.7. Zbyt mała cz˛estotliwość pomiarów źle odwzorowuje badany sygnał - jest to zjawisko aliasingu. Rysunek 2.7 Zjawisko aliasingu. Aby zapobiec bł˛ednej interpretacji badanego sygnału niezb˛edne jest próbkowanie co najmniej z odpowiednia˛ cz˛estotliwościa˛ minimalna.˛ Zgodnie z twierdzeniem Shannona−N yquista cz˛estotliwość próbkowania sygnału musi być wi˛eksza niż dwukrotność cz˛estotliwości badanego sygnału. Oczywiście im krótsze sa˛ odst˛epy próbkowania tym lepiej odwzorowany zostanie sygnał rzeczywisty. Jeśli nie posiadamy wiedzy o szerokości pasma sygnału analogowego lub nie możemy osia˛ gnać ˛ minimalnej cz˛estotliwości próbkowania niezb˛edne jest zastosowanie analogowego filtru dolnoprzepustowego, tak aby cz˛estotliwość odci˛ecia sygnału była co najmniej dwa razy mniejsza od cz˛estotliwości próbkowania z jaka˛ zamierzamy badać sygnał. Rozdział 3 Pakiety do wyszukiwania znaczników w obrazie wideo 3.1 Przeglad ˛ narz˛edzi do wyszukiwania znaczników ARToolKit plus jest narz˛edziem stworzonym do wyznaczania pozycji i orientacji kamery wzgl˛e- dem znaczników w czasie rzeczywistym. Narz˛edzie jest rozszerzeniem pakietu zastosowanego w niniejszej pracy magisterskiej. Oprogramowanie jest dedykowane dla doświadczonych programistów C++, wcześniej korzystajacych ˛ z ARToolKit. Pakiet oprogramowania przestał być rozwijany w 2006, mimo to jest nadal udost˛epniany. Wykorzystuje znaczniki, które potrafi znaleźć w obrazie wideo oraz określić ich pozycje i orientacj˛e. Nast˛epca˛ pakietu ARToolKit plus jest Studierstube Tracker. Jest pakietem oprogramowania bardzo podobnym do ARToolKit plus, jednak o znaczaco ˛ różniacym ˛ si˛e kodzie źródłowym. Narz˛edzie charakteryzuje si˛e bardzo niskim wykorzystaniem pami˛eci oraz bardzo szybkim przetwarzaniem obrazu (około 2 razy szybszy od ARToolKit plus). Kolejna˛ cecha˛ jest duża stabilność położenia znacznika oraz dynamicznie dobierany próg jasności. W przypadku pakietu ARToolKit próg jasności jest dobierany r˛ecznie przez użytkownika. Podobnie jak ARToolKit pakiet oprogramowania opiera si˛e na wyszukiwaniu znaczników w obrazie. Narz˛edzie posiada zamkni˛ety kod oprogramowania. Ostatnim przedstawianym pakietem oprogramowania do wyszukiwania znaczników w obrazie wideo jest ARToolKit professional. Jest to obecnie najpopularniejsze narz˛edzie stosowane w aplikacjach wirtualnej rzeczywistości. Narz˛edzie jest rozwijane od 10 lat. Jest udost˛epniane jedynie odpłatnie. Pakiet podobnie jak ARToolKit potrafi wyszukiwać dowolnie definiowane znaczniki w kształcie kwadratu. Oprogramowanie cechuje si˛e bardzo wysoka˛ dokładnościa˛ i stabilnościa˛ wyszukiwania znacznika. Rysunek 3.1 Sposób działania wirtualnego muzeum. 16 3. Pakiety do wyszukiwania znaczników w obrazie wideo Ciekawym przykładem zastosowania wspomnianych pakietów oprogramowania jest wirtualne muzeum. W pomieszczeniu zamiast obrazów, lub innych eksponatów umieszczono na ścianach znaczniki rozpoznawane przez ARToolKit. Odpowiednie oprogramowanie pozwala na rozpoznawanie znacznika w telefonie komórkowym, nast˛epnie telefon komunikuje si˛e z komputerem w celu otrzymania zdj˛ecia, które powinno być wyświetlone zamiast znacznika (rysunek 3.1). 3.2 ARToolKit ARToolKit jest wysokopoziomowa˛ biblioteka˛ wykorzystywana˛ do rozpoznawania i śledzenie obiektów za pomoca˛ kamery. Główna˛ zasada˛ działania biblioteki jest wyszukiwanie wzorca umieszczonego w kwadracie. Przykładowy wzorzec przedstawia rysunek 3.2. Wzorce moga˛ Rysunek 3.2 Przykładowy wzorzec rozpoznawany przez ARToolKit. być dowolne i wielokolorowe. Ważne jest aby były umieszczone w kwadracie z czarna˛ obwódka˛ (jak na rysunku 3.2). Do stworzenia wzorca służy specjalnie w tym celu napisana aplikacja, która jest dostarczana razem z biblioteka.˛ Biblioteka działa na wielu platformach systemowych (Linux, Windows, MAC OS X, SGI). ARToolKit umożliwia śledzenie kilku znaczników jednocześnie, oraz współprac˛e z wieloma rodzajami kamer wideo. Wykorzystuje m.in. OpenGL oraz bibliotek˛e GLUT (rysunek 3.3). Działa w czasie rzeczywistym. Przeci˛etny komputer jest w stanie przetworzyć 10 ramek na sekund˛e przy rozmiarze wideo 960x720 pikseli. Algorytm wykrywania wzorca przedstawia rysunek 3.4. Pierwszym etapem przetwarzania wideo jest progowanie jasności obrazu, czyli dzielenie pikseli na jaśniejsze i ciemniejsze od zadanego progu. Dzi˛eki temu otrzymujemy obraz binarny którego rozmiar, a co za tym idzie szybkość obliczeń, jest znacznie mniejszy. Nast˛epnie obraz binarny jest porównywany ze wzorcem w celu odnalezienia znacznika. Kolejnym krokiem jest wyszukiwanie konturów, czyli granic znaczników oraz zapisanie wzorów na proste przechodzace ˛ przez te linie w strukturze danych opisujacych ˛ znacznik. Po wykryciu narożników znacznika jest on porównywany ze wzorcem umieszczonym w pliku. Nast˛epuje normalizacja, ponieważ wzorzec może być ustawiony pod różnym katem ˛ do kamery. Warto zwrócić uwag˛e, że biblioteka wykorzystuje prawdopodobieństwo do określania czy wykryta figura jest znacznikiem. Za znacznik uznawany jest kontur, który ma najwyższe prawdopodobieństwo bycia znacznikiem. Końcowym efektem przetwarza- 3.2. ARToolKit 17 Rysunek 3.3 Architektura biblioteki ARToolKit. nia jest macierz transformacji pomi˛edzy układem współrz˛ednych kamery i znacznika " R T 0 1 # = cosϕcosυ cosϕsinυsinψ − sinϕcosψ cosϕsinυcosψ + sinϕsinψ sinϕcosυ sinϕsinυsinψ + cosϕcosψ sinϕsinυcosψ − cosϕsinψ −sinυ cosυsinψ cosυcosψ 0 0 0 x y z 1 , (3.1) gdzie R – cz˛eść rotacyjna, T – cz˛eść translacyjna, ϕ – kat ˛ obrotu wokół osi Z, υ – kat ˛ obrotu wokół osi Y , ψ – kat ˛ obrotu wokół osi X, x – translacja wzdłuż osi X, y – translacja wzdłuż osi Y , z – translacja wzdłuż osi Z. W celu wyznaczenia położenia i orientacji platformy mobilnej wzgl˛edem płaszczyzny po jakiej si˛e porusza niezb˛edna jest zamiana układu współrz˛ednych odniesienia. Poczatkowo ˛ należy wyznaczyć nowy układ współrz˛ednych poprzez ustawienie robota w dowolnej pozycji oraz obliczenie macierzy transformacji pomi˛edzy kamera˛ i znacznikiem znajdujacym ˛ si˛e na robocie. Nast˛epnie należy wyliczyć macierz odwrotna,˛ tzn. transformacj˛e z układu współrz˛ednych znacznika do układu współrz˛ednych kamery. Aby otrzymać położenie znacznika wzgl˛edem nowego układu współrz˛ednych należy pomnożyć macierz przejścia z nowego układy współrz˛ednych do układu kamery przez transformacj˛e z układu kamery do układu znacznika (robota). Wynikowa macierz jest macierza˛ transformacji z nowego układu współrz˛ednych do układu znacznika (robota). Ponieważ w macierzy obrotu nie ma jawnie wyznaczonego kata ˛ obrotu wokół osi Z należy skorzystać z 1 i 2 wiersza pierwszej kolumny cz˛eści obrotowej (3.1) r21 sinϕcosυ ϕ = arctg = arctg r11 cosϕcosυ ! ! sinϕ = arctg = arctg(tg(ϕ)). cosϕ (3.2) 18 3. Pakiety do wyszukiwania znaczników w obrazie wideo Rysunek 3.4 Algorytm wyszukiwania wzorca. Rozdział 4 Platforma mobilna 4.1 Ogólna charakterystyka Skonstruowana platforma jest robotem mobilnym klasy (2,0). Posiada dwa niezależnie nap˛edzane koła. Nie jest wyposażona w koła skr˛etne, mimo to potrafi poruszać si˛e w każdym kierunku na płaszczyźnie. Rysunek 4.1 Schemat blokowy zbudowanej platformy mobilnej. Oprócz dwóch kół zamontowano także trzeci punkt podparcia (kula), który potrafi poruszać si˛e w każdym kierunku. Robot został wyposażony w dwa enkodery magnetyczne (punkt 4.2.1), dzi˛eki którym możliwy jest pomiar położenia (po odpowiednich obliczeniach, także pr˛edkości 20 4. Platforma mobilna obrotowej) kół. Dodatkowymi czujnikami sa˛ akcelerometr analogowy trzyosiowy oraz żyroskop. Robot komunikuje si˛e z komputerem poprzez moduł Bluetooth. Główne cechy robota: • robot klasy (2,0), • dwa mikrokontrolery: AT91SAM7S256 oraz MC68HCS12a64, • bezprzewodowa komunikacja Bluetooth, • bateria (Li-Pol) 2200mAh, • czujniki: enkodery magnetyczne, żyroskop, akcelerometr, • pr˛edkość maksymalna ok 18cm/s. Robot został wyposażony w dwa mikrokontrolery: ARM7 (punkt 4.5) firmy Atmel oraz HC12 (punkt 4.4) firmy Freescale. Mikrokontroler HC12 zajmuje si˛e sterowaniem pr˛edkościa˛ obrotowa˛ kół. Został na nim zaimplementowany regulator PID. Informacj˛e o nastawach otrzymuje poprzez interface SPI. Sterownikiem nadrz˛ednym jest ARM7. Zajmuje si˛e on zbieraniem danych z czujników, obliczaniem aktualnej pozycji, generowaniem trajektorii, sterowaniem oraz komunikacja˛ z komputerem. Wszystkie obliczenia wykonywane sa˛ z cz˛estotliwościa˛ 100Hz. 4.2 4.2.1 Czujniki Enkoder magnetyczny AS5045 Zastosowany enkoder magnetyczny[5] został wyprodukowany przez firm˛e Austria Microsystems. Jego zasada działania opiera si˛e na pomiarze nat˛eżenia pola magnetycznego tworzonego przez znajdujacy ˛ si˛e w pobliżu magnes (rysunek 4.2). Domyślnie czujnik pracuje z rozdzielczościa˛ 12 bitów, dzi˛eki czemu czułość pomiaru wynosi 0, 0879o . Możliwe sa˛ także 3 inne rozdzielczości: 1024, 256 oraz 64 bity. Maksymalna pr˛edkość obrotowa przy najmniejszej dokładności pomiaru jest bliska 10000 obr/min. Rysunek 4.2 Typowe umieszczenie magnesu. Odczyt danych z czujnika możliwy jest poprzez interface SSI (Synchronous Serial Interface). Dodatkowo enkoder został wyposażony w wyjście PWM o stałej cz˛estotliwości i wypełnieniu zależnym od pozycji magnesu. Układ może pracować w dwóch standardach napi˛eciowych: 5V lub 3,3V. 4.2. Czujniki 21 Rysunek 4.3 Rozmieszczenie pinów enkodera AS5045. Opis wyprowadzeń przedstawiono w tabeli 4.1. Komunikacja za pomoca˛ interfejsu SSI wyNumer 1 2 6 7 8 9 10 11 12 15 16 Nazwa MagINCn MagDECn Mode VSS Prog_DI DO CLK CSn PWM VDD3V3 VDD5V Opis Określa czy magnes si˛e oddalił Określa czy magnes si˛e zbliżył Wybór pomi˛edzy szybkim i wolnym trybem pomiaru Masa Wejście programowania Wyjście danych interfejsu SSI Wejście zegarowe interfejsu SSI Chip Select Wyjście sygnału PWM Wyjście 3,3V z wew. regulatora Wejście zasilania od 3V do 5,5V Tabela. 4.1 Opis wyprowadzeń enkodera magnetycznego AS5045. maga każdorazowo wysłania 18 bitów (rysunek 4.4). Pierwsze 12 bitów oznacza pozycj˛e magnesu. Pozostałe 6 bitów sa˛ bitami kontrolnymi kolejno oznaczajacymi: ˛ • OCF – jedynka oznacza zakończony pomiar - dane poprawne, • COF – jedynka oznacza, że magnes jest zbyt daleko czujnika, 0 - dane poprawne, • LIN – 0 oznacza, że dane sa˛ prawidłowe, • MagINC/MagDEC – odpowiednio: oddalenie lub zbliżenie si˛e magnesu, • Even Par – bit parzystości. Maksymalna cz˛estotliwość komunikacji wynosi 1 MHz. W trybie szybkim (pin mode niepodłaczony ˛ lub w stanie wysokim) czas konwersji wynosi 96µs, co daje możliwość pomiaru pr˛edkości obrotowej do 153 obr/min przy maksymalnej rozdzielczości. 22 4. Platforma mobilna Rysunek 4.4 Komunikacja z enkoderem magnetycznym AS5045. 4.2.2 Akcelerometr MMA7260 Trójosiowy akcelerometr firmy Freescale[7] jest analogowym czujnikiem przyspieszenia. Posiada 4 programowalne czułości w zakresach od 1.5g do 6g. Mierzy przyspieszenie w trzech osiach. Gdy na danej osi przyspieszenie ma wartość zerowa˛ na odpowiednim dla tej osi pinie powinno być napi˛ecie równe połowie napi˛ecia zasilania. Opis uzyskiwania pr˛edkości liniowej i obrotowej znajduje si˛e w punktach 2.5 oraz 2.6. Cechy akcelerometru: • Pomiar przyspieszenia w trzech osiach, • Wyjścia analogowe, • 4 zakresy pracy: 1,5g / 2g / 4g / 6g, • Niski pobór pradu: ˛ 0,5 mA oraz 3µA w stanie uspienia, • Napi˛ecie pracy od 2,2V do 3,6V, • Wymiary 6mm x 6mm x 1,45mm, obudowa QFN, • Pasmo sygnału ograniczone do 11kHz przez wew. filtr dolnoprzepustowy. Rysunek 4.5 Rozmieszczenie pinów akcelerometru MMA7260. Cz˛estotliwość próbkowania sygnału na wyjściach analogowych akceleromteru powinna być tak dobrana aby nieinterferowała z cz˛estotliwościa˛ 11kHz. Jest to wewn˛etrzna cz˛estotliwość próbkowania układu. Nieodpowiednio dobrana cz˛estotliwość może spowodować zjawisko aliasingu (punkt 2.7). 4.2. Czujniki 23 Numer 1,2 Nazwa g-Select1/2 3 4 12 13 14 15 VDD VSS Sleep Mode Zout Yout Zout Opis Ustawianie czułości akcelerometru 0,0: 1.5g - 800mV/g 0,1: 2g - 600mV/g 1,0: 4g - 300mV/g 1,1: 6g - 200mV/g Zasilanie 3,3V Masa Stan niski aktywuje uśpienie czujnika Wyjście napi˛eciowe osi Z Wyjście napi˛eciowe osi Y Wyjście napi˛eciowe osi X Tabela. 4.2 Opis wyprowadzeń akcelerometru MMA7260. 4.2.3 Żyroskop ADIS16100 Żyroskop jest urzadzeniem ˛ mierzacym ˛ pr˛edkość obrotowa.˛ Model ADIS16100 firmy Analog Devices dokonuje pomiaru w jednej osi. Głównymi cechami układu sa[2]: ˛ • wbudowany 12 bitowy przetwornik A/C (1MSPS), • wewn˛etrzny czujnik temperatury, • zakres pomiarów ±300o /s, • osobne źródło zasilania dla cz˛eści analogowej (5V) i cyfrowej (od 3V do 5V), • wymiary 8,2mm x 8,2mm x 5,2mm, obudowa LGA, • komunikacja poprzez interfejs SPI, • dwa dodatkowe wejścia do przetwornika A/C. Rysunek 4.6 Rozmieszczenie pinów w żyroskopie ADIS16100. Opis wyprowadzeń przedstawia tabela 4.3. Układ posiada wewn˛etrzny dolnoprzepustowy 24 4. Platforma mobilna Numer 1 2 3 5 6 7 8,9 10 11 12,13 14 Nazwa DIN SCLK DOUT RATE FILTR Vdrive AIN1/2 COM Vref ST2/1 Vcc Opis Wejście magistrali SPI (MOSI) Linia zegarowa magistrali SPI Wyjście danych magistrali SPI (MISO) Sygnał reprezentujacy ˛ pr˛edkość katow ˛ a˛ Wejście zewn˛etrznego kondensatora filtrujacego ˛ Zasilanie cz˛eści cyfrowej Zewn˛etrzne wejścia przetwornika A/C masa Wyjście napi˛ecia referencyjnego - 2,5V Wejścia testowe Zasilanie toru analogowego Tabela. 4.3 Opis wyprowadzeń żyroskopu ADIS16100. filtr RC. Fabryczna cz˛estotliwość odci˛ecia wynosi 40Hz. Istnieje możliwość zmiany tej cz˛estotliwości dzi˛eki dołaczeniu ˛ dodatkowego rezystora i kondensatora pomi˛edzy pinami RATE i FILTR. Poniższa zależność przedstawia wzór na wyznaczenie cz˛estotliwości z dołaczonym ˛ kondensatorem 1 fout = . (4.1) 2πRout (Cext + 0, 022µF ) gdzie Rout - wewn˛etrzny rezystor o wartości 180kΩ, Cext - zewn˛etrzny kondensator. Rezystancj˛e Rout można zmienić dołaczaj ˛ ac ˛ dodatkowy rezystor. Wtedy Rout wyznaczamy nast˛epujaco: ˛ Rout = 180kΩRext , 180kΩ + Rext (4.2) gdzie Rext oznacza wartość dołaczonego ˛ rezystora. Komunikacja z żyroskopem odbywa si˛e poprzez magistral˛e SPI. Każda ramka zawiera 16 bitów. Każdorazowo należy wysłać pełna˛ ramk˛e. W przeciwnym przypadku układ nie zakończy konwersji danych i nie zostana˛ one wysłane podczas nast˛epnego transferu. W czasie każdej komunikacji żyroskop odbiera dane, które określaja˛ z jakiego kanału przetwornika A/C należy dokonać pomiaru. Dane wysyłane zawieraja˛ wynik ostatniego pomiar oraz poprzednio wybrany kanał przetwornika (rysunek 4.7). Rysunek 4.7 Ramka komunikacji z żyroskopem ADIS16100. Opis kolejnych bitów nadawczych przedstawia tabela 4.4. 4.3. Filtr analogowy dolnoprzepustowy MAX7400 Nr bitu 15 13,12,7,6,3:0 11,10 4 Nazwa Write D/C ADD1, ADD0 CODE 25 Opis 1 - zapis komendy do pami˛eci wew. 0 - komenda nie ważna Nie ma znaczenia wybór kanału przetwornika 00: pr˛edkość obrotowa żyroskopu 01: czujnik temperatury 10/11: analogowe wejścia zewn˛etrzne 1 i 2 format danych wyjściowych 0: dane w kodzie uzupełnień do 2 (ze znakiem) 1: dane w kodzie binarnym bez znaku Tabela. 4.4 Opis bitów wysyłanych do żyroskopu ADIS16100. 4.3 Filtr analogowy dolnoprzepustowy MAX7400 MAX7400 jest układem filtrujacym ˛ sygnał napi˛eciowy. Jest filtrem analogowym, dolnoprzepustowym o charakterystyce eliptycznej. Wyprodukowany został przez firm˛e Maxim. Najważniejsze cechy[9]: • filtr dolnoprzepustowy 8-biegunowy, • regulowana cz˛estotliwość odci˛ecia od 1Hz do 10kHz, • tłumienie w paśmie zaporowym - 82dB, • niski pobór pradu ˛ - 2mA, • napi˛ecie zasilania 5V (dost˛epne także wersje 3,3V). Filtr charakteryzuje si˛e bardzo stromym przejściem od pasma przenoszenia do pasma zaporowego (rysunek 4.8) (r=1.5) oraz bardzo dużym współczynnikiem tłumienia cz˛estotliwości w paśmie zaporowym (-82dB). Rysunek 4.8 Odpowiedź cz˛estotliwościowa filtru MAX7400. 26 4. Platforma mobilna Układ został wykorzystany do filtracji sygnału pochodzacego ˛ z akcelereometru (rozdział 4.2.2). Dzi˛eki temu możliwe jest próbkowanie z cz˛estotliwościa˛ 100Hz, która jest dużo mniejsza od granicy pasma sygnału pochodzacego ˛ z akcelerometru, co zapobiega zjawisku aliasingu (rozdział 2.7). Cz˛estotliwość odci˛ecia fc można ustalić na dwa sposoby. Pierwszym jest dołaczenie ˛ do pinu CLK kondensatora o pojemności dobranej według równania K · 103 [Hz], fc = Cext · 100 (4.3) h i gdzie Cext [pF ] jest pojemnościa˛ dołaczonego ˛ kondensatora, K = 38 pF - stała zależna s od rodzaju filtru. Drugim sposobem ustalenia cz˛estotliwości odci˛ecia fc jest doprowadzenie do pinu CLK sygnału zegarowego, którego wypełnienie zawiera si˛e w przedziale zamkni˛etym pomi˛edzy 40% i 60%. Cz˛estotliwość odci˛ecia jest wtedy dana wzorem fc = fosc , 100 (4.4) gdzie fosc jest cz˛estotliwościa˛ doprowadzonego sygnału zegarowego. 4.4 Sterownik serwomechanizmów MC9S12A64 Mikrokontrolerem sterujacym ˛ pr˛edkościa˛ obrotowa˛ serw jest układ MC9S12a64[6] firmy Freescale. Mikrokontrolery z rodziny HC12 zostały wyposażone w bardzo wydajna,˛ 16-bitowa˛ jednostk˛e centralna˛ (CPU12). Ważna˛ zaleta˛ CPU12 jest wbudowany emulator z interfejsem BDM (Background Debug Mode). Interfejs pozwala na programowanie i debugowanie oprogramowania bezpośrednio na mikrokontrolerze. Schemat blokowy mikrokontrolera przedstawiono na rysunku 4.9. Główne cechy mikrokontrolera MC9S12a64 • 16 bitowa jednostka centralna CPU12, • szybkość procesora do 50MHz, • interfejs BDM, • wbudowane instrukcje Fuzzy Logic, • 64 kB wbudowanej pami˛eci FLASH, • 4 kB wbudowanej pami˛eci RAM, • 1024 bajty wbudowanej pami˛eci EEPROM, • 8-kanałowy, 10-bitowy przetwornik A/C, • 16-bitowy system timerów, • 16 bitowy akumulator impulsów, • 7-kanałowy modulator PWM, • interfejsy komunikacyjne: dwa SCI, SPI, I2 C, CAN, 4.4. Sterownik serwomechanizmów MC9S12A64 Rysunek 4.9 Schemat blokowy mikrokontrolera MC9S12a64. • obudowa QFP80, • napi˛ecie zasilania 3,3V – 5,5V, • wewn˛etrzny stabilizator napi˛ecia 2,5V. 27 28 4. Platforma mobilna 4.5 Sterownik główny AT91SAM7S256 Sterownikiem głównym skonstruowanej platformy mobilnej jest mikrokontroler AT91SAM7S256[4] firmy Atmel z bardzo wydajnym rdzeniem ARM7TDMI. Mikrokontrolery oparte na rdzeniu ARM uzyskuja˛ coraz wi˛eksza˛ popularność, ze wzgl˛edu na ich wysoka˛ moc obliczeniowa˛ przy stosunkowo energooszcz˛ednej architekturze. W kolejnych rdzeniach ARM uzyskano wydajność pozwalajac ˛ a˛ bezproblemowo uruchamiać nawet systemy operacyjne. Zdecydowano si˛e zastosować mikrokontroler z rdzeniem ARM7TDMI ze wzgl˛edu na jego popularność, dost˛epność oraz przyst˛epna˛ cen˛e. Mikrokontroler jest zbudowany zgodnie z architektura˛ von Neumanna, co oznacz, że ma wspólna˛ magistral˛e dla danych i rozkazów. Mikrokontroler z rdzeniem ARM7 znajduje si˛e w osobnym module (rysunek 4.10), który zapewnia stabilizacj˛e napi˛ecia, odpowiednia˛ p˛etl˛e PLL zapewniajac ˛ a˛ prac˛e z cz˛estotliwościa˛ 48MHz oraz zawiera złacze ˛ JTAG MULTI_ICE służace ˛ do programowania i debugowania. Rysunek 4.10 Moduł z mikrokontrolerem AT91SAM7s256. Głównymi cechami charakteryzujacy ˛ mikrokontroler AT91SAM7S256 sa: ˛ • Bardzo wydajna 32-bitowa architektura RISC, • Wbudowany emulator EmbeddedICE - debugowanie, interfejs JTag, • 256 kB pami˛eci flash, • 64 kB pami˛eci RAM, • wbudowany kontroler poboru mocy, • Zaawansowany kontroler systemu przerwań - 8 poziomów przerwań, • specjalna jednostka do debugowania z własnym interfejsem UART, • 20-bitowy licznik generujacy ˛ przerwania cykliczne, • wbudowany Real Time Clock, • 11-kanałowy kontroler DMA, • port USB, • dwa kanały USART (UART), w tym jeden pełny, • interfejs SPI 8/16 bitowy, • interfejs TWI, • wbudowany 10-bitowy przetwornik analogowo cyfrowy, 4.5. Sterownik główny AT91SAM7S256 • 4-kanałowy, 16-bitowy kontroler PWM, • możliwość programowanie za pomoca˛ interfejsu Jtag i USB, • napi˛ecie zasilania 3,3V, • wi˛ekszość pinów cyfrowych akceptuje napi˛ecia do 5,5V, • możliwość niezależnego ustawienia pinów w tryb MultiDrive (Open Drain), • maksymalna cz˛estotliwość pracy - 55MHz, • obudowa LQFP 64-pinowa. Rysunek 4.11 Schemat blokowy mikrokontrolera AT91SAM7s256. 29 30 4.6 4. Platforma mobilna Układ zasilania Robot został wyposażony w zasilanie bateryjne. Na pokładzie znajduja˛ si˛e dwa połaczone ˛ szeregowo ogniwa Litowo-Polimerowe firmy KOKAM o pojemności 2200mAh i napi˛eciu znamionowym 7,4V. Ogniwa zostały umieszczone w robocie na stałe. Ładowanie możliwe jest dzi˛eki złaczu ˛ ładowania . Aby naładować bateri˛e należy bezwzgl˛ednie wyłaczyć ˛ zasilanie. Wtedy nast˛epuje odci˛ecie baterii od pozostałej cz˛eści układu i prad ˛ ładowania płynie wyłacznie ˛ do ogniw Li-Pol. Układ zasilania znajduje si˛e na płytce drukowanej razem ze sterownikiem serw. Schemat układu zasilania przedstawia rysunek 4.12. Rysunek 4.12 Schemat układu zasilania. Układ zasilania posiada dwa stabilizatory napi˛ecia: 5V i 3,3V; których wydajność pradowa ˛ wynosi 800mA. Jest to około 4-krotność rzeczywistego poboru mocy przez wszystkie układy cyfrowe. Dzi˛eki dużemu zapasowi nie trzeba było stosować radiatorów zajmujacych ˛ wiele miejsca. Warto zwrócić uwag˛e na układ odci˛ecia zasilania[15]. Umieszczony wzmacniacz operacyjny odcina prad ˛ cewki gdy napi˛ecie baterii spadnie poniżej 6V. Zapobiega to uszkodzeniom, na jakie sa˛ narażone ogniwa Li-Pol w przypadku zbyt dużego rozładowania. Dodatkowo elektronika została wyposażona w bezpiecznik 3,15A, który zabezpiecza bateri˛e przed pradem ˛ zwarcia. 4.7 Komunikacja poprzez Bluetooth Robot komunikuje si˛e z komputerem PC za pomoca˛ modułu Bluetooth BTM-112[11] (rysunek 4.13), przy wykorzystaniu warstwy protokołu RFCOMM[1]. Zapewnia ona przeźroczysta˛ (z punktu widzenia programisty) zamian˛e portu RS232 na komunikacj˛e poprzez Bluetooth. Po wykryciu modułu na komputerze należy połaczyć ˛ si˛e z urzadzeniem ˛ i wpisać kod pin, który zabezpiecza przed nieautoryzowanym dost˛epem do modułu Bluetooth. Po sparowaniu urzadzeń ˛ można przegladn ˛ ać ˛ usługi, które oferuje moduł. Jedyna˛ dost˛epna˛ jest SPP (Serial Port Profile). 4.7. Komunikacja poprzez Bluetooth 31 Wybierajac ˛ t˛e usług˛e na komputerze pojawi si˛e nowy wirtualny port RS232, przez który można wysyłać dane bezprzewodowo z wykorzystaniem modułu Bluetooth. Rysunek 4.13 Moduł Bluetooth BTM-112. Główne cechy modułu Bluetooth BTM-112: • klasa 2,0 - zasi˛eg 10m, • napi˛ecie zasilania 3V – 3,6V, • komunikacja poprzez interfejsy UART, USB, SPI oraz PCM, • obsługa protokołu SPP (Serial Port Profile) wraz z komendami AT[1], • fabryczne ustawienia pozwalajace ˛ uruchomić moduł bez żadnej konfiguracji. Zastosowany moduł Bluetooth posiada kilka interfejsów komunikacyjnych. Każdy ma inne zastosowanie. Interfejs SPI może służyć do programowania pami˛eci flash modułu (aktualizacja oprogramowania). Interfejs PCM służy do przesyłania sygnału dźwi˛ekowego. Dzi˛eki wykorzystaniu interfejsu UART można przesyłać dane wykorzystujac ˛ profil portu szeregowego. Interfejs UART posiada 4 linie: CTS, RTS, Tx oraz Dx. Dwie pierwsze służa˛ do sprz˛etowej kontroli przepływu danych. Linia Tx jest linia˛ nadawcza˛ modułu a linia Rx odbiorcza.˛ Jeśli nie korzysta si˛e z linii kontroli przepływu danych można je pozostawić niepodłaczone ˛ lub połaczyć ˛ ze soba.˛ Moduł korzystajac ˛ z interfejsu UART może pracować w dwóch trybach. Pierwszym jest tryb komend. Jest aktywny gdy moduł nie jest połaczony ˛ z innym urzadzeniem. ˛ Istnieje wtedy możliwość ustawiania parametrów modułu za pomoca˛ komend AT w postaci znaków ASCI. Spis niektórych komend przedstawia tabela 4.5. Gdy moduł zostanie połaczony ˛ z zewn˛etrznym urzadzeniem ˛ zostanie wysłany komunikat informujacy ˛ o tym fakcie poprzez interfejs UART. Analogicznie przy rozłaczeniu. ˛ Dane wysyłane przez moduł BTM-112 nie sa˛ przekazywane dalej natychmiastowo. Wysyłane sa˛ paczkami, dlatego czasami moga˛ pojawić si˛e opóźnienia w transmisji danych. Takie zjawisko daje si˛e zauważyć, gdy znaczaco ˛ oddalimy moduł od urzadzenia, ˛ z którym jest poła˛ czony. Słaby sygnał powoduje bł˛edy w sumach kontrolnych przesyłanych danych i transmisja jest powtarzana. Zauważone podczas pracy z modułem przerwy w transmisji danych si˛egały nawet 1 sekundy. Robot wysyła do komputera wszystkie pomiary oraz swoja˛ pozycj˛e i orientacj˛e. Dane wysyłane sa˛ cyklicznie co 10ms. Jedna paczka danych wysyłana przez platform˛e mobilna˛ zawiera 32 bajty danych uporzadkowanych ˛ nast˛epujaco: ˛ 32 4. Platforma mobilna Komenda C K L M N P Z Opis Właczanie/wył ˛ aczanie ˛ kontroli przepływu danych (linie CTS/RTS) C0 – Brak kontroli przepływu C1 – kontrola właczona ˛ C? – zwraca wersj˛e oprogramowania wybór liczby bitów stopu K0 – 1 bit stopu K1 – dwa bity stopu K? – zwraca aktualne ustawienie Szybkość transmisji L0 – 4800 b/s L2 – 19200 b/s L5 – 115200 b/s L? – zwraca aktualne ustawienie ustawianie bitu parzystość M0 – brak bitu parzystości M1 – bit nieparzystości M2 – bit parzystości M? – zwraca aktualne ustawienie Zmiana nazwy urzadzenia ˛ N=“nazwa”, gdzie nazwa to max. 16 znaków zmiana numeru PIN P=xxxx, gdzie xxx to numer PIN (4-8 znaków) P0 – wyłaczenie ˛ żadania ˛ numeru PIN przywracanie ustawień fabrycznych Z0 – przywracanie ustawień fabrycznych Z? – zwraca aktualne ustawienia Tabela. 4.5 Wybrane komendy konfiguracyjne modułu BTM-112. 1. pomiar przyspieszenia w osi X, 2. pomiar przyspieszenia w osi Y, 3. pomiar przyspieszenia w osi Z, 4. pomiar temperatury termometru, 5. pomiar pr˛edkości obrotowej żyroskopu, 6. pomiar temperatury żyroskopu, 7. pr˛edkość obrotowa koła lewego, 8. pr˛edkość obrotowa koła prawego, 9. położenie w osi X, 10. położenie w osi Y, 11. orientacja. 4.8. Układ nap˛edowy 33 Pierwsze 6 pomiarów przesyłanych jest w postaci liczby signed short. Pozostałe sa˛ danymi float składajacymi ˛ si˛e z 4 bajtów. Ponieważ operacje przesuni˛eć bitowych na liczbach float sa˛ niedozwolone i jednocześnie wymagane aby je przesłać poprzez interfejs UART (wysyłanie bajt po bajcie) można wykorzystać uni˛e danych składajac ˛ a˛ si˛e z liczby float oraz unsigned int (każda liczba musi składać si˛e z 4 bajtów). Aby wykonać przesuni˛ecia bitowe na liczbie float zapisujemy ja˛ do uni jako zmienna˛ float i nast˛epnie wykonujemy operacje bitowe odwołujac ˛ si˛e do zmiennej unsigned int. W ten sposób mamy bezpośredni dost˛ep do reprezentacji bitowej liczby rzeczywistej. Kolejnym warunkiem poprawnego przesyłu liczby rzeczywistej jest ta sama reprezentacja liczby floatna obydwu jednostkach (np. wg normy IEEE: 1 bit - znak, 8 kolejnych bitów - wykładnik, pozostałe - mantysa). 4.8 Układ nap˛edowy Układ nap˛edowy stanowia˛ dwa przerobione serwomechanizmy modelarskie MG-995 firmy Tower Pro. Nowe serwomechanizmy maja˛ ograniczony kat ˛ obrotu oraz sterowane sa˛ sygnałem o PWM. Aby można było obracać mechanizm o 360 niezb˛edne jest usuni˛ecie blokady mechanicznej. Dodatkowo usuni˛eta została cała elektronika sterujaca. ˛ Aby móc odczytać położenie osi zamontowano po jednym enkoderze magnetycznym (punkt 4.2.1) w obudowie serwomechanizmu. Do potencjometru znajdujacego ˛ si˛e wewnatrz ˛ silnika przyklejono magnes. Enkodery zamontowano na niewielkiej płytce drukowanej. Rysunek 4.14 Umieszczenie enkodera w serwomechaniźmie. Magnes znajduje si˛e w odległości około 1mm od obudowy układu - tak jak zaleca producent. Do obudowy serwomechanizmu doprowadzono 7 przewodów: dwa zasilajace ˛ silnik elektryczny, zasilanie oraz mas˛e dla enkoderów oraz 3 linie SPI (MISO, CLK oraz CS). Serwomechanizmy sterowane sa˛ podwójnym mostkiem H L298N[13]. Układ posiada możliwość sterowania obrotem kół. Pr˛edkość obrotowa zależna jest od wypełnienia sygnału PWM doprowadzonego do pinów właczaj ˛ acych ˛ sterowanie silnikami. Cz˛estotliwość sygnału to 32kHz. Mniejsze 34 4. Platforma mobilna cz˛estotliwość moga˛ powodować skokowa˛ prac˛e silnika. Wypełnieniem steruje mikrokontroler MC68S12a64 (punkt 4.4). Sterowanie pr˛edkościa˛ zapewnia zaimplementowany regulator PID postaci: u(t) = Kp e(t) + Ki d e(t) 0 e(t)dt + Kd dt , Rt którego wartościa˛ wyjściowa˛ jest wypełnienie sygnału PWM w zakresie od 0 do 250. 4.9. Opis oprogramowania 4.9 35 Opis oprogramowania Oprogramowanie stworzone do sterowania robotem zostało zaimplementowane w j˛ezyku C. Mikrokontroler MC68S12a64 zajmuje si˛e sterowaniem serwomechanizmami. Główny sterownik AT91SAM7s256 zbiera dane pomiarowe, oblicza sterowania kół oraz komunikuje si˛e z komputerem PC. 4.9.1 MC68S12a64 W mikrokontrolerze sterujacym ˛ serwomechanizmami zaimplementowano regulator PID u(t) = Kp e(t) + Ki d e(t) 0 e(t)dt + Kd dt . Rt niezależnie sterujacy ˛ pr˛edkościa˛ obrotowa˛ każdego koła. Mikrokontroler pobiera informacje z enkoderów magnetycznych, oblicza sterowanie oraz ustawia odpowiednie wypełnienie sygnału PWM. Wszystko odbywa si˛e z cz˛estotliwościa˛ 100Hz. Proces sterowania odbywa si˛e w p˛etli głównej programu. Podczas transmisji SPI (w trybie Slave) mikrokontroler odbiera 8 bajtów danych. Dane odbierane zawieraja˛ nastawy pr˛edkości obrotowej. Danymi wysyłanymi sa˛ poprzednio obliczone pr˛edkości obrotowe kół. Po transmisji ostatniego bajtu ustawiona zostaje flaga która pozwala na jednorazowe wykonanie pobierania danych z enkoderów i obliczenie sterowania. Aby uniezależnić si˛e od nadchodzacej ˛ z zewnatrz ˛ cz˛estotliwości sterowania mikrokontroler do obliczania pochodnej oraz całki korzysta z wewn˛etrznego timera, z którego odczytuje czas pomi˛edzy kolejnymi sterowaniami. Zaimplementowanie procesu obliczeń w p˛etli głównej i wykorzystanie flagi właczaj ˛ acej ˛ sterowanie było niezb˛edne, ponieważ mikrokontroler komunikuje si˛e ze sterowanikiem głównym poprzez interfejs SPI w trybie slave i musi natychmiast reagować na przerwanie przychodzace ˛ po zakończeniu transmisji. Aby zapobiec ustawianiu nowych nastaw w trakcie wykonywania obliczeń, proces sterowania uruchamiany jest dopiero po przesłaniu wszystkich danych. 4.9.2 AT91SAM7s256 Układ AT91SAM7s256 jest sterownikiem głównym skonstruowanej platformy mobilnej. Podstawowym zadaniem układu jest sterowanie robotem. Proces sterowania odbywa si˛e cyklicznie z cz˛estotliwościa˛ 100Hz. Na poczatku ˛ procesu sterowania układ najpierw pobiera dane ze wszystkich dost˛epnych czujników. Wszystkie dane z wyjatkiem ˛ pomiaru temperatury (1-Wire) zbierane sa˛ poprzez interfejs SPI. Ponieważ mikrokontroler ARM7 zasilany jest napi˛eciem 3,3V a pozostałe układy z którymi si˛e komunikuje 5V niezb˛edne było użycie trybu Multi-Drive dla pinów portu SPI. Oznacza to, że stan niski wymuszany jest przez mikrokontroler, natomiast zamiast wymuszania na linii MOSI stanu wysokiego, piny przechodza˛ w stan wysokiej impedancji. Stan wysoki na wyjściu (5V) wymuszany jest przez dołaczenie ˛ zewn˛etrznych rezystorów o wartości 510Ω. Prawie wszystkie piny mikrokontrolera AT91SAM7s256 moga˛ pracować z napi˛eciami do 5,5V. Wi˛ekszość danych składa si˛e z dwóch bajtów. Pr˛edkości obrotowe kół odbierane sa˛ w postaci liczb rzeczywistych. Temperatura otoczenia z czujnika temperatury odczytywana jest co sekund˛e (wynika to z czasu konwersji czujnika DS18b20). Po zebraniu pomiarów nast˛epuje proces sterowania. Obliczane jest obecne położenie i orientacja platformy. Nast˛epnie uruchamiany jest generator trajektorii, który określa w jakim punkcie powinna si˛e znajdować platforma mobilna. Kolejno uruchamiane sa˛ sterownik kinematyczny i dynamiczny których efektem jest wyliczenie nastaw sterowań kół, które zostana˛ wysłane do sterownika serw podczas kolejnej transmisji danych. Po zakończeniu wszystkich obliczeń uruchamiana 36 4. Platforma mobilna jest transmisja danych (jeśli użytkownik na to zezwolił) poprzez interfejs UART w trybie DMA (Direct Memory Access). Cała transmisja odbywa si˛e sprz˛etowo. Aby mikrokontroler mógł odbierać dane od komputera niezb˛edne było ustawienie wyższego priorytetu na przerwanie pochodzace ˛ z UART niż przerwania cyklicznego. Po przyjściu każdego bajtu mikrokontroler przerywa dotychczasowe obliczenia i wczytuje odczytane dane. Jeśli mikrokontroler odebrał dane zawierajace ˛ aktualne położenie i orientacj˛e, przed wykonaniem obliczeń pozycja jest aktualizowana. Rozdział 5 Aplikacja sterujaca ˛ Do sterowania zbudowana˛ platforma˛ mobilna˛ została napisana aplikacja korzystajaca ˛ z biblioteki Qt4 (rysunek 5.1). Główna˛ cz˛eścia˛ jest mapa, na której wyświetlana jest pozycja i orientacja platformy. Na mapie rysowana jest również trajektoria, po której porusza si˛e robota. Może to być linia prosta, okrag ˛ lub punkt. Pod mapa˛ znajduja˛ si˛e przyciski służace ˛ do sterowania robotem. W cz˛eści Pr˛ edkość liniowa i Pr˛ edkość katowa ˛ można zadawać pr˛edkość liniowa˛ i katow ˛ a˛ platformy. Dane z nastawami sa˛ wysyłane natychmiast po zmianie ich wartości. Przyciski uruchamiajace ˛ i zatrzymujace ˛ platform˛e znajduja˛ si˛e obok w cz˛eści kierunek. Przyciski Do przodu i Do tyłu służa˛ do poruszania si˛e odpowiednio do przodu i do tyłu z zadana˛ pr˛edkościa˛ liniowa.˛ Przyciski W lewo i W prawo służa˛ do obrotu platformy w lewo i prawo. Po klikni˛eciu przycisku start Platforma porusza si˛e po okr˛egu o promieniu zadanym przez pr˛edkość liniowa˛ i obrotowa.˛ W przypadku, gdy pr˛edkość katowa ˛ wynosi zero, trajektoria˛ jest linia prosta. Jeśli właczone ˛ jest sterowanie do punktu, po klikni˛eciu Start robot kontynuuje to sterowanie. Przycisk Stop zatrzymuje platform˛e. Sterowanie do punktu można uruchomić klikajac ˛ w dowolnym miejscu mapy lewym przyciskiem myszy. Po klikni˛eciu do robota zostanie wysłana informacja o położeniu punktu końcowego. Aby zakończyć sterowanie do punktu należy kliknać ˛ prawym przyciskiem myszy na dowolnym miejscu mapy. Z lewej strony mapy znajduje si˛e lista czujników. Przy każdym czujniku co sekund˛e wyświetlana jest aktualna wartość pomiaru. Dodatkowo poniżej wyświetlane sa˛ informacje o aktualnej pr˛edkości liniowej, katowej ˛ oraz położeniu i orientacji platformy. Robot transmituje dane tylko gdy zaznaczone jest pole Transmisja danych. Dane można zapisywać do pliku do czego służy pole Zapis do pliku. Przycisk Nowy ukl służy do wyznaczania układu współrz˛ednych wzgl˛edem którego b˛edzie obliczana pozycja robota pochodzaca ˛ z obrazu wideo. Podczas startu aplikacji inicjowany jest port /dev/rfcomm służacy ˛ do komunikacji z robotem oraz pobieranie obrazu z kamery wideo. Przed uruchomieniem aplikacji należy upewnić si˛e, że poprawnie skonfigurowano połaczenie ˛ z modułem oraz podłaczona ˛ jest kamera /dev/video1. Aplikacja odczytuje wysyłane dane przez platform˛e mobilna˛ podczas obsługi przerwania określajacego ˛ przyjście co najmniej 20 bajtów danych. 38 5. Aplikacja sterujaca ˛ Rysunek 5.1 Aplikacja sterujaca. ˛ Rozdział 6 Badania Przeprowadzone badania w niniejszej pracy magisterskiej zostały wykonane przy użyciu opisanej wcześniej platformy mobilnej oraz narz˛edzia ARToolKit do przetwarzania obrazu wideo. Pomiary z czujników wewn˛etrznych robota były wysyłane poprzez Bluetooth do komputera, gdzie zostały zapisane i przetworzone przy wykorzystaniu pakietu Octave. 6.1 Identyfikacja serwomechanizmów Poczatkowo ˛ w konstrukcji robota użyto 10-bitowych enkoderów magnetycznych. Maksymalna cz˛estotliwość sterowania dla zastosowanych serw wynosi około 50Hz. Po przeprowadzeniu identyfikacji okazało si˛e, że serwa sa˛ w stanie zmienić swoja˛ pr˛edkość obrotowa˛ o prawie 50% pomi˛edzy kolejnymi próbkami położenia. Zdecydowano si˛e na zmian˛e czujników na 12-bitowe. Dzi˛eki zamianie możliwe było zwi˛ekszenie cz˛estotliwości sterowania do 100Hz. Cz˛estsze sterowanie znacznie zmniejszyło maksymalna˛ zmian˛e pr˛edkości katowej ˛ kół pomi˛edzy kolejnymi odczytami położenia. Rysunek 6.1 Identyfikacja serw MG-995. Na rysunku 6.1 umieszczono przebieg identyfikacji serwomechanizmów. Podczas narastania sygnału sterownik serw zda˛żył 8 razy odczytać położenie katowe ˛ koła z enkoderów magnetycznych. Parametry regulatora PID sterujacego ˛ pr˛edkościa˛ obrotowa˛ kół dobrano doświadczalnie. 40 6.2 6. Badania Dokładność pomiaru pozycji i orientacji na podstawie obrazu wideo Pomiar dokładności wyszukiwania wzorca w obrazie wideo został wykonany dzi˛eki dost˛epnym przykładom dostarczanym wraz z narz˛edziem (cz˛eściowo zmodyfikowanych na potrzeby badań). Najważniejszym elementem poprawnej detekcji położenia wzorca jest skrupulatna kalibracja kamery. Domyślne ustawienia daja˛ niepoprawne wyniki i należy je skorygować. Kalibracja powinna być wykonana w dwóch krokach. Pierwszy służy do określania promienia krzywizny soczewki kamery. Drugi służy do określenia gł˛ebi i polega na stopniowym odsuwaniu kamery (o stałym kroku oddalenia) od kartki z wydrukowana˛ kratka˛ i zaznaczaniu linii poziomych i pionowych. Wi˛ecej o kalibracji można przeczytać na stronie internetowej z dokumentacja˛ narz˛edzia[3]. Wszystkie badania zostały wykonane po przeprowadzeniu procesu kalibracji. Fakt, że domyślne ustawienia kamery sa˛ niepoprawne został określony w czasie krótkiego doświadczenia polegajacego ˛ na odczytaniu położenia kamery z obrazu wideo i porównaniu z położeniem zmierzonym za pomoca˛ linijki. 6.2.1 Wyznaczanie stabilności pomiaru położenia na podstawie obrazu wideo Badanie miało na celu wyznaczenie dokładności, z jaka˛ narz˛edzie ARToolKit potrafi określić położenie wzorca na podstawie obrazu wideo odczytywanego z kamery internetowej. Zostało wykonane przy świetle dziennym z dodatkowo właczonym ˛ sztucznym oświetleniem. Proces badania polegał na ustawieniu w dowolnym punkcie wzorca i wykonaniu długiej serii pomiarów położenia wzgl˛edem układu współrz˛ednych kamery. Za bład ˛ metody uznano różnic˛e pomi˛edzy wartościa˛ minimalna˛ i maksymalna˛ odczytanego położenia. Rysunek 6.2 Pomiar w osi X, wartość średnia=-520,6mm, min=-528,53mm, max=512,13mm, dokładność=16,5mm. Jak widać na wykresach prezentowanych na rysunkach 6.2, 6.3 i 6.4 najgorzej wypada pomiar wzdłuż osi Z. Dokładność pomiaru wzdłuż osi X oraz Y jest na zadowalajacym ˛ poziomie. Bład ˛ pomiaru nie przekracza 16,5mm. 6.2. Dokładność pomiaru pozycji i orientacji na podstawie obrazu wideo 41 Rysunek 6.3 Pomiar w osi Y , wartość średnia= 262, 45mm, min= 258, 28mm, max= 266, 48mm, dokładność= 8, 5mm. Rysunek 6.4 Pomiar w osi Z, wartość średnia= 1508mm, min= 1483, 1mm, max= 1531, 3mm, dokładność= 48, 5mm. W dotychczas wykonanych pomiarach pozycja znacznika była określana wyłacznie ˛ na podstawie ostatnio pobranego obrazu wideo. Powodowało to znaczne oscylacje wokół wartości średniej. Istnieje możliwość zmniejszenia tych oscylacji poprzez wykorzystanie historii do wyznaczania położenia. Użycie historii znaczaco ˛ zmniejsza wahania wokół wartości średniej, gdyż poprzedni pomiar jest także uwzgl˛edniany w wyznaczaniu położenia. Wyniki pomiarów przedstawione na rysunkach 6.5, 6.6 i 6.7 zawieraja˛ odczyty pozycji z uwzgl˛ednieniem historii. Różnica pomi˛edzy pomiarami z historia˛ i bez historii jest znacza˛ ca. W badaniach z uwzgl˛ednieniem poprzedniego pomiaru niedokładność spadła kilkakrotnie. Uzyskane wyniki wydaja˛ si˛e być zadowalajace. ˛ Wcia˛ż jednak pozostaje problem pomiaru odległości wzdłuż osi Z (gł˛ebia kamery). Wydaje si˛e, że pomiar odległości od kamery jest najbardziej wrażliwy na zmian˛e wartości pikseli obrazu. Gdy obramowanie wzorca zostanie zmniej- 42 6. Badania Rysunek 6.5 Pomiar w osi X, wartość średnia= −169, 15mm, min= −169, 33mm, max= −168, 28mm, dokładność= 1, 5mm Rysunek 6.6 Pomiar w osi Y , wartość średnia= 140, 01mm, min= 139, 24mm, max= 140, 2mm, dokładność= 1mm szone o kilka pikseli środek znacznika nie ulega przesuni˛eciu, natomiast powoduje nieistniejace ˛ oddalenie znacznika od kamery co jest zauważane przez funkcje przetwarzajace ˛ obraz. Warto także zwrócić uwag˛e na wykresy przedstawione na runkach 6.5, 6.6 i 6.7 w okolicy 300-setnego pomiaru. Widoczny jest znaczny skok odczytów. Być może w tym momencie kamera zmieniała swoje ustawienie kontrastu co mogło wpłynać ˛ na dokładność pomiarów. Po zauważonym impulsie oscylacje znaczaco ˛ spadły. 6.2. Dokładność pomiaru pozycji i orientacji na podstawie obrazu wideo 43 Rysunek 6.7 Pomiar w osi Z, wartość średnia= 1516, 9mm, min= 1507, 4mm, max= 1519mm, dokładność= 11, 5mm 6.2.2 Wyznaczanie dokładności pomiaru dwóch znaczników wzgl˛edem siebie Badanie miało na celu wyznaczenie dokładności pomiaru jednego znacznika w układzie współrz˛ednych drugiego wzorca. W tym celu w obszarze widoczności kamery ułożono dwa znaczniki (rysunek 6.8). Po znalezieniu obydwu znaczników w obrazie wideo należy wykonać obliczenia transformujace ˛ jeden z nich z układu współrz˛ednych kamery do układu współrz˛ednych drugiego znacznika (rozdział 3.2). Rysunek 6.8 Ułożenie znaczników na płaszczyźnie. Wykonane pomiary przedstawiaja˛ wykresy na rysunkach 6.9, 6.10 oraz 6.11. Badania zo- 44 6. Badania stały wykonane bez użycia historii. Rysunek 6.9 Pomiar odległości znaczników w osi X. Rysunek 6.10 Pomiar odległości znaczników w osi Y . Na podstawie wygenerowanych wykresów obliczono poniższe wyniki: • wartość średnia w osi X=520,23mm, rzeczywista=515mm„ niedokładność=9,5mm • wartość średnia w osi Y=0,17mm, rzeczywista=0mm„ niedokładność=9mm • wartość średnia w osi Z=17,4mm, rzeczywista=0mm, niedokładność=77mm. Porównujac ˛ wyniki przeprowadzonego badania z wartościami rzeczywistymi zmierzonymi za pomoca˛ linijki można stwierdzić, że dokładność pozycji w płaszczyźnie na której znajduja˛ si˛e oba znaczniki wynosi 10mm, natomiast położenie w trzeciej osi jest znaczaco ˛ różniace ˛ si˛e od rzeczywistości. 6.3. Wyznaczanie przebytej drogi na podstawie enkoderów magnetycznych 45 Rysunek 6.11 Pomiar odległości znaczników w osi Z. 6.3 Wyznaczanie przebytej drogi na podstawie enkoderów magnetycznych Enkodery magnetyczne sa˛ urzadzeniami ˛ służacymi ˛ do pomiaru kata ˛ obrotu magnesu umieszczonego w pobliżu czujnika. Zapewniaja˛ bezstykowy pomiar położenia oparty na rozkładzie pola magnetycznego. Podstawa˛ poprawnego jest pomiaru korzystanie z magnesu o odpowiednio dobranym nat˛eżeniu pola magnetycznego[5] oraz umieszczenie go w odległości około 1mm od obudowy czujnika. Oprócz niedokładności pomiaru czujnika wpływ na rozbieżność pomiaru przebytej drogi może także mieć niedokładne zmierzenie średnicy kół, gdyż wartość przebytej drogi jest zależna od obwodu koła. Aby odczytać przebyta˛ drog˛e na podstawie enkoderów można skorzystać z równań kinematyki przedstawionych w rozdziale 2.1. Ponieważ z enkoderów można odczytać położenie magnesu przymocowanego do silnika należy na podstawie aktualnego pomiaru i poprzedniego obliczyć zmian˛e, która jednocześnie określa pr˛edkość obrotowa.˛ Nast˛epnie korzystajac ˛ z zależności (2.13) określamy wartość przeskalowanej pr˛edkości R (6.1) ηi = φ̇i . 2 Pr˛edkość liniowa˛ i katow ˛ a˛ platformy mobilnej klasy (2,0) można wyrazić za pomoca˛ wzoru (2.14): v ω = η1 +η2 2 L (η1 −η2 ) . Na rysunkach 6.12 i 6.13 przedstawiono badania przebytej drogi odczytanej na podstawie enkoderów magnetycznych. Na rysunku 6.12 przedstawiono odczyt drogi przy pr˛edkości 10cm/s. Droga rzeczywista zmierzona linijka˛ wynosiła kolejno 103cm do przodu oraz 98cm do tyłu. Trasa odczytana na podstawie enkoderów wynosiła odpowiednio 102cm do przodu i 96,5cm. Wykres umieszczony na rysunku 6.13 przedstawia odczytana˛ drog˛e przy wi˛ekszej pr˛edkości liniowej i o dłuższej trasie. Platforma mobilna poruszała si˛e do przodu z pr˛edkościa˛ 17cm/s. W tym czasie przebyła droga˛ 148cm do przodu a nast˛epnie 143cm do tyłu. Wartości odczytana z enkoderów to odpowiednio 146,5cm oraz 141cm. Z przeprowadzonego doświadczenia wynika, że enkodery na krótkich odcinkach dobrze odwzorowuja˛ rzeczywista˛ drog˛e. Niedokładność pomiaru mieści si˛e w granicy 2%. 46 6. Badania Rysunek 6.12 Odczyt przebytej drogi na podstawie enkoderów, droga rzeczywista=103cm. Rysunek 6.13 Odczyt przebytej drogi na podstawie enkoderów, droga rzeczywista=148cm. 6.4 Skalowanie i wyznaczanie zera akceleromatru Przed wykonaniem pomiarów przyspieszenia należy wyznaczyć tak zwane zero, które b˛edzie odpowiadało przyspieszeniu zerowemu. Zero akcelerometru można łatwo wyznaczyć poprzez wyznaczenie wartości średniej z pomiarów przyspieszeń dokonanych w stanie spoczynku robota. W tym celu należy umieścić robota na płaszczyźnie prostopadłej do wektora przyspieszenia ziemskiego i wykonać seri˛e pomiarów, która˛ należy uśrednić. Wartości średnie na osiach X i Y b˛eda˛ równe zerowemu przyspieszeniu. Przykładowy przebieg pomiarów przedstawia rysunek 6.14. Po przeprowadzeniu badania uzyskano nast˛epujace ˛ wyniki: x0 = −0, 075237g, y0 = 0, 0057783g. Skalowanie akcelerometru polega na wyznaczeniu wartości liczbowej odpowiadajacej ˛ przyspieszeniu ziemskiemu. Na podstawie tej wartości b˛edzie możliwe przeliczenie późniejszych wyników pomiarów na wartość reprezentujac ˛ a˛ przyspieszenie w danej osi. 6.4. Skalowanie i wyznaczanie zera akceleromatru 47 Rysunek 6.14 Odczyty z osi X akcelerometru w stanie spoczynku. Proces skalowania akcelerometru wyglada ˛ tak samo dla każdej z osi. Należy ustawić robota w takiej pozycji, aby zwrot i kierunek danej osi pokrywał si˛e z wektorem przyspieszenia ziemskiego. Nast˛epnie należy lekko przechylać robota w różnych kierunkach. Z tak uzyskanych pomiarów napi˛ecia na wyjściach akcelerometru wybieramy wartość maksymalna,˛ która odpowiada wartości przyspieszenia równej 1g. Przebieg eksperymentu dla osi X ilustruje wykres 6.15. Rysunek 6.15 Skalowanie osi X akcelerometru. Po przeprowadzeniu eksperymentów dla każdej z osi otrzymano nast˛epujace ˛ wyniki: x1g = 2, 4420V , y1g = 2, 4879V , z1g = 2, 4750V . 48 6. Badania Jak widać wartość 1g ma inna˛ reprezentacj˛e w każdej z osi, zatem wyznaczenie jednej wartości dla wszystkich osi jednocześnie może powodować dodatkowe bł˛edy odczytu. Gdy znamy już zero oraz wartość odpowiadajac ˛ a˛ przyspieszeniu 1g można wykonać pomiary. Od każdego pomiaru należy odjać ˛ wartość zerowa˛ co daje wartość liczbowa˛ w odniesieniu do zera danej osi. Uzyskana˛ różnic˛e dzielimy przez wartość odpowiadajac ˛ a˛ 1g i otrzymujemy wartość rzeczywistego przyspieszenia. 6.5 Wyznaczanie przebytej drogi na podstawie przyspieszeń Celem eksperymentu jest wyznaczenie drogi przejechanej przez platform˛e mobilna˛ korzystajac ˛ z przyspieszeń. Akcelerometr umieszczono na osi symetrii platformy mobilnej. Dodatnia cz˛eść osi Y akcelerometru ma ten sam zwrot i kierunek co kierunek wskazujacy ˛ przód robota. Odczyty z osi Y akcelerometru można wi˛ec traktować jako przyspieszenie liniowe platformy mobilnej. Opis uzyskiwania położenia na podstawie przyspieszeń omówiono w punkcie 2.5. Przebyta droga b˛edzie porównana z wynikami zawartymi w punkcie 6.3. Eksperyment został przeprowadzony po wcześniejszym skalibrowaniu akcelerometru (punkt 6.4). Na rysunku 6.16 przedstawiono przebieg odczytów przyspieszenia liniowego platformy mobilnej. Szumy widoczne na przedstawionym rysunku sa˛ na tyle wysokie, że znaczaco ˛ zniekształcaja˛ wartości prawidłowe. Prób˛e wyznaczenia drogi z takich odczytów przedstawia rysunek 6.17. Pomiary napi˛ecia zostały dokonane po analogowej filtracji dolnoprzepustowej o cz˛estotliwości odci˛ecia równej 5Hz. Zmiana cz˛estotliwości odci˛ecia nie miała wi˛ekszego wpływu na odczyty z akcelerometru. Zwi˛ekszenie cz˛estotliwości odci˛ecia powodowało lekkie zwi˛ekszenie si˛e szumów, natomiast zmniejszenie miało negatywny wpływ na powstawanie impulsu przyspieszenia w momencie ruszania i zatrzymania. Rysunek 6.16 Przyspieszenie liniowe platformy mobilnej. Droga przedstawiona na rysunku 6.17 znaczaco ˛ odbiega od rzeczywistej wyznaczonej w punkcie 6.3. Podj˛eto prób˛e wyeliminowania szumów poprzez ustalenie wartości progowej, poniżej której pomiary uznawane sa˛ za zerowe. Wartość ta˛ ustalono doświadczalnie na poziomie 23. Rysunek 6.18 przedstawia przyspieszenie po odszumieniu. Rysunek 6.19 pokazuje drog˛e uzyskana˛ na podstawie odszumionych odczytów z akcelerometru. 6.5. Wyznaczanie przebytej drogi na podstawie przyspieszeń 49 Rysunek 6.17 Obliczona droga na podstawie przyspieszeń z szumami. Rysunek 6.18 Przyspieszenie liniowe po uwzgl˛ednieniu wartości progowej. Jak widać na rysunku 6.20 po przeprowadzeniu operacji progowania przyspieszenia droga odczytana z akcelerometrów ma podobny kształt jak droga odczytana na podstawie enkoderów. Droga odczytana z akcelerometrów pomimo, iż ma prawidłowy kierunek jest około 9 razy krótsza od prawdziwej. Przyczyna˛ takiego zjawiska może być zbyt wysoka wartość progowa, która odcina cz˛eść przyspieszenia w momencie ruszania pozostawiajac ˛ jedynie krótki impuls. Ponieważ uzyskiwanie drogi wia˛że si˛e z sumowaniem przyspieszeń zbyt krótki impuls (rysunek 6.18) nie da wiarygodnych wyników gdyż przyspieszenie rzeczywiste w momencie ruszania trwa dłużej. Zmniejszenie wartości progowej wprowadzi wyeliminowane szumy do pomiarów co jeszcze bardziej negatywnie wpłynie na wyniki. Poprawy odczytów z akcelerometrów należy doszukiwać si˛e w cz˛eści elektronicznej toru pomiarowego. Wpływ na zaszumienia pomiarów moga˛ mieć zakłócenia elektromagnetyczne pochodzace ˛ od sasiednich ˛ ścieżek sygnałowych (zwłaszcza transmisji o wysokiej cz˛estotliwości, np. SPI), niedokładności i szumy akcelerometru, niedokładności przetwornika A/C, niesta- 50 6. Badania Rysunek 6.19 Droga uzyskana z przyspieszeń po usuni˛eciu szumów. Rysunek 6.20 Porównanie drogi otrzymanej z przyspieszeń i enkoderów. bilności napi˛ecia odniesienia oraz zasilania układów bioracych ˛ udział w pomiarze przyspieszeń. Wykonany eksperyment wykazał, że bardzo ważna˛ rol˛e w pozyskiwaniu pozycji na podstawie przyspieszeń pełni poprawnie zaprojektowany tor analogowy. Na wykresie 6.20 jest widoczne zjawisko narastania odległości gdy robot si˛e nie porusza. Jest to zwiazane ˛ z bł˛edami numerycznymi oraz nierównomiernościa˛ przyspieszenia podczas ruszania i hamowania. Wystarczy niewielka różnica aby pr˛edkość po zatrzymaniu nie wróciła do zera. Należy także zwrócić uwag˛e na fakt, iż chwilowe przyspieszenie wzdłuż toru jazdy pojawia si˛e w wyniku nierówności powierzchni. Powstałe impulsy przyspieszenia sa˛ wynikiem siły odśrodkowej. Siła ta narasta wraz ze zwi˛ekszeniem nierówności oraz pr˛edkości jazdy. 6.6. Wyznaczanie pr˛edkości katowej ˛ na podstawie żyroskopu 6.6 51 Wyznaczanie pr˛edkości katowej ˛ na podstawie żyroskopu Badanie przeprowadzono dla ruchu obrotowego platformy mobilnej. Obrót nast˛epował wokół osi obrotu. Platforma mobilna wykonała 3 obroty w lewo, a nast˛epnie 3 obroty w kierunku przeciwnym. W celu wyznaczenia orientacji scałkowano charakterystyk˛e pr˛edkości katowej. ˛ Odczyty z żyroskopu porównano z wynikiem uzyskanym na podstawie enkoderów (rysunek 6.21). Rysunek 6.21 Porównanie orientacji uzyskanej z żyroskopu i enkoderów. Wyznaczone przebiegi orientacji niemalże si˛e pokrywaja.˛ Mimo, iż czas badania nie był zbyt długi widać, że rozbieżności narastaja˛ wraz z upływem czasu. Pod koniec badania, gdy zatrzymano platform˛e wskazania z obu czujników powróciły niemalże do tego samego punktu. Po przeprowadzeniu eksperymentu można stwierdzić, że żyroskop może być stosowany do nawigacji gdy został wykryty poślizg lub buksowanie kół. Wtedy odczyty z enkoderów nie daja˛ prawidłowych przemieszczeń. 6.7 Wykrywanie przeszkód Wyniki pozyskiwania przebytej drogi platformy mobilnej na podstawie przyspieszeń pokazały, iż w skonstruowanej platformie mobilnej nie daja˛ one wiarygodnych odczytów. Mimo tego po zastosowaniu wartości progowej wcia˛ż zauważalne sa˛ impulsy w trakcie ruszania i zatrzymywania si˛e robota. Podobne impulsy powinny pojawiać si˛e gdy robot napotka przeszkod˛e na swojej drodze. Wartość przyspieszenia powinna być zależna od kata ˛ pod jakim robot uderzył w przeszkod˛e oraz czy przeszkoda pozostała w tym samym miejscu. Przeprowadzone badania miały na celu zweryfikowanie powyższych założeń. Zderzenie z przeszkoda˛ znajdujac ˛ a˛ si˛e na wprost toru jazdy robota przedstawia rysunek 6.22. Pierwszy impuls przyspieszenia oznacza start platformy. Drugi jest równoważny napotkaniu przeszkody (rysunek 6.22(a)). Wysoka wartość przyspieszenia po zderzeniu powstała w wyniku lekkiego przechylenia si˛e platformy w stosunku do płaszczyzny, po której si˛e porusza. Widać, że akcelerometr prawidłowo zasygnalizował wykrycie przeszkody. Na rysunku 6.22(b) przedstawiono odczyty pr˛edkości katowej ˛ z żyroskopu podczas tego samego zderzenia. 52 6. Badania Oscylacje pomi˛edzy 4 o 7 sekunda˛ przedstawiaja˛ ruch robota. Po nich nastapił ˛ znaczny impuls, który oznaczał zderzenie. Pomimo iż wydaje si˛e, że oba czujniki sa˛ w stanie prawidłowo wykryć przeszkod˛e, na podstawie samego żyroskopu może si˛e to nie udać w przypadku, gdy przeszkoda znajdzie si˛e idealnie na wprost robota i podczas zderzenia nie powstanie pr˛edkość obrotowa. Do wykrycia przeszkód poprzecznych do toru jazdy lepiej nadaje si˛e akcelerometr. (a) Odczyt z akcelerometru (b) Odczyt z żyroskopu Rysunek 6.22 Zderzenie czołowe z przeszkoda.˛ Kolejnym etapem badania było sprawdzenie reakcji czujników na przeszkod˛e umieszczona˛ pod katem ˛ ostrym do toru jazdy. Tym razem lepiej prezentuja˛ si˛e wyniki pomiarów pochodza˛ ce z żyroskopu. Jednoznacznie widać miejsce napotkania przeszkody. Dodatkowo z wykresu można odczytać stron˛e, po której znajduje si˛e przeszkoda. Zderzenie nastapiło ˛ po 4 sekundzie ruchu. Ponieważ pr˛edkość katowa ˛ jest dodatnia w tym czasie można stwierdzić, że przeszkoda znajdowała si˛e z prawej strony. Po otarciu si˛e o przeszkod˛e robot zahaczył o nia˛ prawym narożnikiem co spowodowało obracanie si˛e w przeciwnym kierunku. Odczyt z akcelerometru także prawidłowo zasygnalizował wykrycie zderzenia. (a) Odczyt z akcelerometru (b) Odczyt z żyroskopu Rysunek 6.23 Zderzenie pod katem ˛ ostrym z przeszkoda.˛ Podsumowujac ˛ przeprowadzony eksperyment akcelerometr i żyroskop moga˛ tworzyć wzajemnie uzupełniajac ˛ a˛ si˛e par˛e czujników służac ˛ a˛ do wykrywania przeszkód. W przypadku przeszkód prostopadłych do toru jazdy najbardziej wiarygodnym czujnikiem wydaje si˛e akcelerometr. Podczas zderzenie z przeszkoda˛ skośna˛ oprócz informacji o zderzeniu pochodzacej ˛ z przyspieszeń można określić z jakiego kierunku pojawiła si˛e przeszkoda na podstawie żyroskopu. 6.8. Śledzenie trajektorii bez korekcji z obrazu wideo 6.8 53 Śledzenie trajektorii bez korekcji z obrazu wideo Z badań przedstawionych w punkcie 6.3 wynika, że droga odczytana na podstawie enkoderów magnetycznych jest zbliżona do rzeczywistej. Bład ˛ metody polega na niedokładności pomiarów samych czujników, niepewności określania promienia koła oraz szerokości rozstawu kół. Każde odchylenie od wartości rzeczywistej powoduje narastanie bł˛edów wraz z czasem. Na rysunku 6.24 przedstawiono porównanie odczytów drogi na podstawie enkoderów magnetycznych oraz obrazu wideo. Robot startował z lewego dolnego narożnika wykresu. W momencie startu została przesłana do robota informacja o położeniu z kamery po czym robot zaczał ˛ nawigacj˛e wyłacznie ˛ w oparciu o enkodery. Poruszajac ˛ si˛e po prostej robot zaczał ˛ odbiegać od trajektorii rzeczywistej. Powodem tego może być (oprócz wspomnianej niedokładności enkoderów) bład ˛ pomiaru orientacji kamery. Ponieważ robot tylko raz otrzymał informacj˛e o położeniu i orientacji nie ma możliwości skorygowania swojej pozycji. Rysunek 6.24 Jazda po linii prostej. Kolejny test miał na celu sprawdzenie dokładności poruszania si˛e po okr˛egu. Podobnie jak powyżej robot tylko na poczatku ˛ otrzymał informacj˛e o położeniu i orientacji a nast˛epnie określał położenie za pomoca˛ enkoderów. Przed badaniem założono, że poczatkowo ˛ robot b˛edzie prawidłowo poruszał si˛e po okr˛egu a po dłuższym czasie zaczna˛ pojawiać si˛e różnice pomi˛edzy trasami. Wynik eksperymentu przedstawia ilustracja 6.25. Czerwony przebieg oznacza trajektori˛e odczytana˛ za pomoca˛ enkoderów, niebieski - z obrazu wideo. Robot otrzymawszy komend˛e start oraz informacje o swoim położeniu i orientacji zaczał ˛ szybko zbiegać do trajektorii zadanej, która˛ był okrag ˛ o promieniu 33cm. Robot osiagn ˛ a˛ zadana˛ trajektoria˛ w ciagu ˛ pełnego okra˛żenia, po czym według odczytów z enkoderów poruszał si˛e cały czas po trajektorii zadanej. Rzeczywiste odczyty pochodzace ˛ z obrazu wideo pokazuj˛e że tak nie było. Poczatkowo ˛ obie trasy si˛e pokrywały. Z biegiem czasu rzeczywista trajektoria zacz˛eła coraz bardziej odbiegać od zadanej co obrazuje niebieski wykres na rysunku 6.25. Czas badania wynosił około 25,5 minuty. Przeprowadzony eksperyment potwierdza poczatkow ˛ a˛ tez˛e, że wraz z upływem czasu ścieżka rzeczywista i ta odczytana na podstawie enkoderów b˛eda˛ si˛e coraz bardziej różniły. Pomimo tego, że odczyty z kamery wydaja˛ si˛e mniej precyzyjne (znaczaco ˛ oscyluja˛ wokół wartości prawidłowej) to bł˛edy pomiarów nie sa˛ kumulowane jak w przypadku enkoderów oraz pozostałych testowanych czujnikach zastosowanych w robocie. Każdy nast˛epny pomiar kamery 54 6. Badania Rysunek 6.25 Porównanie trajektorii z kamery i enkoderów. może skorygować bład ˛ z poprzedniego obrazu. 6.9. Korekcja położenia pochodzaca ˛ od systemu wizyjnego 6.9 55 Korekcja położenia pochodzaca ˛ od systemu wizyjnego Przedstawione do tej pory badania wykazywały, iż trasa odczytana na podstawie czujników wewn˛etrznych robota z biegiem czasu coraz bardziej różniła si˛e od rzeczywistej. Odczyt na podstawie obrazu wideo jest mniej dokładny od np. enkoderów, jednak z biegiem czasu bład ˛ położenia nie narasta i za każdym razem mieści si˛e w stałej granicy. Aby uzyskać wysoka˛ dokładność śledzenia trajektorii oraz wyeliminować odbieganie od trajektorii z upływem czasu postanowiono użyć do nawigacji enkoderów, których odczyty b˛eda˛ korygowane co jakiś czas (np. co sekund˛e) przez odczyt z obrazu wideo. Wynik eksperymentu przedstawia rysunek 6.26. Rysunek 6.26 Jazda po okr˛egu z korekcja˛ co sekund˛e. Czas trwania eksperymentu wynosił 15 minut. Porównujac ˛ trasy z rysunków 6.26 oraz 6.25 widać, że po zastosowaniu korekcji położenia pochodzacej ˛ z obrazu wideo trajektoria robota nie oddala si˛e od zadanej z biegiem czasu. Mieści si˛e w pewnej granicy określonej przez niedokładność pomiaru kamery. Kolejnym etapem testu było sprawdzenie poprawiania położenia platformy mobilnej co 10 sekund. Czas trwania eksperymentu także wynosił 15 minut. Przebieg trajektorii przedstawiono na rysunku 6.27. Zwi˛ekszenie okresu niwelowania bł˛edów położenia wprowadziło wi˛eksze oscylacje wokół trajektorii zadanej. Jeśli kamera popełni bład ˛ położenia a zwłaszcza orientacji przez nast˛epne 10 sekund robot b˛edzie starał si˛e powrócić na trajektori˛e zadana˛ z niepoprawnie określonym punktem startu. Im wi˛ekszy bład ˛ podczas korekcji położenia tym wi˛eksze odst˛epstwo od trajektorii zadanej. Mimo wi˛ekszych oscylacji wokół trajektorii zadanej w porównaniu do rysunku 6.25 duży czas pomi˛edzy kolejnymi wyrównaniami położenia zapobiega oddalaniu si˛e robota od właściwej trajektorii. Podsumowujac ˛ wykonany eksperyment, wprowadzenie korekcji obrazu z kamery poprawia śledzenie trajektorii. Sprz˛eżenie robota z pomiarem z obrazu wideo całkowicie eliminuje odbieganie położenia rzeczywistego od zadanego z biegiem czasu. W przypadku, gdy kamera dysponuje dużym bł˛edem pomiaru (zwłaszcza orientacji) niezb˛edne jest cz˛este korygowanie 56 6. Badania Rysunek 6.27 Jazda po okr˛egu z korekcja˛ co 10 sekund. położenia. Im wi˛eksze odst˛epstwo pomiaru od wartości rzeczywistej, tym bardziej robot b˛edzie odbiegał od trajektorii zadanej. Okres korekcji położenia powinien być zależny oprócz niedokładności kamery od szybkości poruszania si˛e robota oraz możliwości reagowania na zmian˛e. Zbyt cz˛este korygowanie powoduje szarpany sposób sterowania, gdyż sterownik robota musi reagować na nagłe skoki pozycji spowodowane korekcja.˛ Rozdział 7 Podsumowanie Praca miała na celu skonstruowanie systemu śledzenia położenia, pozwalajacego ˛ na dokładne określanie pozycji i orientacji platformy mobilnej oraz porównanie dokładności lokalizacji robota mobilnego na podstawie różnych czujników. Badania wykazały, że na podstawie danych odczytanych z zastosowanych enkoderów magnetycznych na krótkich dystansach można z duża˛ dokładnościa˛ określić położenie i orientacj˛e robota mobilnego. Spośród czujników wewn˛etrznych robota okazały si˛e najdokładniejsze. Bardzo dobre wyniki uzyskano wyznaczajac ˛ pr˛edkość katow ˛ a˛ platformy mobilnej na podstawie odczytów z żyroskopu. Porównanie jej z pr˛edkościa˛ obrotowa˛ uzyskana˛ dzi˛eki enkoderom wykazało niemalże identyczne pr˛edkości katowe. ˛ Jednak bł˛edy całkowania narastaja˛ wraz z liczba˛ wykonanych obrotów. Żyroskop może być stosowany do określania orientacji np. w przypadku, gdy koła ulegaja˛ poślizgom i odczyty z enkoderów niepoprawnie określaja˛ położenie. Zakłócenia odczytów z akcelerometrów okazały si˛e na tyle wysokie, że niemożliwe było odczytania rzeczywistej pozycji robota. Ponadto podczas badań stwierdzono, iż bład ˛ odczytów narasta wraz ze wzrostem pr˛edkości i chropowatości powierzchni po której si˛e porusza platforma mobilna. Do odczytów przyspieszeń wzdłuż drogi robota dodaja˛ si˛e impulsy siły odśrodkowej generowane podczas jazdy po nierównościach (np. po dywanie). Okazało si˛e, że mimo bardzo wysokich zakłóceń, na podstawie akcelerometru można stwierdzić zderzenie z przeszkoda.˛ Wraz z żyroskopem akcelerometr może tworzyć komplementarna par˛e czujników do wykrywania przeszkód. Oprócz siły uderzenia odczytanej z akcelerometru można określić z której strony nastapiło ˛ zderzenie z przeszkoda˛ dzi˛eki odczytom pr˛edkości obrotowej z żyroskopu. Zastosowanie obrazu wideo do śledzenia położenia okazało si˛e niezb˛edne. Podczas długiej jazdy bł˛edy odczytów z enkoderów powoduja˛ znaczne (ciagle ˛ narastajace) ˛ odbieganie od trajektorii zadanej. Wprowadzenie cyklicznej korekty położenia z obrazu wideo poprawia wyniki i nie pozwala robotowi mobilnemu na zbytnie oddalanie si˛e od trajektorii zadanej. Dokładność wyznaczania oddalenia od kamery była nawet kilka razy gorsza od precyzji określania pozycji w osiach X i Y. W tym przypadku warto by było sprawdzić działanie innych dost˛epnych pakietów oprogramowania do wyszukiwania znaczników w obrazie wideo. Dodatkowo podczas eksperymentów stwierdzono, iż umieszczenie znacznika na górnej blasze robot powodowało znaczne zakłócenia w odczycie z kamery, czego skutkiem było chwilowe zgubienie znacznika. Powodem takiego zjawiska jest odbijanie si˛e promieni słonecznych od blachy aluminiowej, które nast˛epnie padaja˛ bezpośrednio na obiektyw kamery. Zakrycie całej górnej blachy biała˛ kartka˛ papieru całkowicie wyeliminowało to zjawisko. Dodatkowo stwierdzono, zależność dokładności określania położenia od jasności tła. Ponieważ pakiet ARToolKit ma statycznie określany próg jasności, ta sama wartość dla różnych jasności tła powoduje cz˛este gubienie znacznika. 58 7. Podsumowanie Podczas badań najlepsze rezultaty uzyskano, gdy platforma mobilna poruszała si˛e po białej, matowej powierzchni, która nie kontrastowała z białym wn˛etrzem znacznika. Poczatkowo ˛ zastosowane 10-bitowe enkodery magnetyczna maja˛ zbyt mała˛ rozdzielczość w stosunku do pr˛edkości obrotowej zastosowanych serwomechanizmów. Sterowanie z cz˛estotliwościa˛ 50Hz pozwala na regulowanie pr˛edkości obrotowej, jednak wahania pr˛edkości kato˛ wej sa˛ zdecydowania za wysokie dla bardzo precyzyjnych zastosowań. Zmiana na 12-bitowy czujnik pozwoliła dwukrotnie zmniejszyć okres sterowania, co pozytywnie wpłyn˛eło na stabilność utrzymywania pr˛edkości obrotowej. W podobnych konstrukcja zaleca si˛e umieszczenie enkodera magnetycznego bezpośrednio na osi silnika (przed przekładnia). ˛ Dzi˛eki temu b˛edzie możliwe zwi˛ekszenie cz˛estotliwości sterowania nap˛edami, co powinno pozytywnie wpłynać ˛ na stabilizacj˛e pr˛edkości obrotowej oraz zmniejszyć niedokładność odczytu. Dodatek A Schematy elektroniki Rysunek A.1 Schemat płytki z enkoderem AS5045. 60 A. Schematy elektroniki Rysunek A.2 Schemat płyty głównej. 61 Rysunek A.3 Schemat układu zasilania. 62 A. Schematy elektroniki Rysunek A.4 Schemat sterownika silników. 63 Rysunek A.5 Schemat płytki z modułem Bluetooth. Dodatek B Wymiary robota Rysunek B.1 Widok robota z góry. 66 B. Wymiary robota Rysunek B.2 Widok robota z boku. 67 Rysunek B.3 Widok otworów bocznych robota. 68 B. Wymiary robota Rysunek B.4 Umieszczenie trzeciego punktu podparcia robota. Dodatek C Fotografie Rysunek C.1 Widok robota. 70 C. Fotografie Rysunek C.2 Widok z góry na płytki elektroniczne. 71 Rysunek C.3 Umiejscowienie baterii - widok z tyłu. 72 C. Fotografie Rysunek C.4 Elektronika - widok z przodu. Spis rysunków 2.1 2.2 2.3 2.4 2.5 2.6 2.7 Ruch robota na płaszczyźnie. . . . . . . . . . . . . . . . . . . . Otrzymywanie drogi na podstawie przyspieszeń. . . . . . . . . . Całkowanie metoda˛ prostokatów. ˛ . . . . . . . . . . . . . . . . . Bład ˛ całkowania metoda˛ prostokatów. ˛ . . . . . . . . . . . . . . Całkowanie metoda˛ trapezów. . . . . . . . . . . . . . . . . . . Położenie akcelerometru w skonstruowanej platformie mobilnej. Zjawisko aliasingu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 11 11 12 12 13 13 3.1 3.2 3.3 3.4 Sposób działania wirtualnego muzeum. . . . . . . . . Przykładowy wzorzec rozpoznawany przez ARToolKit. Architektura biblioteki ARToolKit. . . . . . . . . . . . Algorytm wyszukiwania wzorca. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 16 17 18 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 Schemat blokowy zbudowanej platformy mobilnej. . Typowe umieszczenie magnesu. . . . . . . . . . . . Rozmieszczenie pinów enkodera AS5045. . . . . . . Komunikacja z enkoderem magnetycznym AS5045. . Rozmieszczenie pinów akcelerometru MMA7260. . Rozmieszczenie pinów w żyroskopie ADIS16100. . . Ramka komunikacji z żyroskopem ADIS16100. . . . Odpowiedź cz˛estotliwościowa filtru MAX7400. . . . Schemat blokowy mikrokontrolera MC9S12a64. . . Moduł z mikrokontrolerem AT91SAM7s256. . . . . Schemat blokowy mikrokontrolera AT91SAM7s256. Schemat układu zasilania. . . . . . . . . . . . . . . . Moduł Bluetooth BTM-112. . . . . . . . . . . . . . Umieszczenie enkodera w serwomechaniźmie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 20 21 22 22 23 24 25 27 28 29 30 31 33 5.1 Aplikacja sterujaca. ˛ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38 6.1 6.2 Identyfikacja serw MG-995. . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 Pomiar w osi X, wartość średnia=-520,6mm, min=-528,53mm, max=512,13mm, dokładność=16,5mm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 Pomiar w osi Y , wartość średnia= 262, 45mm, min= 258, 28mm, max= 266, 48mm, dokładność= 8, 5mm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Pomiar w osi Z, wartość średnia= 1508mm, min= 1483, 1mm, max= 1531, 3mm, dokładność= 48, 5mm. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Pomiar w osi X, wartość średnia= −169, 15mm, min= −169, 33mm, max= −168, 28mm, dokładność= 1, 5mm . . . . . . . . . . . . . . . . . . . . . . . 42 6.3 6.4 6.5 . . . . . . . . . . . . . . 74 SPIS RYSUNKÓW 6.8 6.9 6.10 6.11 6.12 6.13 6.14 6.15 6.16 6.17 6.18 6.19 6.20 6.21 6.22 6.23 6.24 6.25 6.26 6.27 Pomiar w osi Y , wartość średnia= 140, 01mm, min= 139, 24mm, max= 140, 2mm, dokładność= 1mm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 Pomiar w osi Z, wartość średnia= 1516, 9mm, min= 1507, 4mm, max= 1519mm, dokładność= 11, 5mm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 Ułożenie znaczników na płaszczyźnie. . . . . . . . . . . . . . . . . . . . . . . 43 Pomiar odległości znaczników w osi X. . . . . . . . . . . . . . . . . . . . . . 44 Pomiar odległości znaczników w osi Y . . . . . . . . . . . . . . . . . . . . . . 44 Pomiar odległości znaczników w osi Z. . . . . . . . . . . . . . . . . . . . . . 45 Odczyt przebytej drogi na podstawie enkoderów, droga rzeczywista=103cm. . . 46 Odczyt przebytej drogi na podstawie enkoderów, droga rzeczywista=148cm. . . 46 Odczyty z osi X akcelerometru w stanie spoczynku. . . . . . . . . . . . . . . . 47 Skalowanie osi X akcelerometru. . . . . . . . . . . . . . . . . . . . . . . . . . 47 Przyspieszenie liniowe platformy mobilnej. . . . . . . . . . . . . . . . . . . . 48 Obliczona droga na podstawie przyspieszeń z szumami. . . . . . . . . . . . . . 49 Przyspieszenie liniowe po uwzgl˛ednieniu wartości progowej. . . . . . . . . . . 49 Droga uzyskana z przyspieszeń po usuni˛eciu szumów. . . . . . . . . . . . . . . 50 Porównanie drogi otrzymanej z przyspieszeń i enkoderów. . . . . . . . . . . . 50 Porównanie orientacji uzyskanej z żyroskopu i enkoderów. . . . . . . . . . . . 51 Zderzenie czołowe z przeszkoda.˛ . . . . . . . . . . . . . . . . . . . . . . . . . 52 Zderzenie pod katem ˛ ostrym z przeszkoda.˛ . . . . . . . . . . . . . . . . . . . . 52 Jazda po linii prostej. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53 Porównanie trajektorii z kamery i enkoderów. . . . . . . . . . . . . . . . . . . 54 Jazda po okr˛egu z korekcja˛ co sekund˛e. . . . . . . . . . . . . . . . . . . . . . 55 Jazda po okr˛egu z korekcja˛ co 10 sekund. . . . . . . . . . . . . . . . . . . . . 56 A.1 A.2 A.3 A.4 A.5 Schemat płytki z enkoderem AS5045. Schemat płyty głównej. . . . . . . . . Schemat układu zasilania. . . . . . . . Schemat sterownika silników. . . . . . Schemat płytki z modułem Bluetooth. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 60 61 62 63 B.1 B.2 B.3 B.4 Widok robota z góry. . . . . . . . . . . . . . . . Widok robota z boku. . . . . . . . . . . . . . . . Widok otworów bocznych robota. . . . . . . . . Umieszczenie trzeciego punktu podparcia robota. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 66 67 68 C.1 C.2 C.3 C.4 Widok robota. . . . . . . . . . . . . . Widok z góry na płytki elektroniczne. Umiejscowienie baterii - widok z tyłu. Elektronika - widok z przodu. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69 70 71 72 6.6 6.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Spis tabel 4.1 4.2 4.3 4.4 4.5 Opis wyprowadzeń enkodera magnetycznego AS5045. Opis wyprowadzeń akcelerometru MMA7260. . . . . . Opis wyprowadzeń żyroskopu ADIS16100. . . . . . . Opis bitów wysyłanych do żyroskopu ADIS16100. . . Wybrane komendy konfiguracyjne modułu BTM-112. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 23 24 25 32 Bibliografia [1] Brent A. Miller and Ph. D. Chatschik Bisdikian. Bluetooth: uwolnij si˛e od kabli. Helion, Gliwice, 2003. [2] Analog Devices. ADIS16100 ±300o /sec Yaw Rate Gyroscope with SPI. [3] ARToolworks. http://www.hitl.washington.edu/artoolkit/documentation/. [4] Atmel. AT91 ARM Thumb-based Microcontrollers. [5] Austria Microsystems. AS5045 DataSheet. [6] Freescale Semiconductor. MC9S12DJ64 Device User Guide, (covers also MC9S12D64, MC9S12A64, MC9S12D32, MC9S12A32). [7] Freescale Semiconductor. MMA7260 ±1.5g-6g Three Axis Low-g Micromachined Accelerometer. [8] W. Jacak and K. Tchoń. Podstawy robotyki. Wydawnictwo Politechniki Wrocławskiej, Wrocław, 1992. [9] Maxim. 8th-Order, Lowpass, Eliptic, Switched-Capacitor Filters. [10] A. Mazur. Model dynamiki i kinematyki manipulatora mobilnego typu RTR. raport serii SPR 37/99, Instytut Cybernetyki Technicznej, Politechnika Wrocławska, 1999. [11] Rayson. Class2 BC04-ext Module, BTM-112. [12] Freescale Semiconductor. Implementing position algorithms using accelerometers. Aplication Note AN3397. [13] STMicroelectronics. L298N, Dual Full-Bridge Driver. [14] K. Tchoń, A. Mazur, I. Dul˛eba, R. Hossa, and R. Muszyński. Manipulatory i roboty mobilne: modele, planowanie ruchu, sterowanie. Akademicka Oficyna Wydawnicza PLJ, Warszawa, 2000. [15] Łukasz Tułacz. Nawigacja robota mobilnego z użyciem czujników inercyjnych. Praca magisterska, Politechnika Wrocławska, 2009.