Lego Mindstorms Tutorial

Ähnliche Dokumente
Inhaltsverzeichnis. 1 Anfang 2. 2 Erste Schritte 3. 3 Schleifen repeat while(true) Die if()-schleife... 5.

Programmieren von Lego Robotern mit NQC

Programmieren Sie einen mobilen Roboter des Typs Lego Mindstorm, so daß dieser einen bedingten Reflex erlernen kann.

Lego-Roboter im Informatik-Unterricht der Sekundarstufe I

Programmieren des NXT-Roboters mit LabView 2010

Aufgabe Im Quadrat fahren

Programmierung der Lego Mindstorms Roboter

Roboter programmieren mit NXC für LEGO MINDSTORMS NXT

Arbeit_Roboter. Setze einen Haken bei den Fragen, die du für richtig hältst: Bei Textantworten oder Lückentexten gib jeweils das Ergebnis an.

Seite 1/6. ModellFerienPass.pdf).

Baue deinen ersten Roboter

Programmieren mit RoboLab Bauen mit Lego

LEGO MINDSTORMS NXT Programming

Beim ROBORACE werden jedes Jahr Schüler und Studierende mit einer neuen Aufgabe aus dem Bereich der Technischen Kybernetik herausgefordert.

Komponenten: Das Selbstfahrende Auto besitzt 2 Motoren und 2 Sensoren.

Der CodeBug. A) Erste Schritte. 1) Einleitung

Inhaltsverzeichnis. Vorwort NXTundNXC DerNXT NXC Not exactly C Compiler Zusammenfassung 17

Messungen mit dem Lichtsensor

des NXT Brick mit NXC

NXC-Programmiersprache

Programmierung mit NQC: Kommunikation zwischen zwei RCX

Mess- und Regelungstechnik

Der Roboter wird auf einer 2 cm breiten, schwarzen Spur (mit Links- und Rechtskurven) gestartet.

Fakultät für Informatik, Institut für Robotik Laborpraktikum I - Medizinarena Legorobotik in C EV3

Anleitung DGTV Fernbedienung

2. Software RoboLab Allgemeine Bedienung Firmware

Workshop #1 Grundlagen, Motorsteuerung, Schleifen

Vergleich zwischen Open Roberta / NEPO und LEGO MINDSTORMS EV3 / EV3-G. - Übersicht/Fact-Sheet - Programmblöcke - Beispielprogramme

LEGO -EV3-Roboter. Bauen und programmieren mit LEGO MINDSTORMS EV3. Bearbeitet von Laurens Valk

Pacman. Projektbeschreibung. Aus was wir Pacman nachgebaut haben. Anpassungen and die physikalische Welt, oder wie wir das

Inhaltsverzeichnis. 52 Weitere Publikationen. 54 Eigene Notizen. XLogo Programmieren

Programmierung des Lego NXT in C. Hochschule Mannheim Fakultät für Informatik

LEGO-Mindstorms-Roboter im Informatikunterricht -mit Delphi-

Fakultät für Informatik, Institut für Robotik Laborpraktikum I Legorobotik graphische Programmierung

Der NXT Baustein mit Aktoren und Sensoren

Technologie. NXT-Hauptmenü My Files

System Design Projekt Einführung in NXC

PowerPod Tipps und Problemlösungen November 2015

Die Einführung von mehreren "Start Bausteinen", um das Programm zu starten, realisiert leicht die parallele Programmverarbeitung (Parallele Tasks).

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

Wir arbeiten ständig daran, unseren ChessGenius Exclusive noch besser zu machen. Deswegen freuen wir uns immer über Ihr Feedback unter

Lego Mindstorms. Diverse Übungen. Autor: Franz Philipp Website:

Wichtige Befehle bei der Programmierung von. FISCHER-Technik

Greenfoot: Verzweigungen

ROBOTER. LÖSUNGEN zur Arbeit mit dem LEGO Mindstorms EV3

Ampelsteuerung Merkblatt 2 Wie wird der Arduino programmiert?

Deinen EV3-Kasten vorbereiten

DMXfaceX Programmier Tutorial

Programmübersicht Software EV3

Übungszettel 2a - Python

Lego Roboter mit NXT-G programmieren. Hochschule Mannheim

cagebot control quick start guide trike robot revision 1.3

Spaichinger Entwicklungsumgebung 1.1 Zur C-Programmierung und Simulation von ct-bots (Fahrrobotern)

Welche Roboter kennst du? Wo brauchst du zuhause Roboter?

Kapitel 2: Programmfluss steuern

Henry Krasemann / Hilke Krasemann / Michael Friedrichs, LEGO -Boost-Roboter, dpunkt.verlag, ISBN

LEGO WeDo: SCRATCH-Programmierung

Programmieren von LegoMindstorms-Robotern mit NQC

Die Denkschule 1 Reto Speerli

Bedienungsanleitung Iskra MT175 EDL+ Elektronischer Haushaltszähler Bedienungsanleitung Ihres Drehstromzählers Typ ISKRA MT175 EDL+

Fakultät für Informatik, Institut für Robotik. Legorobotik Graphische Programmierung Vorstellung des EV3 Systems und der Programmierumgebung.

Coden mit dem Calliope mini Lernkarten für den Einstieg ins Programmieren

Wie funktioniert die Firmware-Aktualisierung mit der neuen Benutzeroberfläche?

Die NXT-Motoren im Detail

UH Versionshinweise. Wichtig! Aktuelle Versionen und Updates. Bekannte Probleme. Windows-Treiber

3 Programmierung von Robotern

Die Benutzung von Stata

Fraunhofer IAIS. Lernen mit Robotern. Roberta Grundlagen und Experimente. Roberta-Reihe Band 1 - NXT

Installation & Usage. Version 1.0. estickflashtool

Testo FlashUpdate. Gerätesoftware Update und Download Anweisung

5. Firmware-Update. 5.1 Aktualisieren der Firmware. 5.2 Firmware aktualisieren Schritt für Schritt. Wartung 5. Firmware-Update

ORIKA. Lycée Technique des Arts et Métiers. ... viel mehr als nur ein Spielzeug

Infokarte: Snap4Arduino

Spaichinger Entwicklungsumgebung 1.2 Zur C-Programmierung und Simulation von ct-bots (Fahrrobotern)

Einladung in eine Netviewer-Sitzung

Modell Bahn Verwaltung. Tutorial. USB Betrieb. Min. Programm Version 0.68, Juli w w w. r f n e t. ch 1 / 9

Anleitung zum Firmware Upgrade-Tool für den FiiO X5 III/X7/X7 Mark II

Einführung in NI LabVIEW

Programmierung mit NQC: Kommunikation zwischen zwei RCX

Handbuch Programmieren für Kinder

Kapitel 1: Die ersten Schritte Thema: Programmieren Seite: 1

Inhalt. Dokument Beschreibung. Bentley Technical Support ProStructures.Net - Zusatzprogrammierung Visual Basic Express PST_Bearbeitung_Dialog

LEGO MINDSTORMS PRÄSENTATION. PPS im Sommersemester 2007

Schleifen dienen dazu, bestimmte Anweisungen immer wieder abzuarbeiten.

Nun öffnet sich das Fenster "Geplante Tasks". Hier zum Einrichten eines neuen Tasks auf "Geplanten Task hinzufügen" klicken. Es öffnet sich der Assist

Lerne programmieren mit Sequentielle Programmierung mit VPL

Anweisungen zur Aktualisierung der IOP Firmware und Software

5. NXT kann hören und Entfernungen erkennen: Test der Sensoren

Programmieren? Das kann ich auch! Bau dir deinen eigenen Bildschirmschoner

Softwarepraktikum Teamrobotik SS Gruppe 2

Coole Spiele mit Scratch Lerne programmieren und baue deine eigenen Spiele

Mikrocontroller: Einführung

Your EdVenture into Robotics Infos

Wie installiere ich den Unity Web Player

Transkript:

Lego Mindstorms Tutorial Lego Firmware Als allerestes muss eine Firmware auf den Mindstorms Computer (fortan kurz RCX) geladen werden. Dieser Programmcode hat die Funktion, Befehle per Infrarot (IR) entgegenzunehmen und sie auszuführen. Ohne laufende Firmware ist es gar nicht möglich, selber erstellte Programme laufen zu lassen. Die Firmware steuert auch das LCD Display des RCX. Die Firmware bleibt auch ohne Batterien erhalten und muss also nicht jedesmal neu geladen werden. Falls es doch mal nötig ist, kannst du das in einer DOS Box mit dem Kommando: nqc firmware c:\mindstorms\ws0102\firm\firm0309.lgo Dieser Vorgang kann mehrere Minuten dauern. Die Programmiersprache Not Quite C Es existieren sehr viele verschieden Möglichkeiten eigene Programme für den RCX zu schreiben. LEGO selber stellt eine grafische Arbeitsumgebung zur Verfügung mit der einfache Programme durch Zusammensetzen von Funktionsblöcken erstellt werden können. Diese Methode ist aber mit vielen Einschränkungen verbunden, zb. können keine eigenen Variablen definiert werden. Viel mehr Möglichkeiten bietet zb. eine Java-Variante für den RCX (http://lejos.sourceforge.net), oder eine reduzierte Variante von C (eben Not Quite C, kurz nqc, http://www.enteract.com/~dbaum/nqc/). Nqc wirst du nun etwas genauer kennen lernen. BricxCC Entwicklungsumgebung Das Programm BricxCC stellt eine grafische Umgebung für die Entwicklung von NQC Programmen zur Verfügung. Zusätzlich enthält es eine Reihe von kleinen Hilfsprogrammen, mit denen man den RCX direkt steuern oder überwachen kann. Klicke auf den Shortcut BricxCC.exe um das Programm zu starten. ACHTUNG: Vor dem Programmstart muss der RCX eingeschaltet sein, der IR Sender muss mit dem Rechner verbunden. Der Sender muss direkt vor dem RCX plaziert werden, sodass die IR-Kommunikation möglich ist. Beim Starten des Programms erscheint der unten abgbildete Dialog: Wähle die Optionen Automatic und RCX. 1

Direkte Steuerung des RCX In diesem Modus wird auf dem RCX kein eigentliches Programm ausgefuehrt sondern nur einzelne Kommandos die per IR uebermittelt werden. Die Buchstaben A,B und C stehen für die 3 Ausgänge des RCX, über die zb Motoren, Lämpchen, usw. angesteuert werden können. Starte das Utility Brick Joystick aus dem Menue Tools. Falls nötig, ändere die Einstellungen (wie im Bild rechts): Drive Mode: Left-Right Left Motor: A Right Motor C. Mit den Pfeiltasten kann der RCX nun direkt gesteuert werden. (Tastatur: Zehnerblock)? Wie funktioniert der Drive-Steer Modus? Wie müsste ein dem entsprechender Roboter gebaut sein? Überwachen der Sensoreingänge Der RCX besitzt auch 3 Eingänge: Die mit 1,2 und 3 beschrifteten grauen Felder. Starte das Utility Tools/Watching the Brick. Sensor 1, Sensor 2, Sensor 3 anwählen Poll Now drücken 2

Der angezeigte Wert verändert sich, wenn die Taster des RCX gedrückt sind während dem Poll Now ausgelöst wird. Probiere auch den Lichtsensor aus. Er scheint nicht recht zu funktionieren. Lichtsensoren sind aktive Sensoren, d.h. sie müssen vom RCX gespiesen werden. Mit tools/direct control kann der entsprechende Sensormodus gesetzt werden. Das erste NQC-Programm Der RCX kann auch autonom Programme ausfuehren, ohne permanent per IR-Link mit dem Host verbunden zu sein. Dazu muss das Programm zuerst auf den RCX geladen und dann mit der Taste <Run> auf dem RCX gestartet werden. Der RCX fuehrt dann den Task main aus. Oeffne ein neues Editierfenster mit file/new Tippe folgendes Programm ein: #define FORWARD_TIME 500 // definiert eine Konstante OnFwd(OUT_A+OUT_C); // schalte Ausgaenge A und C ein Wait(FORWARD_TIME); // warte 500 * 10ms Off(OUT_A+OUT_C); // schalte A und C aus Durch einfaches klicken auf eine Funktion im Templates Fenster (siehe unten) wird diese in dein Editierfenster kopiert. Die Kommentare hinter // brauchst du nicht abzutippen. Speichere das Programm mit file/save unter einem beliebigen Namen. Compiliere das Programm mit F5. 3

Lade das Programm auf den RCX mit F6 Starte das Programm mit F7 oder der <Run> Taste auf dem RCX. Dieses Programm faehrt fuer 5 Sekunden geradeaus und bleibt dann stehen... und nun etwas schlauer Der RCX soll natuerlich nicht einfach stur geradeaus fahren, sondern auf Hindernisse reagieren. Im naechsten Schritt sollen also waehrend der Fahrt die Sensorern ueberwacht werden und wenn ein Hinderniss auftaucht, soll der RCX stehen bleiben. Studiere das folgende nqc Codefragment: SetSensor (SENSOR_1, SENSOR_TOUCH); SetSensor (SENSOR_3, SENSOR_TOUCH); OnFwd(OUT_A+OUT_C); while((sensor_1 == 0) && (SENSOR_3 == 0)) // do nothing = wait PlayTone (440,50); Off(OUT_A+OUT_C); Zuerst werden die Sensoreingaenge in den richtigen Modus gesetzt. Danach werden die Motoren gestartet und die Sensoreingaenge ueberwacht. Dazu wird das folgende Konstrukt gebraucht: while(bedingung)anweisung Der RCX wird überprüfen, ob Bedingung erfüllt ist. Falls ja, führt er Anweisung aus und überprüft danach ereneut die Bedingung. Er tut dies solange, bis die Bedingung falsch wird. Erst dann fährt der RCX mit dem Programm fort, diesmal ohne Anweisung auszuführen. In unserem Fall wird also überprüft, ob beide Sensoren nicht gedrückt sind. Falls das erfüllt ist, tut der RCX gar nichts, sondern prüft sofort wieder die Sensoren. Erst wenn mindestens ein Sensor gedrückt wurde - also ein Hinderniss detektiert wurde - pipst der RCX kurz und die Motoren werden abgeschaltet. Vervollstaendige nun das folgende Fragment so, dass der RCX vorwaerts faehrt bis er auf ein Hinderniss stoesst. Wenn der linke Sensor betaetigt wurde, soll der RCX nun etwas zureckfahren und sich nach rechts drehen Wenn der rechte Sensor betaetigt wurde, soll der RCX ebenfalls zurueckfahren und sich nach links drehen Danach beginnt der RCX wieder vorwaerts zu fahren bis ein neues Hinderniss auftaucht. #define BACK_TIME 50 #define TURN_TIME 80 SetSensor (SENSOR_1, SENSOR_TOUCH); SetSensor (SENSOR_3, SENSOR_TOUCH); OnFwd (OUT_A+OUT_C); while (true) if (SENSOR_1 == 1) //falls Hinderniss links 4

Mindstorms/NQC Tutorial PlayTone (440,50); // HIER VERVOLLSTAENDIGEN // wechsle die Richtung beider Motoren // warte BACK_TIME // drehe nach rechts // warte TURN_TIME // und wieder vorwaerts.. if (SENSOR_3 == 1) // falls Hindernis links PlayTone (880,50); // while // main() // HIER VERVOLLSTAENDIGEN (wie oben) Kommunikation Als nächsten Schritt sollen die Robos nun nach Artgenossen ausschau halten. Immer wenn der RCX auf einen anderen RCX trifft, soll er eine kurze Melodie (na ja, sowas ähnliches zumindest) spielen, sich um 180 Grad drehen und wieder weiterfahren. Dies kann mit Hilfe der Infrarot Schnittstelle realisiert werden. Jeder RCX schickt kontinuierlich Nachrichten und empfängt diese Nachrichten von anderen RCXs. Da dies WAEHREND dem normalen Programmablauf geschehen soll, wird ein neuer Task definiert: #define MESSAGE 3 #define MESSAGE_INTERVAL 100 task meet() while (true) SendMessage (MESSAGE); Wait (MESSAGE_INTERVAL); PlaySound (SOUND_CLICK); if (MESSAGE == Message()) ClearMessage (); PlaySound (SOUND_UP); Damit dieser Task nun auch wirklich parallel zum Task main() ablaeuft, muss er von main() gestartet werden: SetSensor (SENSOR_1, SENSOR_TOUCH); SetSensor (SENSOR_3, SENSOR_TOUCH); start meet; OnFwd (OUT_A+OUT_C);.. 5

Programmiere nun eine subroutine, welche aufgerufen wird, wenn der RCX einen Artgenossen trifft, und in der der RCX zuerst etwas zurueck faehrt, sich dann um 180 Grad dreht, und schliesslich die normale Ausfuehrung von main() wieder aufnimmt. Der Task meet() muss dazu folgendermassen modifiziert werden: Programmiere die subroutine greet() task meet() while (true) SendMessage (MESSAGE); Wait (MESSAGE_INTERVAL); PlaySound (SOUND_CLICK); if (MESSAGE == Message()) ClearMessage (); greet(); sub greet()... Links zu Mindstorms.. sind bei Google/Altavista/Yahoo und Consorten leicht zu finden. Als Ausgangspunkt kann auch unsere eigene Mindstorms Page mit Links zu aktuellen und abgeschlossenen Projekten dienen: http://www.tik.ee.ethz.ch/mindstorms/ 6