Benutzer-Werkzeuge

Webseiten-Werkzeuge


projektews2013:lagemaro:start:fnfsn

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
projektews2013:lagemaro:start:fnfsn [2014/03/07 19:16]
philippkueckes
projektews2013:lagemaro:start:fnfsn [2016/01/21 12:45] (aktuell)
Zeile 1: Zeile 1:
-<file C++ Robo_Läuft.ino>+<file C++ figuren_nachfahren_fernsteuerung_sendet_nicht.ino> 
 + 
 +import diewald_PS3.PS3;​ 
 +import diewald_PS3.constants.*;​ 
 +import diewald_PS3.logger.PS3Logger;​ 
 +import oscP5.*; 
 +import netP5.*; 
 +import java.awt.Color;​ 
 +OscP5 oscP5; 
 +Fernsteuerung fernsteuerer;​ 
 +Bildanalysator farbPunktFinder;​ 
 +Umgebungswertschaetzer wertschaetzer;​ 
 +Routenplaner routenplaner;​ 
 +Navigator navigator;​ 
 +NetAddress myRemoteLocation;​ 
 +PS3 ps3; 
 +PImage img; 
 + 
 +//​deklarierung einiger Variablen 
 +int toleranz=15;​ 
 +//Größe des auf dem Monitor erscheinenden Bildes 
 +int size_x = 640; 
 +int size_y = 480; 
 +//Damit wird das Farbsystem nach dem die Punkte gesucht werden festgelegt. (1 für HSV sonst rgb) 
 +int auswahl=2;​ 
 +//Gibt an der wie vielte Punkt der Route angefahren wird 
 +int zaehler = 0; 
 +//Das Aufzeichnen der Route fängt erst an wenn diese Variable auf false gesetzt wird 
 +boolean stop = true; 
 +// die fernsteuerung kann gestarted werden, indem diese Variable auf true gesetzt wird 
 +boolean fernsteuerung = false; 
 +boolean kalibrierung = false; 
 +int stift = 1; 
 + 
 +// "​class"​ definiert einen neuen typen (sowas wie int oder float) 
 + 
 + 
 + 
 +public void setup() { 
 +  //die Geschwindigkeit mit der die Bilder neu geladen werden wird festgelegt 
 +  frameRate(20);​ 
 +  //die Objekte werden definiert 
 +  farbPunktFinder = new Bildanalysator();​ 
 +  fernsteuerer= new Fernsteuerung();​ 
 +  routenplaner = new Routenplaner();​ 
 +  navigator = new Navigator();​ 
 +  wertschaetzer = new Umgebungswertschaetzer();​ 
 +  oscP5 = new OscP5(this, 12000); 
 +  // die IP-adresse des Arduinos muss ausgewählt werden 
 +  myRemoteLocation = new NetAddress("​192.168.0.102",​ 8000); 
 +  PS3Logger.TYPE.DEBUG ​ .active(true);​ 
 +  PS3Logger.TYPE.ERROR ​ .active(true);​ 
 +  PS3Logger.TYPE.INFO ​  ​.active(true);​ 
 +  PS3Logger.TYPE.WARNING.active(true);​ 
 + 
 +  size(size_x,​ size_y); 
 + 
 +  println("​PS3.getCameraCount() = " + PS3.getCameraCount());​ 
 + 
 +  ps3 = PS3.create( 0 ); 
 +  ps3.init(VIDEO_MODE.VGA,​ COLOR_MODE.COLOR_PROCESSED,​ 60); 
 +  ps3.start();​ 
 +  ps3.setLed(true);​ 
 +  img = createImage(ps3.getWidth(),​ ps3.getHeight(),​ ARGB); 
 +  // die Kameraeinstellungen werden festgelegt 
 +  ps3.setParameter(PS3_PARAM.EXPOSURE,​ 20); 
 +  delay(10);​ 
 +  ps3.setParameter(PS3_PARAM.GAIN,​ 5);   
 +  delay(10);​ 
 +  ps3.setParameter(PS3_PARAM.WHITEBALANCE_BLUE,​ 80); 
 +  delay(10);​ 
 +  ps3.setParameter(PS3_PARAM.WHITEBALANCE_RED,​ 150); 
 +  delay(10);​ 
 +  ps3.setParameter(PS3_PARAM.WHITEBALANCE_GREEN,​ 150); 
 +  delay(10);​ 
 +// die automatische Korrektur wird ausgeschaltet 
 +  ps3.setParameter(PS3_PARAM.AUTO_WHITEBALANCE,​ 0); 
 +  delay(10);​ 
 +  ps3.setParameter(PS3_PARAM.AUTO_EXPOSURE,​ 0); 
 +  delay(10);​ 
 +  ps3.setParameter(PS3_PARAM.AUTO_GAIN,​ 0); 
 +  delay(10);​ 
 +
 + 
 +public void draw() { 
 +  //holt das aktuelle Bild von der Kamera und speichert es in img ab 
 +    assignPixels(ps3,​ img); 
 +    //malt das Bild 
 +    image(img, 0, 0); 
 +    img.loadPixels();​ 
 +    wertschaetzer.schaetzeUmgebungswert(img);​ 
 +  if (kalibrierung == false) { 
 +    farbPunktFinder.kalibriereFarben(img);​ 
 +  } 
 +  else if (fernsteuerung == true) { 
 +    fernsteuerer.steuere();​ 
 +  } 
 +  else { 
 +    //Wenn eine Taste gedrückt wird, wird geprüft ob es  
 +    if (keyPressed==true) { 
 +      if (key =='​k'​) { 
 +        //wenn die Taste k gedrückt wurde, kommt man wieder in die Kalibrierungsschleife 
 +        kalibrierung=false;​ 
 +      } 
 +      if (key =='​n'​) { 
 +        //wenn die Taste n gedrückt wurde, werden die bisher gespeicherten Punkte gelöscht 
 +        routenplaner.loescheRoute (true); 
 +        //Das Abfahren der Route beginnt wieder am ersten Punkt 
 +        zaehler = 0; 
 +        stift=1; 
 +      } 
 +      if (key =='​b'​) { 
 +        routenplaner.loescheRoute (false); 
 +      } 
 +      if (key == '​u'​) { 
 +        farbPunktFinder.erhoeheToleranz();​ 
 +      } 
 +      if (key == '​d'​) { 
 +        farbPunktFinder.senkeToleranz();​ 
 +      } 
 +      if (key == '​s'​) { 
 +        stop = true; 
 +        println("​Bild gestoppt"​);​ 
 +      } 
 +      if (key == '​w'​) { 
 +        stop = false; 
 +        println("​Das Bild kann jetzt erweitert werden"​);​ 
 +      } 
 +      if (key == '​l'​) { 
 +        routenplaner.loeschePunkte();​ 
 +      } 
 +      if (key == '​h'​) { 
 +        routenplaner.fuegePunkteHinzu();​ 
 +      } 
 +      if (key == '​m'​) { 
 +        fernsteuerung= true; 
 +      } 
 +    } 
 + 
 +    //die drei LEDs werden gesucht und falls sie existieren auf dem Bildschirm dargestellt 
 +    farbPunktFinder.findePunkte(img);​ 
 +    farbPunktFinder.zeichnePunkte();​ 
 +    //die Route wird, falls möglich erweitert und auf dem Bildschirm dargestellt 
 +    routenplaner.erweitereRoute();​ 
 +    routenplaner.zeichneRoute();​ 
 +    //​println(sqrt(sq(farbPunktFinder.gruenposition.x-farbPunktFinder.blauposition.x)+sq(farbPunktFinder.gruenposition.y-farbPunktFinder.blauposition.y)));​ 
 +    if (zaehler < routenplaner.punktfolge.size()) { 
 +      if (navigator.messeEntfernung(zaehler)==true) { 
 +        if (zaehler < routenplaner.punktfolge.size()-1) { 
 +          zaehler++;​ 
 +          //Wenn der Abstand zwischen zwei Punkten der Route kleiner ist, als ein bestimmter Wert, soll zwischen diesen Punkten gemalt werden 
 +          if (sqrt(sq(routenplaner.punktfolge.get(zaehler-1).x-routenplaner.punktfolge.get(zaehler).x)+sq(routenplaner.punktfolge.get(zaehler-1).y-routenplaner.punktfolge.get(zaehler).y))<​100) { 
 +            stift = 0; 
 +          } 
 +          else { 
 +            stift = 1; 
 +          } 
 +        } 
 +      } 
 +      //Die Winkel und Abstand werden berechnet und an den Arduino geschickt 
 +      navigator.sendeDaten(zaehler);​ 
 +    } 
 +  } 
 +}  
 + 
 + 
 +public void assignPixels(PS3 ps3, PImage img) { 
 +  img.loadPixels();​ 
 +  ps3.getFrame(img.pixels);​ 
 +  img.updatePixels();​ 
 +
 + 
 +public void dispose() { 
 +  PS3.shutDown();​ 
 +
  
  
  
 </​file>​ </​file>​
projektews2013/lagemaro/start/fnfsn.1394216194.txt.gz · Zuletzt geändert: 2016/01/21 12:45 (Externe Bearbeitung)