Skład zespołu:
Sławomir Goszcz
Tomasz Pięciak
Maciej Żywioł
1. Wstęp
Celem laboratorium było opracowanie algorytmu poruszania się robota wzdłuż czarnego owalu, zamykającego obszar na planszy.
Algorytm miał zostać zaimplementowany w języku prolog.
Robot miał za zadanie odnaleźć linię, a następnie poruszać się wzdłuż niej, naciśnięcie sensora dotyku powodowało zakończenie pracy robota.
2. Konstrukcja robota
|
Rys. 1. Wygląd robota |
|
Rys. 1. Robot w akcji - wypróbowywanie algorytmu |
3. Opracowanie algorytmów
Algorytm Śledzenie linii miał działać następująco: Robot umieszczony na planszy testowej dojeżdża do grubej czarnej linii, następnie obraca się w stronę prawą o 30 stopni po czym jadąc przed siebie, aż do ponownego najechania na grubą czarną linię.
Schemat ten jest powtarzany do momentu, aż nie zostanie wciśnięty sensor dotyku.
Próg natężenia oświetlenia równy 50 dobraliśmy po serii testów i pomiarów natężenia światła w obszarze czarnym i białym, w świetle oraz cieniu. Ponieważ bez dodatkowego źródła światła pomiary były chaotyczne i nie udało nam się określić konkretnego progu, uruchomiliśmy diodę doświetlającą.
sledzenie.pl
4. Algorytm w akcji
Działanie algorytmu można obejrzeć pod adresami:
5. Napotkane problemy
Yes
?- Warning: [Thread 5] Thread running "trigger_start(touch, stop, 1)" died due to failure
Innym problemem w algorytmie Śledzenie linii było ustalenie wartości progu dla sensora światła. Początkowo nie użyto oświetlenia diodą LED, co sprawiło kłopoty z odróżnieniem linii czarnej od białego wnętrza toru w sytuacji, gdy robot był odwrócony tyłem do zewnętrznego źródła światła (okna) i rzucał swój własny cień na czujnik światła. Rozwiązano to dodając stałe oświetlenie w postaci włączonej diody LED i dobraniem progu dla sensora światła równego 50.
W algorytmie dokonano zapisu zmian wartości odczytu sensora przy przekraczaniu podłoża białe→czarne oraz czarne→białe co przedstawia poniższy wykres.
|
Rys. 2. Przebieg odczytanych wartości sensora |
Przekroczenie progu czarne→białe:
Wartość średnia: | 55.44 |
Odchylenie standardowe: | 4.51 |
Przekroczenie progu czarne→białe:
Wartość średnia: | 46.76 |
Odchylenie standardowe: | 1.68 |
| |
Rys. 3. Przebieg odczytanych wartości sensora przy przekraczaniu progu czarne→białe (próbki parzyste) i białe→czarne (próbki nieparzyste) |
6. Co rozszerzyć w laboratorium?
Mając większą planszę można byłoby zrobić mini zawody żużlowe na owalnym torze, w których roboty mogłyby mieć zaprogramowane algorytmy jechania wewnątrz toru nie wjeżdżając w bandę (zjazd na zewnętrzną), albo na murawę (zjazd na wewnętrzną). Dodatkowo czujniki ultradźwiękowe mogłyby by reagować na odległości między nimi co zapobiegałoby kraksom ;)
Możliwość dodania ciągłego w czasie podglądu wartości sensorów poprzez osobny zestaw funkcji.
7. Wnioski
Opracowując algorytm śledzenia linii możemy stwierdzić, że było to zadanie niełatwe ale bardzo przyjemne. Dzięki zastosowaniu języka Prolog byliśmy w stanie w stosunkowo łatwy sposób zaimplementować dość zaawansowany algorytm śledzenia linii. Niestety zadanie laboratoryjne nauczyło nas również, że zastosowane w zestawie LEGO MINDSTORMS sensory nie są doskonałe i np. nieprawidłowe dobranie parametrów progowych czujnika światła może zniweczyć całą pracę algorytmiczną przez co robot przez dość długi czas nie zachowywał się tak jak tego od niego oczekiwaliśmy. Podsumowując zadanie było bardzo ciekawe i pokazało nam potencjał kryjący się w połączeniu LEGO MINDSTORMS i PROLOGA.
8. Pliki