Keine Zeit zu erklären, Autopilot machen

Bild



Hallo Kameraden!



Am Wochenende fand das Hackasborkaton statt - ein Rennen mit selbstfahrenden Automodellen auf der Basis von Eselsauto- Kits mit Unterstützung von X5 , FLESS und der Community der selbstfahrenden Enthusiasten .



Die Aufgabe war wie folgt: Zuerst musste ein Auto aus Ersatzteilen zusammengebaut und dann trainiert werden, um die Strecke zu passieren. Der Sieger wurde durch die schnellsten 3 Runden ermittelt. Für das Schlagen eines Kegels - Disqualifikation.



Eine solche Aufgabe für maschinelles Lernen ist zwar nicht neu, aber es können Schwierigkeiten auf sich warten lassen: von der Unfähigkeit, das WLAN normal funktionieren zu lassen, bis zur Unwilligkeit des trainierten Modells, die Hardware entlang der Strecke zu steuern. Und das alles in einem engen Zeitrahmen!



Als wir zu diesem Wettbewerb gingen, war sofort klar, dass es sehr lustig und sehr schwierig sein würde, da wir nur 5 Stunden Zeit hatten, einschließlich einer Mittagspause, um eine Schreibmaschine zusammenzubauen, einen Datensatz aufzuzeichnen und ein Modell zu trainieren.



Eselmaschine



Donkeycar besteht aus einem Körper, an dem eine Kamera mit einem Weitwinkelobjektiv (170 Grad) angebracht ist, einem Raspberry Pi3 +, einer Servosteuerplatine, Software und im Grunde allem. Wie sich später herausstellte, kann die Montage selbst eines so einfachen Geräts in einer begrenzten Zeit und zufälliger Gerätestörungen lange dauern, und Sie haben keine Zeit.



Bild



Versammlung



Der Wettbewerb begann mit der Tatsache, dass zunächst die Maschine zerlegt und wieder zusammengebaut werden musste. Wir müssen den Organisatoren Tribut zollen, es wurde uns nicht angeboten, ein unverständliches Bündel von Teilen von Grund auf neu zu sammeln, sondern wir erhielten die Gelegenheit, das Gerät anhand eines vorgefertigten Beispiels zu verstehen. Wir haben viel Zeit gespart, indem wir alle Verbindungen fotografiert und die Maschine in 10 Minuten wieder in Betrieb genommen haben.



Bild



Bild



Bild



Bild



Anschließen an eine Schreibmaschine und Überprüfen der Arbeit



Nachdem wir das Auto zusammengebaut hatten, gab es eine Pause, weil wir das Auto mit dem Wi-Fi verbinden und mit der Kalibrierung des Chassis beginnen mussten. Wie sich herausstellte, wird die zukünftige Arbeit mit Wi-Fi eines der größten Probleme bei der Arbeit mit Raspberry sein. Anscheinend mussten Sie Ihr Wi-Fi mit einer Antenne nehmen.



Wir haben uns entschlossen, uns nicht zu langweilen und uns über ein Ethernet-Kabel zu verbinden, das zusammen mit dem Rest des Mülls immer in meinem Rucksack liegt. Aus irgendeinem Grund hatte die Schreibmaschine entweder keinen DHCP-Server oder sie funktionierte nicht oder sie hätte überhaupt nicht vorhanden sein sollen, und wir stellten fest, dass Wireshark die Quell-IP leicht per Broadcast erhalten würde, wenn das Kabel an die Himbeere angeschlossen wurde. Und so geschah es, aber nachdem wir uns am Computer angemeldet hatten, verbrachten wir ziemlich viel Zeit damit, das WLAN zum Laufen zu bringen. Am Ende wurden alle Teilnehmer aus einer speziellen Datei geworfen, in der sich die Konfiguration befand.



Kalibrieren des Gehäuses und Anschließen des Joysticks



Bild



Wir haben ungefähr 35 Minuten gebraucht, um den Joystick anzuschließen, während wir die Docks gelesen und das Bluetooth gescannt haben, um die Schreibmaschine und den Joystick zu koppeln. Es stellte sich heraus, dass das Problem darin bestand, dass sich zu viele Joysticks im Raum befanden und diese zufällig mit Autos anderer Rennfahrer gepaart wurden - es hat sehr viel Spaß gemacht, festzustellen, dass Sie das Fahrgestell eines zufälligen Autos kontrollierten =)



Der nächste Schritt bestand darin, Lenkung und Gas, dh PWM, zu kalibrieren drehen und Gas geben.

Dies war einer der wichtigsten Parameter. Es war erforderlich, dass der Wert mit der Geschwindigkeit des Autos korrelierte und das Modell mit der Steuerung fertig wurde.



Bild



Intuitiv haben wir versucht, die Beschleunigung und Kurve so einzustellen, dass das Auto schnell genug fährt, aber gleichzeitig gesteuert werden kann.





Unter Berücksichtigung der Leistung der Teams blieben nur noch etwa 2 Stunden bis zum Ende der Veranstaltung, und es war dringend erforderlich, zu beschleunigen. Wir liefen, um die Daten mit der Idee aufzuschreiben, dass es notwendig war, die unterschiedlichsten Bedingungen zu schaffen, unter denen die Maschine bleiben würde. Wir gingen davon aus, dass zu Beginn des Wettbewerbs die Lichter höchstwahrscheinlich neu angeordnet werden, Fremdkörper in der Nähe der Strecke erscheinen usw.



Wir haben ungefähr 18.000 Bilder zusammen mit Gas- und Drehwerten aufgenommen und versucht, viele Leute in den Rahmen zu bringen. Wir sind um die Strecke gelaufen, sind darüber gesprungen, haben Stühle aufgestellt, Brücken gebaut, die Lichter zufällig platziert und sind in die entgegengesetzte Richtung gegangen.



Wir haben auch Albumentationen als Ergänzungen hinzugefügt und versucht, so viele wie möglich hinzuzufügen !



In dieser GabelIch habe böswillig schwere Augmentationen mit einem Umschlag von pil und umgekehrt bösartig codiert - es war auch erforderlich, die Umgebung für die Schreibmaschine neu zu erstellen, was sich auf die Zeit auswirkte.



Als das erste Modell trainiert wurde, hatten wir bereits den Code für das zweite, die Jungs brachten neue Daten von einer benachbarten Strecke und rannten los, um zu überprüfen, wie das erste Modell funktionieren würde.



Das erste Modell fuhr 3 Runden mit Fehlern und startete 4 Runden. Danach haben wir weitere 20 Minuten verloren, weil wir vergessen haben, eine SD-Karte in das Gerät einzulegen.



Das endgültige Modell wurde auf 19.000 Bildern mit benutzerdefinierter Erweiterung und Datenbereinigung trainiert.



Bild



So sieht das Netzwerk selbst aus:



Bild



Es ist zu sehen, dass es ein Feld für eine Umkehrung gibt. Sie können zumindest zunächst eine Batchnorm ausschneiden, aber wir haben beschlossen, sie mindestens zu berühren, damit es nicht zu einem Mist kommt.



Ferner die Diagramme des ersten und zweiten Modells mit dem besten MSE-Verlust von 0,093 bzw. 0,086.



Bild



Bild



Die zweite Grafik scheint besser auszusehen!



Aus dem Video geht hervor, dass wir die Lenkung schlecht kalibriert und den Datensatz schlecht gereinigt haben, aber das hat uns gereicht.





Video von GoPro, das wir nach dem Hauptstart aufgenommen haben:





Das endgültige



Wir waren die ersten, die das Rennen starteten und auf die Strecke gingen, aber dort erwartete uns ein Misserfolg, das WLAN fiel ständig ab, wir waren fast von der Konkurrenz entfernt. Und jetzt, als der Start fast gegeben war, ging die Maschine plötzlich zurück. Anscheinend habe ich beim Kalibrieren des Gashebels etwas verwirrt.



Aber nichts, zum Lachen des gesamten Publikums, ging sie vorwärts und hielt würdige Kreise 8 oder 9 auf der Strecke, drehte sich stark, brachte uns aber trotzdem einen wohlverdienten Sieg!





Ich versuche nicht in den Rahmen zu schauen.



Bild



Bild



Danksagung



Dank der ods.ai Community ist es unmöglich, sich ohne sie zu entwickeln! Vielen Dank an meine Teamkollegen: Valea Biryukova, Egor Urvanov (Urvanov), Roma Derbanosov (Yandex). Wir freuen uns auf eine Video-Rezension von Viktor Rogulenko (FLESS).



PS: Besonderer Dank geht an Valya Biryukova, die am Tag vor dem Wettbewerb leider eine Temperatur von 38,5 ° C hatte, aber bei der Verknüpfung sehr geholfen hat .



Aurorai, llc



All Articles