LBotics.at

Um Python-Skripts für den mBot2 zu erstellen, müssen zunächst Module importiert werden. Python-Module sind nichts anderes als Dateien, die vorgefertigten Python Code beinhalten - bei dem mBot2 Robotik-System für den CyberPi, das mBot2 Shield und die beiden Sensoren.

Im mbot2 Modul werden Funktionen zur Verfügung gestellt, mit denen man den Roboter nach einem vorgegebenen Bewegungsablauf fahren lassen kann.

Beispiel - Abfahren eines vorgegebenen Bewegungsmusters

In diesem Programmierbeispiel werden zunächst die beiden Module cyberpi und mbot2 importiert. Im Anschluss daran können alle Funktionen aus dem mbot2 Modul aufgerufen werden, indem man die Funktionsnamen getrennt durch einen Punkt hinter der Bezeichnung des Moduls anführt. Bei dem folgenden Bewegungsablauf fährt der Roboter mit unterschiedlichen Funktionen vorwärts, rückwärts und er dreht sich.

# importieren der benötigten Module
import cyberpi, mbot2

# aufrufen verschiedener Fahrfunktionen
mbot2.forward(50, 1)
mbot2.turn_left(100, 1)
mbot2.backward(30, 2)
mbot2.turn_right(20, 4)
mbot2.straight(5, 30)
mbot2.turn(180, 30)
mbot2.turn(-180, 30)
Erklärungen zu diesem Skript

1: # importieren der benötigten Module

Steht in einem Python-Skript ein # Zeichen, so handelt es sich bei dem darauf folgenden Text um einen Kommentar. Solche Kommentare sind Anmerkungen in einem Code, die nicht interpretiert und nicht ausgeführt werden und Erklärungen zum Code beinhalten können.

2: import cyberpi, mbot2

Mit import werden Python-Module eingebunden, hier die beiden Module cyberpi und mbot2, in denen Funktionen zum Ansprechen dieser beiden Hardware-Komponenten zur Verfügung gestellt werden.

5: mbot2.forward(50, 1)

Hier wird die Funktion forward(speed, time) aufgerufen, die vom Modul mbot2 bereitgestellt wird. Mit dieser Funktion und den übergebenen Werten 50, 1 fährt der Roboter mit einer festgelegten Geschwindigkeit von 50 RPM (Rounds Per Minute = Umdrehungen pro Minute) für eine Zeit von 1 sec vorwärts. Achtung: Die Ausführung des Skripts wird beim Aufruf dieser Funktion für den angegebenen Zeitraum an dieser Stelle angehalten!

speed: 0, 1, ..., 200 (Dezimalzahlen zwischen 0 und 200, also z. B. auch 34.23, grundsätzlich von -200 bis 200, bei negativen Zahlen fährt der Roboter rückwärts)

time: 0, 1, ... (positive Dezimalzahlen mit 0 beginnend)

6: mbot2.turn_left(100, 1)

Mit der Funktion turn_left(speed, time) dreht sich der Roboter am Stand nach links, indem sich die beiden Räder in entgegengesetzte Richtungen drehen - hier mit 100 RPM für eine Sekunde. Achtung: Die Ausführung des Skripts wird beim Aufruf dieser Funktion für den angegebenen Zeitraum an dieser Stelle angehalten!

speed: 0, 1, ..., 200 (Dezimalzahlen zwischen 0 und 200, grundsätzlich von -200 bis 200, bei negativen Zahlen dreht sich der Roboter nach rechts)

time: 0, 1, ... (positive Dezimalzahlen mit 0 beginnend)

7: mbot2.backward(30, 2)

Die Funktion backward(speed, time) lässt den Roboter rüchwärts fahren - hier mit einer Geschwindigkeit von 30 RPM für 2 Sekunden. Achtung: Die Ausführung des Skripts wird beim Aufruf dieser Funktion für den angegebenen Zeitraum an dieser Stelle angehalten!

speed: 0, 1, ..., 200 (Dezimalzahlen zwischen 0 und 200, bei negativen Zahlen fährt der Roboter vorwärts)

time: 0, 1, ... (positive Dezimalzahlen mit 0 beginnend)

8: mbot2.turn_right(20, 4)

Mit der Funktion turn_right(speed, time) dreht sich der Roboter am Stand nach rechts, indem sich die beiden Räder in entgegengesetzte Richtungen drehen - hier mit 20 RPM für 4 Sekunden. Achtung: Die Ausführung des Skripts wird beim Aufruf dieser Funktion für den angegebenen Zeitraum an dieser Stelle angehalten!

speed: 0, 1, ..., 200 (Dezimalzahlen zwischen 0 und 200, grundsätzlich von -200 bis 200, bei negativen Zahlen dreht sich der Roboter nach links)

time: 0, 1, ... (positive Dezimalzahlen mit 0 beginnend)

9: mbot2.straight(5,30)

Mit dem mbot2 ist es möglich exakte Strecken zu fahren. Dazu dient die Funktion straight(distance, speed). Hier soll der Roboter eine Strecke von 5 cm mit einer Umdrehngsgeschwindigkeit von 30 RPM fahren. Achtung: Die Ausführung des Skripts wird beim Aufruf dieser Funktion für den angegebenen Zeitraum an dieser Stelle angehalten!

distance: 0, 1, ..., 200 (Strecke in cm, positive Dezimalzahlen von 0 beginnend, bei negativen Zahlen fährt der Roboter rückwärts)

speed: 0, 1, ..., 200 (Dezimalzahlen zwischen 0 und 200)

10: mbot2.turn(180,30)

Möchte man, dass sich der Roboter genau um einen bestimmten Winkel dreht, dann kann man dafür die Funktion turn(angle, speed) verwenden. Hier dreht sich der Roboter um 180 Grad im Uhrzeigersinn mit einer Geschwindigkeit von 30 RPM. Die Ausführung des Skripts wird unmittelbar nach Aufruf dieser Funktion fortgesetzt, der Roboter beendet die Drehbewegung, wenn er den gewünschten Drehwinkel erreicht hat, oder eine andere Funktion zur Steuerung der Motoren davor aufgerufen wurde.

angle: ..., -2, -1, 0, 1, 2, 3, ... (Winkel in Grad, negative und positive ganzzahlige Werte, bei negativen Werten dreht sich der Roboter nach links)

speed: 0, 1, ..., 200 (Dezimalzahlen zwischen 0 und 200)

Zusammenfassung - Was wurde in diesem Abschnitt gelernt?
Python
  • Mit import werden Python-Module (Python-Dateien) eingebunden, die Code beinhalten, den man in seinen eigenen Skripts verwenden kann.
  • Hinter einem # Zeichen steht in Python ein Kommentar, also ein beliebiger Text, der nicht interpretiert und nicht ausgeführt wird.
mBot2
  • Vom Modul mbot2 werden die Funktionen mbot2.forward(speed, time), mbot2.backward(speed, time), mbot2 turn_left(speed, time), mbot2.turn_right(speed, time), mbot2.straight(distance, speed) und mbot2.turn(angle, speed) zur Verfüfung gestellt, die zum Fahren des Roboters dienen.
  • Während der Ausführung der Funktionen mbot2.forward(speed, time), mbot2.backward(speed, time), mbot2.turn_left(speed, time), mbot2.turn_right(speed, time) und mbot2.straight(distance, speed) kann der Roboter KEINE anderen Signale, Anweisungen, ... verarbeiten. Die darauffolgende Codezeile wird erst ausgeführt, wenn die angegebene Zeit verstrichen ist. Diese Funktionen sollten also nicht verwendet werden, wenn der Roboter zum Beispiel auf die Information eines Sensors reagieren und stehenbleiben soll.