Spiele Gruppe (Mathesis Labor WS 2012/13)

Hello World

Team: Benedikt, Timo

Wir beide haben uns im Rahmen des Mathesis Labors dazu entschieden an der Entwicklung eines Spiels zu arbeiten. Dies machen wir mit Hilfe der Programmiersprache Python -inbesondere Pygame, das durch die Möglichekti der Entwicklung von Sprites besonders dafür geeignet ist.

1. Unser Ziel

Am ende der Semesterveranstaltung möchten wir ein Spiel eigens programmiert haben (abgeschaut inspiriert von ‘Asteroids’). Im besten Fall haben wir es bis dahin so weit optimiert, dass es auch wirklich Spaß bringt. Falls wir nicht dazu kommen, könnte man sich das ja im nächsten Semester als Ziel setzen.

2. Arbeitweise und bisheriger Fortschritt

Bisher haben wir sehr viel mit vorprogrammierten Beispielen gearbeitet, an denen wir die uns (zu Beginn des Projekts) relativ unbekannte Programmiersprache Python und bestimmte Befehle von Pygame aneignen konnten. (eventuelle bisher verwendet Links später hier einfügen’) Wir sollten bis jetzt genug über Sprites, die Update-Methode, etc. (‘später code zeilen einfügen’) gelernt, um nun mit den Arbeiten an unserem eigentlichen Programm beginnen zu können, bzw. über Copy&Paste der Beispiele hinaus zu arbeiten.

-to be continued-

Robotik-Gruppe (Mathesis Labor WS_2012)

Team: Tom, Martin, Lukas

Unser Ziel für dieses Semester ist es, einen Wagen zu bauen der ein in zwei Richtungen bewegliches Pendel in aufrechter Position balancieren kann.

Für die Konstruktion benutzen wir Lego Mindstorms. Um uns mit der Regelungstechnik und dem Programm NXC(Not_eXactlyC) vertraut zu machen, setzen wir uns ersteinmal kleinere Ziele.

1. Problem

Zunächst beschäftigen wir uns mit folgender Aufgabe, um NXC kennen zu lernen: Ein Roboter auf Rädern ausgestattet mit einem Lichtempfindlichen Sensor soll einer Schwarzen Linie (ca. 4cm breit) auf dem Boden folgen. Der Sensor gibt einen Wert zwischen 1 und 100 zurück wobei wir einen Wert <50 als Schwarz und >50 als Weiß interpretieren.

2.  Ansatz

Die Idee ist, dasa der Roboter(Rob) sich an einem Rand entlang bewegt und bspw. wenn er auf Schwarz ist, immer leicht nach links steuert, wenn er auf weiß ist, immer leicht nach rechts, und so immer auf der linie bleibt.

Nach einigen Versuchen haben wir festgestellt, dass wir, sobald die Geschwindigkeit richtig eingestellt ist, ein Problem mit dem Neigungswinkel bei den Kurven bekommen haben.

Fährt Rob nun nämlich eine steile Außenkurve, so braucht er sehr lange, um wieder auf die Linie zurück zu kommen. Um diesem vorzubeugen ist in dem Skript unten  ein Ansatz umgesetzt; je länger sich Rob entweder auf Schwarzen oder weißem Untergrund befindet, desto enger wird die Kurve, die er fährt.

3.   Ergebnis

Den im Beispielvideo zu sehenden Parcour haben unsere Roboter an der Außenkante entlang bewältigt. Auf der Innenseite ist eine Kurve, die mit unserem Ansatz so nicht zu lösen war. Zumindest nicht bei einer zufriedenstellenden Geschwindigkeit.

 

task main()

{
int r=25;
int l=-25;

SetSensorLight(S3);
int b=Sensor(S3);
NumOut(0,LCD_LINE1,b);

until(b<50){
   OnFwd(OUT_BC,60);
   b=Sensor(S3);
   NumOut(0,LCD_LINE1,b);
}

repeat(999999){
   b=Sensor(S3);

   if(b<50){
      b=Sensor(S3);
     NumOut(0,LCD_LINE1,b);
     OnFwdSync(OUT_BC,50,l);
     Wait(50);
     l=l-2;
     r=25;
   }

   else{
     b=Sensor(S3);
     NumOut(0,LCD_LINE1,b);
     OnFwdSync(OUT_BC,50,r);
     Wait(50);
     r=r+2;
     l=-25;
   }
}

}

Beispielvideo:

MVI_0001

 

20.12.2012