Robo-Coding-Camp - den LEGO® MINDSTORMS® EV3 mit Python programmieren

22nd Apr 2021

Der Faschingsferienkurs "Robo-Coding-Camp - Roboter programmieren wie ein Profi" bei den FabLabKids im FabLab München e.V. war ein voller Erfolg.

Die sieben Kinder im Alter von 12 bis 14 waren sehr interessiert und hatten sichtlich ihren Spaß. Das Besondere an dem Kurs: Wir programmierten die Roboter mit MicroPython, eine Python-Variante speziell für Micro-Controller. Python selbst ist eine weitverbreitete Programmiersprache, die in der Praxis von 79% der Programmiererinnen und Programmierer täglich eingesetzt wird. Die Grundlage dafür schafft LEGO® selbst: Auf ihrer EV3-Education-Seite "[Jetzt mit der Programmiersprache Python programmierbar!](https://education.lego.com/de-de/support/mindstorms-ev3/python-for-ev3)" werden alle Informationen zur Verfügung gestellt. Der EV3 wird mit einer SD-Karte bestückt, worauf sich eine Linux-Betriebssystem und die notwendige Softwarelibrary für die Steuerung der Sensoren und Motoren befindet. Schaltet man den EV3-Brick an, wird das Linux-Betriebssytem (ev3dev - basierend auf Debian) gestartet und man kann loslegen. Programmiert wird in einer echten Programmierumgebung: Die IDE "Visual Code Studio" von Microsoft® ist eine weit verbreitete und kostenlose Programmierumgebung. Über das Installieren einer Erweiterung von LEGO® ist es möglich, den über USB angeschlossenen EV3 zu managen und den geschriebenen Code zu übertragen. Man merkt schon, hier wurde gearbeitet wie bei den Profis... aber mit viel Spaß! Folgend kannst du dir ein Bild davon machen:

Die Kinder hatten spannende Aufgaben zu lösen. Nach einer kurzen Einführung in den verwendeten Tools und in Python wurde der Roboter zusammengebaut und erst kleine Abläufe programmiert. Die Kids hatten es echt schnell drauf, sodass wir konkrete Aufgabenstellungen selbständig lösen konnten.

Konkrete Aufgabenstellungen waren zum Beispiel, dass der Roboter die verschiedenen Farben auf dem Untergrund erkennt und je nachdem unterschiedliche Aktionen durchführt, wie langsamer oder schneller fahren, sich umdrehen oder einen verrückten Tanz-Move hinlegen. Der Klassiker "Linien nachfahren" durfte natürlich auch nicht fehlen. Die Herausforderung dabei war, dass je Roboter nur ein Farbsensor zur Verfügung stand. ^^ Gegenstände erkennen, diese umfahren oder eine Parklücke finden und rückwärts einparken, waren weitere Herausforderungen. Den krönenden Abschluss stellte ein Sumo-Wettkampf dar, worin die Teams mit ihren gepimpten Robotern gegeneinander antraten und versuchten, sich aus dem Ring zu schieben. Mega lustig! :))

Hier mal ein kleines Beispiel, wie der Code in Python für den Roboter aussehen kann:

``` #!/usr/bin/env pybricks-micropython from pybricks import ev3brick as brick from pybricks.ev3devices import (Motor, TouchSensor, ColorSensor, InfraredSensor, UltrasonicSensor, GyroSensor) from pybricks.parameters import (Port, Stop, Direction, Button, Color, SoundFile, ImageFile, Align) from pybricks.tools import print, wait, StopWatch from pybricks.robotics import DriveBase motor_links = Motor(Port.B) motor_rechts = Motor(Port.C) roboter = DriveBase(motor_links , motor_rechts , 56 , 114 ) schallsensor = UltrasonicSensor(Port.S1) farbsensor = ColorSensor(Port.S4) geschwindigkeit = 100 lenkgeschwindigkeit = 0 parkplatz_gefunden = 0 brick.sound.beep() while not Button.CENTER in brick.buttons(): wait(10) brick.sound.file(SoundFile.MOTOR_START) initial_farbe = farbsensor.color() while parkplatz_gefunden < 50: roboter.drive(geschwindigkeit, lenkgeschwindigkeit) farbe = farbsensor.color() parkluecke = schallsensor.distance() if farbe == initial_farbe: geschwindigkeit = 100 lenkgeschwindigkeit = 0 lenkrichtung = 0 elif farbe != initial_farbe and lenkrichtung <= 2: geschwindigkeit = 0 lenkgeschwindigkeit = 50 lenkrichtung += 1 elif farbe != initial_farbe and lenkrichtung > 2: geschwindigkeit = 0 lenkgeschwindigkeit = -50 if parkluecke > 200: parkplatz_gefunden += 1 else: parkplatz_gefunden = 0 roboter.drive_time(-60, -25 , 4000) roboter.drive_time(0 , 40, 3000) ```

LEGO® ist eine Marke der LEGO Gruppe. Die vorliegende Website wird nicht von der LEGO Gruppe gesponsert, genehmigt oder unterstützt.