4. Das Cozmo SDK

Endlich fange ich mal an etwas über das „Cozmo SDK (Software Development Kit)“ zu erzählen. Die Firma Anki hat ihr Quelltext Open-Source freigegeben und es ist auf der Seite github.com frei zugänglich. Das Cozmo SDK ist also das Gehirn von Cozmo und da stehen alle Klassen und Befehle, die Cozmo ausführen kann.

Als Einführung zur SDK haben wir Aufgaben bekommen, die uns auf eigenständige Arbeit vorbereiten  und uns mit der SDK vertraut machen sollen.

Die erste Aufgabe war Cozmo nach vorne fahren zu lassen und danach ihn um 90° drehen zu lassen. Für diese Aufgabe wurden die Parameter vorgestellt. Die Paramater werden in den Klammern nach dem Methodennamen geschrieben und es sind Dateien der SDK die einen bestimmten Befehl haben, den wir in der Methode benutzen werden. Der Befehl für Fortbewegung lag in der SDK in der Datei namens Robot.py. In der Klasse „robot“ in der Datei Robot.py liegt der Befehl drive_wheels(l_wheel_speed, r_wheel_speed, l_wheel_acc=None, r_wheel_acc=None, duration=None) (die Parameter in den Klammern sind einfach nur Beschreibungen von Parametern, die im Befehl verfügbar sind oder initialisiert werden müssen). Für diesen Befehl müsste man nur die Geschwindigkeit vom linken (l_wheel_speed) und vom rechten (r_wheel_speed) Rad in den Klammern angeben (s. Bild unten). Dabei bewegt er sich in Millimetern pro Sekunde.

 

Oben im Bild sieht man „import cozmo“ etc.. Das ist dafür da um die Befehle, die aus der Cozmo SDK kommen, zu benutzen. Der Parameter in der Klammer „c:cozmo.robot.Robot“ zeigt, dass der Buchstabe c eine Abkürzung für den Pfad „cozmo.robot.Robot“ ist. Um drive_wheels zu benutzen muss ich erstmal sagen, von wo der Befehl kommt, also schreibe ich vor drive_wheels ein „c.“ um zu sagen, dass der Befehl aus der Klasse Robot kommt, die in der Datei robot und im Ordner cozmo liegt. Das Wichtigste dabei ist nicht zu vergessen, dass man angeben muss, dass Cozmo den Befehl zu Ende ausführen muss. Deswegen hat man time.sleep (Sekunden) geschrieben, damit Cozmo bei der Ausführung des Befehls, den auch bis zum Ende durchführt, weil es im Cozmo so ist, dass Befehle, die seine Motoren benutzen, nur durch eine Zeitangabe ausgeführt werden können. Für die Ausführung eines Programms für Cozmo muss man am Ende seiner Datei „cozmo.run_program((Name des Programms), (weitere Parameter)) schreiben (s. Bild unten).

 

Hier werde ich noch Bilder von gelösten Aufgaben zeigen, die wir noch machen mussten:

Hier habe ich die Fahrfunktion ausprobiert
Cozmo fährt ein Rechteck und gibt bei jeder Ecke seinen Standpunkt als Koordinate an

 

Der Ladezustand der Batterie von Cozmo wird angezeigt

Für die Batterie-Aufgabe haben wir im Kurs die Seite http://cozmosdk.anki.com benutzt, weil auf der Seite alle Befehle und Klassen unter „The API“ beschriftet und erklärt werden, die in der SDK vorkommen. Im Nachhinein hat auch unser Lehrer mitgeteilt, dass es eine interne Cozmo Lösung gibt für den time.sleep Befehl. Man muss einfach nach jedem Befehl, wie z.B: c.drive_wheels(90,90),  „.wait_for_completed()“ schreiben. So führt jeder motorenabhängige Befehl, die Aktion komplett aus.