Package components.robot

Examples of components.robot.Robot


      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

    listaRobots.removeAll();
    Vector robots = Simulation.getCurrent().getRobotArray();
    for (int i=0;i<robots.size();i++)
    {
      TableItem item = new TableItem(listaRobots,SWT.NONE);
      Robot lastRobot = (Robot)robots.get(i);
      item.setText(0,lastRobot.getName());
      item.setText(1,lastRobot.getStatusText());
      if (lastRobot.getStatus() == Defines.STATE_ROBOT_CALIBRATED)
        item.setImage(1,SWTResourceManager
          .getImage("resources/icons/icon16x16/enable/Symbol check 2.png"));
      else
        item.setImage(1,SWTResourceManager
            .getImage("resources/icons/icon16x16/enable/Symbol error.png"));
      item.setText(2,Simulation.getCurrent().getBaseSimulationDirectory() + "/robots/" +lastRobot.getXMLConfigFile());
     
    }
  }
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 redibujan todos los robots
        Vector robots = Simulation.getCurrent().getRobotArray();
        for (int i = 0; i < robots.size(); i++) {
          Robot robot = (Robot) robots.get(i);
          if (robot.isVisible()
              && robot.getStatus() == Defines.STATE_ROBOT_CALIBRATED)
            robot.draw(backgroundGC);
        }

        // Dibuja la imagen 'background' escalada.
        evt.gc.drawImage(background, 0, 0,
            background.getBounds().width,
View Full Code Here

      if (!getStatusPanel)
        return;

      if (worldTree.getSelectionCount() > 0
          && worldTree.getSelection()[0].getText().compareTo("World") != 0) {
        Robot roboTemp = Simulation.getCurrent().getRobotByName(
            worldTree.getSelection()[0].getText());
        if (roboTemp != null) {
          Plugin plugin = ClassManager.getInstance().getPluginByName(
              roboTemp.getClass().getCanonicalName());

          // Se instancia la clase GUI y se le pasa el robot.

          if (plugin != null) {
            Composite temp = customRobotStatus;
View Full Code Here

 
        // Se redibujan todos los robots
        Vector robots = Simulation.getCurrent().getRobotArray();
        for (int i=0; i<robots.size(); i++)
        {
          Robot robot = (Robot)robots.get(i);
          if ( robot.isVisible()  &&  robot.getStatus() == Defines.STATE_ROBOT_CALIBRATED )
            robot.draw( backgroundGC );
        }     
 
        // Dibuja la imagen 'background' escalada.
        evt.gc.drawImagebackground,
                  0, 0,
View Full Code Here

      if ( !getStatusPanel )
        return;
     
      if (worldTree.getSelectionCount() > 0 && worldTree.getSelection()[0].getText().compareTo("World")!= 0)
      {
        Robot roboTemp = Simulation.getCurrent().getRobotByName(worldTree.getSelection()[0].getText());
        if (roboTemp != null)
        {
          Plugin plugin = ClassManager.getInstance().getPluginByName(roboTemp.getClass().getCanonicalName());
         
          // Se instancia la clase GUI y se le pasa el robot.
         
          if ( plugin != null )
          {
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

       
        // 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);
        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.");
        nextStep = Defines.GPS_TUNER_SET_WALLS;

       
        //////////////////// L�GICA PARA EL PASO 3 ////////////////////
       
        step3Pannel.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");

        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:
       
        // 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).
       
        RecognizedItems mazeItems = Simulation.getCurrent().getGps().getMazeItems();
        boolean resolved = false;
        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

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.