Hack@Home - Microsoft und Daimler Hackathon an der Uni Stuttgart

Als ich neulich durch das Internet stolperte, stieß ich auf einen Eintrag für einen interessanten Hackathon in Stuttgart. Microsoft und Daimler luden ein. Bei Hack@Home handelt es sich um eine Serie von Hackathons in Deutschland zu unterschiedlichen Themen.

IN Stuttgart ging es darum, einen Industrie-Roboter zu hacken und eine coole Applikation dafür zu schreiben.

Vom Veranstalter wurden unterschiedliche Tools mitgebracht, die genutzt werden durften. Zum einen natürlich eine Subscription für Azure. Hier konnten alle möglichen Dienste, wie IoT-Hub und StreamAnalytics, verwendet werden. Außerdem hatte Daimler einen IoT-Hub eingerichtet, der Daten eines aktiven Roboters streamte. Außerdem gab es eine Simulation eines Roboters an den Befehle gesendet werden konnten. Diese Simulation war eine Reihe von kleinen Apps und eine UWP-App mit einem Unity3D-Model eines Roboters.

Los ging alles 10:00 Uhr am Donnerstag. Für meinen Teil hatte ich noch keine Gruppe und keine Ahnung was auf mich zukam. Nach kurzer Zeit hatte ich einen ersten Partner, einen Informatikstudent mit Namen Eugen. Er hatte schon eine Idee oder eher eine Technologie die er gerne einsetzen würde. Der Service hieß Language Understanding Intelligent Service oder kurz LUIS. Mit LUIS könnten wir eine Sprachsteuerung schreiben. Außerdem wäre eine API als Abstraktion für den Roboter sinnvoll.

Am Tisch neben uns hatten sich zwei andere Informatikstudenten hingesetzt. Da unser Tisch am Fenster stand und es da sehr zog, wollten wir uns woanders hinsetzen. Dadurch kamen wir ins Gespräch und kurz danach hatten wir eine volle Vierergruppe. Auch auf ein Thema und ein Ziel konnten wir uns schnell verständigen. Ein sprachgesteuerter Roboter. Nur noch schnell die Welcome-Veranstaltung überleben und dann kann es losgehen.

Der Welcome-Teil ist ja bekanntermaßen ein Werbeblock der Veranstalter gepaart mit einer kurzen Regelerläuterung. Hier war es genau so. Die Werbung viel sehr kurz aus, was ich gut fand. Die Regeln auch. “Maximal vier Personen pro Gruppe, ansonsten macht was ihr wollte. Bei Fragen sind wir einen Teil der Zeit anwesend.”

Also begannen wir damit, die Aufgaben im Team zu definieren und zu verteilen. Sprachsteuerung für Eugen und XXX, API und Roboter für Armin und mich. Ich begann damit, die Solution mit der Robotersimulation zum laufen zu bekommen. Nach einer Weile und ein paar Rückfragen hatte ich eine Entwicklermaschiene in Azure erstellt und eine WebAPI 2 Applikation, eine UWP-App zum senden von Befehlen und eine UWP-Unity-App mit der Simulation idendifiziert.

Beim starten der Apps fehlten natürlich noch unzählige Dependencies. Diese nachzuinstallieren dauerte eine ganze Weile. Gegen 18:00 Uhr liefen dann aber die API und die Sender App. Nur die eigentliche Simulation machte richtig Probleme. Daher beschlossen wir diesen Part zu ignorieren und eine eigene kleine App zu bauen. Wegen der Kürze der Zeit entschieden wir uns bekannte Technologie einzusetzen und die Simulation als WebApp mit Angular umzusetzen.

Nebenbei entstand ein kleines Backend auf Basis von NodeJS, was Befehle entgegennehmen und an die Roboter weiterleiten konnte. Außerdem machte die Sprachsteuerung Fortschritte. Zwar nicht, wie eigentlich geplant, auf einem Laptop aber dafür als Android-App (was ich cooler finde). Probleme machten bei der Spracherkennung vor allem die Genauigkeit der Erkennung. Manchmal wurde etwas erkannt, obwohl die API nur 70% Wahrscheinlichkeit aufwies aber bei über 99% entschied das Framework sich gegen den richtigen Befehl. Hier war einiges an Tuning notwendig. Aber zum Schluss hat es recht gut geklappt.

Der Roboter selbst war bei uns sehr einfach gehalten. Eine Reihe von runden Loadern um die drehbaren Achsen zu visualisieren und ein normaler horizontaler Loader für den ausfahrbaren Arm. Aber es reichte aus. Dazu kam noch eine Queue für die Befehle und ein aktueller Befehl. Fertig war der Roboter. Mit dem Backend wurde über einen Websocket kommuniziert. Dadurch war das Delay zwischen “App erkennt Befehl” und “Roboter setzt Befehl um” sehr kurz. Es konnten mehrere Roboter dargestellt werden und per Sprachbefehl konnte man zwischen den Robotern wählen. Das alles lief weitestgehend einige Stunden vor Ende der Coding-Zeit. Daher hatten wir noch Zeit ein paar Bugs zu fixen und das ganze ein wenig schöner zu machen.

Leider hatten wir bei der Präsentation wieder massive Probleme mit der Spracherkennung. Einen einzelnen Befehl verstand die App. Aber mit der Aufzeichnung der Macros hatte es so seine liebe Not. Daher feuerten wir kurz vor Abauf der 3 Minuten Präsentationszeit einen kleinen Befehl per Postman direkt an die API. Wenige Sekunden vor Präsentationsschluss gab es so noch das Erfolgszeichen. Sicher nicht ganz so wie geplant, aber wir haben gewonnen. Und in den Stunden vor der Präsentation hatte auch alles geklappt und die Jury und die anderen Teilnehmer wussten das auch.

Die Ideen der anderen Teams waren auch durchweg großartig. Teilweise fand ich die Umsetztung oder Idee auch wesentlich besser als bei uns. Ich glaube unseren Sieg verdanken wir vor allem der Einzigartigkeit unserer Idee in diesem Hackathon. Alle anderen hatten versucht etwas mit den Daten der Roboter zu visualiseren. wir waren die einzige Gruppe, die den Roboter steuern wollte.

Der Gewinn war ein 500€ Microsoft Store Gutschein für jedes Gruppenmitglied. Für die zweiten gab es eine Führung bei Daimler umd die Roboter in echt zu sehen. Meinen Gewinn habe ich bereits in eine XBox und Kinect umgesetzt. Diese wollen wir in Heilbronn ins CoWorking stellen. Zum Enspannen aber auch weil es eine spannende Plattform ist, mit der man sicher noch gute Projekte umsetzen kann.

Mittlerweile bin ich auch wieder ausgeschlafen und kann aus einer kleinen Entfernung diesen Hackathon beurteilen. Ich fand den Hackathon insgesamt gut. Leider waren die zur Verfügung gestellten Tools nicht so wie geplant einsetzbar. Das war wirklich schade und hat uns viel Zeit gekostet. Aber das Team hat gerockt und vor allem haben wir uns auch Teamübergreifend helfen können. Das ist nicht selbstverständlich und ich finde das großartig.