Tryb zaliczenia laboratorium

Za pracę w laboratorium ERO można otrzymać do 40 punktów. W czasie zajęć należy zaprojektować i oprogramować robota realizującego zadanie oraz udokumentować swoje osiągnięcia. Wskazane jest by dokumentacja końcowa dostarczona została w postaci elektronicznej, a najlepszym formatem jest HTML. Dokumentacja wraz ze zdjęciem robota umieszczona zostanie w galerii robotów.

Na ocenę z laboratorium będą miały wpływ następujące czynniki

Harmonogram i organizacja zajęć

Zajęcia laboratoryjne składają się z sześciu czterogodzinnych spotkań. Uczestnicy ERO powinny podzielić się na dwie równoliczne grupy, po jednej na każdą połowę semestru. Każdą z grup należy podzielić na trójosobowe zespoły. Pierwsze zajęcia będą miały charakter wprowadzający, pozwalający na zapoznanie się z zestawem MindStorms oraz środkami programistycznymi. Kolejne cztery zajęcia laboratoryjne przeznaczone zostaną na zaprojektowanie i oprogramowanie robota. Ostatnie spotkanie poświęcone zostanie konkursowi i ocenie rozwiązań.

Każdy zespół dysponować będzie pojedynczym zestawem MindStorms. Prowadzący mogą zatem zagwarantować nienaruszalność konstrukcji roboczych i finalnych.

Regulamin

W czasie zajęć obowiązuje regulamin pracowni robotyki (dostępny na miejscu). Dodatkowo proszę przestrzegać następujących zaleceń

Środowiko programistyczne

Komputery w pracowni robotyki działają (między innymi) pod kontrolą Linuxa RH 6.2. Każdy zespół otrzyma swoje indywidualne konto. Na koncie znajdować się będzie prosty program przykładowy dla RCX, Makefile pozwalający na jego kompilację oraz program lnptest.c demonstrujący wykorzystanie Linuxowego LNPD. Każdy z komputerów wyposażony został dodatkowo w gnuplot'a do rysowania wykresów i program octave, który jest podobny w obsłudze do Matlaba. . Część dokumentacji MindStorms i LegOS została skopiowana z Internetu do katalogu /usr/local/crossgcc/doc. Wszystkie programy związane z MindStorms i LegOS umieszczone są w katalogu /usr/local/crossgcc.

Kompilacja i uruchamianie programów LegOS

Źródła programów dla legOS przechowywane są w plikach o standardowych rozszerzeniach *.c dla C i *.cc dla C++. Programy te możemy edytować za pomocą dowolnego edytora dostępnego pod Linuxem (np. vi, joe, emacs, xemacs, kedit, kwrite ). W Makefile wprowadzamy następujące zmiany:

W nagłówku przykładowego Makefile deklarujemy, że do zbudowania programu wykonywalnego example.lx wykorzystujemy bibliotekę systemową libfloat.a z katalogu $(LEGOS_ROOT)/lib, własną bibliotekę librand.o składającą się z pliku obiektowego rand.o do generacji liczb losowych, oraz pliki obiektowe random_wanderer.o i (domyślnie) example.o. Pliki *.o wygenerowane zostaną na podstawie domyślnych reguł wynikania np. z *.c. Po utworzeniu rand.o zbudowana zostanie biblioteka librand.a za pomocą bezpośrednio zamieszczone reguły wynikania. Program example.lx możemy teraz uzyskać wydając komendę make example.lx lub po prostu make.

##
## legOS - the independent LEGO Mindstorms OS
## Makefile - allows you to keep the upper hand
## (c) 1998, 1999 by Markus L. Noga 
##

# name for the legOS kernel
LEGOS_ROOT=/usr/local/crossgcc/legOS/
KERNEL=$(LEGOS_ROOT)boot/legOS

PROGRAMS=example.lx
# extra dynamic sources
DOBJECTS=random_wanderer.o librand.a libfloat.a
.phony=all clean
all: $(PROGRAMS)

librand.a: rand.o
        $(AR) -rc librand.a $< 

Przed załadowaniem nowego programu do RCX należy upewnić się, że RCX działa już pod kontrolą legOS. W przeciwnym przypadku do uruchomienia legOS wykorzystujemy komendę firmdl3 -s /usr/local/crossgcc/legOS/legOS.srec, lub skrypt llegOS.

Nowe programy przesyłamy do RCX za pomocą narzędzia dll. Typowym jego zastosowaniem jest dll -p2 example.lx, które powoduje, że program wynikowy kompilacji example.lx przesyłany jest do drugiego slotu programowego w RCX. Jak już wcześniej wspomnieliśmy, RCX pozwala na jednoczesne przechowywanie ośmiu programów w slotach numerowanych od 1 do 8. Program po załadowaniu może zostać uruchomiony za pomocą przycisku RUN na klawiaturze RCX.

Uruchamianie LNPD

Wystarczy wydać polecenie lnpd -d -vdliac -t /dev/rcx -l-. Nie zaleca się uruchamiania lnpd w tle ze względu na trudności w synchronizacji dostępu do portu szeregowego pomiędzy lnpd a firmdl3 i dll.