Automatische Planung von Solaranlagen


Durch kreative Lösungen konnten wir die Planung von Solaranlagen automatisieren.

Input

Die Adresse und ein Foto des Hausdachs eines Kunden

Output

Dachmaße, Dachwinkel, südliche Ausrichtung, Anzahl der passenden Solarpanele, Visualisierung

Ziel

Den Planungsprozess beschleunigen


Einführung


Unser Auftraggeber ist eine Firma aus dem Solarbereich, welche die Planung, Beratung und Installation von Solaranlagen für Privathaushalte anbietet. Ziel dieses Projekts ist es, den Planungsprozess von Solaranlagen zu automatisieren. Konkret geht es dabei um die Erstellung eines individuellen Angebots für Kunden, damit diese Kosten und Nutzen der Investition abschätzen können und einen ästhetischen Eindruck des Endergebnisses erhalten.


Startpunkt


Unser Auftraggeber, Enpal, bietet die Planung, Beratung und Installation von Solaranlagen für Privathaushalte an. Ziel dieses Projekts ist es, den Planungsprozess von Solaranlagen zu automatisieren. Konkret geht es dabei um die Erstellung eines individuellen Angebots für Kunden, damit diese Kosten und Nutzen der Investition abschätzen können und einen ästhetischen Eindruck des Endergebnisses erhalten.

Der alte Prozess ist sehr manuell. Ein Mitarbeiter muss...

  1. Ein Kundenfoto des Dachs nutzen um den Dachumriss und jedes Hindernis einzuzeichnen

  2. Die Anzahl der Dachschindeln auf Google Maps zählen, um die Abmessungen des Dachs zu schätzen

  3. Eine Desktopapplikation verwenden, um den Dachwinkel und die resultierende Fläche zu schätzen

  4. Eine Visualisierung der Solarpanels erstellen

Der ganze Prozess dauert im Durchschnitt 120 Minuten pro Planung, ist fehleranfällig (unklare Berechnungsmethoden, häufige manuelle Schnittstellen) und die Visualisierung der Solarpanele auf dem Hausdach entspricht nicht aktuellen Standards.


Herausforderungen


Das Ziel des Projekts war klar definiert: Der Planungsprozess sollte deutlich beschleunigt werden.

Doch im Detail gab es viele Herausforderungen, wie z.B.:

  • Sollten wir eine Lösung für alle Dachformen anstreben? Welche Datenquellen sollten herangezogen werden?

  • Welche Mensch-Maschine-Schnittstellen sind optimal im Spannungsfeld Planungsqualität vs. Zeitersparnis vs. Benutzerfreundlichkeit?

  • Wie skaliert die Lösung für mehrere Anwender? Läuft das System in der Cloud oder auf dem Rechner des Anwenders?


Lösungen


Wir haben eine Software entwickelt, die den vollständigen Prozess bis zur fertigen Solarpanel-Visualisierung automatisiert. Die Umsetzung erfolgte in einem agilen Projektrahmen (MVP nach 6 Monaten, kontinuierliches Anwender-Feedback) und wurde gemeinsam mit der IT-Abteilung des Kunden als Web-Applikation umgesetzt, was diverse Vorteile mit sich bringt:

  • schneller Roll-out von Verbesserungen

  • unbegrenztes Hinzufügen von Nutzern

  • Unabhängigkeit vom Betriebssystem, etc.

Aktuell arbeiten ca. 150 Mitarbeiter des Auftraggebers mit unserer Softwarelösung. Die Nutzung der alten Solarsoftware konnte mittlerweile eingestellt werden.

Die Planungszeit wurde von vorher 120 Minuten auf nun ca. 15 Minuten reduziert.

Im Video können Sie einen Eindruck des Workflows gewinnen.


Technischer Hintergrund


Hintergrund: Der Alte Prozess

Bisher wurden die Solaranlagen mit Hilfe einer Desktop-Applikation geplant, welche nur für Windows erhältlich ist und eine veraltete GUI sowie hohe Wartungs- und Lizenzkosten mit sich bringt. Ferner fehlen Schnittstellen (sowohl zum automatischen Einlesen von Kundeninformation als auch zur Weitergabe neuer Informationen) und die Usability ist nicht für den Anwendungsfall optimiert (viele unnötige Klicks/Schritte).

Für Fälle, in denen die Dachwinkel und Dachmaße des Interessenten unbekannt sind, verfügt die Applikation über eine approximative Triangulationsmethode, welche den Dachwinkel mit Hilfe des auf einem Foto eingezeichneten Dachumfangs und der Eingabe einer Referenzlänge (z.B. Dachbreite, Dachlänge) schätzt. Oftmals stellt sich dieses Verfahren jedoch als fehlerhaft heraus. Da keine transparente Beschreibung der Berechnung existiert und es sich um eine proprietäre Applikation handelt, kann dieser Fehler nicht hinreichend analysiert und die Methode nicht verbessert werden.

Der alte Prozess im Detail

Um ein Angebot erstellen zu können, benötigt der Auftraggeber zunächst diverse Informationen des Kunden, wie z.B. die Länge und Breite des Daches, Dachausrichtung etc. Meist sind Teile dieser Daten dem Hausbesitzer unbekannt und ein Mitarbeiter muss die Informationen anderweitig herausfinden.

  1. Zunächst legt der Mitarbeiter ein neues Projekt in einer Desktop-Solarsoftware an und bittet den Hausbesitzer um ein Foto des Daches.

  2. Der Mitarbeiter überträgt die Stammdaten sowie das Dachfoto des Kunden in die Solarsoftware.

  3. Nun müssen der Dachumfang sowie die Umrisse jedes Hindernisses auf dem Dach händisch eingezeichnet werden. Dachgauben werden gesondert behandelt, da diese auf dem Foto meist mehr Dachfläche einnehmen als in der Realität.

  4. Nun fügt der Mitarbeiter eine Referenzlänge hinzu (z.B. die Länge oder Breite des Daches). Dafür öffnet er den Browser und gibt z.B. bei Google Maps die Kundenadresse ein. Ist die Qualität des Satellitenbildes gut genug, zählt der Mitarbeiter die Ziegel des Daches und bestimmt so grob die Referenzlänge. Sonst muss er auf einen anderen Service ausweichen.

  5. Nach Eingabe der Referenzlänge schätzt das Programm den Dachwinkel und die resultierende Dachfläche. Hierbei kommt es häufig zu Ungenauigkeiten. Da die zugrundeliegende Berechnungsmethode nicht transparent offen liegt, ist eine nachträgliche Verbesserung kaum möglich.

  6. Nach einigen weiteren Schritte speichert der Mitarbeiter die gewünschte Solarpanel-Visualisierung und überträgt diese (inkl. weiterer angebotsrelevanter Daten) in die Software, sodass ein endgültiges Angebot erstellt werden kann.

Unsere Lösung

Zur Verfügung stehender Input: Adresse sowie Dachfoto des Kunden.

Gewünschter Output: Dachmaße, Dachwinkel, südliche Ausrichtung, Anzahl der passenden Solarpanele, Solarpanel-Visualisierung auf dem Dachfoto des Kunden.

Die größten Herausforderungen, die wir vor Projektbeginn identifizieren konnten, waren die Folgenden:

  1. Erkennen von kleinen Hindernissen (Kamin, Dachfenster, Antenne etc.)

  2. Unterschiedliche Inputqualität (z.B. Verschattung)

  3. Schätzen von (3-dimensionalen) Dachmaßen (Länge, Breite, Dachwinkel)

  4. Umgang mit Sonder-Dachformen

  5. Unterteilen in Dachhälften

  6. Schnittstellen (Mensch-Maschine, Maschine-Maschine)

Eingesetzte Technologien

Backend: Python, Tensorflow, PyTorch, SciPy, NumPy, scikit-learn, scikit-image, OpenCV, Flask

Frontend: JavaScript, Angular5, Three.js, Fabric.js, Sass

Infrastruktur: GCloud, Docker, Git

Wir präsentieren im Folgenden Lösungen einiger ausgesuchter Teilprobleme.

1. Segmentierung des Daches

Sowohl auf dem Satelliten- als auch auf dem Kundenfoto segmentieren wir das Dach und die auf diesem befindlichen Hindernisse mittels neuronaler Netze. Die Architektur dieser Netze orientieren sich vor allen Dingen an U-Nets, d.h. Convolutional Neural Networks, welche für derartige Problem derzeit die beste Performance liefern.

Für das Training der Netze haben wir selbst zahlreiche Labels generiert, d.h. Umrisse von Dächern und Hindernissen markiert. Hierbei war es wichtig, das Labelingschema an das Problem anzupassen, um etwa auch kleine Hindernisse und semantische Strukturen lernen und schließlich erkennen zu können.

Das Training hat ein umfangreiches Finetuning erfordert (z.B. Identifikation der besten Lossfunktion, Datenaugmentierung, Hyperparameteroptimierung etc.) - für Details sei auf unseren Blog verwiesen.

Bei der Segmentierung der Kundenfotos haben wir mittels Transfer-Learning durch ein auf ImageNet vortrainiertes neuronales Netz deutliche Verbesserungen erreichen können. Die zwei unteren Bilder zeigen exemplarisch die beeindruckenden Fähigkeiten des von uns trainierten neuronalen Netzes semantische Strukturen zu erkennen.

Das Netz schätzt die Grundfläche der Dachgaube automatisch korrekt ein.
Das Netz erkennt, dass sowohl das Dach als auch eine kleine Ecke des Dachfensters hinter dem Sonnenschirm "versteckt" sind.

2. Postprocessing

Die Segmentierung der Dächer liefert zunächst eine pixelweise Klassifikation (d.h. jeder Pixel wird einer Klasse = {Dach, Nicht-Dach, Hinderniss, etc.} zugewiesen). Als nächster Schritt ist das Detektieren von geometrischen Formen sowie das Erkennen von semantischen Strukturen notwendig. Insbesondere geht es etwa um das Erkennen der Dachecken, das Trennen einzelner Hausteile und die Identifikation der jeweiligen Südseite.

Diese Teilaufgaben entpuppten sich u.a. aufgrund des nicht immer perfekten Segmentierungsoutputs als schwieriger als zunächst angenommen. Durch eine kreative Kombination von evolutionären Algorithmen und klassischen Computer-Vision-Methoden können wir dennoch auch hier eine sehr gute Qualität erreichen und etwa weniger gute Segmentierungen teilweise korrigieren.

Red dots: Not quite correctly recognized perimeter of the roof area, blue lines: Estimated roof perimeter after postprocessing.

3. Inferenz der Dachmaße

Fotos sind 2-dimensionale Projektionen und somit nicht ohne Weiteres ausreichend für die Schätzung der tatsächlichen Dachfläche.

Gelöst haben wir dieses Problem durch die Kombination von Satelliten- und Kundenfoto. Ersteres liefert Referenzmaße für horizontale Distanzen und auf Zweiterem können wir mittels projektiver Geometrie und selbst entwickelten Formeln die Winkel für rechtwinklige Dachflächen berechnen.

Daraus lässt sich schließlich mit einfachen trigonometrischen Formeln Länge und Breite und somit die Fläche des Daches bestimmen. Die durch die Formeln gewonnene Transformationsmatrix ermöglicht nun ferner eine Visualisierung der Panele auf dem Kundenfoto.

Der maschinelle Lernalgorithmus berechnet automatisch die verschiedenen Dinge, um die Anordnung von Solarmodulen zu planen

Genauere Informationen stellen wir Ihnen gerne in einem persönlichen Gespräch vor.

Ähnliche Projekte