|
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-09e [2009/01/19 08:37] jsi08 Dodane dodatkowe sugestie |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-09e [2019/06/27 15:50] |
===== Konstrukcja ===== | |
| |
Zastaliśmy złożonego Tribota z ramionami chwytającymi i czujnikiem dotykowym z przodu. Doinstalowaliśmy mu sonar skierowany do przodu i mikrofon skierowny w górę (wzdłóż jednostki centralnej). Sonar był uniesiony troszkę do góry, tak aby nie wykrywał piłki przed nim, tylko ścianę/inne przeszkodzy. | |
| |
Nie zamieszczamy zdjęć, bo raczej wszyscy widzieli Tribota, nie zmodyfikowaliśmy go zbytnio. | |
| |
===== Program ===== | |
| |
<code prolog> | |
:- consult('plnxt/plnxt.pl'). | |
| |
check_sonar :- | |
nxt_ultrasonic(Value,force), | |
Value < 40. | |
| |
check_touch :- | |
nxt_touch(Value,force), | |
Value = 1. | |
| |
check_sound :- | |
nxt_sound(Value,force), | |
Value > 50. | |
| |
grab :- | |
nxt_stop, | |
nxt_pincer(close), | |
turn_right. | |
| |
ungrab :- | |
nxt_stop, | |
nxt_pincer(open), | |
X is -20, | |
nxt_go(400,X).mis tu byl;p | |
turn_right. | |
| |
| |
turn_right :- | |
nxt_stop, | |
nxt_rotate(400,45), | |
go_forward. | |
| |
go_forward :- | |
trigger_create(_,check_sonar,[turn_right]), | |
trigger_create(_,check_touch,[grab]), | |
trigger_create(_,check_sound,[ungrab]), | |
nxt_go(400). | |
| |
start :- | |
nxt_open, | |
go_forward. | |
</code> | |
| |
Program nie jest zbyt skomplikowany, ponieważ brakło nam czasu (patrz Problemy poniżej). Po wywołaniu robot jedzie do przodu dopóki nie stanie się jedna z trzech rzeczy: | |
* Gdy wykryje przeszkodę w odległości mniejszej niż 40cm - skręci w prawo o ok. 90 stopni | |
* Gdy wykryje dotknięcie - zamknie ramiona zakładając, że to piłka. | |
* Gdy natężenie dźwięku osiągnie wartość większą niż 50 - rozłoży ramiona puszczając piłkę. | |
Widać to wszystko wprost z programu, po wielu walkach z triggerami wszystko w miarę działało. | |
| |
Plik programu: {{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:our-first-nxt-program.pl}} | |
| |
===== Problemy ===== | |
| |
Przez prawie całe zajęcia mieliśmy stałe problemy z nawiązaniem, utrzymaniem a także zakończeniem połaczenia. Objawiało się to tym, że robot nie chciał wystartować programu albo nie chciał go zakończyć. Udało nam się zawiesić interpreter prologa na komputerze po wykonaniu ''nxt_close''. Zdarzało się także, że zatrzymany robot po chwili zaczynał sam z siebie jeździć - prawodopodobnie przez 'wiszące w powietrzu' triggery. | |
| |
===== Sugestie ===== | |
| |
Ponieważ mieliśmy problemy ze zrozumieniem jak działają triggery a nie mogliśmy znaleźć w żadnym opisie oprócz przykładów, w szczególności w [[https://ai.ia.agh.edu.pl/wiki/_media/pl:mindstorms:lab:nxt_movement.pdf]]. Bardzo prosilibyśmy o jakiś opis jak to działa, kiedy się resetują, kiedy trzeba dodawać, czy można nadpisać itp. | |
| |
Proponujemy jeszcze, żeby - może na koniec zajęć z laboratoriów w ramach podsumowania - umożliwić studentom pobawienie się prawdziwym robotem (Hexorem) zamiast takim z klocków. | |
| |
Być może - w kolejnych latach - dobrym pomysłem byłoby też udostępnienie studentom czujników robionych na projektach z MIW. Z jednej strony byłby szerszy wachlarz zastosowań (np. czujniki promieniowania UV, ruchu etc. można skonstruować) a z drugiej studenci przypomnieliby sobie, że w takich klockach NXT nie siedzą skrzaty, a obwody i tranzystory :) | |