Homeautomation

Carrera-Bahn Hardwareaufbau Carrera Bahn - Simulator

Ebenfalls im Wintersemester 16/17 habe ich den Kurs Homeautomation besucht. Hier war es zunächst die Aufgabe kleinerer Microcontrolleraufgaben mit einem Photon zu erfüllen und sich mit OpenHAB vertraut zu machen. Anschließend wurden die Teilnehmer in Gruppen eingeteilt und jede Gruppe bekam eine größere Aufgabe zum Thema Homeautomation. Meine Gruppe hat sich eine Carrera-Bahn rausgesucht. Hierbei war es die Aufgabe die sonst per Controller gesteuerten Fahrzeuge selbstständig über die Rennstrecke fahren lassen zu können. Hierfür habe ich auf der Fahrbahn  an kritischen Stellen Photoresistoren angebracht und die Lichtveränderung, wenn ein Auto darüber war oder nicht, in einem Microcontroller von Arduino überprüft. Bei einem Spannungsanstieg hat der Resistor erkannt das ein Auto über ihm ist und dementsprechend konnte der Microcontroller über eine H-Brücke ein höheres oder niedrigeres PWM-Signal auf die entsprechende Spur geben. Auf dem Microcontroller habe ich eine automatische wie auch eine manuelle Steuerung der Fahrzeuge zugelassen, damit es die Möglichkeit gibt auch gegen die “KI” fahren zu können.

Neben dem Hardwareaufbau und der Microcontrollersteuerung gehörte das Erstellen einer Simulation zu meinen Aufgaben. Hierfür habe ich mit dem 3D Entwicklungstool Processing für Java die Carrera-Bahn nachgebaut und die Fahrt der Fahrzeuge auf der simulierten Strecke ermöglicht.

Wie auf den Graphiken zu erkennen, haben wir für die Kreuzung auf der Rennstrecke eine Ampel eingebaut, an der immer das Fahrzeug, welches nicht vom Looping kam, bei Rot anhalten musste. Zusätzlich haben wir noch ein simulierten Akkuverbrauch der Fahrzeuge eingerichtet, welcher sich nur an gewissen Punkten der Strecke aufladen konnte.

Neben diesen Aufgaben gehörte noch eine Sprachsteuerung der Fahrzeuge via Alexa und eine Verknüpfung mit den anderen Gruppen in einer großen Simulation zu unseren Aufgaben. Damit die Steuerung via Alexa möglich war, musste das Signal zunächst über IFTTT an OpenHAB gesendet werden. Dieses Signal hatte ein Raspberry Pie verarbeitet und an einen Photon geschickt, welcher dieses wiederum über eine serielle Schnittstelle an unseren Microcontroller von Arduino schicken konnte.

Nice to Have

Nice to Have - Login Screen  Nice to Have - Address Screen  Nice to Have - Chat Screen

Im Wintersemester 16/17 habe ich die Veranstaltung iOS Code Camp besucht. Hierbei handelt es sich, um eine Blockveranstaltung von einer Woche in der es das Ziel war in einer Gruppe von vier Leuten eine Messenger App in Objective C zu bauen. In der App sollte es möglich sein Gruppen zu erstellen und mit den Teilnehmern Nachrichten und Medien auszutauschen. Das ganze sollte daraufhin präsentiert und dokumentiert werden.

 

Audio Effect Unit

Die Audio Effect Unit als Blockschaltbild.          Die Detailansicht der Audio Effect Unit.

 

Nachdem ich zwei Jahre berufstätig war, entschied ich mich im April 2016 meinen Master of Science in Informatik nachzuholen. In der Veranstaltung “Schaltungsentwurf mit HDLs” war es die Aufgabe sich mit der Hardwarebeschreibungssprache VHDL vertraut zu machen, um am Ende des Semester in einer Projektaufgabe eine eigene Audio Effekt Einheit kreieren zu können.

Die Audio Effekt Einheit wurde auf einen FPGA gebaut und sollte ein Audio Signal sowohl einlesen als auch ausgeben können. Zusätzlich sollte das empfangene Signal mit einem Echo und/oder Flanger Effekt verzehrt und ausgegeben werden.  Eine große Schwierigkeit war es die Verarbeitungsfrequenz des FPGAs mit denen der Peripheriegeräten zu synchronisieren.

Softwareentwickler bei fino digital GmbH

fino_digital

Das Logo der Firma fino digital GmbH

Nachdem ich drei Monate bei BCIS IT-Systeme GmbH & Co. KG gearbeitet habe, bin ich zu dem fintech Startup fino digital GmbH gewechselt. Meine Hauptaufgaben sind die Weiterentwicklung bestehender Webanwendungen, die Erstellung von neuen Seiten und die sonstigen typischen Aufgaben als Webentwickler. Das Portieren und automatisierte Verwalten von Webanwendung als Hybride Mobile Apps sind weitere große Bereiche meiner Arbeit.

Softwareentwickler bei RockAByte GmbH

rockabyte_logo

Logo der Firma RockAByte GmbH

Im Mai 2014 habe ich auf Grund meines Studiums ein viermonatiges Praktikum in der Firma RockAByte GmbH in Köln absolviert. Ein Ziel dieses Praktikums war es erste Eindrücke vom Berufsleben zu bekommen. Während des Praktikums war meine Haupttätigkeit das Entwickeln von Apps für Android Geräte mit der IDE Android Studio. Damit verbunden spielten Teamarbeit sowie die Struktur von Projekten eine große Rolle. Neben Android Studio habe ich die Projektmanagementsoftware Redmine und den Git Clienten SourceTree benutzt. Neben der UI-Entwicklung habe habe ich ebenfalls Erfahrungen mit dem Automatischen Testen (z.B. Jenkins, Calabash, JUnit) und dem Einbinden verschiedener Bibliotheken (z.B. MobilAppTracker, Adjust, Upsight) gesammelt.

Anschließend bin ich für einen Monat als Freelancer in der Firma tätig gewesen und wurde im Oktober 2014 festeingestellt. Meine Haupttätigkeit hat sich zum Ende des Praktikums von der Entwicklung von Android Apps auf iOS Apps verlegt, welche ich mit der Xcode IDE entwickelt habe. Derzeit wechsel ich zwischen Android und iOS Entwicklung abhängig davon, für welche Plattform mehr Ressourcen benötigt werden.

Als eines der Beispielprojekte an dem ich mit entwickelt habe, kann ich das MMOG und Browsergame Travian von Travian Games nennen. Die Aufgabe von RockAByte und somit auch von mir war hierbei die Umsetzung des Browsergames als native Anwendung auf Android und iOS Devices. Die beiden Varianten der App stehen mittlerweile im Google Play Store und Apple App Store als Download zur verfügbar.

Bachelor of Science in Informatik

Neben meinem Praktikum bei der Firma RockAByte GmbH habe ich angefangen meine Bachelorarbeit in der Theoretischen Informatik bei Herrn Prof. Dr. Friedrich Otto zu schreiben. Am 12.09. habe ich dann meine Bachelorarbeit mit dem Titel Comparing two different classes of deterministic recognizable picture languages vor dem Colloquium der Theoretischen Informatik präsentiert und damit meine letzte Prüfung zum Bachelor of Science in Informatik mit der Gesamtnote 1.3 bestanden.

In dieser Arbeit habe ich, wie der Name schon verrät, zwei deterministische wiedererkennbare Bildsprachenfamilien miteinander verglichen. Die Motivation rührt daher, dass diese beiden Sprachfamilien den gleichen Namen bekommen haben, allerdings völlig unterschiedlich definiert wurden. Die eine Familie wurde über einen deterministischen Prozess (in der Arbeit als DREC abgekürzt) und die andere Sprache über einer speziellen Menge von Kacheln(in der Arbeit als Diag-DREC abgekürzt) definiert. Neben eine paar wenigen Abschlusseigenschaften konnte ich in der Arbeit zeigen, dass die Familie Diag-DREC eine echte Teilmenge der Familie DREC ist.

Bei Interesse kann hier meine Arbeit als PDF heruntergeladen werden.

Bachelorarbeit von David Kronenberger zum Downloaden

Erste Demo der “Spherical Engine”

tranform_demo

Unsere erste Demo zeigt unser GameObject handling.

Nachdem Richard Petersen und ich uns vor drei Jahren überlegt haben ein Spiel zu programmieren, mussten wir mit viel Geduld und Mühen feststellen, dass wir viel zu oft an die Grenzen des PC’s stoßen. Aus diesem Grund haben wir uns vor ungefähr eineinhalb Jahren überlegt eine Engine zu entwickeln und unseren Traum vom eigenen Spiel umsetzen zu können.

Die Grundlage der Engine ist fertig gestellt und ermöglicht eine einfache Verwaltung von einer großen Anzahl an Objekten in einer 3D-Szene. Mit verschiedene Techniken werden detaillierte Objekte nur in der Nähe angezeigt wohingegen grobe und große Objekte noch in weiter ferne erkennbar sind. Darüber hinaus gibt es die Möglichkeit, ein Objekt in den Hintergrund zu setzen, wie hier in dem Screenshot der Nachthimmel.

Die Game-Engine ist in Java geschrieben und verwendet die LWJGL-API für das Rendern mittels OpenGL. Nach dem Start mit OpenGL 1.0 basiert die Engine heute auf OpenGL 3.1 und ist auch nicht mehr abwärtskompatibel. Diese Entscheidung beruhte darauf, dass heute (so gut wie) jeder Computer mindestens OpenGL 3.3 unterstützt und dass mit der Version 3.1 einige Funktionen “deprecated” wurden, so zum Beispiel die Funktionen der Fixed-Pipeline. Entsprechend muss alles mit Shadern implementiert werden.

Heute können wir mit Stolz unsere erste Demo unserer Engine präsentieren. Diese erste Beispielszene soll die Funktionsweise der Transformation der Objekte, sowie deren Abhängigkeiten vorstellen. Die Objekte werden in Bäumen gespeichert. Durch Transformation eines Elternknotens werden von uns die Kindknoten ebenfalls entsprechend transformiert damit das Transformationsverhältnis von Eltern zu Kind beibehalten wird und nicht selbst berechnet werden muss. Gleichzeitig sind die Koordinaten der Kindknoten abhängig vom globalen Koordinatensystem und nicht vom Koordinatensystem der Elternknoten, damit trotz dieser Abhängigkeit jedes Objekt beliebig transformiert werden kann.

Projekt – zwei-dimensionale Sprachen

Zu Beginn des Sommersemesters habe ich zusammen mit Richard Petersen ein Projekt bei Herrn Prof. Dr. Friedrich Otto begonnen. In diesem Projekt ging es um eine Übersichtsarbeit über zwei-dimensionale Sprachen oder auch Bildsprachen genannt. Das Projekt sollte zur Vorarbeit und Themenfindung für die Bachelorarbeit dienen.

Während des Projektes haben wir uns in regelmäßigen Abständen getroffen um verschiedene Ansätze, um Bildsprachen zu akzeptieren bzw. zu erzeugen, zu präsentieren. Meine Hauptforschungsgebiete waren dabei verschiedene Automaten, wie beispielsweise Marker Automaten, On-line tesselation Automaten oder Sgraffito Automaten und deterministische Tilingsysteme, wie zum Beispiel der Sudoku deterministische prozess oder μ-directed Wang automata. Richard Petersen’s Schwerpunkt lag bei Grammatiken und regulären Ausdrücken.

RMS Relaunch

street_editorIm Fachgebiet technische Informatik der Universiät Kassel wurde die Simulationssoftware RMS-Fahrradwelt welche dem Benutzer die Mögichkeit gibt das Fahrrad fahren spielerisch zu erlernen. Diese Software ist in Schulen zum Einsatz gekommen um den Schülern Verkehrsregeln in wenigen Stunden bei zu bringen.

Damit die Lehrer ihre bisherigen Straßenkreuzungen und schwierigen Situation weiter verwenden können habe ich im Sommersemester 2013 zusammen mit Richard Petersen in der Veranstaltung  Advanced Game Programming mit Hilfe von Unity3D einen Straßeneditor gebaut, womit verschiedene Straßen, die mit Blender modelliert wurden, gezeichnet werden können und Kreuzungen selbstständig generiert werden. Meine Aufgabe war hier die Cursor Bedienung und die Erstellung der Benutzeroberfläche mit Hilfe von NGUI.

Dieses Tool soll in den nächsten Projektgruppen durch Ampeln und Schilder, sowie automatisierten Verkehr erweitert werden.