Skip to content
Deutsch
All posts

Dynaweek 6

 
Dynaweek

 

DynaWeek #6

Hackathon-Woche 2023

Jahr
2023
 
Projektart
Prototyping | dynaweek

 

Grundidee

Jedes Jahr machen wir eine Woche lang interne Projekte zum Testen eigener Ideen und Erforschen neuer Technologien. Dabei steht der Spaß im Vordergrund und das Wirtschaftliche muss dem Spieltrieb weichen. Fünf Tage lang machen wir einfach nur das was wir wollen. Hier ist eine kurze Zusammenstellung aus dem Jahr 2023.

 

Watts UP

Ein effizientes Werkzeug zur Planung von Solardachanlagen

Die ganze Story

Die Idee entwickelte sich aus dem Bedarf nach einem effizienten Werkzeug zur Planung von Solardachanlagen. Bestehende Lösungen in diesem Feld waren oft nicht nur teuer, sondern verfügten auch nicht über die gewünschte Funktionalität. Motivation der Team-Mitglieder war es zudem, dem Engagement für Green Tech treu zu bleiben.

Es entstand ein Open Source Werkzeug zur Planung von Solardachanlagen durch die Analyse von Schattenverläufen auf dem eigenen Grundstück. Dadurch können geeignete Positionen für Solarpaneele identifiziert werden. Zusätzlich wird ein 3D-Modell des Grundstücks angezeigt und einzelne Dächer können markiert werden. Dies ermöglicht es, eine detaillierte Solarplanung für jedes einzelne Dach zu starten, um effiziente Solaranlagen installieren zu können.

Screenshot von der Anwendung Watts up

 

Technologien

 Google Solar APINext.jsChakraUIThree.js
 
 

Tätigkeiten

SoftwareentwicklungDevOpsUI-Design

 

Your Story

Ein interaktives Browser Game mit der Kraft von ChatGPT

Die ganze Story

Neugierde wurde geweckt, als die Frage aufkam, wie weit die kreativen Fähigkeiten von ChatGPT in einem interaktiven Erlebnis genutzt werden könnten. Die Entwicklung einer Geschichte in einem Browser-Game, in dem der Spieler durch Entscheidungen die Handlung steuert, bot sich als faszinierende Möglichkeit an, die Grenzen von ChatGPT zu erkunden und gleichzeitig ein unterhaltsames Spielerlebnis zu bieten.

In diesem Projekt wurde ein packendes Browser-Game erschaffen, in dem die Spieler mit Hilfe von ChatGPT eine einzigartige Geschichte formen. Auf der Grundlage einer stichpunktartigen Charakterbeschreibung treffen die Spieler nach jedem Kapitel Entscheidungen, die den Verlauf beeinflussen. Das System generiert dabei nicht nur den Fortgang der Handlung, sondern auch ein Avatarbild des Charakters sowie szenische Hintergrund- und Handlungsbilder. Das Ergebnis ist ein interaktives Erlebnis, das Forschungen im Bereich ChatGPT und Prompt Engineering nutzt.

 

Ausschnitt des Spiels "Your story"

 

Technologien

ChatGPTOpen APINext.jsJavascript-ClientPostgresQL-DatenbankVercel
 

Tätigkeiten

CodenGame DesignPrompt Engineering

 

Chek Ur Defense

Ein Tower Defense Game mit Godot

Die ganze Story

Die Leidenschaft für Gamedesign & Entwicklung legt den Grundstein für das Projekt 'ChEK UR DEFENSE'. In diesem Projekt wurde ein kleines Tower Defense Spiel entwickelt, angelehnt an das bekannte Spiel 'Plants vs. Zombies'. Das Ziel des Spielers ist es, durch kluge Platzierung von Türmen die nahenden Gegnerhorden am Erreichen der 'Zielzone' zu hindern. Das durchdachte Generieren und Ausgeben von Gold als zentrale Ressource ist dabei ein Kernelement des Spiels und entscheidet über Sieg oder Niederlage. Innerhalb mehrerer Level kann der Spieler Türme platzieren, die entweder direkten Schaden an Gegnern verursachen, den Gegner verlangsamen oder direkt Gold generieren, aber dafür keinen Schaden verursachen.

Die Entwicklung von 'ChEK UR DEFENSE' ermöglichte es den Beteiligten, vielfältige und tiefgreifende Einblicke in die verschiedenen Bereiche der Spielentwicklung zu erlangen, von der Gestaltung ansprechender skalierbarer Vektorgrafiken und Animationen bis hin zur Entwicklung fortschrittlicher Kollisionserkennungsmethoden. Sich mit einer ungewohnten Programmiersprache auseinanderzusetzen und neue Technologien zu erlernen machten das Spiel zur einer willkommenen Herausforderung.

 

Beispiel Bilder des Online Spiels "Check ur defense"

 

Technologien

GODOTC#Jason
 

Tätigkeiten

SourcecodeverwaltungAnimation CodenGame-Design

 

pixel poet

Produktsuche mit Bildern für Online-Shops

Die ganze Story

Wir haben folgende Fragestellungen untersucht

  • Kann man mittels Large Language Model (LLM) eine Online-Shop Bildsuche realisieren, die zuverlässig gute Produktergebnisse liefert?
  • Kann man mittels LLM die Artikelbeschreibungen anhand von Produktbildern anreichern?
  • Ist die Suche performant genug?
  • Mit welchen Kosten muss man rechnen?

Wir haben 4 verschiedene Models untersucht. Dabei kamen wir zu folgenden Ergebnissen:

OpenCLIP image-to-text

  • Länge der Bild-Beschreibung reicht nicht aus, um zielgenaue Ergebnisse zu liefern
  • Bild-Beschreibung enthält zu wenige Details
  • Gut für image-captions oder alt-Texte
  • Nicht geeignet für bildbasierte Suche

OpenCLIP image-to-image

  • Sehr schnell (millisekunden?)
  • Nicht geeignet für bildbasierte Suche

OpenAI Vision

  • Sehr langsam (> 10s)
  • Qualität erstaunlich gut und konsistent
  • Liefert auch guten JSON-Output
  • Kann keine bounding-boxen =/

Qwen-VL (Alibaba)

  • Response-Zeiten langsam: ~ 3-8 Sekunden
  • Beschreibungen variieren sehr
  • Teilweise detailreich - ab und zu chinesische Zeichen in der Beschreibung
  • Teilweise sehr kurz und unbrauchbar.
  • Bspw: “black boots on white background”
  • Gute Ergebnisse für bounding-boxen
  • JSON output möglich, aber nicht konsistent (genug?)

clip-ViT-B-32

  • Beste Bild zu Bild Suche außerhalb von OpenAi Vision
  • Wenig Tokens für Text zu Bild Suche
  • Gute Performance

Fazit

Von den hier getesteten Models ist nur OpenAI Vision für eine hochwertige Bild-Suche nutzbar. Diese ist dann aber tatsächlich sehr langsam. Man muss also ordentlich zahlen oder warten bis was auf hugging face erscheint.

 

 

Analyse eines Bilds mithilfe von KIs für das Research Projekt "Pixel Poet"pixel poet

 

Technologien

Qwn-vlOpen API VisionNest.jsJupyter NotebookJsonOpenclip
 
Tätigkeiten
Research RepositoryLean CycleMaschninelles Lernen

 

Linux-Treiber in Rust

Ein Xbox One Controller Linux-Treiber in Rust

Die ganze Story

Entwicklung eines Xbox One Controller-Treibers in Rust für den Linux-Kernel

Wir wollten einen Linux-Kernel-Treiber in Rust entwickeln. Um ein verfolgbares Ziel zu haben, wollten wir einen Treiber entwickeln, welcher einen Xbox One Controller unter Linux lauffähig macht. Dazu haben wir uns den aktuellen Stand von Rust im Linux-Kernel angeschaut. Welche Bindings existieren und wie können wir eigene, sogenannte Out-of-tree-Module für Linux kompilieren und laden.
 

 

Warum die Entwicklung eines Xbox One Controller-Treibers in Rust für den Linux-Kernel?

Auf der einen Seite steht das Interesse für Treiber-Entwicklung unter Linux. Wie genau funktioniert das? Was braucht man dafür? Auf der anderen Seite ein Interesse an Rust als moderne und sichere Alternative zu C. Da Rust aktuell immer mehr Einzug in den Linux-Kernel erhält, konnten so gleich zwei Interessen auf einmal verfolgt werden.

 

Wie sind wir vorgegangen?

Wir haben eine VM mit einer Linux-Distribution aufgesetzt, die auf einen aktuellen Linux-Kernel setzt (Linux 6.6 zum Zeitpunkt der Entwicklung). Darin haben wir einen Linux-Kernel kompiliert und diesen gestartet, um eigene Module zu laden.
 
 

Erkenntnisse und Herausforderungen

Obwohl Rust seit Linux 6.1 offiziell im Kernel unterstützt wird, beschränkt sich die Unterstützung aktuell stark darauf, dass In-Tree-Kernel-Module ermöglicht werden sollen. Konkret heißt das, dass Bestandteile des Kernels selbst in Rust ermöglicht werden sollen. Out-of-tree-Module sind möglich, jedoch gibt es aktuell noch gar nicht so viele Bindings, dass man hier sinnvoll ansetzen kann, wenn man sich keine eigenen Bindings für C-Funktionen bauen kann oder will. Außerdem sind die Distributionen noch nicht darauf vorbereitet, dass man Rust-Kernel-Module nachträglich baut, da die „linux-header“ Pakete, welche quasi als SDK für den Kernel dienen, noch keine Rust-Konfigurationen bereitstellen, welche benötigt werden um Rust-Kernel-Module für den Linux-Kernel zu kompilieren. Das macht es erforderlich, dass man den Kernel selbst kompilieren muss, um die nötigen Konfigurationen zu haben, da diese beim kompilieren des Kernels erzeugt werden.
 
 
Generiertes Bild eine Spiel Kontrollers

 

Technologien

RustLinuxTreiber
 

Tätigkeiten

CodenKernel