To jest stara wersja strony!


Zapoznanie z PLNXT

Celem ćwiczenia było zapoznanie się z interfejsem programistycznym w prologu do Lego Mindstorms.

Przebieg Ćwiczenia

  • Wykożystywana w tym ćwiczeniu konstrukcja robota, nie jest szczególnie istotna, warto nadmienić, że robot był samojezdy oraz posiadał nst. czujniki:
    • dźwiękowy
    • ultrasoniczny (odległości)
    • dotyku
  • Komunikacja pomiędzy robotem a PC odbywała się za pomocą Bluetooth.
  • Po wstępnym zapoznaniu się z instrukcją API przystąpiliśmy do jego testowania. W pierwszej fazie udało się nam przetestować działanie podstawowych funkcji API:
    • nxt_open, nxt_close - otwarcie/zamknięcie połączenia
    • nxt_voltage_millivolt(Voltage) - odczyt napięcia na bateriach
    • nxt_rotate(350,360) - obrót w prawo
    • nxt_go(300) - jazda do przodu z prędkością 300 stopni/sekundę
  • Następnie kiedy udało się nam wstępnie zaznajomić z dostępnymi predykatami przeszliśmy do testowania działania przykładowych trzech programów zamieszczonych w instrukcji do ćwiczenia. Pozwoliły nam one na przyjrzenie się konstrukcji programu w prologu sterującego robotem oraz na sposób tworzenia zdarzeń oraz akcji w programie za pomocą predykatu trigger_create/3 z modułu threads.

Implementacja Algorytmu

  • Ostatecznie stworzyliśmy własny program pozwalający na omijanie przeszkód przez naszego robota:
:- consult('../plnxt/plnxt.pl').
 
start :-
	nxt_open,
	trigger_create(_,check_distance,[nxt_stop, rotate90]),
	trigger_create(_, check_stop, [nxt_stop, nxt_close]),
	nxt_go(500).
 
 
check_distance :-
	nxt_ultrasonic(Distance,force),
	Distance < 15.
 
 
rotate90 :-
	go_rotate,
	trigger_create(_,check_distance,[nxt_stop, rotate90]),
	nxt_go(500).
 
go_rotate :-
	nxt_rotate(350, 90), sleep(1),
	nxt_go_cm(500,30),
	nxt_rotate(350,-90),sleep(1),
	nxt_go_cm(500,30),
	nxt_rotate(350,-90),sleep(1),
	nxt_go_cm(500,30),
	nxt_rotate(350,90),sleep(1).
 
check_stop :-
	nxt_touch(Stop,force),
	Stop = 1.
  • Robot porusza się do przodu z zadaną prędkością, gdy zbliży się do przeszkody wykonuje serię manewrów umożliwiających jej ominięcie i jedzie dalej aż do napotkania kolejnej przeszkody, poczym znów ją omija, wyłaczenie programu następuje poprzez wciśnięcie czujnika dotyku. Zrezygnowaliśmy tutaj ze sterowania robotem poprzez klaśnięcia ponieważ system ten źle sprawdza się w warunkach laboratorium i jest bardzo ciężki w testowaniu.

omijanie.pl

pl/mindstorms/studenci/przedmioty/jsi/jsi2008/jsi20090114-11a.1232295552.txt.gz · ostatnio zmienione: 2019/06/27 15:57 (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