Entdecken Sie unsere
Ressourcen
Benötigtes Material :
- 1 Computer/Roboter
- Mindestens 1 Roboter oder Simulation in der Software
- Optionale Arena für Aktivitäten (Roboterrennen)
Software-Konfiguration :
- Beispielkonfiguration: hängt von der Code-Situation ab
Dauer :
1 bis 2 Stunden
Alter :
+ 14 Jahre
Die + dieser Aktivität :
- Kann mit dem Simulator durchgeführt werden
- Sehr gute Einführung in die Programmierung
In dieser Python-Programmieraktivität lernen die Schülerinnen und Schüler, Befehle an den Roboter zu senden, die von den auf der Tastatur gedrückten Tasten abhängen, und dann ein Roboterrennen zu veranstalten.
[Videoinhalt folgt]
Den Roboter in die Hand nehmen
Mit dem Modul alphai.py können Sie in Python geschriebene Anweisungen an den Roboter senden.
Damit das Modul funktioniert, muss die Software "AlphAI" gestartet sein. Sie können sich mit einem AlphAI-Roboter (oder seiner simulierten Version) verbinden.
Erstellen Sie in Ihrem bevorzugten Python-Editor ein neues Projekt an einem Ort Ihrer Wahl und konfigurieren Sie die Python-Umgebung so, dass sie das Modul alphai enthält, indem Sie in der IPython-Konsole oder einem Terminal :
pip install alphai-api
Dieser Befehl wird das Modul und seine Abhängigkeiten herunterladen und installieren.
Öffnen Sie ein neues Python-Dokument oder starten Sie die Konsole neu, kopieren Sie den folgenden Code hinein und führen Sie ihn dann aus:
from alphai import *
motor(30, -30, 5)
Wenn die erste Zeile des Programms einen Fehler verursacht, wurde die Alphai-Bibliothek wahrscheinlich nicht richtig installiert. Wenn die Zeile motor(30, -30, 5) einen Fehler verursacht, wurde die AlphAI-Software wahrscheinlich nicht gestartet.
Wenn es keinen Fehler gibt, beobachten Sie, wie sich der Roboter (oder der in der Software simulierte Roboter) fünf Sekunden lang um die eigene Achse dreht.
Der Befehl motor(left, right, duration) sendet für die Dauer von duration die Werte left und right an den linken und rechten Motor des Roboters; danach stoppt er. Die Werte left und right müssen zwischen -50 und +50 liegen. Wenn die Dauer nicht angegeben wird, dann fährt der Roboter bis zum nächsten Aufruf motor(0,0) weiter.
⚠️ Es ist möglich und manchmal auch sinnvoll, die Verbindung in Ihrem Python-Skript herzustellen, anstatt in der Software auf "Verbindung" zu klicken, indem Sie die Funktionen connect_bluetooth(n) (wobei Sie n durch die Nummer Ihres Roboters ersetzen ) oder connect_wifi() sowie disconnect() zum Trennen der Verbindung verwenden .
Der Code sieht in diesem Fall wie folgt aus:
from alphai import *
connect_bluetooth(n)
motor(30, -30, 5)
disconnect()
Rechts auf dieser Seite finden Sie in den Anhängen zum Herunterladen die Dokumentation der alphai-api-Bibliothek, die alle in der alph ai-Bibliothekenthaltenen Funktionen enthält . Lesen Sie sie jetzt, um sich mit ihr vertraut zu machen.
Erstes Skript
Sie werden nun ein Python-Skript in Ihrer bevorzugten Programmierumgebung erstellen.
Erstellen Sie eine neue Python-Datei und kopieren Sie den folgenden Code:
from alphai import *
if _ _name_ _ == '_ _main_ _':
connect_bluetooth(n)
motor(30,30,1)
disconnect()
Führen Sie ihn dann aus: Der Roboter bewegt sich eine Sekunde lang vorwärts und stoppt dann.
Der Befehl motor(left, right, duration)sendet die Werte left und right an den linken und rechten Motor. Diese Werte müssen zwischen -40 und +40 liegen. Natürlich halten wir den Roboter mit motor(0, 0) an.
Rechts auf dieser Seite finden Sie in den Anhängen zum Herunterladen die Dokumentation der alpha-api-Bibliothek, die alle in der alph ai-Bibliothek enthaltenen Funktionen enthält . Lesen Sie sie jetzt, um sich mit ihr vertraut zu machen.
Programmieren einer Sequenz
Um Ihre weitere Codierung zu erleichtern, definieren Sie die folgenden fünf Funktionen. Machen Sie die Funktionen sehr einfach: Jede muss nur einen Aufruf der Funktion motor realisieren.
forward()
Lässt den Roboter geradeaus fahren.
backward()
Lässt den Roboter zurückfahren.
stop()
Halte den Roboter an.
left()
Dreht den Roboter nach links.
right()
Dreht den Roboter nach rechts.
Erstellen Sie schließlich eine Funktion walk_around(), die den Roboter mithilfe dieser fünf Funktionen eine Reihe von Aktionen ausführen lässt. Testen Sie die Funktion, indem Sie sie im main-Block aufrufen.
Programmierung der Fernsteuerung
Abspielen von gedrückten Tasten
Mithilfe der API-Funktion wait_for_key (siehe Erläuterungen auf der letzten Seite) und einer while-Schleife in der main-Funktion drucken Sie in der Konsole mit der Funktion print die auf der Tastatur gedrückten Tasten aus. Um zu vermeiden, dass Sie eine Endlosschleife schreiben, sollten Sie eine spezielle Taste vorsehen, mit der Sie die Schleife verlassen können, z. B. die Taste "esc" :
keys = []
while "esc" not in keys:
# vergiss nicht die Einrückung
Programmierung der Fernsteuerung
Erstellen Sie ebenfalls mithilfe der Funktion wait_for_key und einer while-Schleife eine Funktion remote_control(), die auf Richtungstasten reagiert, sodass sich der Roboter entsprechend den Anweisungen auf der Tastatur bewegt. Um die zuletzt gedrückte Taste abzurufen, wählen Sie mithilfe des Index -1 das letzte Element in der Liste aus. Achtung: Die Liste kann manchmal leer sein!
Denken Sie daran, den Roboter anhalten zu lassen, wenn keine Taste gedrückt wird. Testen Sie Ihren Code, indem Sie den Roboter fernsteuern!
Weiterführende Informationen
Wir werden Rennen zwischen Ihren ferngesteuerten Robotern veranstalten können, aber Sie werden auch daran interessiert sein, Ihr Programm zu verbessern, indem Sie neue Befehle hinzufügen, wie unten vorgeschlagen... Diese Verbesserungen sind nur Vorschläge, zögern Sie nicht, Ihre eigenen Verbesserungen zu erstellen!
Verschiedene Kurven
Erstellen Sie zwei neue Funktionen, die Sie verwenden können, wenn die Funktion wait_for_key eine Liste mit mehreren Tasten zurückgibt:
forward_left()
Lässt den Roboter nach links fahren, wenn gleichzeitig der obere und der linke Pfeil gedrückt werden. So kann man den Roboter sowohl enge Kurven mit left() (nur linker Pfeil) als auch weite Kurven mit forward_left() (oberer und linker Pfeil) fahren lassen.
forward_right()
Ebenso bewegt sich der Roboter nach rechts, wenn die obere und die rechte Pfeiltaste gleichzeitig gedrückt werden.
Bremsen und Boosten
Fügen Sie allen Ihren Funktionen Eingangsvariablen hinzu, um die Geschwindigkeit des Roboters oder die Stärke der Kurven in Abhängigkeit von anderen gedrückten Tasten zu modulieren.
Fügen Sie beispielsweise allen Ihren Funktionen eine Eingangsvariable speed hinzu (z. B. forward(speed)) und rufen Sie die Funktionen mit einer geringeren Geschwindigkeit auf, wenn gleichzeitig die Leertaste gedrückt wird ("Bremsung"), und mit einer höheren Geschwindigkeit, wenn gleichzeitig die Taste "x" gedrückt wird ("Boost").
Steuern Sie Ihren Roboter und passen Sie die Geschwindigkeitseinstellungen an, damit es Ihnen gelingt, den Roboter so wendig und schnell wie möglich zu machen. Vergessen Sie nicht, auch das Überholen von Konkurrenten zu üben!
Programmieren einer Sequenz
Lassen Sie den Roboter auf einer Taste Ihrer Wahl eine kleine Choreographie aufführen, z. B. um den Sieg zu feiern!
Bilanz und Feedback
In der Programmierung wird die Liste der zugänglichen Funktionen eines Programms als API bezeichnet, was für Application Programming Interface(Schnittstelle zur Anwendungsprogrammierung) steht. Sie wird von Programmierern verwendet, um herauszufinden, wie sie mit dem Programm interagieren können. Die API des Python-Moduls alphai finden Sie unter folgendem Link: https: //drive.google.com/file/d/1C4ovPW_eH5KFz5Y9JvSrzLhtmdOpcp6-/view