Lego NXT & LeJOS Eine Einführung
Inhalt Das NXT Set Brick Originalzubehör 3 rd Party Zubehör LeJOS Einleitung Features Einschränkungen
Das NXT Set Der Brick 32 bit Arm7 MC 256KB Flash 64KB RAM Integrierter Lautsprecher 3 Ausgänge für Motoren 4 Eingänge für Sensoren USB und Bluetooth Verbindungsmöglichkeiten
Originalzubehör Geräuschsensor Druckkontaktsensor Lichtsensor Ultraschallsensor Reichweite bis 255cm Funktioniert am Besten wenn er in einem 90 Winkel zum Ziel steht Gibt die kürzeste Distanz im gemessenen Bereich zurück
Originalzubehör (Forts.) Licht- und Farbsensor Erkennt Farbtöne Gibt einen quasi-durchschnittsfarbwert des beobachteten Bereichs zurück Kann auch als Licht benutzt werden Servomotor Mit eingebautem Rotationssensor Akzeptiert verschiedene Einstellungen (Umdrehungen pro Minute, Leerlauf etc.)
3 rd Party Zubehör Kompasssensor RFID-Sensor Kann RFID-Tags auslesen... oder spontan in Flammen aufgehen EOPD-Sensor Alternative zur Entfernungsmessung Präziser, aber maximal auf 20 cm nutzbar Touchsensor Multiplexer Für bis zu 4 Touchsensoren an einem Port
LeJOS - Einleitung Lego Java OS Wird seit 2006 entwickelt (Aktuelle Version: 0.85) Abgespeckte Java VM/Firmware für NXT Bricks sowie API Bietet Eclipse und Netbeans Plugins Basiert auf dem Java 1.6 Standard
LeJOS - Features Basiert (größtenteils) auf Java 1.6 Bietet Zusatzklassen für häufige Aufgaben (z.b. Pilotklasse, Lokalisationsklassen etc.) Schneller als NXT-G Umfangreiche Tutorials und Beispielprogramme verfügbar Unterstützt einen Großteil der für NXTs verfügbaren Zusatzausstattung Funktionsumfang grob vergleichbar mit JME
LeJOS - Einschränkungen Funktionsumfang grob vergleichbar mit JME Noch im Beta-Stadium, also noch streckenweise buganfällig oder unvollständig Sehr eingeschränkte Collection-Klassen Hilfsklassen sind teilweise nicht universell einsetzbar Manche Zusatzausstattung wird nicht oder nur teilweise unterstützt
Nützliche Links Wiki dieses Kurses http://www.software-quality.fh-koeln.de/robotics/ Downloads und Infos zu Lejos http://lejos.sourceforge.net/ Lego Digital Designer http://ldd.lego.com/
Noch Fragen?
Lego NXT & LeJOS Eine Einführung 1 Dieses Dokument enthält die Folien und Notizen zur Einführungspräsentation des KI2 Praktikums (WS 2010/2011) der FH Köln, herunterladbar auf unserem Wiki.
Inhalt Das NXT Set Brick Originalzubehör 3 rd Party Zubehör LeJOS Einleitung Features Einschränkungen 2
Das NXT Set Der Brick 32 bit Arm7 MC 256KB Flash 64KB RAM Integrierter Lautsprecher 3 Ausgänge für Motoren 4 Eingänge für Sensoren USB und Bluetooth Verbindungsmöglichkeiten 3 Es ist wichtig, darauf zu achten die Grenzen von Flash und RAM nicht zu überschreiten. So kann es beispielsweise vorkommen, dass umfangreiches Logging mit Dateiausgabe während des Programmablaufs den Flash auffüllt und zum Programmabbruch führt. Das heißt selbstverständlich nicht, dass Logging nicht nützlich zum Debugging ist, derartige Funktionen sollten aber als potentielle Übeltäter in Betracht gezogen werden, falls ein Programm unerwartet nach einer gewissen Zeit eine Exception wirft und abbricht. Ähnliches gilt für Referenzen innerhalb des Programms, es sollte darauf geachtet werden, keinen Datenmüll in Listen o.ä. Aufzubewahren, um dem Garbage-Collector die Gelegenheit zu geben den RAM frei zu halten.
Geräuschsensor Druckkontaktsensor Lichtsensor Ultraschallsensor Reichweite bis 255cm Originalzubehör Funktioniert am Besten wenn er in einem 90 Winkel zum Ziel steht Gibt die kürzeste Distanz im gemessenen Bereich zurück 4 Der Geräuschsensor kann dazu verwendet werden, einfache und distinktive Geräusche zu erkennen um entsprechend innerhalb des Programms zu reagieren. Der Druckkontaktsensor kennt nur zwei Zustände: Gedrückt/Nicht Gedrückt, kann also nicht Krafteinwirkung oder Ähnliches genauer registrieren. Der Lichtsensor kann die Helligkeit einer Oberfläche messen, dazu ist entweder der aktive (Mit eigener Ausstrahlung von Infrarotlicht) oder passive (Ausschließlich Messung mit Hilfe des Umgebungslichts) Modus verfügbar. Der Ultraschallsensor besteht aus Sender und Empfänger, er misst die Zeit die die Schallwellen benötigen um von einer angepeilten Oberfläche zu reflektieren und wieder empfangen zu werden. Es ist zu beachten, dass alle USS mit der selben Frequenz arbeiten, es also durchaus zu Interferenzen kommen kann wenn mehrere USS in der gleichen Umgebung benutzt werden.
Originalzubehör (Forts.) Licht- und Farbsensor Erkennt Farbtöne Gibt einen quasi-durchschnittsfarbwert des beobachteten Bereichs zurück Kann auch als Licht benutzt werden Servomotor Mit eingebautem Rotationssensor Akzeptiert verschiedene Einstellungen (Umdrehungen pro Minute, Leerlauf etc.) 5 Der Farbsensor gibt einen "Durchschnittsfarbwert" des untersuchten Bereiches zurück, des Weiteren hängt seine Performance zumindest zum Teil von der Umgebungsbeleuchtung ab. Es ist möglich, die Rohwerte in RGB und Helligkeit auszulesen und somit eigene Algorithmen zur Analyse & Einschätzung der Farbwerte zu verwenden. Die Servomotoren können mit relativ hoher Genauigkeit angesteuert werden um sich beispielsweise gradweise zu bewegen, somit lassen sich festgelegte Distanzen zurücklegen. Ein wichtiges Detail unter LeJOS ist, dass die Methoden zu Motoransteuerung überladen sind, wobei einige Methoden warten bis die Bewegung abgeschlossen ist, andere dahingegen sofort zurückkehren (Also die Kontrolle an das Hauptprogramm zurückgeben)
Kompasssensor RFID-Sensor 3 rd Party Zubehör Kann RFID-Tags auslesen... oder spontan in Flammen aufgehen EOPD-Sensor Alternative zur Entfernungsmessung Präziser, aber maximal auf 20 cm nutzbar Touchsensor Multiplexer Für bis zu 4 Touchsensoren an einem Port 6 Der Kompasssensor gibt wie erwartet die Himmelsrichtung an, beim Design eines Bots mit Kompasssensor gibt es allerdings einige Stolperfallen: Der Sensor reagiert empfindlich auf nahe elektromagnetische Felder, darf also nicht zu nah an den Motoren verbaut werden (Eine vernünftige Mindestdistanz ist 20 cm) und kann u.u. von Stromleitungen in Wänden und Böden abgelenkt werden. Der RFID-Sensor leidet an Depressionen und erhöhter Suizidgefahr, wenn ihr ihn benutzt, rechnet mit einem raschen Ende seiner Kooperationsbereitschaft. (Und ohne für allzu viele Überraschungen sorgen zu wollen, wenn er kooperiert ließt er RFID-Tags aus) Der EOPD-Sensor ist gut für den Einsatz auf kurze Reichweiten geeignet und weitestgehend unempfindlich gegenüber Interferenzen. Der Touchsensor Multiplexer kann benutzt werden um bis zu 4 Touchsensoren an einem Sensorport anzuschließen, die Zustände der Sensoren werden in einem Byte abgespeichert und können abgefragt werden.
Lego Java OS LeJOS - Einleitung Wird seit 2006 entwickelt (Aktuelle Version: 0.85) Abgespeckte Java VM/Firmware für NXT Bricks sowie API Bietet Eclipse und Netbeans Plugins Basiert auf dem Java 1.6 Standard 7 LeJOS NXT ist eine Portierung des Original LeJOS, welches für den ursprünglichen RCX Brick entwickelt wurde. Da es sich um ein Community-Projekt handelt, ist es teilweise schwer abzuschätzen wie weit einzelne Features entwickelt sind (So ist beispielsweise das instanceof keyword erst seit Version 0.85 integriert); während es weitestgehend ausreichend bis gut dokumentiert ist, ersetzt die Dokumentation oft keine persönlichen Tests. Andererseits ergeben sich die "Mängel" von LeJOS oft aus einer mangelnden Notwendigkeit. Manchmal lohnt es sich, sich die Frage zu stellen ob beispielsweise ein voll integrierter Heap wirklich sinnvoll ist wenn die Datenstruktur nur zehn, zwanzig oder auch hundert Datensätze verwalten muss, oder ob es anders betrachtet eine gute Idee ist, auf einem NXT Brick Programme zu entwickeln die hunderttausend Datensätze benötigen.
LeJOS - Features Basiert (größtenteils) auf Java 1.6 Bietet Zusatzklassen für häufige Aufgaben (z.b. Pilotklasse, Lokalisationsklassen etc.) Schneller als NXT-G Umfangreiche Tutorials und Beispielprogramme verfügbar Unterstützt einen Großteil der für NXTs verfügbaren Zusatzausstattung Funktionsumfang grob vergleichbar mit JME 8 Die Hauptfeatures von LeJOS (Abgesehen von den standard Java Features) bestehen aus dem ständig erweiterten Support für neue Zusatzprodukte (Wobei einige Geräte, wie beispielsweise der Standard Sensor Multiplexer, zum jetzigen Zeitpunkt noch nicht unterstützt werden) und einer gut dokumentierten API. Des Weiteren ist auch eine kleinere API für PC-Client- Programme (Also für den PC geschriebene Programme die mit dem Brick kommunizieren) verfügbar, was beispielsweise ermöglicht einen Großteil der Berechnungen bei komplexeren Problemen auszulagern und so Rechenleistung auf dem Brick frei zu halten. Zu guter Letzt: Da LeJOS open source ist, ist es jedem Nutzer möglich die offiziellen Klassen zu verändern oder erweitern und eventuelle Verbesserungen direkt der Community zur Verfügung zu stellen. Weitere Informationen sind auf der LeJOS sourceforge Seite verfügbar.
LeJOS - Einschränkungen Funktionsumfang grob vergleichbar mit JME Noch im Beta-Stadium, also noch streckenweise buganfällig oder unvollständig Sehr eingeschränkte Collection-Klassen Hilfsklassen sind teilweise nicht universell einsetzbar Manche Zusatzausstattung wird nicht oder nur teilweise unterstützt 9 Einige der angeboteten Features von LeJOS erweisen sich bei der Integration und Nutzung in Agenten als nicht vollkommen und uneingeschränkt adäquat; oft lassen sich solche Probleme durch kleinere Fixes oder Tests zur vorgesehenen Nutzung lösen, gelegentlich erweist sich eine Hilfsklasse aber auch als den Umständen nicht anpassbar. Ein Beispiel hierfür ist die Pilot-Klasse. Während diese Klasse weithin einsetzbar ist, scheint es Radkombinationen zu geben die bei der Entwicklung nicht vorgesehen wurden, was teilweise zu problematischen Ergebnissen bei Präzisionsfahrten führen kann. Ist Präzision keine hohe Priorität des Agenten, dann kann dieses Problem ignoriert werden, andernfalls kann es nötig werden das Programm oder das Botdesign anzupassen. Wenn das alles nicht hilft (Oder nicht möglich ist) bleibt in diesem Fall nur die Entwicklung einer eigenen Ersatzklasse.
Wiki dieses Kurses Nützliche Links http://www.software-quality.fh-koeln.de/robotics/ Downloads und Infos zu Lejos http://lejos.sourceforge.net/ Lego Digital Designer http://ldd.lego.com/ 10 Weitere Links sind auf dem Wiki verfügbar, Interessante und Nützliche neue Links sind natürlich auch jederzeit willkommen!
Noch Fragen? 11 Falls ja, ihr wisst ja wann und wo ich zu finden bin.