‹ Zur Startseite

Software-Projekte

Tools

Taps

Taps ist eine in HTML/JS geschriebene Webapp, um Dinge zu zählen, wie etwa die Anzahl der Personen, die einen Raum betreten und verlassen, oder auch die vom Dozenten verwendeten Füllwörter. Im Gegensatz zu den vielen Counter-Apps in den Appstores speichert Taps auch die Zeitpunkte der einzelnen Zähl-Ereignisse und ermöglicht so weitergehende Analysen.

Zur persistenten Speicherung der Daten wird das LocalStorage-API verwendet, der Export der Daten in CSV und JSON ist durch ein Blob-DOMObject realisiert. So können alle Daten lokal verarbeitet werden, ein Webserver ist nur zum initialen Laden von Taps nötig. Weiterhin passt sich das Design responsiv an Bildschirmgröße und -format an; die Bedienung mit Tastatur wird ebenfalls unterstützt.

Der Quellcode ist auf GitHub zu finden, zur Verwendung: Taps aufrufen.

Scripts

Weitere Tools, insbesondere Shell-Scripts sind auf der Technik-Seite zu finden.

Libraries

Listselect.js

Listselect.js ist ein schlankes jQuery-Plugin, um Auswahllisten auf Websites zu realisieren. Es unterstützt Maus- und Tastatur-Bedienung und bildet damit die z.B. aus Dateibrowsern bekannte Mehrfach-Auswahl mit Strg- und Shift-Taste nach.

Der Zustand der Liste wird vollständig durch (konfigurierbare) CSS-Klassen abgebildet und kann somit durch entsprechende Style-Definitionen einfach visualisiert werden. Für die Anbindung an eine Javascript-Anwendung können Callback-Funktionen hinterlegt werden.

Listselect.js kann von GitHub bezogen werden und unterliegt der MIT-Lizenz.

Sightly Robot

Im Wintersemester 2015/16 habe ich für die Pflichtveranstaltung Software-Projekt (SWP) der Leibniz Universität Hannover in einem Team von Informatik-Studenten ein Demonstrations-Spiel entwickelt, in dem sich reale Roboter auf einem projezierten Spielfeld bewegen und virtuelle Rohstoffe einsammeln um Punkte zu erhalten. Die Roboter werden durch einen Algorithmus gesteuert und können gegen andere Hardware-Roboter oder virtuelle (aufs Spielfeld projezierte) Roboter an.

+ Features

Als Hardware-Roboter kommt die auf dem Raspberry Pi basierende Roboter-Plattform Pi2Go zum Einsatz. Die verschiedenen Software-Komponenten zur Projektion und Steuerung der Roboter kommunizieren über das Netzwerk-Protokoll MQTT. Dabei ist ein komplexes Protokoll notwendig, um Felder des Spielfelds zu reservieren und so Kollisionen der unabhängig agierenden Roboter zu verhindern. In der Implementierung meines Teams, die den Namen »Sightly Robot« trägt, sind auch alle weiteren Komponenten, wie der Spiel-Server, der die vorhandenen Ressourcen und Punktestände verwaltet, und virtuelle Roboter, ebenfalls über MQTT angebunden und können somit auf verschiedenen Computern ausgeführt werden.

»Sightly Robot« verwendet zur Darstellung des Spielfelds die Grafik-Bibliothek libGDX. Dafür sind mehrere Themes verfügbar, die z.B. eine Graslandschaft mit Blumen, dunklen Boden mit Pilzen oder eine abstrakt-futuristische Strategie-Karte. Die Kontroll-Oberfläche wurde mit Apache Pivot und dient zum Laden der Map, Initialisieren der Roboter, Starten, Stoppen und Überwachen des Spiels, sowie zur Konfiguration der verbundenen Visualisierungs-Oberflächen.

Als zusätzliches Feature wählt die Software eindeutige Namen und Farben zur Identifikation der Roboter aus. Die Hardware-Roboter verwenden ihre LEDs, um auf Wunsch ihre Farbe anzuzeigen oder die Scheinwerfer und Blinker eines Fahrzeugs zu simulieren. Weiterhin existiert eine Android-App, die sich über MQTT mit dem System verbindet und die Kontrolle über einen der Roboter übernehmen kann.

Der gesamte Quellcode ist auf GitHub zu finden, die Lizenz kann, obwohl dort nicht angegeben, als MIT-Lizenz angenommen werden.

+ Video

LEGO-Segway

Im Rahmen des Hardware-Praktikums im Wintersemester 2014/15 musste ich gemeinsam mit drei Kommilitonen beim Miniprojekt Mobile Serviceroboter einen LEGO-Mindstorms-Roboter konstruieren und programmieren, der auf zwei Rädern balancieren und auf diese Weise einen Parcours durchqueren und einen Ball abliefern kann.

Als Basis kam der damals aktuelle LEGO-Roboter EV3 zum Einsatz, der mit der alternativen Software LeJos betrieben und programmiert wurde.

Eine ausführliche Dokumentation habe ich im Neologismus 02/2015 veröffentlicht. Unten sind einige Fotos und ein Video von einem erfolgreichen und zahlreichen fehlgeschlagenen Versuchen zu sehen. Bei Interesse am verwendeten Code kann gerne Kontakt mit mir aufgenommen werden.

+ Fotos

+ Video

Hardware-Projekte

LED-Tisch

Gemeinsam mit Arjun Sarin habe ich nach dem Vorbild von Mario Lukas zwei LED-Tische gebaut. Die Tische basieren auf einem LACK Beistelltisch von IKEA, in dessen obere Platte eine LED-Matrix mit 12x12 Pixeln eingelassen ist, wobei jede LED einzeln ansteuerbar ist.

Als LEDs kommen Streifen von digitalen RGB-LEDs mit WS2811-Chip zum Einsatz. Diese werden über Zuleitungen an 4 Stellen von einem unter dem Tisch verbauten 50W-Netzteil mit Strom versorgt. Ein Teensy Microcontroller schickt über einen Pegelshifter-IC zwei Steuersignale, um jeweils eine Hälfte der Matrix anzusteuern. Auf der Steuerplatine ist zudem ein HC05-Bluetooth-Modul verbaut, sodass später Befehle vom Computer oder Android-Handys an den Tisch gesendet werden können.

Die Software für den Controller bildet Matrix-Koordinaten auf die durchnummerierten LEDs ab und verwendet dann wahlweise die FastLED-Library oder die OctoWS2811-Library, um die LEDs anzusteuern. So können verschiedene Programme intern abstrahiert in Koordinaten auf die Matrix zugreifen. Bislang sind nur verschiedene Show-Programme, wie bewegte Farbübergänge und sich ausbreitende "Lichtwellen" implementiert, prinzipiell sollen aber später auch Spiele (wie TETRIS oder Snake) auf dem Tisch funktionieren.

+ Fotos