====== Lego Forth ====== Lego bringt einen Nachfolger für den RCX auf den Markt: Den [[http://mindstorms.lego.com/|NXT]]. Für den RCX gab es bereits ein Forth, das [[http://www.hempeldesigngroup.com/lego/pbForth/|pbForth]] von Ralf Hempel. Ulli Hoffmann formuliert dazu allerdings vernichtende Kritik: > Wenn ich an den RCX-Wettbewerb in Haminkeln zurückdenke, fand ich das Forth und das Entwicklungssystem, das wir damals benutzten, primitiv und lästig zu bedienen. Für ein Wettbewerbs-Rapid-Prototyping war das nicht wirklich geeignet und als Vorzeige-Objekt, um andere für Forth zu interessieren, würde es wohl eher abschreckend wirken. Wobei man fairerweise sagen muss, dass die Hardwareunzulänglichkeiten des RCX-Bricks sehr wohl zu dem unprofessionellen Auftreten beigetragen haben --- wenn der Motor keine Tachorückmeldung hat, kann man eben keine Regelung implementieren. ===== Der Plan ===== Der NXT ist wesentlich leistungsfähigere Hardware als der RCX. Auf diesem System sollte es möglich sein, ein leistungsfähiges Forth zu implementieren, das komfortabel bedient werden kann, und die Möglichkeiten des Geräts auch ausnützt. Insbesondere sind auch die oben angedeuteten Schwachpunkte des RCX-Moduls behoben: * Der Motor hat einen Drehgeber, mit dem eine Steuerung der Fahrzeuge möglich ist * Die Kommunikation über Bluetooth erlaubt eine sichere Kommunikation zwischen Host und Gerät und auch zwischen den Geräten ==== Anforderungen ==== * Ein vernünftiges Forth (z.B. Gforth); mit 256k Flash und 64k RAM auf dem ARM ist genügend Platz und Leistung vorhanden. * Interaktive Kommunikation mit Terminal-Programmen und Kommunikation zwischen den Robotern ähnlich wie bei ONF. * Die im Lieferumfang enthaltene Peripherie (Sensoren und Aktoren) müssen ausgereizt werden können --- es muss auch eine Bibliothek üblicher Regelalgorithmen vorhanden sein, damit nicht jeder Jugendliche das Rad neu erfinden muss. * Das Dot-Matrix-Display muss Text und einfache Grafik anzeigen. * Was machen wir mit dem AVR-Koprozessor? Lassen wir die vorhandene Firmware drinnen (Power- und PWM-Management), oder tun wir ein Umbilical-Forth 'rein, dessen Host im ARM ist? ==== Vorgehensweise ==== * Beschaffung hinreichend detaillierter Informationen über den NXT * Machbarkeit? D.h. kann man die Firmware überhaupt ersetzen? * Beschaffung von Kits und Bricks für die Teilnehmer * Zusammenstellen eines Teams * Beta-Test mit echten Kindern (ewige Spielkinder zählen nicht) * Dokumentation mit angemessener Berücksichtigung des Vorwissens des Zielpublikums (das Zielpublikum hat noch **kein** Diplom in Elektrotechnik oder Maschinenbau!) ===== Informationen über den NXT ===== Unter http://mindstorms.lego.com/Overview/NXTreme.aspx gibt es ein paar Informationen zum Aufbau, z.B. Schaltpläne (und inzwischen sogar die Firmware in C). Gottseidank ist der Schaltplan sehr einfach, d.h. man braucht eigentlich nur auf die verwendete CPU gucken, um weiterzukommen: Der verwendete Single-Chip-Contoller ist ein [[http://www.atmel.com/dyn/products/product_card.asp?part_id=3524|AT91SAM7S256]]. Da ist ein Boot-Assistent drin (SAM-BA), mit dem man die vorhandene Firmware "ganz einfach" über USB ersetzen kann (mit einem Windows-Programm natürlich). Mehr findet man auf der [[http://nxt.natulte.net/trac/|NXT Hacks]]-Seite. Dort gibt es auch einen Link auf ein Linux-Programm zum [[http://nxt.natulte.net/trac/wiki/LibNxt|Firmware flashen]], GCC-Crosscompiler und mehr. Leider ist diese Seite im Moment down. Denn Hinweis, wie man den [[http://www.jstuber.net/lego/nxt-programming/arm-toolchain.html|GCC-Crosscompiler]] installiert, findet man auch auf der Seite von Jürgen Stuber, und die [[http://code.google.com/p/libnxt/source|LibNxt]] hat auf Google Code einen neuen Platz gefunden. Einfacher ist es aber, sich den Crosscompiler von [[http://www.gnuarm.com/files.html|GNUArm]] herunterzuladen, da ist alles schon passend vorcompiliert.