Both sides previous revision
Poprzednia wersja
Nowa wersja
|
Poprzednia wersja
|
pl:dydaktyka:piw:2010:sprawozdania:piw20100609-15e [2010/06/09 19:24] piw10 |
pl:dydaktyka:piw:2010:sprawozdania:piw20100609-15e [2019/06/27 15:50] (aktualna) |
| |
* Robot: Dyzio | * Robot: Dyzio |
* Data: 12.05.2010, godz. 15.30 | * Data: 09.06.2010, godz. 15.30 |
* Autorzy: Andrzej Gryboś, Michał Henslok, Tomasz Jama | * Autorzy: Andrzej Gryboś, Michał Henslok, Tomasz Jama |
| |
===== Wstęp ===== | ===== Wstęp ===== |
| |
Po wstępnym zapoznaniu się z [[https://ai.ia.agh.edu.pl/wiki/pl:plnxt:start|instrukcją do PLNXT]] przystąpiliśmy do konfiguracji pliku //plnxt.pl//, zmieniliśmy w nim kilka linijek za każdym razem określając, że robot powinien być wykrywany przez wirtualny port Comm 4. | Po zapoznaniu się z instrukcjami do laboratorium oraz odkomentowaniu kody odpowiedzialnego za komunikację z naszym robotem, czyli [[https://ai.ia.agh.edu.pl/wiki/pl:mindstorms:lab:wyposazenie:04-dyzio|Dyziem]] tak aby był on wykrywany przez wirtualny port Comm 4 przystąpiliśmy do realizacji laboratorium. |
<code>nxt_robot_definition(dyzio,'/dev/rfcomm4',bt,off,on_demand,17.5,11,'C','B','A',false,'S1','S2','S3','S4').</code> | <code prolog>nxt_robot_definition(dyzio,'/dev/rfcomm4',bt,off,on_demand,17.5,11,'C','B','A',false,'S1','S2','S3','S4').</code> |
Po podpięciu Bluetooth do komputera udało się nam wykryć naszego robota, czyli [[https://ai.ia.agh.edu.pl/wiki/pl:mindstorms:lab:wyposazenie:04-dyzio|Dyzia]]. Niestety mimo obustronnej łączności mieliśmy problemy z wydawaniem poleceń robotowi. | |
| |
{{:pl:dydaktyka:piw:2010:sprawozdania:dyzio_lab6_1.jpg|}} | {{:pl:dydaktyka:piw:2010:sprawozdania:dyzio_lab6_1.jpg|}} |
| |
===== Przebieg laboratorium ===== | ===== Przebieg laboratorium ===== |
| Od samego początku zaczęliśmy naszą pracę od dostosowania programu Więzień do aktualnie panujących warunków świetlnych. Dokonaliśmy zmian konstrukcyjnych robota - tak aby sensor świetlny był jak najbliżej powierzchni po której przemieszcza się robot. |
| |
Komentarz. | Poniżej kod programu Więzień. |
| |
<code prolog> | <code prolog> |
:- consult('sciezka_do_plnxt.pl'). | :- consult('plnxt.pl'). |
| |
start :- | start :- |
nxt_go(100), | nxt_go(100), |
trigger_create(_,czarny,szukaj), | trigger_create(10,czarny,szukaj), |
trigger_create(_,klucz,uciekaj). | trigger_create(_,klucz,uciekaj). |
| |
| czarny :- |
| nxt_light(Value,force), |
| Value < 50. |
| |
szukaj :- | szukaj :- |
nxt_stop, | nxt_stop, |
nxt_rotate(100, 60), | nxt_rotate(100, 60), |
| trigger_kill(10), |
start. | start. |
| |
czarny :- | |
nxt_light(Value,force), | |
Value < 36. | |
| |
klucz :- | klucz :- |
nxt_light(Value, force), | nxt_light(Value, force), |
stop :- | stop :- |
trigger_killall, | trigger_killall, |
nxt_stop. | nxt_stop, |
| nxt_close. |
</code> | </code> |
| |
| Niestety nie udało nam się nawiązać komunikacji między robotami. Powodami były: |
| * problemy z komunikacją wynikające z za dużej liczby urządzeń jednocześnie korzystających z połączeń typu Bluetooth |
| * brak czasu na dokładne zaznajomienie się z obsługą protokołu TCP/IP w środowisku SWI Prolog |
| * dopracowywanie programu Więzień |
| |
===== Wnioski ===== | ===== Wnioski ===== |
| - Komunikacja między robotami nie była możliwa do przetestowania z powodów wymienionych powyżej. |
- Jeden | - Należy zwracać uwagę na tworzenie nowych wątków, gdyż nie są one zabijane aż do wydania poleceń<code prolog>trigger_kill(ID) / trigger_killall</code> i mogą prowadzić do zapętlenia się programu. |
- Dwa | - Wpływ oświetlenia dziennego ma zasadniczy wpływ na kalibrację sensora świetlnego. Kolor czerwony (przedział jasności 68-70) jest praktycznie niemożliwy do odróżnienia od koloru białego (69-71). Dodatkowo na pomiar jasności wpływa cień rzucany przez samego robota utrudniając jeszcze bardziej identyfikację kolorów. Jedynie kolor czarny jest łatwo rozróżnialny od pozostałych (przedział jasności <40). |
| |
===== Uwagi ===== | ===== Uwagi ===== |
| * Opis laboratoriów powinien być bardziej szczegółowy - w trakcie zajęć nie ma za dużo czasu, aby zapoznać się ze wszystkimi potrzebnymi funkcjami oraz ich przetestowania (obsługa protokołu TCP/IP w Prologu), a studenci poza zajęciami nie mają możliwości własnego ich sprawdzenia |
Jakieś uwagi | * Ze względu na brak możliwości programowania sekwencyjnego w Prologu pewnie działania są o wiele trudniejsze do napisania niż w innych językach programowania |