Nun, da ich jede Platte als virtuelle Objekte erstellen konnte, Brauchte ich nur noch eine Klasse mit Methoden schreiben, die daraus ganze Straßensysteme erstellen, auf denen Cozmo dann umherfahren kann. Diese zu schreiben war relativ einfach und sollte auch so sein, da sie ja auch im Idealfall von jemandem geschrieben werden sollen, der sich nicht mit dem Programm auskennt.
Hier ein Beispiel-Straßensystem, welche ich erstellt habe:
Aufbau | Quellcode |
---|---|
Als ich jedoch eine dieser Methoden testweise ausführen wollte, fiel mir auf, dass Cozmo sehr lange brauchte, um die ganzen Objekte zu erstellen. Dies lag daran, dass ich for- Schleifen mit hundertfacher Wiederholung eingebaut hatte, wodurch Cozmo mehrere tausend Objekte erstellen musste. Dementsprechend habe ich dann die for- schleifen auf unter 20 Wiederholungen reduziert, sodass nur noch unter 500 Objekte erstellt werden mussten, was deutlich schneller ging.
Jedoch hörten damit die Probleme nicht auf. Als ich es dann geschafft hatte, Cozmo beizubringen wo die virtuellen Objekte sind, ignorierte er diese bei den nächsten Tests einfach und fuhr quer über die Platten. Daraufhin überprüfte ich meinen Quellcode erneut und entdeckte bei den Kurven und Kreuzungen an einigen Stellen ein Vorzeichenfehler bei der umgeformten Pythagoras-Einheitskreis-Formel. Nachdem ich diesen zuerst noch schlimmer gemacht hatte in dem Glauben, ihn korrigiert zu haben, fuhr Cozmo gar nicht mehr. Das hat mich nicht locker gelassen, weshalb ich mich zu Hause an
meine Computer gesetzt habe und das Programm dort, mitsamt einer Erweiterung, welche wir in dem
Programm in der Schule nicht hatten, installiert habe. Durch die Erweiterung, welche er ermöglicht Cozmos virtuelle Landkarte in einem 3D-Modells zu sehen, habe ich meinen Fehler entdecken können.
Nachdem ich diesen Fehler erneut und diesmal richtig korrigiert hatte, schien das Programm endlich zu funktionieren. Jedoch stellte sich nach intensiverem Ausprobieren heraus, dass Cozmo
manchmal einfach nicht zu der angegebenen Position fuhr. Da ich jedoch auch mithilfe des 3D-Modells das Problem nicht identifizieren konnte, entschied ich mich dafür, das Programm einfach nochmal zu schreiben, nur dass ich diesmal die weißen Außenlinien als Fahrbahnbegrenzung festlegte.
Leider blieb das Problem immer noch. Hinzu kam, dass ich in dem 3D-Mdell entdeckte, dass die Objekte der Kurven, welche mithilfe der Pythagoras-Einheitskreis-Formel erstellt wurden, um bis zu 50 mm versetzt waren, was ich mir einfach nicht erklären konnte. Also beschloss ich nach langem grübeln, dass ich ein weiteres Programm schreibe, in denen ich die Kurven ohne die Pythagoras-Einheitskreis-Formel erstelle, wodurch ich eine höhere Ungenauigkeit in Kauf nahm.
Doch auch dieses Programm wies das gleiche Problem auf. Also beschloss ich, mir die pose-Klasse einmal genauer anzuschauen und entdeckte eine Methode namens is_valid. Leider gab es zu dieser keine genaueren Erläuterungen, außer, dass sie prüft, ob eine Position „gültig“ ist und dann entsprechend True oder False zurück gibt. Und auch beim Testen erwies sich diese als weniger nützlich, da sie bei jeder Position immer False zurück lieferte. An diesem Punkt angelangt gab es für mich nur noch eine Erklärung für das Problem: ein Fehler in der Programmierung der internen Landkarte Cozmos, weshalb ich hier das Projekt aufgeben musste, da die Firma „Anki“, welche die Roboter produziert hatte, mittlerweile wegen Insolvenz aufgelöst wurde, sodass ich nicht auf eine Korrektur des Fehlers hoffen konnte.
Trotz alldem und obwohl es einige andere Probleme und Schwierigkeiten mit den Cozmos gab, hat mir der Projektkurs sehr viel Spaß gemacht. Wir konnten uns in einer kleinen Gruppe weiterentwickeln und ich habe dadurch vor allem herausgefunden, was es heißt, eigenständig und ohne ständige Rückendeckung des Lehrers zu Programmieren: Fehler suchen und beheben, bis es funktioniert.