|
|
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-08b [2009/01/14 23:32] jsi08 |
pl:mindstorms:studenci:przedmioty:jsi:jsi2008:jsi20090114-08b [2019/06/27 15:50] |
====== PLNXT - Paweł Grzesiak, Rafał Dyrda - 14.01.09. ====== | |
====== v.alpha ====== | |
| |
===== 1. Cel ćwiczenia ===== | |
Celem ćwiczenia było skonstruowanie robota oraz uruchomienie prostych algorytmów stworzonych przy pomocy interfejsu PLNXT działającego w powłoce SWIPL. | |
===== 2. Realizacja ćwiczenia ===== | |
==== 2.1. Budowa robota ==== | |
Zbudowany przez nas robot oparty jest o model zawarty w instrukcji Quickstart dołączonej do zestawu, ponadto został rozbudowany do TriBot'a przy pomocy instrukcji zawartej w User Guide, wyposażony został w czujnik dotyku, działający jako czujnik krańcowy [Rysunek2]. \\ | |
Wygląd robota został przedstawiony na rysunkach poniżej. | |
\\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:henio_tribot.jpg|}}\\ | |
Rysunek 1: Henio-TriBot\\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:dotyk.jpg|}}\\ | |
Rysunek 2: Konstrukcja czujnika krańcowego z wykorzystaniem czujnika dotyku.\\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:podest.jpg|}}\\ | |
Rysunek 3: Rampa nowej generacji.\\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:henio2387456.jpg|}}\\ | |
Rysunek 4: Henio Magazynier skradający się po piłkę.\\ | |
\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:henio983528.jpg|}}\\ | |
Rysunek 5: Henio Magazynier po załadowaniu towaru. | |
==== 2.2. Pisanie algorytmu ==== | |
Przy pomocy funkcji z interfejsu NXTPL opisanych w {{:pl:mindstorms:lab:nxt_movement.pdf|nxt_movement.pdf}} można w prosty sposób pisać algorytmy na zasadzie predykatów języka Prolog. Ze względu na ograniczoną ilość czasu stworzyliśmy jeden algorytm. | |
=== 2.2.1. Magazynier === | |
Zadaniem robota bylo: | |
* podjazd do rampy, na której znajdowała się kulka, | |
* po wyczuciu oporu powinien się zatrzymać, | |
* chwycić kulkę przy pomocy szczypiec, | |
* wycofać, | |
* obrócić się o 180 stopni, | |
* pojechać 10cm do przodu, | |
* zatrzymać się i wypuścić piłkę. | |
Kod algorytmu (również jako załącznik poniżej): | |
:- consult('plnxt.pl'). | |
| |
start:- | |
nxt_open, | |
go_on_buddy, | |
trigger_create(_,pushed,grab_ball). | |
| |
go_on_buddy :- | |
nxt_go(300). | |
| |
grab_ball :- | |
nxt_stop, | |
sleep(1), | |
nxt_pincer(close), | |
sleep(1), | |
nxt_go_cm(-300,10), | |
nxt_rotate(300,180), | |
nxt_go_cm(300,30), | |
nxt_pincer(open), | |
nxt_go_cm(-300,10), | |
nxt_stop, | |
nxt_close. | |
| |
pushed :- | |
nxt_touch(Value,force), | |
Value=1. | |
| |
**Uwagi:** | |
Predykat nxt_go_cm/2 nie działał, gdy jako //+Speed// wpisywało się wartość ujemną, co zgodnie z instrukcją powinno spowodować jazdę do tyłu. | |
| |
** Uwaga! Wtrącenie prowadzącego!** | |
Dla dobra szeroko rozumianej nauki muszę się wtrącić w sprawozdanie. ;)\\ | |
Panowie próbowali wpisywać //Distance// ujemny i wtedy nie działało, bo //Distance// powinien być dodatni (wg instrukcji). Zwrot wyznacza znak //Speed// (można się zastanowić, czy to jest słuszne i intuicyjne) i tak powinno działać (tak macie Panowie w Waszym algorytmie). Czy tutaj faktycznie był problem? --- //[[holownia@student.agh.edu.pl|Piotr Hołownia]] 2009/01/14 21:32// | |
| |
** Uwaga! Odpowiedź studentów;) **\\ | |
Faktem jest, że początkowo wpisywaliśmy wartość ujemną w //Distance//, lecz po zwróceniu uwagi spróbowaliśmy również z wartością ujemną w polu //Speed// (jak w kodzie powyżej) i sytuacja była taka sama. Oczywiście za tydzień przetestujemy jeszcze raz tą funkcję i dopiszemy kolejną **Uwagę**;)\\ | |
| |
===== 3. Wnioski ===== | |
* Łączność z Heniem była dość problematyczną kwestią - często po wykonaniu jakiejś komendy silniki pozostawały w trybie pracy, były naprężone i nie było możliwości zakończenia aktualnego zadania przez //nxt_stop//, lub //nxt_close//, pomagało jedynie wyłączenie bricka i zrestartowanie powłoki SWIPL. | |
\\ | |
**Załączniki:**\\ | |
{{:pl:mindstorms:studenci:przedmioty:jsi:jsi2008:nxt_magazynier.pl|}} | |