Skład zespołu:

  • Sławomir Goszcz
  • Tomasz Pięciak

1. Wstęp

  • Celem laboratorium była konstrukcja robota wraz z czujnikami, opracowanie algorytmu i jego implementacja w środowisku Prolog wraz z wykorzystaniem PLNXT API.
  • Wraz z konstrukcją robota, były prowadzone testy działania wszystkich sensorów, silników oraz przykładowych predykatów zawartych w instrukcji z linii komend środowiska SWI-Prolog.

testowy.pl

:- consult('plnxt.pl').             % załadowanie pliku plnxt.pl
 
testowy :-
	nxt_open.                    % otworzenie połączenie
	nxt_light_LED(activate).     % włączenie diody
	nxt_close.                   % zamknięcie połączenia
:- testowy.                         % uruchomienie programu 'textowy'
  • Połączenie się z robotem poprzez interfejs Bluetooth i skonfigurowanie środowiska XPCE nie przysporzyło nam żadnych problemów.

2. Konstrukcja robota

  • Robot, którego skonstruowaliśmy został opisany w instrukcji dołączonej do zestawu LEGO MINDSTORM QUICK START.
  • Układ jezdny robota opierał się na dwóch niezależnie sterowanych silnikach, które pozwalały mu na wykonywanie skrętów oraz tylnego koła zamocowanego na obrotowym elemencie, co sprawiało, że tylko koło ustawiało się pod odpowiednim kontem do toru jazdy.
  • Nasz robot był wyposażony w czujnik zbliżeniowy wykorzystujący ultradźwięki zamocowany na frontowej części jednostki, cała konstrukcja robota była pomyślana tak, aby w jego centralnej części można było zamocować sterownik komunikujący się z komputerem do którego podłączone zostały obydwa silniki i czujnik zbliżeniowy.
  • Możemy stwierdzić, że na potrzeby naszego zadania laboratoryjnego robot spisał się znakomicie.
Rys. 1. Wygląd robota Rys. 2. Robot zatrzymuje się przed sztuczną ścianą w postaci ręki
Rys. 1. Wygląd robota Rys. 2. Robot zatrzymuje się przed sztuczną ścianą w postaci ręki

3. Opracowanie algorytmów

  • Celem algorytmu drugiego było zaprogramowanie robota tak, aby jechał wprost przed siebie aż do napotkania przeszkody (Rys. 2), następnie wylosowania dowolnego kąta z przedziału od 90 do 270 stopni po czym obrót o wylosowaną wartość i podążanie, aż napotka kolejną przeszkodę.
  • Zabrakło nam czasu do testowania działania algorytmu (zespół jednie dwuosobowy)

algorytm2.pl

:- consult('plnxt.pl').              % załadowanie pliku plnxt.pl
 
start :-
       nxt_open,                     % otworzenie połączenie
       go.                           % wywołanie programu 'go'
 
go :-
       trigger_create(_, sprawdz_odleglosc, [obroc_robota, go]),   % jeżeli dystans jest mniejszy niż 15, to następuje wywołanie 'obroc_robota', a następnie rekurencyjnie 'go'
       nxt_go(300).                                                % jazda z prędkością 300 stopni na sekundę
 
%% Predykat sprawdzający odległość od przeszkody
sprawdz_odleglosc :-
       nxt_ultrasonic(Odleglosc, force),  % wymuszone sprawdzenie odległości
       Odleglosc < 15.                    % odległość mniejsza od 15?
 
%% Predykat dokonujący obrotu robota.
obroc_robota :-
       nxt_stop,                          % zatrzymanie robota
       nxt_rotate(500, 270 - random(180)). % obrót robota w miejscu o losowy kąt 90 do 270 stopni

4. Napotkane problemy

  • Podstawowym problemem przy konstrukcji robota była ograniczona ilość czasu na wykonanie ćwiczenia laboratoryjnego.
  • W przeciwieństwie do grup późniejszych sporo czasu straciliśmy na skonstruowaniu robota, co nie pozwoliło nam na implementację pierwszego algorytmu. Nie mogliśmy przez to rozwinąć naszych twórczych zdolności i musieliśmy zbudować robota na podstawie instrukcji QUICK START.
  • Z naszych obserwacji wynika, że największą techniczną trudnością jest takie zaprojektowanie robota, aby jego szkielet stanowił stabilną i w miarę małą ramę pozwalającą podtrzymać znacznych rozmiarów silniki i ogromny (jak na skalę jednostki) sterownik.
  • Klocki LEGO TECHNICS są jednak doskonałym budulcem i pozwalają ,jeśli przemyśli się konstrukcję, rozwiązać wszystkie napotkane problemy.
  • Innym napotkanym problemem była wartość dystansu dla czujnika ultradźwiękowego, która została dobrana w sposób arbitralny po kilku próbach.

5. Co rozszerzyć w laboratorium?

  • Naszym zdaniem zabawa klockami MINDSTORM jest na tyle ciekawa, że właściwie podstawową rzeczą, o którą należałoby rozszerzyć laboratorium jest czas jego trwania. Pozwoliłoby to nam na skonstruowanie robota własnego pomysłu.
  • Dodatkowo moglibyśmy napisać bardziej złożony algorytm zarządzający jego poruszaniem się.
  • Na stronie: https://ai.ia.agh.edu.pl/wiki/pl:mindstorms:lab:lab_plnxt_zapoznanie znaleźliśmy błąd w opisie kodu:
:- consult('sciezka_do_plnxt.pl').
 
start :-
	nxt_open,
	nxt_go_cm(400,80), % Jazda 200 cm do przodu z prędkością 400 stopni/sekundę.
	nxt_go_cm(-400,80), % Jazda 200 cm do tyłu z prędkością 400 stopni/sekundę.
	nxt_close.
 
:- start.

Wg nas powinno być (w oparciu o dokumentację: https://ai.ia.agh.edu.pl/wiki/_media/pl:mindstorms:lab:nxt_movement.pdf?id=pl%3Amindstorms%3Alab%3Alab_plnxt_zapoznanie&cache=cache)

:- consult('sciezka_do_plnxt.pl').
 
start :-
	nxt_open,
	nxt_go_cm(400,80), % Jazda 80 cm do przodu z prędkością 400 stopni/sekundę.
	nxt_go_cm(-400,80), % Jazda 80 cm do tyłu z prędkością 400 stopni/sekundę.
	nxt_close.
 
:- start.

6. Wnioski

  • Na ćwiczeniach laboratoryjnych nauczyliśmy się ciekawego i praktycznego zastosowania języka PROLOG.
  • Zauważyliśmy, że w przeciwieństwie do blokowego schematu opracowanego w LabView programy do obsługi robotów LEGO MINDSTORM napisanew PROLOGu są krótsze i bardziej eleganckie.
  • Jednocześnie od strony konstrukcyjnej budowa robota na podstawie instrukcji QUICK START pozwoliła nam oswoić się z budulcem jakim są klocki LEGO TECHNICS i budowa robotów na podstawie naszych własnych projektów będzie szybsza i łatwiejsza.

7. Pliki

pl/dydaktyka/piw/2009/sprawozdania/piw20090408-08b.txt · ostatnio zmienione: 2019/06/27 15:50 (edycja zewnętrzna)
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0