Automatisiert Automatisierung studieren
Die Studierenden des ETH-Kurses PDM4AR (Planning and Decision Making for Autonomous Robots) lernen, wie man Algorithmen schreibt, die autonom Entscheidungen treffen können – zum Beispiel, wie man einem autonomen Fahrzeug das Fahren beibringt. Kurse wie dieser werden traditionell mit vielen Papier-und-Bleistift-Übungen unterrichtet, bei denen einige Iterationen eines Algorithmus auf Papier gelöst werden. Auch der PDM4AR-Kurs wurde zunächst so unterrichtet. Aber das ist nicht wirklich das, was für die echte Arbeit in der Robotik benötigt wird, und es macht auch nicht besonders viel Spass. Es gibt eine bessere Möglichkeit, den Studierenden die wahre Magie dieser Algorithmen zu zeigen und ihre Leidenschaft für das Thema zu wecken.
Da Prof. Emilio Frazzoli fest an den Wert der praktischen Anwendung glaubt, beschloss er, den Kurs näher an die reale Welt heranzuführen und Lernvorteile zu bieten, die über das eigentliche Kursmaterial hinausgehen. Er arbeitete mit seinem Kollegen Alessandro Zanardi, Mitglied des Nationalen Forschungsschwerpunkts Automation, und dem Softwareingenieur Shengjie Hu zusammen, um eine völlig neue Lernerfahrung zu schaffen. Jetzt müssen die Studierenden die ihnen vermittelte Theorie in einen tatsächlich funktionierenden Code umsetzen. Sie können auf Tools und Testfälle aus einem gemeinsamen Repository zugreifen, eine Lösung programmieren, die fertige Arbeit auf Github hochladen und sie anhand geheimer Testfälle, die sie nicht gesehen haben, bewerten lassen. Ihre Note wird automatisch auf der Grundlage der Leistung in diesen Tests generiert.
Auch wenn es auf den ersten Blick unnatürlich erscheinen mag, automatische Bewertungen zu verwenden, ist dies in der Tat viel realistischer als manuelles individuelles Feedback. Schliesslich ist es nicht ungewöhnlich, dass Code beim Testen versagt, und so frustrierend das auch ist, in der realen Welt erhalten Programmierer auch keine sorgfältigen Erklärungen, wo sie Fehler gemacht haben. Man muss es einfach selbst herausfinden.
„Viel inspirierender als herkömmliche Kursarbeit“
Alessandro, der für die Gestaltung der Übungen verantwortlich war, ist von diesem innovativen Ansatz begeistert. „Das eigentliche Programmieren ist viel schwieriger, aber auch inspirierender als die üblichen Papier-und-Bleistift-Übungen“, sagt er. „Der beste Weg, um diesen ‚Wow‘-Effekt zu erzielen, ist, sich durch den Prozess der Umsetzung der Theorie zu kämpfen und schliesslich zu sehen, wie der eigene Code echte Probleme löst.
„Und abgesehen davon, dass sie auf diese Weise mit modernen Tools wie Docker und Github in Berührung kommen, profitieren die Studierenden auch von vielen Lektionen fürs Leben, die der Robotik innewohnen.“
Ein Beispiel dafür ist der Unterschied zwischen ihren Testfällen und der realen Welt. Und die Kosten für die Implementierung in Hardware.
„Feldtests mit echter Hardware sind teuer. Daher müssen Sie alle Anforderungen, Spezifikationen und möglichen Grenzfälle sorgfältig durchdenken.“
In diesem Kurs erhalten die Studierenden im Github-Klassenzimmer jeweils eine private Kopie des Übungs-Repositorys und können sich Zeit nehmen, um ihre eigenen Lösungen zu entwickeln. Erst wenn sie glauben, dass ihr Code fertig ist, geben sie ihn zur Bewertung frei, wobei die Ergebnisse automatisch in ihrem eigenen Repository sowie in einer gemeinsamen Rangliste veröffentlicht werden. Bei schlechten Ergebnissen kann man es erneut versuchen – aber nicht endlos: Die Studierenden dürfen für jede Übung eine begrenzte Anzahl von Beiträgen einreichen. Das erfordert eine ähnliche Disziplin wie die Einhaltung von Kostenvorgaben.
Eine weitere Fähigkeit, die in diesem Kurs vermittelt wird, ist die Zusammenarbeit, da die letzten beiden Aufgaben in kleinen Gruppen durchgeführt werden. Universitäten neigen dazu, sich auf die Bewertung von Einzelpersonen zu konzentrieren, aber in der Industrie ist Teamarbeit unerlässlich. Die Studierenden haben hier die Möglichkeit, die Zusammenarbeit an derselben Codebasis zu üben, wie sie es in einer gewerblichen Anstellung tun werden.
Wie bei so vielen Innovationen scheint diese Vorgehensweise offensichtlich zu sein ... sobald sie bereits eingeführt ist. Doch der Weg dorthin war nicht einfach. Alessandro und Shengjie standen vor der gewaltigen Aufgabe, die erforderliche Software-Infrastruktur einzurichten, damit sie auf allen verschiedenen Geräten, die die Studierenden verwenden könnten, zuverlässig funktioniert, wobei jedes Gerät über eine eigene Architektur und ein eigenes Betriebssystem verfügt. Und natürlich erforderte die Gestaltung von Übungen und Bewertungsfunktionen, die fair sind und das Verständnis der Studierenden für den Stoff angemessen widerspiegeln, viel Aufmerksamkeit und Kreativität.
Aber es hat sich gelohnt. Zhengyu Fu, einer der Probanden, die am ersten Durchlauf dieses neu automatisierten Kurses teilnahmen, bestätigt, dass er durch diese „lohnende und fesselnde Programmiererfahrung“ viel gelernt hat. „Man muss jeden Aspekt des Materials gründlich verstehen, um es in einen funktionierenden Code umzuwandeln. Ausserdem müssen die Studierenden Kernelemente von Grund auf neu schreiben, anstatt einfach nur die Lücken auszufüllen.“
Und die Kursentwickler sind vom Wert ihrer harten Arbeit überzeugt.
„Das geht weit über den herkömmlichen Robotikunterricht hinaus“, sagt Emilio. „Nach meiner Erfahrung mit der Gründung und dem Aufbau meines eigenen Robotikunternehmens wollte ich sicherstellen, dass die Studierenden nicht nur die theoretischen Grundlagen des Fachs erlernen, sondern auch die Fähigkeiten, produktionsreifen Code mit branchenüblichen Tools zu implementieren und einzusetzen. Wir vermitteln nicht nur Lehrmaterial: Wir bereiten die Studierenden darauf vor, in diesem Bereich etwas zu bewirken. Es ist eine Herausforderung, aber es macht Spass. Und es muss nicht einmal innerhalb der Mauern der ETH bleiben; die Materialien sind alle auf Github verfügbar. Jeder kann es selbst ausprobieren.