Instalacja leJOS
Do tworzenia programów w leJOS potrzebna jest Java 32bit również JDK, może być to openJDK. Należy ją zainstalować w wersji 32-bit nawet na 64-bitowym systemie:sudo apt-get install openjdk-7-jdk:i386
Sprawdzamy wersję jre i ustawiamy na 32-bitową:
sudo update-alternatives --config java
Pobieramy 32-bitowe Eclipse ze strony https://www.eclipse.org/downloads/
Następnie pobieramy biblioteki leJOS wybierając najnowszą wersję i paczkę dla naszego systemu ze strony: http://sourceforge.net/projects/lejos/files/lejos-NXJ/ i rozpakowujemy je do katalogu /opt/leJOS_NXT
Teraz otwieramy Eclipse i w menu help->Eclipse Marketplace wyszukujemy wtyczkę leJOS dla NXT.Instalujemy i restartujemy Eclipse. W opcji tworzenia nowych projektów pojawił się pojekt lejOS NXT oraz nowe menu LeJOS NXJ z wgrywaniem firmware.
Programowanie w Java
Jednym z wzorcowych modeli robotów jakie możemy wykonać dzięki klockom Lego NXT jest shooterbot. Potrafi on strzelać kulkami. Z przodu robota ustawiony jest czujnik ultradźwiękowy pozwalający mierzyć odległość od przeszkód. W napisanym programie testowym robot ma się obracać czekając na „wroga”. Jeżeli ktoś zbliży się do niego na małą odległość (30cm), zatrzymuje się i oddaje strzał. Po strzale dalej obraca się. Schemat algorytmu:Jego realizacja w postaci programu Java:
import lejos.nxt.Button;
import lejos.nxt.LCD;
import lejos.nxt.Motor;
import lejos.nxt.SensorPort;
import lejos.nxt.UltrasonicSensor;
import lejos.util.Delay;
public class Test
{
public static void main(String[] args)
{
LCD.drawString("Test program", 0, 0);
UltrasonicSensor ultra = new UltrasonicSensor(SensorPort.S3);
Motor.A.setSpeed(200);
Motor.B.setSpeed(200);
boolean play = true;
ultra.continuous();
Motor.A.forward();
Motor.B.backward();
while(play){
int dist = ultra.getDistance();
Delay.msDelay(50L);
LCD.clear();
LCD.drawString(Integer.toString(dist),0,0);
if(dist < 30){
fire();
}
if(Button.readButtons() == Button.ID_ENTER) play = false;
Delay.msDelay(200L);
}
}
private static void fire(){
Motor.A.stop();
Motor.B.stop();
Motor.C.forward();
Delay.msDelay(1000L);
Motor.C.stop();
Motor.A.forward();
Motor.B.backward();
}
}
Działanie algorytmu przedstawiam na filmiku: Enchanting
Jeżeli chcemy uczyć dzieci ze szkoły podstawowej to potrzebujemy prostszego sposobu na tworzenie programów. Oryginalne oprogramowanie dołączane razem z robotem niestety nie działa na Linuksie. Poza tym to oprogramowanie ma inne mankamenty. Program ten wygląda ciekawie, jednak szybko można odczuć jego braki. Ciężko napisać w nim jakiś większy kod, ponieważ bloki graficzne, z których buduje się program bardzo rozciągają się na ekranie i trudno jest prześledzić wzrokiem jego przebieg. Do tego nie znalazłem opcji skalowania rozmiaru widoku programu. Sam program bardziej przypomina schematy blokowe niż język programowania.Na szczęście istnieje projekt Enchanting wykorzystujący znany program do nauki programowania dla dzieci Scratch. Napisany w języku Squeek program pozwala tworzyć kod w oparciu o graficzne elementy symbolizujące wyrażenia języka programowania. Pozwala on rysować po ekranie podobnie do LOGO. Twórcy Enchanting wpadli na pomysł, że zamiast sterować pisakiem po ekranie równie dobrze można sterować robotem Lego. Przygotowali wersję Scratch, która potrafi generować z ułożonych przez użytkownika graficznych puzzli kod przeznaczony dla Lego NXT. Kod ten środowisko Enchanting przesyła za pośrednictwem USB lub Bluetooth do pamięci robota. Twórcy wykorzystali firmeware LeJOS. Trzeba jednak pamiętać, że wgrywanie firmewaru zastępuje oryginalny i uniemożliwi nam korzystanie z dotychczasowego oprogramowania (bez ponownego wgrania oryginalnego firmewaru). W Scratch (i Enchanting) programowanie jest zbliżone w wyglądzie do typowego programowania. Występują te same elementy jak pętle, zwrotnice, przypisania itp. Tyle, że można je wykorzystywać wybierając i przeciągając na formatkę naszego programu. Dzięki takiemu rozwiązaniu znacznie łatwiej jest prześledzić działanie kodu programu, czytając go od góry do dołu. Oto przykład prostego algorytmu ruchu robota. Robot porusza się do przodu. W momencie gdy czujnik ultradźwiękowy wykryje przeszkodę robot obraca się i kontynuuje jazdę. Działanie algorytmu na filmiku:
Brak komentarzy:
Prześlij komentarz