GNU Development Tools for the Renesas H8/300[HS] Series - Dokumentation wie man einen Cross-Compiler für den RCX aufbaut
Lego-Mindstorms Simulator - Simulation von LeJOS programmierten RCXen in Java
Das Problem mit dem rcxcomm-Zeug unter 10.2 liegt daran, das die Header aus dem JNI unter 10.2 mit falschen Links hinterlegt sind und deshalb nicht funktionieren. Zur Reparatur muss man einfach im lejos_2 1 0/rcxcomm/src/Makefile die Zeile wo der CCOPT definiert wird ergänzen:
CCOPT = -g -O ${JNILIB_TYPE} -framework IOKit -framework CoreFoundation -I/System/Library/Frameworks/JavaVM.framework/Headers -I/System/Library/Frameworks/JavaVM.framework/Versions/1.3.1/Headers
Der hintere Teil ist der neue - ich habe einfach den richtigen Include-Pfad mit eingetragen und schon findet er das jni.h auch. Und kann kompilieren. Ich habe allerdings noch nicht ausprobiert ob das ganze dann auch funktioniert.
Wer sich mal angucken will was mit dem LeJOS alles machbar ist, kann sich das in diesem Tutorial zeigen lassen. Da die Dokumentation des LeJOS selber sich nur auf die API beschränkt ist das Tutorial um so wichtiger. Denn auch die beim LeJOS mitgelieferten Demorobots sind reichlich karg ...
Hier gibts den Originalartikel.
Ich hab mir mal das LeJOS installiert. Klasse Sache - das erste Mal, das ich Java für was brauchen kann. Das einzige was unter OS X 10.2 nicht funktioniert ist die direkte Kommunikation zwischen Hostrechner (OS X Kiste) und Targetrechner (RCX Baustein) über den IR-Tower - also verteilte Anwendungen zwischen diesen beiden Systemen kann man nicht bauen. Der Grund ist scheinbar eine Inkompatibilität mit dem JNI (Java Native Interface) mit dem die Kommunikationsroutinen (in C geschrieben) in die Java-Klassen integriert werden. Ansonsten klappt aber alles ganz gut - auch exotische Sensoren (ich hab von HiTechnicStuff den IR-Näherungssensor und den Ultraschall-Entfernungssensor) funktionieren tadellos. Und die VM ist mit 16 KB klein genug das man noch genug Platz für seine eigenen Java-Programme hat.
Ausserdem ist ein Emulator dabei mit dem man seine RCX-Programme auf dem Hostrechner ausprobieren kann. Sehr praktisch für Debugging - der RCX ist da dann doch etwas zu primitiv für. Auch wenn der Emulator sehr primitiv ist - er spuckt nur traces aus, was so passiert ist. Keine grafische Darstellung, keine Sensorsimulation etc. Aber immer noch besser als garnix.
Wichtige Randbedingungen der Java-VM:
- keine Garbage Collection. Also muss man selber dafür sorgen, das nicht ständig neue Objekte instanziert werden und das Speicher nach Möglichkeit statisch alloziert wird - sonst stirbt der RCX früher oder später an Speichermangel (kommt einem das von den Mars-Robots bekannt vor? )
- einige Spracheinschränkungen wie kein Switch, keine Long-Datentypen, Felder nur maximal 511 Elemente, keine Interfacesicherheit (man kann also Objekte in falsche Slots stopfen ohne Exceptions zu kriegen - einiges der Typsicherheit von Java geht verloren)
- keine Introspection (also nicht auf die eigenen Klassen gucken können). In einem Robot warscheinlich eher zu verschmerzen, der soll in die Welt gucken, nicht in sich selbst
- das ganze JDK ist nicht da - logisch, das ganze ist eine extrem eingeschränkte Umgebung. Der RCX hat ja nur 32K Speicher ...
- eine sehr primitive Toolchain - alles Kommandozeile und so. Vielleicht kann man eine grafische Java-Umgebung dazu kriegen das alles richtig zu integrieren, denn im Prinzip wird vom LeJOS der normale Java-Compiler benutzt. Sowas wie Eclipse wäre aber IMO ein ziemlicher Overkill um einen kleinen RCX zu programmieren
Ich glaube ich werde in meinem vorweihnachtlichen Urlaub mal ein bischen meine Java-Kenntnisse auffrischen und gucken ob ich endlich mal meinen idealen frei bewegenden Robot zustande kriege, der nicht überall gegen rennt und wenigstens ein rudimentäres Gedächtnis seiner Umgebung aufbauen kann. Ich hab immerhin ja auch zwei RCX Bausteine - evtl. kriege ich auch endlich mal den mir vorschwebenden Lego-Truck mit zwei Gehirnen (eins für die Fortbewegung und grobe Sensorik zur Kollisionsvermeidung und eins für die Raumorientierung) hin. Und wie üblich hat man bei seiner Lego-Planung als erstes die Erkenntnis das man schlicht zu wenig Bausteine hat. Ich glaube das könnte als Hugos erstes Gesetz in die Geschichte eingehen: Du hast nie genug Legosteine .
Cool - ein komplettes Lisp das direkt auf dem RCX läuft. Ideal für die Weihnachtszeit
Leider keine OS X Version, sondern nur was für Windows oder Linux - und letzteres nur für den seriellen Tower. Mal gucken ob ich da was für OS X mit dem USB Tower hinbekomme. Ausserdem bin ich noch auf TinySOAR gestolpert, eine komplette AI Agent Runtime für den Mindstorms RCX Baustein. Auch sehr interessant - und durch die Einbettung in TCL hoffentlich auch in OS X lauffähig.Und ebenfalls für mich neu die Java VM für den RCX: LeJOS. Ich mag zwar kein Java, aber interessant ist das allemal für den RCX.Und der Oldy-but-Goldy: LegOS, das komplette in C geschriebene Betriebssystem für den RCX. Allerdings bedingt durch seine recht heftige Toolchain die benötigt wird (ein kompletter GCC, konfiguriert als Cross-Compiler) etwas haariger zu installieren. Ausserdem heisst es jetzt BrickOS und ist übrigens auch unter dem Lisp als Runtime drunter. Hier gibts den Originalartikel.