A. Virtuelle Welten Worum geht es? Raytracing ist eine Methode zur Erzeugung realistischer dreidimensionaler Darstellungen von einzelnen Objekten und ganzen Szenen. Grundlage dafür ist eine Beschreibung der Anordnung von Objekten, Lichtquellen und Kameras sowie des umgebenden Raumes (z. B. Nebel); diese Beschreibung wird dann durch ein automatisches Verfahren (hier das Programm POVRAY) zur Berechnung eines Bildes oder einer Bildfolge (Trickfilm) verwendet. Die Beschreibung erfolgt in einer Sprache, die als Programmiersprache (zum Erstellen eben jener Welten) bezeichnet werden kann. Was wollen wir machen? In der Gruppe sollen neben den Grundlagen von Raytracing besonders die dafür verwendeten Beschreibungsmethoden betrachtet werden. Diese bieten neue Ansätze zum Verständnis des Prinzips der Rekursion, einer fundamentalen Methode der Informatik. Natürlich kommt auch der Spaß nicht zu kurz, denn wo sonst hat man die Möglichkeit, die Welt so zu gestalten, wie man/frau es möchte!? • Die Erklärung des Prinzips "Raytracing". • Die Vorstellung von POVRAY (Persistence of Vision Raytracer), einem Public-Domain-Raytracer. • Eine Einführung in die Beschreibungssprache; die Beschreibung einfacher und zusammengesetzter Objekte sowie einfacher Szenen. • Rekursion als Prinzip in der Informatik und die Verwendung von Rekursion zur Beschreibung von komplexen Objekten. Java- bzw. Programmierkenntnisse: keine B. Fraktale Worum geht es? Fraktale sind geometrische Objekte, die nach speziellen Regeln erzeugt werden und oft ein interessantes, manchmal sogar ein naturähnliches Aussehen haben. Die beiden Bilder zeigen einen Ausschnitt aus der Mandelbrot-Menge (dem sogenannten "Apfelmännchen") und ein mit Hilfe eines sogenannten Iterierten Funktionssystems erzeugtes Farnblatt. Was wollen wir machen? Im Sommercamp interessieren wir uns weniger für die mathematischen Hintergründe der Fraktale als dafür, wie man die bekannten Generierungsregeln in ein Programm umsetzt, um die Fraktale graphisch darstellen zu können. Als Programmiersprache wollen wir funktionale Sprache Haskell verwenden. Das Apfelmännchen wird erzeugt, indem man für jeden Punkt eines Ausschnittes der Ebene die Anzahl der Anwendungen einer Funktion zählt, nach denen der Wert einen zulässigen Bereich überschreitet. Diese Anzahl bestimmt die Farbe des Punktes. Das Farnblatt erhält man durch Springen in der zweidimensionalen Ebene von einem Punkt zum anderen und Färben der erreichten Punkte. Das Springen wird mittels einer zufälligen Auswahl aus einer Reihe möglicher Sprungfunktionen gesteuert. Informatik Sommercamp 2009 - Projekte Java- bzw. Programmierkenntnisse: Keine Java-Kenntnisse notwendig; wichtig ist Interesse an Mathematik oder Programmiersprachen. C. jRobots Worum geht es? Bei jRobots entwickeln die Projektteilnehmer einen Steuerungsalgorithmus für einen Java-Bot. Ziel ist es, den eigenen Bot mit ausgefeilter künstlicher Intelligenz auszustatten, so dass er sich gegen die Bots der anderen Teilnehmer im Wettkampf durchsetzen kann. Ablauf 1. Die Woche beginnt mit einer Einführung in die objektorientierte Welt von Java. Auch werden geometrische Grundlagen aufgefrischt, die für Wegberechnung und Zielerfassung später wichtig sind. 2. Nachdem die Kontrollen des jRobots erklärt sind, dürfen die Teilnehmer -in Teams aufgeteilt- ihre ersten Prototypen bauen, die sie immer weiter verfeinern werden. 3. Während die Teams bisher unabhängig voneinander Steuerungen entwickelt haben, werden sie am Ende der Woche erstmalig im Wettbewerb auf großer Leinwand gegeneinander antreten. Für die Abschlussveranstaltung ist geplant, alle Teilnehmerbots auf einmal gegeneinander antreten zu lassen. Java- bzw. Programmierkenntnisse: Grundkenntnisse in Java D. Wearable Computing In diesem Projekt wird mit kleinen, am Körper tragbaren Computern, HeadMounted Displays und diversen Sensoren experimentiert. Das Ziel ist es, ein MixedReality Computerspiel zu realisieren, in dem mehrere Spieler unterstützt durch die Wearable Computing Technologie gegeneinander antreten können. Voraussetzungen: Kenntnis in einer Programmiersprache wie Java oder C++. Java- bzw. Programmierkenntnisse: Grundlagen in Java oder C++ E. Überwachungskameras mit Bewegungserkennung Worum geht es? Ziel dieses Projektes soll es sein, eine handelsübliche Webcam über das Java Media Framework anzusprechen und in einer Serverkomponente eine primitive Bewegungserkennung durchzuführen. Wenn eine Bewegung erkannt wurde soll ein Client, der mit der Serverkomponente über ein Netzwerk (z.B. das Internet) in Verbindung steht, alarmiert werden. Für die Anbindung/Kommunikation zwischen Client und Server soll das Java Remote Method Invocation (RMI) Framework eingesetzt werden. Für die Ausgabe der Alarmmeldung auf Clientseite als auch für Informatik Sommercamp 2009 - Projekte die Steuerung und Anpassung der Bewegungserkennung auf Serverseite wird eine einfache Java Swing GUI zur Visualisierung eingesetzt. Die Teilnehmer sollen in diesem Projekt: • • • Die Grundlagen der Java-Programmierung erlernen Das Kennen lernen von vorgefertigten Frameworks in Java (JMF und RMI) Grundlagen der Bewegungserkennung und Bilddaten Verarbeitung und Manipulation Java- bzw. Programmierkenntnisse: Grundlagen F. Roboterhunde Die Aufgabe dieser Projektgruppe ist es, den Roboterhund Aibo zur Musik tanzen zu lassen. Dies erfordert die Erstellung und Zusammensetzung von Bewegungssequenzen, insbesondere die Synchronisierung der einzelnen Sensoren und Aktoren des Hundes im Einklang mit der Musik. Nach einer Einführung in die Roboterhundehardware sollen in der Beschreibungssprache URBI ( www.gostai.com/aibo.html) die einzelnen Sensoren und Aktoren des Hundes gesteuert werden können. Dazu gehören neben den sichtbaren Gelenken auch die unsichtbaren Sensoren wie Beschleunigungs- und Abstandsmesser, sowie diverse Lichtdioden (Gesicht des Hundes). Am letzten Tag heißt es dann: Bühne frei für Aibo! Die einzelnen Roboterhundeteams treten in einem Dance Contest gegeneinander an. Die Sieger dürfen dann ihr Können in der Abschlussveranstaltung vor allen Sommercamp-TeilnehmerInnen präsentieren. Java- bzw. Programmierkenntnisse: keine Die Ergebnisse des diesjährigen Sommercamps 2008 sind auf der finden. Aibo Seite zu G. Lego Mindstorms "Lego" ist wohl jedem noch ein Begriff - fast jeder hat in seiner Kindheit das eine oder andere damit gebaut, damit gespielt oder sogar damit entdeckt. Doch mit einem Rechner und Lego Mindstorms(R) RCX kann man mit Lego noch viel mehr machen! Wir werden in diesem Kurs Fahrzeuge bauen, diese mit Motoren und Sensoren bestuecken und dann in einer Java-Variante so programmieren, dass sie autonom (ohne manuelles Eingreifen der Bauer/Programmierer) gewisse Aufgaben erfüllen koennen. Lernen werdet ihr, wie man ein autonomes System programmiert und einige Techniken um dies moeglichst einfach zu erreichen. Am Ende steht dann ein (interner) Wettbewerb, der ermitteln wird, welches der Fahrzeuge mit Programmierung besonders gut war. Vielleicht kramt ihr ja, nach den hier gemachten Erfahrungen, dann die Kiste mit eurem Lego wieder heraus?! ;-) Programmierkentnisse: wenig Informatik Sommercamp 2009 - Projekte H. Trailblazer In diesem Projekt wollen wir das Spiel Trailblazer mit einer Java 3D Engine nachprogrammieren. Wenn das Spiel soweit läuft, werden wir zusätzlich zur Steuerung mit der Tastatur eine Steuerung über Drucksensoren in einer Tanzmatte realisieren. Java- bzw. Programmierkenntnisse: Grundkenntnisse in Java I. Zählen von Münzen Im Rahmen des Projekts "Zählen von Münzen" soll eine automatische Zählmaschine für Münzen realisiert werden. Dabei soll zunächst nicht der Wert, sondern nur die Anzahl der Münzen bestimmt werden. In einem ersten Schritt wird ausgehend von der gegebenen Hardware (Kamera, Beleuchtung, Rechner, Kamerabefestigungsmodule) der beste Aufbau eines solchen Bildverarbeitungssystem diskutiert und realisiert. Für die anschliessende Auswertung der so gewonnenen Bilder wird ein Javagerüst zu Verfügung gestellt, in dem die zu entwickelnde Software integriert wird. Steht noch Zeit zur Verfügung, so soll noch ein Algorithmus zur Bestimmung des Wertes der Münzen entwickelt werden. Als Vorführung zur Abschlussveranstaltung ist eine Livedemo geplant. Programmierkenntnisse (inkl. Java): Grundlagen Informatik Sommercamp 2009 - Projekte