|
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-09a [2009/01/21 01:41] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-09a [2019/06/27 15:50] |
==== Sprawozdanie z laboratorium nr 4 ===== | |
---- | |
| |
Robot: **Franek** | |
| |
Data wykonania: **14.01.2009, godz. 9.30** | |
| |
Autorzy: **Szymon Frenkel, Maciej Fabia** | |
| |
---- | |
| |
Budowa naszego robota: | |
| |
| |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:franek14-01-09.jpg?250|}} | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:franek2_14-01-09.jpg?250|}} | |
| |
| |
Franek korzystał z dwóch sensorów: | |
* czujnika dźwięku | |
* czujnika dotyku | |
| |
| |
Najpierw zapoznaliśmy się z podstawowymi poleceniami API robota: | |
* otwieranie i zamykanie połączenia Bluetooth - nxt_open, nxt_close, | |
* poruszanie się z daną prędkością i zatrzymywanie - nxt_go(n), nxt_stop, | |
* pobieranie danych z czujników - nxt_sound, nxt_touch, | |
* reagowanie na zdarzenie - trigger_create. | |
| |
| |
Następnie zaimplementowaliśmy algorytm "panikarz". Robot jechał powoli do przodu. Po usłyszeniu | |
klaśnięcia przez chwilę szybko się cofał, a następnie ponownie zaczynał powoli poruszać się do | |
przodu. | |
| |
<code prolog> | |
:- consult('plnxt.pl'). | |
| |
start:- | |
nxt_open, | |
go_on_buddy, | |
trigger_create(_,pushed,[nxt_stop,nxt_close]). | |
| |
go_on_buddy :- | |
nxt_go(200), | |
sleep(1), % Chwila przerwy, żeby jedno klaśnięcie nie zostało rozpoznane jako dwa. | |
trigger_create(_,clap,wait_a_second_buddy). | |
| |
wait_a_second_buddy :- | |
nxt_stop, | |
nxt_rotate(750,-360,force), | |
sleep(1), | |
trigger_create(_,clap,go_on_buddy). | |
| |
% Sprawdzenie, czy natężenie dźwięku przekracza progową wartość. | |
clap :- | |
nxt_sound(Value,force), | |
Value > 55. | |
| |
% Sprawdzenie, czy sensor dotyku jest wciśnięty. | |
pushed :- | |
nxt_touch(Value,force), | |
Value=1. | |
| |
:- start. | |
</code> | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:panikarz_14-01-09.pl|}} | |
| |
=== Wnioski === | |
Po zatrzymaniu algorytmu kilkukrotnie musieliśmy restartować SWIPL, ponieważ robot blokował się w momencie, kiedy po ucieczce miał znów jechać do przodu. Nie reagował wtedy na próby ponownego nawiązania połączenia - przyczyną były prawdopodobnie wątki stworzone przez trigger_create. Mimo to naszym zdaniem PLNXT daje większe możliwości niż standardowe środowisko graficzne LEGO. | |
| |