Wissen kompakt: Einblicke in den Talk „Nebenläufigkeit in Python“

Interner Wissensaustausch ist ein wichtiger Faktor bei ATR Software. Deshalb haben wir die Vortragsreihe Wissen kompakt ins Leben gerufen. Das ist eine Vortragsreihe, bei der jedes Teammitglied unkompliziert zum Vortragenden werden kann und hier eine Bühne bekommt, um das Fachwissen mit anderen zu teilen. Jedem Mitarbeitenden steht es dabei frei, bei Interesse an den Vorträgen teilzunehmen. Somit wird ein zwangloser und unkomplizierter Wissensaustausch ermöglicht.

Ein Beispiel gefällig? Der folgende Artikel ist eine grobe Zusammenfassung des Impulsvortrages Nebenläufigkeit in Python.  Die Programmiersprache Python ist im Zuge unserer Aktivitäten im Bereich Machine Learning und Optimierung essenziell, weshalb sich unser KI-Team intensiv mit dieser Sprache beschäftigt.

Um was geht es?

Auch als parallele Programmierung bekannt, ist die Nebenläufigkeit eine wichtige Technik zur Optimierung der Leistung von Programmen. In Python gibt es verschiedene Möglichkeiten, um Nebenläufigkeit zu implementieren, darunter Multithreading, Multiprocessing und Coroutinen. In diesem Artikel werden wir uns diese Konzepte genauer ansehen und ihre Unterschiede sowie ihre Vor- und Nachteile diskutieren.


Leider muss zuerst gesagt werden, dass der Global Interpreter Lock (GIL), ein Mechanismus in CPython, die Ausführung von Python-Code auf einem einzigen Thread beschränkt. Dies bedeutet, dass Python-Code aufgrund des GIL nur sequenziell ausgeführt werden kann, auch wenn mehrere Threads vorhanden sind. Der GIL verhindert somit eine echte Nebenläufigkeit in Python, da mehrere Threads nicht gleichzeitig auf verschiedene Prozessorkerne zugreifen und somit eine gleichzeitige Ausführung von Code auf mehreren Kernen nicht möglich ist.

Multithreading in Python

Multithreading bezieht sich auf die Ausführung von mehreren Threads innerhalb eines einzigen Prozesses. Ein Thread ist eine leichtgewichtige Unterbrechung eines Programms, die unabhängig von anderen Threads ausgeführt werden kann. Ein Prozess kann mehrere Threads haben, die alle im selben Speicherbereich arbeiten. Python verfügt über eine integrierte Thread-Unterstützung, die das Erstellen und Ausführen von Threads sehr einfach macht.

Beispiel für Multithreading in Python:
import threading

def print_numbers():
    for i in range(10):
        print(i)

def print_letters():
    for i in range(ord('a'), ord('k')):
        print(chr(i))

t1 = threading.Thread(target=print_numbers)
t2 = threading.Thread(target=print_letters)

t1.start()
t2.start()

t1.join()
t2.join()

In diesem Beispiel werden zwei Threads erstellt, die jeweils eine Funktion ausführen, um Zahlen und Buchstaben auszudrucken. Der Code t1.start() und t2.start() starten die Threads, und der Code t1.start() und t2.join() stellt sicher, dass die Threads abgeschlossen sind, bevor das Programm beendet wird.

Multithreading hat den Vorteil, dass es sehr einfach zu implementieren ist und die Ressourcen eines Computers effizienter nutzen kann. Allerdings gibt es auch einige Nachteile. Wenn mehrere Threads auf gemeinsame Ressourcen zugreifen, wie zum Beispiel eine globale Variable, kann es zu Race Conditions kommen, die zu Fehlern führen können. Außerdem kann das Debuggen von Threads schwierig sein, da der Kontrollfluss zwischen den Threads wechseln kann und schwer vorherzusagen ist.

Multiprocessing in Python

Multiprocessing ist ähnlich wie Multithreading, aber anstatt Threads werden mehrere Prozesse ausgeführt, die jeweils ihren eigenen Speicherbereich haben. Das bedeutet, dass Daten zwischen den Prozessen ausgetauscht werden müssen, was im Vergleich zu Multithreading etwas komplizierter ist. Python verfügt über eine integrierte Multiprocessing-Unterstützung, die das Erstellen und Ausführen von Prozessen sehr einfach macht.

Beispiel für Multiprocessing in Python:
import multiprocessing

def print_numbers():
    for i in range(10):
        print(i)

def print_letters():
    for i in range(ord('a'), ord('k')):
        print(chr(i))

if __name__ == '__main__':
    p1 = multiprocessing.Process(target=print_numbers)
    p2 = multiprocessing.Process(target=print_letters)

    p1.start()
    p2.start()

    p1.join()
    p2.join()

In diesem Beispiel werden zwei Prozesse erstellt, die jeweils eine Funktion ausführen, um Zahlen und Buchstaben auszudrucken. Die Zeile if __name__ == ‚__main__‘: stellt sicher, dass der Code nur ausgeführt wird, wenn das Skript als Hauptprogramm ausgeführt wird, anstatt von einem anderen Skript importiert zu werden. Der Code p1.start() und p2.start() starten die Prozesse, und der Code p1.join() und p2.join() stellt sicher, dass die Prozesse abgeschlossen sind, bevor das Programm beendet wird.

Multiprocessing hat den Vorteil, dass es einfacher zu debuggen ist als Multithreading, da jeder Prozess seinen eigenen Speicherbereich hat und es keine Race Conditions gibt. Allerdings ist es auch etwas langsamer als Multithreading, da das Erstellen und Beenden von Prozessen etwas mehr Zeit in Anspruch nehmen.

Coroutinen in Python

Coroutinen sind eine andere Art der Nebenläufigkeit, die in Python verwendet werden können. Coroutinen sind Funktionen, die gestartet werden können und später wieder aufgenommen werden können, ohne dass ein neuer Thread oder Prozess gestartet werden muss. Python verfügt über eine integrierte Unterstützung für Corutinen in Form von Generator-Objekten und asynchronen Funktionen.

Beispiel für Coroutinen in Python:
import asyncio

async def print_numbers():
    for i in range(10):
        print(i)
        await asyncio.sleep(1)

async def print_letters():
    for i in range(ord('a'), ord('k')):
        print(chr(i))
        await asyncio.sleep(1)

async def main():
    await asyncio.gather(print_numbers(), print_letters())

asyncio.run(main())

In diesem Beispiel werden zwei Coroutinen erstellt, die jeweils eine Funktion ausführen, um Zahlen und Buchstaben auszudrucken. Der Code asyncio.sleep(1) sorgt dafür, dass jede Coroutine eine Sekunde lang pausiert, bevor sie die nächste Zahl oder den nächsten Buchstaben ausdruckt. Der Code asyncio.gather(print_numbers(), print_letters()) stellt sicher, dass beide Coroutinen parallel ausgeführt werden.

Coroutinen haben den Vorteil, dass sie sehr effizient sind und keine zusätzlichen Threads oder Prozesse benötigen. Sie sind auch sehr einfach zu debuggen, da sie sequenziell ausgeführt werden. Allerdings sind sie möglicherweise nicht die beste Wahl für Aufgaben, die eine intensive CPU-Nutzung erfordern, da sie nur auf einem CPU-Kern ausgeführt werden.

Fazit

In Python gibt es verschiedene Möglichkeiten, um Nebenläufigkeit zu implementieren, darunter Multithreading, Multiprocessing und Coroutinen. Jede dieser Methoden hat ihre eigenen Vor- und Nachteile. Die Wahl der Methode hängt von der spezifischen Anwendung ab. Multithreading ist gut geeignet für Anwendungen, die viele Eingabe- beziehungsweise Ausgabeoperationen ausführen, während Multiprocessing besser für Anwendungen geeignet ist, die eine intensive CPU-Nutzung erfordern. Coroutinen wiederum sind eine gute Wahl für Anwendungen, die viele Aufgaben mit wenig CPU-Nutzung ausführen müssen.

Es ist wichtig zu beachten, dass Nebenläufigkeit in Python einige Fallstricke haben kann, insbesondere wenn mehrere Threads oder Prozesse auf gemeinsame Ressourcen zugreifen. Um Probleme zu vermeiden, sollten Sie immer sicherstellen, dass der Zugriff auf gemeinsame Ressourcen durch Verwendung von asynchronen Mechanismen synchronisiert ist.

Wollen Sie tiefer in das Thema eintauchen? Wir empfehlen die Lektüre der Tutorials von Jason Brownlee https://superfastpython.com/tutorials/

 

Zu Besuch bei der Robotik AG am Lessing-Gymnasium in Neu-Ulm

Das Bild zeigt einen Roboter, der für den größten Technik-Schülerwettbewerb RoboCupJunior entwikelt wurde und dort im Bereich "Soccer" antritt. Entwickelt wurde der Roboter von Schüler:innen des Lessing Gymnasiums in Neu-Ulm.

Für den Junior Wettbewerb der RoboCup Federation entwerfen, bauen und programmieren die Teams einen völlig autonomen mobilen Roboter. Die Roboter müssen einen Ball erkennen und in ein farblich gekennzeichnetes Tor auf einem speziellen Fußballfeld treffen.

Am Lessing-Gymnasium in Neu-Ulm widmet sich die Robotik AG dem Bau dieser Roboter. Und das sehr erfolgreich! Die Schüler:innen reisen durch die Welt, um ihre Roboter in verschiedenen Gewichtsklassen im „Fußball“ gegeneinander antreten zu lassen.

Ein solches Projekt erfordert viel Herzblut. Die Schüler:innen haben ihren eigenen Werkstattbereich und sind sehr intensiv in den Vorbereitungen. Wir trafen sie das erste Mal in den Osterferien mit einer Delegation von erfahrenen Bastlern und Programmierern aus dem Umfeld des Digitalisierungszentrums Ulm | Alb-Donau | Biberach. Während andere die Ferien genossen, arbeiteten die fleißigen Bastler auf den nächsten Wettbewerb hin. Und sie brachten die erfahrenen Hasen direkt zum Staunen: Denn sie bauen in ihrer Werkstatt eigene CNC-Fräsen, konzipieren die Hardware und programmieren Roboter. Und das unter sehr komplexen Bedingungen. Zum Beispiel ist in einem Wettkampfformat laut Regularien nur eine einzige Kamera erlaubt. Deshalb haben die Schüler:innen die Kamera nach oben auf einen gekrümmten Spiegel gerichtet. Durch die Reflexion haben sie das gesamte Spielfeld im Blick. Die Krümmung erschwert jedoch wiederum die Anwendung von Algorithmen der Bilderkennung.

Die Teilnehmenden bei diesem Angebot reichen von der 5. Klasse bis zur Oberstufe. Die Gruppe lebt also vor allem durch die Weitergabe von Wissen. Die Älteren geben ihre Kenntnisse und Fähigkeiten an die Jüngeren zum Beispiel durch Einführungskurse und Beratungen weiter.

Nach unserem Besuch bei der Robotik AG wurde ein Austauschkanal mit Mentoren eingerichtet, die sich aus verschiedenen Firmen zusammensetzen und unterschiedliches Fachwissen besitzen. Über diesen Kanal können die Schüler:innen nun jederzeit bei Fragestellungen um Hilfe bitten.

Wir wünschen den RoboCupJunior Teams viel Erfolg bei den kommenden Wettkämpfen!

 

 

 

KI-gestützte Fehlererkennung bei einem Vespa-Modell

Das Bild zeigt drei Kollegen von ATR Software mit dem zusammengebauten LEGO Modell einer Verspa

Heute stellen wir euch ein weiteres Projekt aus unserer Zusammenarbeit mit dem Dgitalisierungszentrum Ulm | Alb-Donau | Biberach vor. Mit diesem Use Case adressieren wir Explainable AI und machen unser System für die Anwender verständlich. Zudem stärken wir das Vertrauen in KI-Lösungen, die für Außenstehende oftmals wie eine Art Blackbox wirken.

Der Use Case

Unser Ziel ist es, mit Hilfe von Neuronalen Netzen mögliche Fehler am Aufbau eines Vespa-Modells aus Klemmbausteinen zu erkennen. Der Algorithmus wird mit Bildern des vollständigen LEGO Modells aus verschiedenen Blickwinkeln sowie mit unterschiedlichen Belichtungen trainiert. So lernt die KI Bilder von fehlerfrei aufgebauten Vespas zu erzeugen. Diese werden anschließend mit Vergleichsbildern abgeglichen. Dadurch soll nicht nur entdeckt werden, ob ein Fehler an dem Modell vorliegt, sondern auch wo und mit welcher Sicherheit.

Zeitraffer Vespa ATR

Das Video wird von YouTube eingebettet und erst beim Klick auf den Play-Button geladen. Es gelten die Datenschutzerklärungen von Google.

Wie unsere Künstliche Intelligenz detektiert, welche Teile an einem LEGO-Modell fehlen

Die Kernkomponente der Anwendung ist ein Autoencoder-Modell. Ein Autoencoder ist ein neuronales Netz, welches versucht, die Eingangsinformationen zu komprimieren und mit den reduzierten Informationen im Ausgang wieder korrekt nachzubilden. Zuerst wird dafür ein Algorithmus mit Bildern des vollständigen LEGO-Modells aus verschiedenen Blickwinkeln sowie mit unterschiedlichen Belichtungen trainiert. So lernt die KI Bilder von fehlerfrei aufgebauten Vespas zu erzeugen.

Anschließend wird dieses Programm mit fehlerhaften Bildern des Modells ausgeführt. Ein Autoencoder besteht aus zwei Teilen, einem Encoder und einem Decoder. Der Encoder komprimiert die Input-Daten. Aber es können nicht alle Informationen aus dem Input in den komprimierten Daten gespeichert werden, sodass der Encoder priorisieren und unwichtige Informationen auslassen muss. Anschließend versucht der Decoder, aus dieser verkleinerten Darstellung der Bildinformationen die ursprüngliche Form der Vespa so gut wie möglich wiederherzustellen.

Um Anomalien in den Bildern zu erkennen, vergleichen wir jetzt den Input mit dem Output des Autoencoders. Wenn das Bild des Modells vollständig ist, sollte der Output dem Input sehr ähnlich sein. Wenn jedoch eine Anomalie im Bild vorhanden ist, wie zum Beispiel fehlende Teile an der Vespa, kann der Autoencoder diese nur schlecht rekonstruieren. Das liegt daran, dass der Encoder ungewöhnliche Merkmale nicht als wichtig erachtet und deshalb in der komprimierten Darstellung vernachlässigt. Daher verwenden wir die Differenz zwischen Input und Output als Maß für die Anomalität. Je größer die Differenz ist, desto wahrscheinlicher ist es, dass das Bild eine Anomalie aufweist.

In einem ersten Schritt wurden die Bilder hierfür in dem 3D-Grafikprogramm Blender erstellt. Später sollen die Neuronalen Netze aber auf Fotos der realen LEGO Vespa zurückgreifen.

Gemeinsam aktiv – eine Winterwanderung durch Neu-Ulm

Gruppenfoto am Ludwigsfelder Baggersee während der Winterwanderung des Teams von ATR Software im Februar 2023

Bei strahlendem Sonnenschein machten wir uns an einem Nachmittag im Februar auf zu unserer Winterwanderung. Der Startpunkt der 15,5 km langen Tour war unser Büro in Neu-Ulm, von wo aus wir in Richtung des Ludwigsfelder Baggersees liefen. Auf dem Weg dorthin durchquerten wir den Sport- und Freizeitpark im Wiley und steuerten den See über die Felder östlich davon an. Die untergehende Sonne, das gefrorene Wasser und die beiden Schwäne auf dem Eis machten den winterlichen Anblick perfekt.

Eineinhalb Stunden später kehrten wir in dem Wirtshaus Silberwald ein, wo wir uns ein leckeres Abendessen schmecken ließen und mit dem ein oder anderen Getränk zusammen anstießen. Nachdem wir alle wieder aufgewärmt waren, versammelten wir uns im Hof des Restaurants und zündeten die Fackeln für den Rückweg an. Trotz der Kälte herrschte gute Stimmung bei der Laufgruppe und es wurde viel gelacht.

Die wiederum eineinhalbstündige Fackelwanderung durch den Wald führte uns an der Iller entlang und vorbei an der Ratiopharm Arena zu unserem Büro, wo wir müde, aber glücklich zurück am Ausgangspunkt der Wanderung ankamen.

 

 

„DigiPrüF“ – Die digitale Prüfplattform für die Fahrzeug- und Zuliefererindustrie

Titelbild des Blogartikels, dass sich aus einem Gruppenbild des Projektkonsortiums von DigiPrüF am Fahrezugstand der Hochschule Aalen und den Logos der Europäischen Uninon und dem Bundesministerium für Wirtschaft und Klimaschutz zusammensetzt.

Heute stellen wir Ihnen DigiPrüF – die Digitale Prüfplattform für die Fahrzeug- und Zulieferindustrie vor. Ziel des Forschungsprojektes ist es, eine effiziente und kostengünstige Alternative zu manuellen Prüfprozessen zu schaffen. Dazu wird eine Prüfplattform entwickelt, mit der man Produkte virtuell testen und Prüf- sowie Produktionsprozesse optimieren kann. Denn damit können Unternehmen zukünftig Zeit, Geld und Ressourcen einsparen

Was ist „DigiPrüF“?

Das vom Bundesministerium für Wirtschaft und Klimaschutz geförderte Innovationsprojekt setzt sich aus fünf Industriepartnern, drei Forschungseinrichtungen und zwei assoziierten Großkonzernen der Automobil- und Zulieferindustrie zusammen und ist im Januar 2023 gestartet. Aber was genau ist „DigiPrüF“ eigentlich?

Im Rahmen des Forschungsprojektes soll die reale Prüfinfrastruktur der Unternehmen digital in einer virtuellen, erweiterbaren Prüfplattform nachgebildet werden. Dazu werden Digitale Zwillinge der Prüfstände, der dafür benötigten Komponenten sowie der Produktionsanlagen in der Plattform gebündelt. Mit Simulationsmodellen ihrer eigenen Produkte können die Anwender diese virtuell testen. So können Vorhersagen zum Verhalten der realen Produkte getroffen werden. Über die digitalen Zwillinge der Produktionsmaschinen können diese Erkenntnisse dann für Optimierungen in der Produktion genutzt werden.

Kurz gesagt handelt es sich um eine digitale Prüfplattform, die es Unternehmen ermöglicht, ihre Prüfabläufe zu digitalisieren und zu optimieren. Dadurch können nicht nur Zeit und Kosten eingespart werden, sondern auch die Effizienz der Prüfprozesse verbessert werden.

Die Digitalisierung und Vernetzung im Rahmen der Industrie 4.0 gewinnt für den deutschen Mittelstand zunehmend an Bedeutung und ist schon heute ein wichtiger Faktor für den Erfolg und die Zukunftsfähigkeit eines Unternehmens. Das Ziel hierbei ist vor allem eine effiziente, nachhaltige und wirtschaftliche Produktion. Jedoch sind diese Themen für viele KMUs  auch in der Fahrzeug- und Zulieferindustrie schwer in die Praxis umzusetzen.

Insgesamt bietet „DigiPrüF“ somit eine moderne und zukunftsweisende Lösung für Unternehmen, die ihre Poduktionsabläufe optimieren möchten.

Vorteile von „DigiPrüF“ für die Fahrzeug- und Zulieferindustrie

Wenn es um die Qualitätssicherung in der Fahrzeug- und Zulieferindustrie geht, ist eine genaue Prüfung unerlässlich. DigiPrüF bietet hierfür viele Vorteile: So können die Nutzer zukünftig, Prüfungen virtuell bereits während der Entwicklungszeit durchführen – auch wenn noch kein realer Prüfling zur Verfügung steht.

Anhand der virtuellen Nachbildung und der Datenanbindung des Prüffeldes wird eine Auswahl und Zusammenstellung einzelner virtueller Prüfstände und -komponenten ermöglicht. Außerdem wird eine branchenübergreifende Nutzung der Plattform möglich sein. Somit kann eine individuelle Prüfumgebung als Nachbildung, Erweiterung oder zeitweiser Ersatz der realen Infrastruktur geschaffen werden. Das führt zu einer Steigerung der Effizienz, Nachhaltigkeit und Flexibilität für die Hersteller der Prüflinge. Denn teilweise müssen Produkte bei der realen Prüfung zerstört werden. So entstehen Mehrkosten für das Unternehmen und wertvolle Ressourcen werden verbraucht. 

Das Projekt zielt speziell auf die Bedürfnisse des deutschen Mittelstandes ab. So soll es die Anwender neben der Entwicklung einer digitalen Prüfplattform bestmöglich bei der Nutzung der Plattform und generell der Digitalisierung ihrer Unternehmen unterstützen.

Allgemeine Informationen zu dem Projekt

Das Vorhaben ist in das von der in Ellwangen ansässigen EurA AG geleitete Netzwerk DigiServ eingebettet, welches das Ziel verfolgt, den deutschen mittelständischen Maschinenbau für die Herausforderungen der Digitalisierung, insbesondere im Bereich des Service, fit zu machen. 

Das Projektkonsortium setzt sich wie folgt zusammen: die mittelständischen Unternehmen ATR Software, ADZ NAGANO GmbH, PlanB. GmbH und Schmidlin Labor + Service GmbH & Co. KG und das Großunternehmen msg systems ag, die Forschungseinrichtungen Hochschule Aalen (Institut für Antriebstechnik), Universität Ulm (Institut für Numerische Mathematik) und Hahn-Schickard-Gesellschaft für angewandte Forschung e.V., sowie zwei assoziierte Großkonzernen der Automobil- und Zulieferindustrie sind Teile des Innovationsvorhabens DigiPrüF.  

Wir sind stolz darauf, Teil der Realisierung dieses wegweisenden Projekts zu sein und freuen uns darauf, unsere Expertise und Erfahrung in die Entwicklung innovativer Lösungen einzubringen und es als Verbundkoordinator aktiv mitzugestalten.

Was tun, wenn die KI mit der Zeit an Performance verliert? Das Problem von Data Drift und wie man damit umgeht.

 

 

Die Ausgangslage

Wenn ein KI-System implementiert und live in Verwendung ist, erstellt es Vorhersagen, welche zum Beispiel einen Workflow in einer Firma optimieren, unterstützten, verbessern oder verschlanken. Das kann ein Kamerasystem sein, welches defekte Bauteile in einer Produktionslinie erkennt oder ein Modell, das Absatzprognosen für kommende Monate abgibt. Zu einem laufenden KI-System gibt es in der Regel auch ein Dashboard, welches Kennzahlen zu Eingangsparametern und Prognosen darstellt, aber auch Performances zur KI, wie Fehlerraten oder Berechnungszeiten angibt.

Um also eine Verschlechterung der Performance der KI zu vermeiden, muss man die Änderungen in den Daten überwachen. Eine solche Änderung liegt vor, wenn sich die Beziehung zwischen Input- und Output-Daten ändert. Wenn beispielsweise die Regierung einen Lockdown verhängt, ändert sich abrupt das Kaufverhalten von Konsumenten, sodass die Absatzprognosen des Modells nicht mehr stimmen können. Ändert sich der Standort einer Maschine in der Fabrik,  würde das Kameramodell nicht mehr ganz so gut funktionieren, weil sich die Lichtverhältnisse geändert haben. Wir reden hier von abrupten Drifts, die nicht vorhersehbar und damit nicht modellierbar sind. Graduelle Drifts im Gegensatz dazu liegen vor, wenn sich die Verteilung der Daten über einen längeren Zeitraum hinweg verändert. Das kann zum Beispiel sein, wenn die Linse an der Kamera mit der Zeit verstaubt oder sich das Konsumverhalten der Konsumenten zu mehr Nachhaltigkeit umstellt. Diese graduellen Drifts bewirken einen graduellen Performanceverlust, der durch das Dashboard sichtbar gemacht wird.

Lösung

Beim Aufsetzen einer KI in der Produktionsumgebung ist es also wichtig, das Problem von Concept Drift von Anfang an mitzudenken und das Nachtrainieren der KI mit einem Re-Training in einem Continous Integration (CI) System zu ermöglichen. Bei CI handelt es sich um eine DevOps-Softwareentwicklungspraxis, bei der die Entwickler ihre Codeänderungen regelmäßig in einer Cloud ablegen, von wo aus nach Ablaufen von Tests die Software automatisch geupdatet wird.

In diesem Blogartikel haben wir kurz umrissen, was Concept Drift ist, welche Probleme daraus entstehen, welche Driftarten es gibt und wie man ihnen begegnen kann.

 

 

Ab auf die Wasserski und rein ins kühle Nass!

 

Blick auf den Startbereich am Gufi-See.

Obwohl das Wetter erst nicht sehr vielversprechend aussah, machten wir uns letzten Mittwoch nach getaner Arbeit auf den Weg zum Gufi-See in der Nähe von Gundelfingen. Dort tauschten wir Bürostühle gegen Neoprenanzug und Wasserski und tobten uns auf der Anlage aus.
 
Auch wenn es nicht immer auf Anhieb klappte und der ein oder andere Versuch nötig war, um auf den Brettern zu stehen, waren lauter lächelnde Gesichter zu sehen. Die Lernkurve war steil und so schafften es die meisten bereits nach kurzer Zeit, unter dem Beifall der zuschauenden Kollegen zumindest ein Stück über das Wasser zu gleiten.
 
Da die Sonne doch noch rauskam und wir mit Essen und Getränken versorgt waren, hat es uns an nichts gefehlt, sodass wir den gemeinsamen Feierabend in vollen Zügen genossen. Wir freuen uns schon auf das nächste Mal!
 

Sommerfest 2022

 

Gruppenbild der Mitarbeitenden von ATR Software und ihren Lieben auf dem Sommerfest 2022

Endlich wieder zusammensitzen, gemeinsam lachen, lecker essen und feiern war das Motto unseres diesjährigen Sommerfestes Ende Juli. Trotz Sturmwarnung trauten wir uns mit unseren Liebsten in den Neu-Ulmer Wiley Park, wo wir von kalten Getränken jeglicher Art begrüßt wurden. Die Zeit bis zum Essen war gefüllt mit guten Gesprächen und verschiedenen sportlichen Aktivitäten. Zu den beliebten Klassikern wie dem Wikingerschach und Spikeball kam dieses Jahr noch Frisbee dazu.

Zur Abwechslung zu den Jahren davor gab es diesmal ein italienisches Antipasti-Buffet. Viele leckere Kleinigkeiten wie Oliven, Salami, Käse, gegrilltes Gemüse, Ciabatta und noch viel mehr ließen keine Wünsche offen. Hierzu wurde Wein, Sekt und antialkoholische Getränke gereicht. Zum krönenden Abschluss gab es allerlei Desserts in kleinen Gläsern, die uns den Gaumen versüßten.

Danach wurden bei musikalischer Untermalung die Gespräche weitergeführt. Leider fand das gesellige Beisammensein ein jähes Ende, als der Wind immer mehr zu nahm und der Pavillon abgebaut werden musste. Nichtsdestotrotz war es ein sehr gelungener Abend und wir freuen uns schon auf das nächste Jahr!

Mit dem 3D-Drucker zu einer besseren Tiefenwahrnehmung

Frontale Ansicht der Stereokamera mit fertig montiertem Ringlicht und Laser zur Verbesserung der Tiefenwahrnehmung.

Im Zuge des Forschungsprojektes MeMoRob verwenden wir eine Stereokamera. Damit erhalten wir nicht nur die Farbinformationen aufgezeichneter Objekte, sondern können auch deren Abstand zur Kamera bestimmen.

Beschreibung der Stereokamera

Die Stereokamera zeichnet den gleichen Bereich ähnlich der menschlichen Wahrnehmung mit zwei Kameras gleichzeitig auf. In den beiden Bildern vergleicht der Algorithmus der Kamera dann die Positionen markanter Punkte. Anhand des bekannten Abstandes der beiden Kameras zueinander und der Berechnung des Positionsunterschiedes der Punkte wird dann die Distanz des Objektes zur Kamera zu berechnet.

Um das Finden solcher markanten Punkte zu verbessern, brachten wir ein Ringlicht und einen Laserpointer mit Streuung an der Kamera an. Hierfür konstruierten wir Halterungen, die zu den existierenden Anschraubpunkten der Kamera kompatibel sind. Diese Halterungen konnten wir direkt mit dem 3D-Drucker herstellen, sodass sie zeitnah zum Einsatz bereitstanden. Mit ihrer Hilfe befestigten wir die zusätzliche Hardware präzise an der Kamera.

Die Problemstellung

Ohne eine konstante Beleuchtung ist die Helligkeit der Aufnahmen stark von den umgebenden Lichtverhältnissen abhängig. Auf einer mobilen Plattform wie bei dem Projekt MeMoRob kann sich die Umgebungsbeleuchtung schnell ändern, was zu Problemen führen kann. Die Helligkeit in einem Bild lässt sich im groben durch die beiden Faktoren Beleuchtung und Belichtungszeit beeinflussen. Da die Bildqualität bei einer automatischen Anpassung der Belichtungszeit stark schwanken kann, setzen wir die Belichtungszeit auf einen festen Wert.

Die Lösung

Durch das Ringlicht bekommen wir in den Versuchen eine konstante Helligkeit in den Bildern, die zur gewählten Belichtungszeit passt. Dadurch verbessert sich die Menge an erkannten Punkten und mit dieser wiederum die Genauigkeit der wahrgenommenen Tiefe. Je mehr markante Stellen im Bild vorhanden sind, desto besser kann der Abstand zur Kamera bestimmt werden. Deshalb modifizierten wir die Halterung des Ringlichtes, sodass ein Laserpointer mit Streuung darin eingespannt werden kann. Dieser wirft nun ein Punkteraster auf den Bereich, der von den Kameras aufgezeichnet wird. Durch die zusätzlichen Punkte des Laserpointers ist es uns möglich, die Tiefe auch an Stellen gut zu bestimmen, an denen die Farbe der aufgezeichneten Objekte sehr einheitlich ist.

Da eine Dauerbelastung des Lichtes und des Lasers vermieden werden soll, ermöglichten wir ein An- beziehungsweise Ausschalten der beiden Lichtquellen über eine Netzwerkschnittstelle. Dies ermöglicht es uns, die Komponenten nur während einer angeforderten Bildaufzeichnung anzuschalten. Um dies beim Ringlicht zu ermöglichen, modifizierten wir den Schalter des Ringlichtes mit einem zusätzlichen Ausgang.

Nach einer ersten Bohrung ins Gehäuse unseres Laserpointers war zu erkennen, dass diese Modifikation nicht umsetzbar ist, ohne dafür das Gehäuse größer aufsägen oder sogar gänzlich entfernen zu müssen. Um dies zu vermeiden, modellierten und druckten wir eine weitere Halterung, mit der ein Servomotor so befestigt wurde, dass sich damit der Knopf zum An- und Ausschalten des Laserpointers betätigen lässt.

Mit Hilfe der 3D-gedruckten Teile, können wir schnell Anpassungen vornehmen sowie testen und dadurch eine deutliche Verbesserung der Tiefenwahrnehmung mit der Stereokamera erreichen.

 

ATR auf der ECCOMAS 2022

 

Foto des Vortrags von ATR Software auf dem 8. European Congress on Computational Methods in Applied Sciences and Engineering

Vom 5. bis zum 9. Juni 2022 nahm ich für die ATR Software GmbH beim 8. European Congress on Computational Methods in Applied Sciences and Engineering (ECCOMAS) in Oslo teil. Die Konferenz zählt im Bereich der numerischen Mathematik zu den größten und einflussreichsten Konferenzen Europas. Insgesamt konnten die über 6000 Teilnehmenden aus 46 Nationen dort aus einem Programm von über 150 Minisymposien wählen, in denen über 1000 Vorträge angeboten wurden.

Das vielfältige Thema Modellreduktion

Hierbei waren wir insbesondere im Minisymposium „Model Order Reduction – Challenges in Engineering and Industrial Applications“ unter der Leitung von Dr. Annika Robens-Radermacher von der Bundesanstalt für Materialforschung und -prüfung vertreten. Mit der Modellreduktion (im Englischen Model Order Reduction) versucht man rechenaufwendige Modelle so zu vereinfachen, dass die Lösung in einem Bruchteil der ursprünglichen Zeit berechnet werden kann, ohne die Qualität der Lösung zu stark zu beinträchtigen. Die Keynote Lecture hielt Prof. Dr. Gianluigi Rozza über folgendes Thema: State of the Art and Perspectives for Reduced Order Methods in Industrial Computational Fluid Dynamics.

In den weiteren Vorträgen des Minisymposiums wurden Anwendungsfelder und -beispiele der Modellreduktion vorgestellt und beleuchtet. ATR präsentierte hier Anwendungsideen aus dem Bereich der Produktionsplanung und der Industrie 4.0. Auch hier ist das Thema Modellreduktion wichtig, um in Echtzeit Berechnungen durchführen zu können.

Plenumsvorträge von den Koryphäen des wissenschaftlichen Rechnens

Neben den Minisymposien gab es 6 Plenary Lectures, welche vor allen Anwesenden gehalten wurden. Hier trug unter anderem Thomas J.R. Hughes, einer der führenden und einflussreichsten Wissenschaftler im Bereich der numerischen Mathematik vor. Zudem gab es Vorträge von George Karniadakis, Experte für Physics-informed Neural Networks, also Neuronale Netze, die physikalische Gleichungen berücksichtigen können, Pål G. Bergan, David Keyes, Annalisa Buffa und Paul Steinmann.

Sightseeing in Oslo

Die ganze Veranstaltung fand im Kongresszentrum Nova Spektrum in Lillestrøm, einem Vorort von Oslo, statt. Abgerundet wurde die Konferenz durch ein Conference Dinner, bei dem typisch für die norwegische Küche, Lachs und Wild serviert wurden.

Da Anfang Juli die Tage in Oslo bedingt durch die nördliche Lage, fast 19 Stunden lang sind, blieb noch einige Zeit, die Stadt Oslo zu erkunden. Zu den Highlights gehören hier das königliche Schloss, das Opernhaus im Hafen, der Osloer Dom sowie der Frognerpark.