Das Projekt “Staubsaugerroboter” war eine Gruppenarbeit im Herbstsemester 2008. Dabei wurde die Steuerungssoftware für den Roboter mit dem “Lego Java Operating System” erstellt. Der Simulator wurde mit Java entwickelt.
Aufgabenstellung
Um die Aufgabenstellung zu erfüllen, musste ein Lego-Roboter, die dazugehörige Steuersoftware und einen Simulator erstellt werden. Dabei war das Ziel, dass der Roboter die ganze Fläche eines beliebigen Raumes in möglichst kurzer Zeit reinigt. Die Simulation sollte das gleiche Verhalten zeigen wie der Lego-Roboter.
Die Simulation hatte folgende Kriterien:
Visualisierung der Fläche und des Roboters (Roboter färbt die gefahrene Fläche)
Schnittstelle für Statistiken (Ausgabe der Fläche pro Zeit im CSV-Format)
2-3 Bewegungsstrategien (Brown‘sche Bewegung, Random Walk, Parallelfahrt)
Simulation und Roboter sollen das gleiche physikalische Verhalten zeigen (Distanz, Geschwindigkeit (Dreh usw.), Ablaufgeschwindigkeit einstellbar)
Mercury/32 Webadmin ist eine Weboberfläche die das Administrieren des Mercury/32 Mailserver vereinfacht. Die Weboberfläche ermöglicht das Erstellen und Modifizieren von Domains, Domain-Mailboxen, Benutzer, Aliases, Logins, Forwards sowie die Konfiguration des POP3-Abholdienstes und der Autoresponder. Somit ergänzt die Webapplikation den Mercury/32 um die Möglichkeit, diesen über das Internet zu administrieren, was sonst leider nur mit Hilfe von VNC oder Remotedesktop möglich wäre. Mit Hilfe von Webadmin ist ein Domainbesitzer auch in der Lage seine Benutzer (Logins, Aliases usw.) selber zu verwalten. Dabei kann der Administrator festlegen, wie viele Logins und Aliases durch den Domaininhaber erfasst werden dürfen.
Die Webapplikation ist bis heute im produktiven Einsatz und Verwaltet über 250 Domains, sowie ein paar Tausend Logins und Aliases.
Weitere Funktionen:
Generieren eines PDF mit allen Benutzer einer Domain und den Einstellungen für die Mail-Clients
Sperren eines Accounts
Spam E-mail Benachrichtigung verschicken
Anzeigen der Mailserver Statistiken
Email Klassierung – Verwalten von Spam-Nachrichten
Mehrsprachig
Technisches
Die Applikation wurde in PHP entwickelt und verwendet das PHP Framework Solar für die Datenbankanbindung. Als Template-Engine wird vlibTemplate benutzt. Im Hintergrund ist eine MySQL Datenbank, welche die Konfiguration speichert, bevor diese auf dem Server aktualisiert wird.
Wird Mercury/32 mit dem popfiled Daemon verwendet, bietet Webadmin eine Oberfläche an, bei der jeder Benutzer die gefilterten Spam-Nachrichten online anschauen kann und sollte mal eine Nachricht nicht richtig eingestuft worden sein, kann der Benutzer die Einstufung ändern.
Ein weiterer unterstützter Daemon, der mit Hilfe von Webadmin konfiguriert werden kann, ist MercFwd. Dieser Daemon leitet sämtliche Emails einer Domain zu einem anderen Server weiter.
Beim Durchstöbern von alten Datenträgern bin ich auf ein paar Visual Basic Projekte gestossen. Hier eine kleine Auswahl der erstellten Applikationen:
Aufgaben aus dem 2. Ausbildungsjahr zum Informatiker – mit Visual Basic 4 erstellt
Lichtampelsteuerung
Es sollte eine Simulation einer Lichtampelsteuerung erstellt werden, welche automatisch die Ampeln ansteuert oder aber durchs manuelle Eingreifen bedient werden konnte. Wenn die Fahrspuren auf der Hauptstrasse (horizontal) freie fahrt haben, so sind die Fussgängerampeln auf der Nebenstrasse auf grün. Dabei wird für abbiegende Fahrzeuge auch signalisiert, dass die Fussgängerampeln auf Grün stehen.
Softeisautomat
Die Implementation eines Klassikers durfte natürlich auch nicht fehlen. So entstand der Softeisautomat, bei dem der Käufer seine Eissorte und die Grösse der Waffeln wählen kann. Dabei werden mit Drag & Drop die Münzen in den Automaten geworfen. Bezahlt der Kunde zuviel, so erhält er Wechselgeld.
Private Projekte – mit Visual Basic 5 realisiert
BrainNick
Wer sich öfters mal mit der Online-Kommunkation im Internet beschäftigt, weiss das es viele Möglichkeiten zum Kommunizieren gibt. Von online Chat’s über Chat-Clients, wie der Klassiker ICQ, überall gibt es so genannte Nicknames. Nicknames sind die Spitznamen, welche den User in der Online-Kommunikation identifizieren. Wie bei realen Namen kann es also dazu führen, dass man sich nicht mehr alle Nicknames behalten kann. Und hier hilft die Applikation “BrainNick” die Online-Kontakte zu verwalten.
Weitere Funktionen:
importieren und exportieren von Adressen im “Netscape Messanger *.ldif” Format
Datenbank über das Internet synchronisieren
Geburtstags – Reminder
integrierter Browser
Drucken von Listen
Lcase
Ein praktisches Tool das bei allen HTML-Dateien im gewähltem Verzeichnis, die Dateinamen in Kleinschreibung umwandelt. Beispiel: Wandelt den Namen der Datei “BIG.Html” nach “big.html” um. Eine weitere Funktion ändert den Inhalt der HTML-Dateien in Kleinschrift.
Lucky Seven
Beim Spiel “Lucky Seven” gewinnt, wer im richtigen Moment den Automaten stoppt und dieser dann eine oder mehrere 7 anzeigt (maximal 3). Hier im Screenshot sieht man, dass der Spieler 3 Einsätze gemacht hat und schon beim 3ten mal sein Glück gefunden hat. Daher ist die Quote: 33.3 %
NCS ist eine Applikation die für den Einsatz im Pflanzencenter Fehr entwickelt wurde. Hauptaufgaben dieser Applikation sind das Verwalten des Kundenstammes, erstellen von Bestellungen, Rechnungen, Lieferscheinen und Mahnungen sowie das Anzeigen einer Umsatzstatistik.
Technologie
Die Entwicklung der Applikation wurde mit Visual Basic 5 gestartet und später mit Visual Basic 6 fortgeführt. Die Applikation ist nach dem “Three-Tier Architecture Model” von Microsoft realisiert und umfasst so 3 Ebenen:
presentation tier: das GUI welches die Daten dem Benutzer anzeigt, jedoch keine Geschäftslogik implementiert hat
middle tier: eine COM+ Komponente, welche sämtliche Geschäftslogik enthält
data tier: der Datenbank, welche die Daten und “stored procedures” für die Datenmanipulation enthält
In der Anfangsphase lief die COM+ Komponente unter MTS und als Datenbank wurde SQL-Server 2000 eingesetzt. Im Laufe der Zeit entstand auch die Einzelplatzversion, bei der als Datenbank eine Access DB eingesetzt wird.
Die Fussgänger-Simulation ist während dem Modul “Paralleles Rechnen”, im Herbstsemester 2009, in einer Gruppenarbeit entstanden.
Beschreibung
Es soll eine parallelisierbare Simulation einer fiktiven zweidimensionalen Welt von Fussgängern erstellt werden. Alle Fussgänger – wir wollen sie Agenten nennen – haben ein Ziel, das sie zu einer bestimmten Zeit erreichen möchten. Sie versuchen dies grundsätzlich so einfach wie möglich, d.h. durch eine gradlinige Folge von Schritten zu tun. Wir wollen annehmen, dass jeder Agent pro Sekunde genau einen Schritt in eine beliebige Richtung tun kann. Die Schrittweite ist (in Grenzen) frei und kann auch Null sein.
Vorgehen
Zuerst wurde eine Ein-Prozessor Fussgängerwelt erstellt, welche dann mit dem Framework MPI erweitert wurde, so dass die Applikation auf mehreren Rechnern lauffähig ist und auf jedem Rechner eine eigene Fussgängerwelt abbildet. Die Fussgänger können die Grenzen zwischen den einzelnen Welten (Rechner) überschreiten und die grenznahen Fussgänger nehmen auch Grenzgänger der Nachbarswelt wahr (near-collision detection). Begegnen sich zwei Fussgänger auf ihrem Weg ins Ziel und erkennen eine mögliche Kollision, dann weichen sie einander aus.
Gomoku ist der japanische Name für das Spiel “Fünf in einer Reihe”. Dabei handelt es sich um ein einfaches Strategiespiel, das oft mit Papier und Bleistift gespielt wird. Dabei versuchen die beiden Spieler eine Reihe mit 5 Kreisen / Kreuzen zu erstellen. Wer zuerst eine durchgehende Linie mit 5 Elementen hat, gewinnt das Spiel. Mit diesem einfachem Java-Applet können 2 Spieler gegeneinander, auf einer modernen oder klassischen Oberfläche, spielen. Dieses Java-Applet wurde beim Erlernen von Java, im Jahre 2007, in Zusammenarbeit mit H. Gut erstellt.
Die Zählung von Personen, die ein Gebäude oder Fahrzeug betreten, wird oft von Hand gemacht. Dazu braucht es zusätzliches Personal, welches mit Hilfe eines Handstückzählers die Personen zählt. Oft werden auch mechanische Zähler wie Drehtore eingesetzt, diese Massnahme kann jedoch zu Stau im Eingangsbereich führen. Eine sinnvolle Alternative zu diesen Methoden ist das visuelle Zählen mit einer Kamera.
Zielsetzung
Das Ziel der Bachelor-Thesis (2010/2011) war das Erstellen einer Applikation, welche mit Hilfe einer Kamera die an der Decke montiert ist, Personen zählen kann. Die Applikation soll in der Lage sein, zu unterscheiden ob eine Person den überwachten Bereich betritt oder verlässt. Dazu wird vor der Zählung der Erfassungsbereich im Bild festgelegt und definiert wo sich Ein- und Ausgang befinden.
Anwendungsgebiete
Diese Anwendung kann vielseitig eingesetzt werden, sei es im Sicherheitsbereich bei dem es darum geht sicherzustellen, dass sich nicht zu viele Personen in einem Gebäude / Fahrzeug befinden oder im Businessbereich um Besucherstatistiken zu erstellen. Diese Informationen können dann für Marketingzwecke oder die Personalplanung verwendet werden.
Lösungsansatz
Die Applikation unterstützt 3 Arten von Video-Inputs. Es ist möglich die Bilder über eine USB-Kamera, einer Axis Netzwerkkamera oder einer Filmdatei zu beziehen. Die Detektion von Personen erfolgt dann durch eine adaptive Hintergrundsubtraktion. Kurz es wird die Differenz eines Referenzbildes mit dem aktuelle Bild berechnet. Danach werden die dadurch detektierten Objekte von Bild zu Bild verfolgt und beim übertreten der definierten Zählerlinie gezählt. Damit diese Detektion funktioniert, kann die Applikation mit Hilfe von verschiedenen Parametern an die Umgebung und die Lichtverhältnisse angepasst werden.
Technisches
Da die Verarbeitung von Videoaufnahmen ein rechenintensiver Prozess ist, wurde die ganze Applikation mit der Programmiersprache C++ entwickelt. So entsteht kein unnötiger Ressourcenverbrauch wie dies bei Java oder C#, wegen der Laufzeitumgebung, der Fall wäre. Damit das Programm auf verschiedenen Betriebssystemen lauffähig ist, wurde das GUI mit dem Framework QT4 entwickelt. Dies ermöglicht es die Applikation spezifisch für die verschiedenen Betriebssysteme zu kompilieren und damit die Verwendung unter Windows, Unix/Linux (mit X – Windows System) sowie Mac OS X. Die Verarbeitung der Videodaten, sei dies aus einer Filmdatei oder aber von einer USB-Kamera, wurde mit dem Framework OpenCV realisiert. Das Framework OpenCV unterstützt die Programmierung mit sehr vielen effizienten Algorithmen im Bereich der Bildverarbeitung.