Package components.robot

Examples of components.robot.Robot


 
 
  private void remRobotWidgetSelected(SelectionEvent evt)
  {
    //Robot robot = Simulation.getCurrent().searchRobotByName(listaRobots.getSelection()[0].getText());
    Robot robot = Simulation.getCurrent().getRobotByName( listaRobots.getSelection()[0].getText() );
    if (robot != null)
    {
      Simulation.getCurrent().removeRobot(robot);
      listaRobots.remove(listaRobots.getSelectionIndex());
    }
View Full Code Here


  }
 
 
  private void listaRobotsMouseDoubleClick(MouseEvent evt)
  {
    Robot robot = Simulation.getCurrent().getRobotByName( listaRobots.getSelection()[0].getText() );
    if (robot != null)
    { 
      RobotConfigDialog robotDlg = new RobotConfigDialog(dialogShell.getShell(),SWT.NONE,robot);
      robotDlg.open();
      fillTable();
View Full Code Here

      robotsHash  = new Hashtable(23, 0.75f);
      robotNames  = new String[Simulation.getCurrent().getRobotArray().size()];
      for (int i=0; i<Simulation.getCurrent().getRobotArray().size(); i++)
      {
        Robot robot = (Robot) Simulation.getCurrent().getRobotArray().get(i);
        robotsHash.put( robot.getName() , robot );
        robotNames[i] = new String( robot.getName() );
        robot.setVisible( false );
      }
     
      dialogShell.open();
      Display display = dialogShell.getDisplay();
     
View Full Code Here

    {
      InputData data = ((InputDialog)dialog).open("Robot", "Seleccione el robot correspondiente...", c, robotNames)
     
      if ( data != null  &&  data.textData != null  &&  data.colorData != null )
      {
        Robot robot = (Robot)robotsHash.get( data.textData );
        if ( robot == null )
        {
          Logger.error("Sucedi� lo imposible! No se encontr� el robot en el hash.");
          return;
        }
       
        robot.setStatus( Defines.STATE_ROBOT_NOT_CALIBRATED );
       
        // Se obtiene una referencia al color previo (en caso de una
        // situaci�n de error, se puede restaurar el color previo).
        Color prevColor = null;
        if ( robot.getColor() != null )
          prevColor = new Colorrobot.getColor().getRed()  ,
                      robot.getColor().getGreen()  ,
                      robot.getColor().getBlue()  );
       
        // Se establece el color del robot
        robot.setColor( data.colorData );
       
        Color color = new Colorrobot.getColor().getRed()  ,
                      robot.getColor().getGreen()  ,
                      robot.getColor().getBlue()  );
       
        if ( ic instanceof VirtualImageCollector )
          ((VirtualImageCollector)ic).drawRobot( color , new double[] {x,y} );
       
       
        // Se hace visible
        robot.setVisible( true );

        // Se cambia el estado a calibrado
        robot.setStatus( Defines.STATE_ROBOT_CALIBRATED );
       
        // Se fuerza la actualizaci�n de estado
        try
        {
          robot.updateState();
        }
        catch (RobotException e)
        {
          // Se restaura el color previo
          if ( prevColor != null )
            robot.setColor(
                new org.eclipse.swt.graphics.ColorDisplay.getDefault(),
                                  prevColor.getRed()  ,
                                  prevColor.getGreen(),
                                  prevColor.getBlue()));
         
          ErrorMessage.customMessage( e.getMessage() , ErrorMessage.ERROR_MESSAGE , Display.getDefault().getActiveShell());
          return;
        }


        canvas.redraw();
       
        // Se actualizan los �tems en la tabla
        robotsTable.removeAll();
        for (int i=0; i<Simulation.getCurrent().getRobotArray().size(); i++)
        {
          robot = (Robot)Simulation.getCurrent().getRobotArray().get(i);
          TableItem tableItem = new TableItem(robotsTable, SWT.NONE);
          tableItem.setText(1, robot.getName());
         
          if ( robot.getStatus() == Defines.STATE_ROBOT_NOT_CALIBRATED )
          {
            tableItem.setText(2, robot.getStatusText() );
            tableItem.setChecked(false);
            tableItem.setImage(2,SWTResourceManager
                .getImage("resources/icons/icon16x16/enable/Symbol error.png"));
          }
          else
          {
            tableItem.setBackground(0,robot.getColor());
            tableItem.setText(2, robot.getStatusText() );
            tableItem.setChecked(true);
            tableItem.setImage(2,SWTResourceManager
                .getImage("resources/icons/icon16x16/enable/Symbol check 2.png"));
          }
        }
View Full Code Here

    {
     
      // Se dibujan los robots
      for (int i=0; i<Simulation.getCurrent().getRobotArray().size(); i++)
      {
        Robot robot = (Robot) Simulation.getCurrent().getRobotArray().get(i);
        if ( robot.isVisible()  &&  robot.getStatus() == Defines.STATE_ROBOT_CALIBRATED )
          robot.draw( evt.gc );
      }     

      if ( currentStep == Defines.GPS_TUNER_SET_ICONS  ||  currentStep == Defines.GPS_TUNER_SET_WALLS  ||
          (currentStep == Defines.GPS_TUNER_SET_ROBOTS  &&  Simulation.getCurrent().getType() == Defines.REAL_SIMULATION) )
      {
View Full Code Here

       
        // Se actualizan los �tems en la tabla
        robotsTable.removeAll();
        for (int i=0; i<Simulation.getCurrent().getRobotArray().size(); i++)
        {
          Robot robot = (Robot)Simulation.getCurrent().getRobotArray().get(i);
          TableItem tableItem = new TableItem(robotsTable, SWT.NONE);
          tableItem.setText(1, robot.getName());
         
          if ( robot.getStatus() == Defines.STATE_ROBOT_NOT_CALIBRATED )
          {
            tableItem.setText(2, robot.getStatusText() );
            tableItem.setChecked(false);
            tableItem.setImage(2,SWTResourceManager
                .getImage("resources/icons/icon16x16/enable/Symbol error.png"));
          }
          else
          {
            tableItem.setBackground(0,robot.getColor());
            tableItem.setText(2, robot.getStatusText() );
            tableItem.setChecked(true);
            tableItem.setImage(2,SWTResourceManager
                .getImage("resources/icons/icon16x16/enable/Symbol check 2.png"));
          }
        }

        ///////////////////////////////////////////////////////////////
           
        break;
   
           
      case Defines.GPS_TUNER_SET_ICONS:

        // PASO 3: Reconocimiento de los �conos coloreados.
       
        if ( !allRobotRecognized() )
        {
          ErrorMessage.errorMessage(Defines.ERROR_NOT_ALL_ROBOT_RECOGNIZED, getParent());
          nextStep = Defines.GPS_TUNER_SET_ROBOTS;
          okButtonWidgetSelected(null)// TODO: ojo con esta llamada recursiva!
          break;
        }
       
        step1.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/disable/1-disable.png"));
        step2.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/disable/2-disable.png"));
        step3.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/enable/3-enable.png"));
        step4.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/disable/4-disable.png"));

        capturaButton.setEnabled(false);
        step2Pannel.setVisible(true);  step2Pannel.setEnabled(false);
        step3Pannel.setVisible(true);  step3Pannel.setEnabled(true);
        step3bisPannel.setVisible(false); step3bisPannel.setEnabled(false);
        step4Pannel.setVisible(false); step4Pannel.setEnabled(false);
       
        backButton.setVisible(true);

        okButton.setText("Siguiente >>");

        hintText.setText("Seleccione clickeando y formando un rectangulo sobre todos los iconos coloreados.");
       
        if(Simulation.getCurrent().getType() == Defines.REAL_SIMULATION)
          nextStep = Defines.GPS_TUNER_SET_CONNECTIONS;
        else
          nextStep = Defines.GPS_TUNER_SET_WALLS;
       
        //////////////////// L�GICA PARA EL PASO 3 ////////////////////
       
        step3Pannel.setEnabled(true);

        ///////////////////////////////////////////////////////////////
           
        break;
     
      case Defines.GPS_TUNER_SET_CONNECTIONS:
       
        // PASO 3bis: conexi�n entre lugares

        capturaButton.setEnabled(false);
        step2Pannel.setVisible(true);  step2Pannel.setEnabled(false);
        step3Pannel.setVisible(true);  step3Pannel.setEnabled(false);
        step3bisPannel.setVisible(true);  step3bisPannel.setEnabled(true);
        step4Pannel.setVisible(false); step4Pannel.setEnabled(false);
       
        backButton.setVisible(true);

        okButton.setText("Siguiente >>");

        hintText.setText("Seleccione clickeando y uniendo con una linea los iconos coloreados.");
        nextStep = Defines.GPS_TUNER_SET_WALLS;

       
        //////////////////// L�GICA PARA EL PASO 3 ////////////////////
       
        step3bisPannel.setEnabled(true);

        ///////////////////////////////////////////////////////////////
       
        break;
           
      case  Defines.GPS_TUNER_SET_WALLS:

        // PASO 4: Reconocimiento de las paredes.
       
        step1.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/disable/1-disable.png"));
        step2.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/disable/2-disable.png"));
        step3.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/disable/3-disable.png"));
        step4.setImage(SWTResourceManager
            .getImage("resources/icons/icon24x24/enable/4-enable.png"));

        capturaButton.setEnabled(false);
        step2Pannel.setVisible(true);  step2Pannel.setEnabled(false);
        step3Pannel.setVisible(true);  step3Pannel.setEnabled(true);
        step4Pannel.setVisible(true);  step4Pannel.setEnabled(true);
       
        backButton.setVisible(true);

        okButton.setText("Finalizar");

        if(Simulation.getCurrent().getType() == Defines.REAL_SIMULATION)
          hintText.setText("Seleccione clickeando y formando un rectangulo sobre el riel.");
        else
          hintText.setText("Seleccione clickeando y formando un rectangulo sobre la pared.");
       
        nextStep = Defines.GPS_TUNER_FINISH;

       
        //////////////////// L�GICA PARA EL PASO 4 ////////////////////
       
        step3Pannel.setEnabled(false);
        if (iconsTable.getItemCount() < 1)
          ErrorMessage.warningMessage(Defines.WARNING_NO_ICON_RECOGNIZED, getParent());
       
        Simulation.getCurrent().removePlaces();
       
        ///////////////////////////////////////////////////////////////
       
        break;

           
      case Defines.GPS_TUNER_FINISH:
       
        RecognizedItems mazeItems = Simulation.getCurrent().getGps().getMazeItems();
        boolean resolved = false;
       
        // [EB2] Si la simulacion es real, leemos la info de conexiones que se recolect�
        if(Simulation.getCurrent().getType() == Defines.REAL_SIMULATION) {
         
          // si el grafo est� conectado, voy seteando la matriz de conexiones
          int min=Integer.MAX_VALUE;
          int max=Integer.MIN_VALUE;
         
          for (int i = 0; i < mazeItems.recognizedColoredIcons.length; i++) {
            min = Math.min(min,Integer.parseInt(mazeItems.recognizedColoredIcons[i].shapeId));
            max = Math.max(min,Integer.parseInt(mazeItems.recognizedColoredIcons[i].shapeId));
          }
         
          resolved = true; //graphIsConnected(min,max);
          boolean places[][] = new boolean[max][max];     
          for (int i = 0; i < places.length; i++) {
            for (int j = 0; j < places.length; j++) {
              places[i][j] = false;
            }
          }         
         
          if(resolved){
            Set<Integer> keys = linkedIcons.keySet();
            Simulation simulation = Simulation.getCurrent();
           
            for (Integer placeId : keys) {
              Set<Integer> connections = linkedIcons.get(placeId);             
              for (Integer destiny : connections) {
                places[placeId-1][destiny-1]=true;
                places[destiny-1][placeId-1]=true;
              }
            }
         
            for (int i = 0; i < places.length; i++) {
              for (int j = 0; j < places.length; j++) {
                if(places[i][j]) simulation.setPlace(i+1,j+1);
              }
            }
          }
        }
        else {
         
          // En este punto, ya fueron reconocidos todos los �conos coloreados
          // y todas las paredes. Por lo tanto, se ejecuta el proceso para
          // averiguar qu� colores son apreciados desde cada lugar (esta
          // informaci�n se cargar� en la simulaci�n, para ser utilizada por
          // la red neuronal).         
          if ( mazeItems != null )
          {
            // Se corrigen los "puntos de visi�n" de aquellos �conos
            // coloreados que as� lo requieran.
            RecognizedShape[] icons = mazeItems.recognizedColoredIcons;
               
            for (int i=0; i<icons.length; i++)
            {
              // Se verifica si el punto de visi�n est� libre.
              if ( ! icons[i].contains( icons[i].vx , icons[i].vy ) )
                continue;
                 
              // El punto de visi�n no est� libre => se lo corrige.
              // Para esto, se parte desde el centroide, mirando
              // hacia el norte, sur, este y oeste, para detectar
              // d�nde no hay pared.

              double vxNew;
              double vyNew;

              double deltaX  = Math.abs( icons[i].x - icons[i].bx );
              double deltaY  = Math.abs( icons[i].y - icons[i].by );

              deltaX += Defines.FRONT_SENSOR_DISTANCE;
              deltaY += Defines.FRONT_SENSOR_DISTANCE;

              boolean free = true;
                 
              vxNew  = icons[i].x;        // NORTE
              vyNew  = icons[i].y - deltaY;
              for (int j=0; free && j<mazeItems.recognizedWalls.length; j++)
                if ( mazeItems.recognizedWalls[j].contains(vxNew, vyNew) )
                  free = false;
                 
              if ( ! free )
              {
                free = true;
                vxNew  = icons[i].x;      // SUR
                vyNew  = icons[i].y + deltaY;
                for (int j=0; free && j<mazeItems.recognizedWalls.length; j++)
                  if ( mazeItems.recognizedWalls[j].contains(vxNew, vyNew) )
                    free = false;
              }
                 
              if ( ! free )
              {
                free = true;
                vxNew  = icons[i].x + deltaX;  // ESTE
                vyNew  = icons[i].y;
                for (int j=0; free && j<mazeItems.recognizedWalls.length; j++)
                  if ( mazeItems.recognizedWalls[j].contains(vxNew, vyNew) )
                    free = false;
              }

              if ( ! free )
              {
                free = true;
                vxNew  = icons[i].x - deltaX;  // OESTE
                vyNew  = icons[i].y;
                for (int j=0; free && j<mazeItems.recognizedWalls.length; j++)
                  if ( mazeItems.recognizedWalls[j].contains(vxNew, vyNew) )
                    free = false;
              }

                 
              if ( free )
              {
                icons[i].vx = vxNew;
                icons[i].vy = vyNew;
              }
              else
              {
                // Error grave! No hay un punto de
                // visi�n libre...
                Logger.error(
                    "Error grave! No hay un punto "    +
                    "de visi�n libre para el �cono "  +
                    "coloreado " + icons[i].shapeId    );
              }
                 
            }
           
            int width  = ic.getImageResolution().width;
            int height  = ic.getImageResolution().height;
               
            for (int i=0; i<icons.length; i++)
            {
              double vx = icons[i].vx;
              double vy = icons[i].vy;

              resolved = false;

              for (double phi=0.0; phi<2.0*Math.PI; phi+=0.5*Math.PI)
              {
                // Se recorre la l�nea para ver si choca contra
                // una pared o contra otro �cono coloreado.
                double  x       = vx;
                double  y       = vy;
                boolean finished1  = false;
                boolean finished2  = false;
                   
                while ( !finished1  &&  !finished2 )
                {
                  for (int j=0; !finished1  &&  j<mazeItems.recognizedWalls.length; j++)
                    if ( mazeItems.recognizedWalls[j].contains(x, y) )
                      // Hay una pared
                      finished1 = true;
     
                     
                  for (int j=0; !finished1  &&  !finished2 &&  j<mazeItems.recognizedColoredIcons.length; j++)
                    if ( j != i  &&  mazeItems.recognizedColoredIcons[j].contains(x, y) )
                    {
                      // Encontr� un color
                      int fromPlace  = Integer.valueOf(icons[i].shapeId).intValue();
                      int toPlace    = Integer.valueOf(mazeItems.recognizedColoredIcons[j].shapeId).intValue();
                      Simulation.getCurrent().setPlace( fromPlace , toPlace );
                      finished2  = true;
                      resolved  = true;
                    }

                  x  +=  Defines.STEP_SIZE * Math.cos( phi );
                  y  +=  Defines.STEP_SIZE * Math.sin( phi );
                 
                  if ( x < ||  x > width  ||  y < ||  y > height )
                    // Se fue del rango de la imagen...
                    finished1 = true;
                }
              }
              if ( !resolved )
                break;
            }
          }
        }
       
        // Una vez seteados los lugares, se crea una red neuronal
        // para cada robot.
        int[][] places = Simulation.getCurrent().getPlaces();
        if ( !resolved )
        {
          ErrorMessage.errorMessage(Defines.ERROR_NO_PLACE_RESOLVED, getParent());
          step4.setImage(SWTResourceManager
              .getImage("resources/icons/icon24x24/disable/4-disable.png"));
          step4Pannel.setVisible(false);
          nextStep = Defines.GPS_TUNER_SET_ICONS;       
          okButtonWidgetSelected(evt);
        }
        else if ( places == null )
        {
          ErrorMessage.errorMessage(Defines.ERROR_NO_PLACES_RESOLVED, getParent());
          step4.setImage(SWTResourceManager
              .getImage("resources/icons/icon24x24/disable/4-disable.png"));
          step4Pannel.setVisible(false);
          nextStep = Defines.GPS_TUNER_SET_ICONS;       
          okButtonWidgetSelected(evt);
        }
        else
        {
          Simulation.getCurrent().setTargetPlace( places.length );
             
          Vector robots = Simulation.getCurrent().getRobotArray();
          for (int i=0; robots!=null && i<robots.size(); i++)
          {
            try
            {
              Robot robot = (Robot)robots.get(i);
              robot.getNeuralNetwork().setPlaces( places );
            }
            catch (NeuralNetworkException e)
            {
              Logger.error( e.getMessage() );
            }
View Full Code Here

      Factory factory = new Factory(xmlFile, xmlRulesFile);
      if ( factory == null )
        throw new SimulationException"No pudo crearse la factor�a para " +
                        "levantar los robots." );
 
      Robot robot = (Robot)factory.digest();
      if (robot == null)
        throw new SimulationException( "No pudo cargarse el robot." );
     
      simulation.addRobot(robot);
    }
View Full Code Here

TOP

Related Classes of components.robot.Robot

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.