In der Welt der Ingenieurausbildung gibt es viele ausgezeichnete Kurse, aber oft hat der darauf aufbauende Lehrplan einen schwerwiegenden Nachteil - das Fehlen einer guten Konnektivität zwischen verschiedenen Themen. Man kann Einwände erheben: wie so?
Bei der Bildung eines Trainingsprogramms werden für jeden Kurs die Voraussetzungen und eine klare Reihenfolge angegeben, in der die Disziplinen studiert werden sollen. Um beispielsweise einen primitiven mobilen Roboter zusammenzubauen und zu programmieren, müssen Sie ein wenig Mechanik kennen, um seine physikalische Struktur zu erstellen. die Grundlagen der Elektrizität auf der Ebene der Ohm / Kirchhoff-Gesetze, die Darstellung digitaler und analoger Signale; Operationen mit Vektoren und Matrizen zur Beschreibung der Koordinatensysteme und der Bewegung des Roboters im Raum; Programmiergrundlagen auf der Ebene der Datenpräsentation, einfache Algorithmen und Steuerungsübertragungsstrukturen usw. das Verhalten zu beschreiben.
Ist alles in Universitätskursen? Natürlich gibt es. Nach den Ohm / Kirchhoff-Gesetzen erhalten wir jedoch Thermodynamik und Feldtheorie; Zusätzlich zu Operationen mit Matrizen und Vektoren müssen Sie sich mit Jordan-Formularen befassen. Polymorphismus in der Programmierung zu studieren - Themen, die nicht immer benötigt werden, um ein einfaches praktisches Problem zu lösen.
Die Universitätsausbildung ist umfangreich - der Student geht auf eine breite Front und sieht oft nicht die Bedeutung und praktische Bedeutung des Wissens, das er erhält. Wir haben uns entschlossen, das Paradigma der MINT-Hochschulausbildung (aus den Worten Wissenschaft, Technologie, Ingenieurwesen, Mathematik) umzukehren und ein Programm zu erstellen, das auf der Kohärenz des Wissens beruht und in Zukunft die Vollständigkeit aufbaut, dh eine intensive Entwicklung der Fächer impliziert.
Das Studium eines neuen Fachgebiets kann mit dem Studium eines bestimmten Fachgebiets verglichen werden. Und hier gibt es zwei Möglichkeiten: Entweder haben wir eine sehr detaillierte Karte mit einer Vielzahl von Details, die untersucht werden müssen (und dies nimmt viel Zeit in Anspruch), um zu verstehen, wo sich die wichtigsten Sehenswürdigkeiten befinden und wie sie sich zueinander verhalten. Oder Sie können den primitiven Plan verwenden, der nur die Hauptpunkte und ihre relativen Positionen anzeigt. Eine solche Karte reicht aus, um sich sofort in die richtige Richtung zu bewegen und Details auf dem Weg zu klären.
Wir haben den STEM-Ansatz für intensives Lernen an der Winterschule getestet, den wir zusammen mit MIT-Studenten mit Unterstützung von
JetBrains Research durchgeführt haben.Materialvorbereitung
Der erste Teil des Schulprogramms bestand aus einer Unterrichtswoche in den Hauptbereichen, die Algebra, elektrische Schaltkreise, Computerarchitektur, Python-Programmierung und eine Einführung in ROS (Robot Operating System) umfasste.
Die Richtungen wurden nicht zufällig gewählt: Sie sollten sich gegenseitig ergänzen und den Schülern helfen, den Zusammenhang zwischen scheinbar unterschiedlichen Dingen auf den ersten Blick zu erkennen - Mathematik, Elektronik und Programmierung.
Das Hauptziel war natürlich nicht, viele Vorlesungen zu halten, sondern den Studenten die Möglichkeit zu geben, das soeben erworbene Wissen selbst in die Praxis umzusetzen.
Im Abschnitt Algebra konnten die Schüler in Operationen mit Matrizen und Lösen von Gleichungssystemen geschult werden, die beim Studium elektrischer Schaltkreise nützlich waren. Die Schüler lernten das Transistorgerät und die darauf basierenden logischen Elemente kennen und konnten ihre Anwendung im Prozessorgerät sehen. Nachdem sie die Grundlagen der Python-Sprache erlernt hatten, schrieben sie ein Programm für einen echten Roboter darauf.

Duckietown
Eine der Aufgaben der Schule war es, die Arbeit mit Simulatoren nach Möglichkeit zu minimieren. Daher wurde ein großer Satz elektronischer Schaltungen vorbereitet, die die Schüler aus realen Komponenten auf einem Steckbrett zusammenbauen und in der Praxis testen mussten, und Duckietown wurde als Grundlage für die Projekte ausgewählt.
Duckietown ist ein Open-Source-Projekt, das kleine, autonome Roboter namens Duckiebot und ein Straßennetz umfasst, auf dem sie fahren. Duckiebot ist eine Plattform mit Rädern, die mit einem Raspberry Pi-Mikrocomputer und einer einzelnen Kamera ausgestattet ist.
Darauf aufbauend haben wir eine Reihe möglicher Aufgaben vorbereitet, z. B. das Erstellen einer Straßenkarte, das Finden von Objekten und das Anhalten neben ihnen sowie eine Reihe anderer Aufgaben. Die Schüler könnten auch ihr eigenes Problem vorschlagen und nicht nur ein Programm schreiben, um es zu lösen, sondern es auch sofort auf einem echten Roboter starten.
Lehren
Während der Vorlesung erzählten die Lehrer das Material anhand vorbereiteter Präsentationen. Einige Klassen wurden auf Video aufgezeichnet, sodass die Schüler die Möglichkeit hatten, sie zu Hause anzusehen. Während der Vorlesungen verwendeten die Studenten Materialien auf ihren Computern, stellten Fragen, lösten Probleme gemeinsam und unabhängig, manchmal an der Tafel. Basierend auf den Ergebnissen der Arbeit wurde die Bewertung jedes Schülers separat für verschiedene Fächer berechnet.

Erwägen Sie, die Kurse in jedem Fach genauer durchzuführen. Das erste Thema war die lineare Algebra. Die Studenten studierten einen Tag lang Vektoren und Matrizen, lineare Gleichungssysteme usw. Praktische Aufgaben wurden in einem interaktiven Modus erstellt: Die vorgeschlagenen Aufgaben wurden einzeln gelöst, und der Lehrer und andere Schüler gaben Kommentare und Tipps.

Das zweite Thema sind Elektrizität und einfache Schaltkreise. Die Studierenden studierten die Grundlagen der Elektrodynamik: Spannung, Strom, Widerstand, Ohmsches Gesetz und Kirchhoffsche Gesetze. Praktische Aufgaben wurden teilweise im Simulator oder auf der Platine ausgeführt, aber es wurde mehr Zeit für den Aufbau realer Schaltungen wie Logikschaltungen, Oszillationsschaltungen usw. aufgewendet.

Das nächste Thema ist Computerarchitektur - gewissermaßen eine Brücke zwischen Physik und Programmierung. Die Studierenden studierten die grundlegenden Grundlagen, deren Bedeutung eher theoretischer als praktischer Natur ist. In der Praxis entwarfen die Schüler im Simulator unabhängig voneinander arithmetisch-logische Schaltungen für Punkte, für die sie Punkte erhielten.
Der vierte Tag ist der erste Tag der Programmierung. Python 2 wurde als Programmiersprache gewählt, da es bei der Programmierung unter ROS verwendet wird. Dieser Tag war wie folgt aufgebaut: Die Lehrer erzählten das Material, gaben Beispiele für die Lösung von Problemen, während die Schüler ihnen zuhörten, an Computern saßen und wiederholten, was der Lehrer an die Tafel oder Folie schrieb. Dann lösten die Schüler ähnliche Probleme selbst, anschließend wurden die Lösungen von den Lehrern bewertet.
Der fünfte Tag war ROS gewidmet: Die Jungs lernten Programmierroboter kennen. Während des gesamten Schultages saßen die Schüler an Computern und führten den Programmcode aus, über den der Lehrer sprach. Sie konnten die Grundeinheiten von ROS unabhängig voneinander starten und lernten auch das Duckietown-Projekt kennen. Am Ende dieses Tages waren die Schüler bereit, mit dem Design-Teil der Schule zu beginnen und praktische Probleme zu lösen.

Beschreibung ausgewählter Projekte
Den Studenten wurde angeboten, sich in Dreierteams zusammenzuschließen und ein Projektthema auszuwählen. Infolgedessen wurden folgende Projekte angenommen:
1. Farbkalibrierung. Duckiebot muss die Kamera kalibrieren, wenn sich die Lichtverhältnisse ändern, daher besteht die Aufgabe der automatischen Kalibrierung. Das Problem ist, dass Farbbereiche sehr lichtempfindlich sind. Die Teilnehmer implementierten ein Dienstprogramm, das die gewünschten Farben auf dem Rahmen hervorhebt (rot, weiß und gelb) und Bereiche für jede der Farben im HSV-Format erstellt.
2. Ententaxi. Die Idee dieses Projekts ist, dass Duckiebot in der Nähe eines Objekts anhalten, es aufheben und einer bestimmten Route folgen könnte. Als Objekt wurde eine leuchtend gelbe Ente ausgewählt.

3. Erstellen Sie ein Diagramm der Straßen. Es besteht die Aufgabe, eine grafische Darstellung von Straßen und Kreuzungen zu erstellen. Das Ziel dieses Projekts ist es, ein Straßendiagramm zu erstellen, ohne a priori Umweltdaten für Duckiebot bereitzustellen, wobei ausschließlich Kameradaten zugrunde gelegt werden.
4. Streifenwagen. Dieses Projekt wurde von den Studenten selbst erfunden. Sie boten an, einen Duckiebot, die "Patrouille", zu unterrichten, den anderen, den "Eindringling", zu verfolgen. Zu diesem Zweck wurde ein Zielerkennungsmechanismus durch den ArUco-Marker verwendet. Sobald die Erkennung abgeschlossen ist, wird ein Abschlusssignal an den „Eindringling“ gesendet.

Farbkalibrierung
Ziel des Farbkalibrierungsprojekts war es, den Bereich der erkennbaren Markierungsfarben an die neuen Lichtverhältnisse anzupassen. Ohne solche Anpassungen wurde die Erkennung von Haltelinien, Fahrspurteilern und Straßengrenzen falsch. Die Teilnehmer schlugen eine Lösung vor, die auf Vorverarbeitungs-Layout-Farbvorlagen basiert: Rot, Gelb und Weiß.
Jede dieser Farben hat einen vorläufigen Bereich von HSV- oder RGB-Werten. Mit diesem Bereich werden alle Bereiche mit geeigneten Farben auf dem Rahmen gefunden und der größte aus ihnen ausgewählt. Dieser Bereich wird als zu merkende Farbe verwendet. Anschließend werden statistische Formeln verwendet, z. B. die Berechnung des Mittelwerts und der Standardabweichung, um den neuen Farbbereich zu bewerten.
Dieser Bereich wird in die Konfigurationsdateien der Duckiebot-Kamera geschrieben und kann später verwendet werden. Der beschriebene Ansatz wurde auf alle drei Farben angewendet, wobei schließlich Bereiche für jede der Markup-Farben gebildet wurden.
Tests zeigten eine nahezu perfekte Erkennung der Markierungslinien, außer wenn ein Glanzband als Markierungsmaterial verwendet wurde, das die Lichtquellen so stark reflektierte, dass die Markierung im Betrachtungswinkel der Kamera unabhängig von ihrer ursprünglichen Farbe weiß erschien.

Ententaxi
Das Duck Taxi-Projekt umfasste die Erstellung eines Suchalgorithmus für eine Passagierente in der Stadt und den anschließenden Transport zum gewünschten Punkt. Die Teilnehmer teilten diese Aufgabe in zwei Teile: Erkennung und Bewegung entlang des Diagramms.
Die Schüler erkannten eine Ente und gingen davon aus, dass Ente ein Bereich auf dem Rahmen ist, der als gelb mit einem roten Dreieck (Schnabel) erkannt werden kann. Sobald ein solcher Bereich im nächsten Frame erkannt wird, sollte sich der Roboter ihm nähern und dann einige Sekunden anhalten, um eine Passagierlandung zu simulieren.
Anschließend erstellen die Teilnehmer mithilfe eines vorgespeicherten Straßendiagramms der gesamten Entenstadt und der Position des Bots sowie des Empfangs des Ziels als Eingabe einen Pfad vom Abfahrtspunkt zum Ankunftspunkt mithilfe des Dijkstra-Algorithmus, um nach Pfaden im Diagramm zu suchen. Die Ausgabe wird als eine Reihe von Befehlen dargestellt - dreht sich an jeder der folgenden Kreuzungen.

Diagramm der Straßen
Das Ziel dieses Projekts war es, eine Grafik zu erstellen - ein Straßennetz in Duckietown. Die Knoten des resultierenden Graphen sind Kreuzungen und die Bögen sind Straßen. Dazu muss Duckiebot die Stadt erkunden und ihre Route analysieren.
Während der Arbeit an dem Projekt wurde die Idee in Betracht gezogen, aber dann wurde die Idee, ein gewichtetes Diagramm zu erstellen, in dem die Kosten der Kante durch den Abstand (Zeit bis zur Überwindung) zwischen Kreuzungen bestimmt werden, abgelehnt. Die Umsetzung dieser Idee erwies sich als zu mühsam, und im Rahmen der Schule würde nicht genügend Zeit zur Verfügung stehen.
Als Duckiebot zur nächsten Kreuzung kommt, wählt er die Straße und verlässt die Kreuzung, auf der er sich noch nicht bewegt hat. Wenn alle Straßen an allen Kreuzungen abgedeckt wurden, verbleibt eine generierte Liste von Kreuzungsnachbarschaften im Speicher des Bots, die mithilfe der Graphviz-Bibliothek in ein Bild konvertiert wird.
Der von den Teilnehmern vorgeschlagene Algorithmus ist nicht für willkürliches Duckietown geeignet, hat aber in einer kleinen Stadt mit vier Kreuzungen innerhalb der Schule gut funktioniert. Die Idee war, jede Kreuzung mit einem ArUco-Marker zu ergänzen, der die Kreuzungskennung enthält, um die Kreuzung zu verfolgen.
Das Arbeitsschema des von den Teilnehmern entwickelten Algorithmus ist in der Abbildung dargestellt.

Streifenwagen
Das Ziel dieses Projekts ist es, einen Eindringlingsbot in Duckietown zu suchen, zu verfolgen und festzuhalten. Die Bot-Patrouille sollte sich auf der Suche nach einem bekannten Eindringlingsbot entlang des äußeren Straßenrings der Stadt bewegen. Nachdem der Eindringling erkannt wurde, muss der Patrouillenbot dem Eindringling folgen und ihn zum Stoppen bringen.
Die Arbeit begann mit der Suche nach der Idee, einen Bot auf dem Rahmen zu erkennen und den Eindringling darin zu erkennen. Das Team schlug vor, jeden Bot in der Stadt mit einem eindeutigen Marker auf der Rückseite auszustatten - genau wie echte Autos staatliche Zulassungsnummern haben. Hierzu wurden ArUco-Marker ausgewählt. Sie wurden zuvor in duckietown verwendet, da es einfach ist, mit ihnen zu arbeiten, und Sie können die Ausrichtung des Markers im Raum und den Abstand dazu bestimmen.
Als nächstes war es notwendig, den Patrouillenbot streng im äußeren Kreis zu bewegen, ohne an Kreuzungen anzuhalten. Standardmäßig bewegt sich Duckiebot auf einer Fahrspur und hält an einer Haltelinie an. Bestimmt dann anhand von Verkehrszeichen die Konfiguration der Kreuzung und trifft eine Auswahl über die Richtung der Kreuzung. Für jeden der beschriebenen Schritte ist einer der Zustände der Zustandsmaschine des Roboters verantwortlich. Um Stopps an der Kreuzung loszuwerden, änderte das Team die Zustandsmaschine so, dass der Bot bei Annäherung an die Stopplinie sofort direkt in den Durchgangszustand der Kreuzung überging.
Der nächste Schritt bestand darin, das Problem des Stoppens des Eindringlings zu lösen. Das Team ging davon aus, dass der Patrouillenbot SSH-Zugriff auf jeden der Bots in der Stadt haben kann, dh einige Informationen darüber, welche Autorisierungsdaten und welche ID jeder Bot hat. Nachdem der Eindringling entdeckt worden war, begann der Patrouillenbot über SSH eine Verbindung zum Eindringlingsbot herzustellen und schaltete sein System aus.
Nachdem bestätigt wurde, dass der Befehl zum Herunterfahren abgeschlossen wurde, wurde auch der Patrouillenbot gestoppt.
Der Algorithmus des Patrouillenroboters kann wie folgt dargestellt werden:

Projektarbeit
Die Arbeit war in einem ähnlichen Format wie Scrum organisiert: Jeden Morgen planten die Schüler Aufgaben für den aktuellen Tag und berichteten abends über die geleistete Arbeit.
Am ersten und letzten Tag bereiteten die Schüler Präsentationen vor, in denen die Aufgabe und ihre Lösung beschrieben wurden. Um den Schülern zu helfen, ihren gewählten Plänen zu folgen, gab es in den Räumen, in denen an den Projekten gearbeitet wurde, ständig Lehrer aus Russland und Amerika, die Fragen beantworteten. Die Kommunikation fand hauptsächlich in englischer Sprache statt.
Ergebnisse und ihre Demonstration
Die Arbeit an Projekten dauerte eine Woche, danach präsentierten die Studenten ihre Ergebnisse. Alle bereiteten Präsentationen vor, in denen sie erzählten, was sie an dieser Schule gelernt hatten, was die wichtigsten Lektionen waren, die sie mochten oder nicht mochten. Danach präsentierte jedes Team sein Projekt. Alle Teams haben die Aufgaben gemeistert.
Das Team, das die Farbkalibrierung implementiert, hat das Projekt schneller als andere abgeschlossen, sodass es gelungen ist, die Dokumentation für sein Programm vorzubereiten. Und das Team, das bereits am letzten Tag vor der Demonstration des Projekts an der Straßengrafik beteiligt war, versuchte, seine Algorithmen zu finalisieren und zu korrigieren.

Fazit
Nach der Schule haben wir die Schüler gebeten, frühere Aktivitäten zu bewerten und Fragen zu beantworten, wie die Schule ihre Erwartungen erfüllt, welche Fähigkeiten sie erworben haben usw. Alle Schüler stellten fest, dass sie gelernt hatten, in einem Team zu arbeiten, Aufgaben zu verteilen und ihre Zeit zu planen.
Die Studenten wurden auch gebeten, den Nutzen und die Komplexität der Kurse zu bewerten. Und hier bildeten sich zwei Gruppen von Bewertungen: Für einige waren die Kurse nicht sehr schwierig, während andere sie als die schwierigsten bewerteten.
Dies bedeutet, dass die Schule die richtige Position eingenommen hat und Anfängern in einem bestimmten Bereich zugänglich bleibt, aber auch Materialien für Wiederholungen und Konsolidierungen für erfahrene Schüler bereitstellt. Es sollte beachtet werden, dass fast jeder einen Programmierkurs (Python) als unkompliziert, aber nützlich bezeichnete. Am schwierigsten war laut Studenten der Kurs "Computerarchitektur".
Als die Schüler nach den Mängeln und Vorteilen der Schule gefragt wurden, antworteten viele, dass ihnen der gewählte Unterrichtsstil gefallen habe, bei dem die Lehrer umgehend und individuell Hilfe leisteten und Fragen beantworteten.
Die Schüler bemerkten auch, dass sie gerne im täglichen Planungsmodus ihrer Aufgaben arbeiteten und unabhängig Termine festlegten. Die Schüler bemerkten den Mangel an Wissen, der für die Arbeit mit dem Bot erforderlich war: Beim Verbinden, Verstehen der Grundlagen und Prinzipien seiner Arbeit als Mängel.
Fast alle Schüler stellten fest, dass die Schule ihre Erwartungen übertroffen hat, und dies zeigt die richtige Richtung der Schulorganisation. Daher sollten bei der Organisation der nächsten Schule allgemeine Bestimmungen eingehalten werden, wobei die von Schülern und Lehrern festgestellten Mängel zu berücksichtigen und nach Möglichkeit zu beseitigen sind und möglicherweise die Liste der Kurse oder der Zeitpunkt ihres Unterrichts geändert werden.
Autoren:
Das Mobile Robot Algorithm Laboratory Team von
JetBrains ResearchPS Unser Unternehmensblog hat einen neuen Namen. Jetzt wird es den Bildungsprojekten von JetBrains gewidmet sein.