Ein Data Scientist an der World Solar Challenge (ein Datenblogbeitrag)

Update 2016-01-28: die englische Version ist hier verfügbar: http://dc.georgruss.ch/2016/01/28/re-post-ser2-wsc2013-english-article/. Solarracing.org scheint offline zu sein.

Wie ich vor einer Weile angekündigt hatte, hier jetzt die deutsche Version des auf solarracing.org erschienenen Artikels über die letztjährige World Solar Challenge. Die Achsenbeschriftungen der Grafiken belasse ich aber auf Englisch, und wo nötig, belasse ich auch Originalteile, wo eine Übersetzung dem Lesefluss hinderlich wäre.

Was macht eigentlich ein Data Scientist (auf Deutsch vermutlich Datenwissenschafter) an einem Solar-Auto-Rennen, mit einem Haufen von Konstrukteuren, Ingenieuren und Fahrern drumherum? a) sich wohl fühlen und b) Daten auswerten: heutzutage liefert die Fahrzeugtelemetrie stapelweise Daten, die ich aber erstmal kraft meiner Kenntnisse und Fähigkeiten in nützliche Informationen umwandeln muss. Damit gehen wir wesentlich weiter als nur mit der klassischen Frage Wie schnell fahren wir?, nämlich über die (Energiehaushalt)Frage Wie weit schaffen wir’s noch mit der Geschwindigkeit? bis zu Wo kommen wir am Ende des Rennens an, unter Einbezug verschiedener Wetterbedingungen innerhalb der nächsten fünf Tage? Im folgenden Artikel gibt’s dazu mehr Details und vielleicht auch Anhaltspunkte darauf, was all die Data Scientists, Informatiker und Daten-Nerds so den ganzen Tag lang treiben.

Was man wissen sollte — Rennvorbereitung
Da ich ja nun schon zum sechsten Mal nach Australien fliegen würde, waren die Vorbereitungen in Bezug auf Angst vor Wildtieren, Sonnenschutz, Wetterbedingungen und Sprachfeinheiten minimal. Mir gefällt’s da, auch wenn mich der lange Flug jedesmal wieder anpiept. Ich glaub, beim nächsten Mal, sollte es dazu kommen, werde ich versuchen, ein bezahltes Upgrade zu bekommen, das macht es einfach viel angenehmer. Die Rennstrecke für die World Solar Challenge (WSC) habe ich mir noch online angeschaut, aber besonders spannend war sie ja nun nicht, da sie hauptsächlich den Stuart Highway von Norden nach Süden entlang führte.

Was vielleicht aus Sicht einer Energiebilanz wichtig sein könnte, war das Höhenprofil der Strecke. Das sagte mir aber eigentlich nur, dass wir bis etwa zur Hälfte der Strecke tendenziell etwas mehr Energie brauchen würden, während es danach weniger sein würde. Das Fahrzeug wiegt nun mal nur grob 250kg mit Fahrer und da macht die potentielle Energie nicht viel aus. Ausserdem würden wir ja auch wieder fast auf derselben Höhe ankommen. Natürlich würde die potentielle Energie unter idealen und kontrollierten Bedingungen eine Rolle spielen, aber mit den natürlichen Schwankungen von Sonne und insbesondere Wind würde sie nicht ins Kontor schlagen. Im Roadbook der Organisatoren der WSC wird vor einer starken Steigung in der ersten Hälfte der Strecke gewarnt, aber da ich da sowieso noch mit Programmieren und Skripten beschäftigt war, habe ich davon gar nicht viel mitbekommen. Einige andere Teams hatten da aber so ihre Probleme, weil sie wohl ihre Fahrzeuge auf Geradeaus-Effizienz getrimmt hatten und da an der Steigung das Drehmoment fehlte. Als dann der Schwung weg war, mussten sie schieben.

Elevation Profile of World Solar Challenge
Höhenprofil der World Solar Challenge

Wenn ich an die Photovoltaik (PV) denke, gibt es natürlich noch deutlich mehr mögliche theoretische Vorbereitungen. Da wir eine relativ grosse Distanz von Norden nach Süden fahren würden, ändert sich das zeitliche Sonneneinstrahlungsprofil. Einerseits fahren wir im Oktober auf der Südhalbkugel weg vom Äquator, andererseits fahren wir auch ein Stück Richtung Osten. Anfangs dachte ich noch, dass die Zeitverschiebung (Sommerzeit) zwischen den Northern Territories und South Australia verwirrend sein könnte, aber da wir sowieso jeden Tag von Sonnenaufgang bis Sonnenuntergang wach waren, hat das keine Rolle gespielt und wurde ausserdem von den Organisatoren durch die Einführung einer Event Time gelöst, die überall auf der Strecke dieselbe war. Trotzdem, wie würde die theoretische Sonneneinstrahlung wohl aussehen?

Dafür gibt’s zum Glück Formeln und Berechnungen. Es braucht ein paar Parameter wie die Effizienz des PV-Konverters, die Designleistung (Watt Peak Wp) der Solarpaneele und den Tag im Sonnenjahr. Wenn man dazu noch die Streckenposition nimmt (also geographische Breite und Länge), bekommt man ein paar schicke Kurven, die in der folgenden Grafik dargestellt sind. Natürlich sind die theoretischen Werte wegen den Umgebungsbedingungen nicht perfekt so eingetreten, aber vom Prinzip her sahen die Kurven so aus. Was nicht gezeigt ist, sind die Zwangs-Kontrollstops während dem Rennen: sobald das Fahrzeug steht (eine halbe Stunde lang), kann man die Paneele perfekt zur Sonne ausrichten und dann das Maximum an Sonneneinstrahlung für diesen Zeitraum hereinholen, was natürlich wiederum auch über den theoretischen Kurven liegt — umso stärker darüber, je weiter man von der Mittagszeit weg ist. Eine echte Messkurve eines Renntags wird später noch gezeigt. Die tägliche Fahrzeit war von 08-17 Uhr beschränkt, vorher und nachher kann man ebenfalls die Panels perfekt ausrichten.

Daily Irradiation (ideally and theoretically)
Tägliche Sonneneinstrahlung (ideal/theoretisch)

Eine einfache Leistung-vs-Tageszeit-Grafik bringt aber für die Rennstrategie erstmal nicht viel. Schliesslich wollen wir am Ende die Energiebilanz wissen. Also integrieren wir die obigen Kurven jeweils über die Tageszeit und kommen zur Energiegrafik. Je weiter südlich wir fahren, desto weniger Energie wird auch eingesammelt werden können. In Adelaide waren es noch theoretisch maximal 7500 Wh, während es in Darwin wesentlich mehr war. (Schade, dass mir für die beiden Wortspiele im englischen Absatz dieses Textes keine Entsprechung eingefallen ist.)

Collected solar energy per day per location (theoretically)
Theoretisch einsammelbare Solarenergie pro Tag, abhängig vom Ort

Es gibt was auszuprobieren und zu messen
Bisher ging’s fast nur um die eine Seite der Energiebilanz, nämlich die Energieeinnahmen. Wir wissen jetzt, dass wir etwa 8kWh pro Tag plus Extra-Energie an den Kontrollstops einnehmen würden. Aber wieviel Energie schluckt eigentlich das Fahrzeug?

Während unserer Testfahrten auf der Cox Peninsula gab es jede Menge Live-Messwerte, die ich dann in aller Ruhe offline, d.h. ohne Zeitdruck, auswerten konnte. Da das Auto eine Neukonstruktion war und wir keinen Windkanal oder Rollenprüfstände zur Verfügung hatten, hatten wir auch keine Ahnung, wie es mit dem Energieverbrauch während der Fahrt aussehen würde. Was eigentlich am interessantesten ist, ist der spezifische Verbrauch, also in amerikanischer Denkweise die mileage (Meilen pro Energieeinheit) und in kontinentaleuropäischer Denkweise der Verbrauch in Wattstunden pro Kilometer (Wh/km). Hierbei hatte ich nur die paar Testfahrten an zwei Tagen zur Verfügung, um mir ein halbwegs passendes Bild zu machen, habe über längere Fahrzeiten die Motorleistung beobachtet und seitenweise Werte auf Papier notiert. Daraus entstand dann die folgende Grafik, die zeigt, dass in einem recht breiten Band von Geschwindigkeiten der spezifische Verbrauch etwa gleich bleibt — d.h. aus Strategiesicht war es dann sehr praktisch, nicht eine einzige energetisch optimale Geschwindigkeit zu haben, sondern wählen zu können, weil der Verbrauch zwischen 60 und 80km/h bei etwa 15-16Wh/km liegen würde. Gleich noch ein Hinweis: das ist nicht die Grafik Motorleistung vs. Geschwindigkeit — in letzterer Grafik ist durchaus ein monotoner Anstieg zu sehen, nur eben nicht überall mit demselben Anstieg. (Die Grafik wirft immer wieder Fragen auf, drum…) Beim Rennen hat sich dann der Energieverbrauch sowieso nach dem Wind gerichtet: manchmal mit Rückenwind nur 10Wh/km und Problemen, über Mittag die eingenommene Energie überhaupt loszuwerden, anderntags dann mit Gegenwind etwa 20Wh/km, was folgerichtig auch zu sehr schnell sich entladender Batterie führte.

Specific Energy Consumption
Spezifischer Energieverbrauch

Sonnenaufgang bis Sonnenuntergang — während dem Rennen
Die Telemetrie hatte ich schon erwähnt, daher sollte halbwegs klar sein, wie der Datentransfer läuft: der Fahrzeugcontroller sendet periodisch (alle paar Sekunden aus Energiespargründen) ein paar Datenblöcke (Temperaturen, Spannungen, Ströme, Distanzen, etc.). Dieser Datenblock wird an die bisher empfangenen Daten angehängt und kann dann mit ausgewertet werden. Die notwendige Analyse dazu habe ich natürlich selbst in R geschrieben, die Berechnungen werden ebenfalls periodisch wiederholt (ein- oder zweimal die Minute), damit ich aktuelle Analysegrafiken habe. Das fasst auch schon ziemlich gut meine Arbeit des ersten Renntages zusammen: sechs Stunden Programmieren von R-Skripten, damit ich alle notwendigen Auswertungen für strategische Entscheidungen hatte. An den anderen Tagen hatte ich dann nicht mehr sehr viel an dieser Front zu tun, aber es gab ja strategische Überlegungen und Schlafentzug, denen ich mich widmen konnte. Da das Wetter es mir nicht besonders schwer machte (ausser am spannenden fünften Tag, s.u.), waren die Überlegungen auch nicht sehr schwierig.

Aus den theoretischen Überlegungen wusste ich ja schon, wie die Energiekurven über den Tag aussehen würden, also wieviel Energie unter normalen Bedingungen reinkommen würde. Trotzdem hatte ich noch keine praktischen Erfahrungen. Ausserhalb der täglichen Fahrzeiten von 08-17 Uhr kann man die Panels perfekt zur Sonne ausrichten, desgleichen während der Kontrollstops, ausserdem kann man auch noch Wasser zum Kühlen auf die Panels sprühen. Ein recht nah an der theoretischen Kurve liegender Tag sah dann in Bezug auf die Sonneneinstrahlung wie folgt aus: von Sonnenaufgang bis 08 Uhr gibt’s im Maximum schon etwa 900 Watt (etwa 80-85% von dem, was unter maximaler Einstrahlung reinkommt); dann werden die Panels in Fahrposition geklappt und es wird gefahren, bis etwa zum Kontrollstop von 10:00-10:30, wo es dank perfekter Ausrichtung und Kühlung der Panels wieder mehr Energie gibt. Danach folgt wieder eine Fahretappe bis zum Stop von etwa 13:10-13:40, wieder von einer Etappe bis 17:00 gefolgt. Gegen 17 Uhr steigt dann die Leistung wieder von 200W im Fahrbetrieb bis auf 900W, einzig und allein durch die perfekte Ausrichtung der Panels nach dem Stop. Das erklärt auch, warum ich auch um 17 Uhr noch ganz bequem einen Sonnenbrand kriegen kann. Das Leistungsplus durch Kühlung betrug etwa 50-100 Watt, also etwa 5% Mehrleistung.

Photovoltaics array power output during the third race day
PV-Leistung im Tagesverlauf des dritten Renntages

Allein auf Sonneneinstrahlung kann man noch keine strategischen Entscheidungen treffen, aber so langsam kommen wir dahin. Wenn wir die Energieflüsse im Energiestern Motor-Batterie-Solarzellen über die Zeit integrieren, ergibt sich ein recht gutes Bild über den Batteriezustand. Und genau das wollen wir ja auch. Sobald der Ladestand der Batterie klar ist, ergibt sich der Rest über relativ simple Berechnungen unter Beachtung einiger Rahmenbedingungen. Erstens: die Batterie muss am Ende des Renntags leer genug sein, dass sie die Energie, die abends nach dem Rennen und morgens vor dem Rennen anfällt, problemlos aufnehmen kann. Um das mal auf die passende Grössenordnung zu bringen: die Batterie hat eine Kapazität von etwa 5’000 Wh und ein typischer Abend nach dem Rennen liefert etwa 1’000 Wh, während der nächste Morgen weitere 1’000 bis 1’200 Wh liefert. Damit muss die Batterie am Ende des Renntags etwa halb leer sein, wenn wir keine Energie verschwenden wollen. Klar, wirklich verschwendenwir die Energie ja nicht, aber da kommt dann der folgende zweite wesentliche Gedanke ins Spiel. Eine spezifische Energieaufnahme von 15Wh/km über eine Distanz von 3’000km summiert sich zu etwa 45kWh nötiger Gesamtenergie. Da die Batterie nur 5kWh hat, muss der Rest der Energie auf der Strecke aufgesammelt werden, und solange die Energie nicht aufgesammelt wurde, können wir auch nicht bis ins Ziel fahren. Wenn wir also Energie verschwenden, weil die Batterie sie nicht aufnehmen kann, fallen wir indirekt im Rennen zurück oder verlieren Zeit (je nach Betrachtungsweise). Diese Energieverschwendung passierte zweimal in leichter Form am Morgen des dritten und vierten Tages und es war mir schon recht peinlich, den 100%-Batterieladestand zu sehen, der wegen zu konservativer Annahmen meinerseits erreicht wurde. Glücklicherweise hätte es wohl am Ende des Rennens nicht viel geändert.

Battery capacity during the race
Batterieladestand während des gesamten Rennens

Wie die obige Grafik zeigt, ist die Batterie nur ein sehr kleiner Energiepuffer und entleert sich sehr schnell, wenn keine Solarenergie aufgenommen wird, so z.B. am Nachmittag des fünften Tages. Kleine Spitzen nach oben zwischendurch kennzeichnen typischerweise die Kontrollstops.

Der verflixte fünfte Renntag
Die ersten vier Renntage waren eigentlich recht monoton, es ging einfach nur dem Stuart Highway entlang Richtung Süden, Sonnenenergie wurde eingesammelt und auf die Strasse gebracht. Gleiches gilt für die erste Hälfte des fünften Tages, aber an dessen Nachmittag wurde es doch noch spannend, mit einsetzendem Regen und heftigen Winden. Keine Sonne bedeutete null Energieaufnahme, und das verdeutlicht noch mal, dass die Batterie wirklich nur ein kleiner Puffer ist, der sich unter solchen Bedingungen sehr schnell leert. Mit den Grafiken und den ankommenden Daten nahm ich also händische Berechnungen vor, während ich die ganze Zeit auch noch die Batteriekapazität und die anderen Statistiken beobachtete. Durch das Gewackel ist meine Handschrift ziemlich hinüber, aber der Inhalt ist noch erkennbar.

In the end, it's pen-and-paper analytics :)
Es geht doch nichts über handschriftliche Notizen und Berechnungen 🙂

Während dem Rennen sind die wohl wichtigsten Informationen die Spannungen, Energieaufnahme und Energieausgabe und daraus resultierend der Verbrauch und einige Temperaturen. Daher sollte mir meine selbstprogrammierte Auswertung auch diese wesentlichen Werte auf einen Blick zeigen, am besten in einem 30 bis 45 Minuten grossen Zeitfenster, um auch noch Glättungen drüberlegen und Trends sehen zu können. Die folgende Grafik zeigt ein Beispiel eines Renntages — so ungefähr sah mein Arbeitsalltag während dem Rennen die ganze Zeit aus.

Statistics for the preceding 30 minutes (regenerated periodically to give a "live" feeling)
Zusammenfassung der vorangegangenen 30 Minuten, periodisch regeneriert, um eine Art Live-Statistik zu haben

Zurück zum fünften Renntag: das wie üblich Wichtigste war die Beobachtung des Batterieladestands. Da wir noch nie eine vollständige Entladung durchgeführt hatten und diese auch nicht empfohlen wird, weil dauerhafte Schäden auftreten können, war nicht ganz klar, bis wohin wir die Batterie entladen können würden. Nach dem Kontrollstop waren wir von schlechtem Wetter umgeben, ausserdem noch von zunehmendem Verkehr, da wir uns Adelaide näherten. Man sieht ganz gut, wie steil die Ladezustandskurve abfällt, oder?

The battery discharging rapidly during the second half of the fifth race day -- bad weather conditions.
Die Batterie entlädt sich sehr schnell in der zweiten Hälfte des fünften Renntags — Schlechtwetter.

Da ich mit der theoretischen Batteriekapazität kaum eine Chance auf genaue Berechnungen hatte, entschlossen wir uns, zur Sicherheit die Batteriespannung genauer zu beobachten. Aus meinen Rennvorbereitungen kannte ich die Entladekurven aus den Datenblättern des Herstellers ganz gut und wusste, dass man besser mit dem Entladen aufhören, also anhalten sollte, wenn die Spannungskurve plötzlich steiler abzufallen beginnt. Also war ich weiterhin dabei, auf Papier Berechnungen anzustellen, während ich die Spannungskurve beobachtete. Tatsächlich, etwa um 16:42 Uhr fing die Batteriespannung mit seltsamen Ausschlägen nach unten an und ausserdem war der Trend auch leicht steiler abfallend. An diesem Punkt haben wir uns dann bald entschlossen, das Auto zu stoppen und den Renntag zu beenden. Das vor uns liegende Team hatten wir sowieso überholt, da deren Batterie schon eine Weile vor unserer Batterie tot war. Wir waren weit genug vor ihnen, dass wir am nächsten Tag bequem würden losfahren und unsere fünfte Position ins Ziel würden bringen können nach dem abendlichen und morgendlichen leichten Aufladen.

Battery voltage, fifth race day, starting to spike at 1642h.
Batteriespannung am fünften Renntag, mit Spikes nach unten ab etwa 16:42h

Zusammenfassende Bemerkungen
Für mich war das jede Menge Datenanalyse-Spass, unter Echtzeitbedingungen mit Live-Daten, wo man nicht einfach nach einer normalen Tagschicht von 09-17 Uhr nach Hause gehen kann. Ich denke, die Ergebnisse bzw. die obigen Ausschnitte daraus sprechen für sich und ich kann es jedem empfehlen, der so eine Herausforderung sucht. Eine Warnung seien angebracht: nach dem Rennen habe ich recht viel roten Sand aus meinem Ultrabook entfernt. Ausserdem demonstriert diese Analyse klar den Nutzen freier Software, hier (Gentoo) Linux (das ich seit meinem Australienaufenthalt in Melbourne 2004 nutze), R (seit 2009 in exzessiver Benutzung) und insbesondere ggplot2 (seit 2012) für die Grafiken. Die Programmierumgebung war vim (auch seit 2004, emacs hatte keine Chance bei mir) in einem tmux-Terminal. Natürlich habe ich weitere strategische Berechnungen angestellt, aber ich muss ja nicht alles verraten. Die meisten Sachen sind auch ziemlich naheliegend, z.B. die Frage, wann ein Kontrollstop optimalerweise am Tag plaziert sein sollte oder ob es vielleicht sogar nützlich sein kann, am Ende des Renntags eher anzuhalten und noch mehr Energie mitzunehmen. Ich kenne die Antworten natürlich 🙂

Ich wäre 2015 natürlich gern wieder dabei — Sponsoren sind immer willkommen.

Kontakt:
Georg Russ
Konstanzerstrasse 4
9500 Wil SG
Schweiz
ser2@georgruss.ch
Im SER2 team

2 thoughts on “Ein Data Scientist an der World Solar Challenge (ein Datenblogbeitrag)”

Leave a Reply