En este post tratare de hablarles un poco sobre el programa implementado del Robot Lego Mindstorm (Clasificador).
Para empezar se crearon 2 Clases DLTest y Grabber. DLTest tendra el main que en resumen creara una instancia de una Clase Grabber. Esperara la señal del Robot Obrero utilizando el metodo g.readFromNXT() que escribira un entero en la clase LCD. Despues de esto esperara la interaccion del usuario leyendo del pc con el metodo g.readFromPC(); Y con este valor decidira si debe realizar un proceso para desecharlo o para procesarlo como comida.
Esto se muestra a continuacion
public static void main(String[] args) {
Grabber g = new Grabber(Motor.C, Motor.A, Motor.B, null, new TouchSensor(SensorPort.S2));
while (true) {
LCD.drawInt(g.readFromNXT(), 0, 4);
g.writePCMessage(1);
int n = g.readFromPC();
switch (n) {
case 2:
g.processWaste();
break;
case 3:
g.processFood();
break;
}
}
}
La clase Grabber Tiene un constructor que recibira los tres motores el sensor de luz y el sensor de movimiento. Este metodo es implmentado de la forma siguiente
public Grabber(Motor xAxis, Motor yAxis, Motor grabber, LightSensor colorSensore, TouchSensor touchsensor){
this.xAxis = xAxis;
this.yAxis = yAxis;
this.grabber = grabber;
xAxis.setSpeed(900);
yAxis.setSpeed(900);
grabber.setSpeed(900);
this.colorSensor = colorSensore;
this.touchSensor = touchsensor;
location = 0;
getMode();
startPCConnection();
startNXTConnection();
}
En este constructor podemos ver que existen los metodos startPcConnection(); y startNXTConnection();
public void startPCConnection(){
///Inicializando conexion PC
LCD.drawString("Conectandose PC", 0, 0);
USBConnection conn = USB.waitForConnection();
dPCIn = conn.openDataInputStream();
dPCOut = conn.openDataOutputStream();
LCD.clear();
}
public void startNXTConnection(){
if(test)
return;
LCD.drawString("Conectandose NXT", 0, 0);
BTConnection btc = Bluetooth.waitForConnection();
LCD.clear();
LCD.drawString("Conectado", 0, 0);
LCD.refresh();
dNXTIn = btc.openDataInputStream();
dNXTOut = btc.openDataOutputStream();
LCD.clear();
}
Como la comunicacion con la PC es atravez de USB para realizar la conexion se utiliza la instruccion
USBConnection conn = USB.waitForConnection();
Y la comunicacion con la NXT es atravez de Blotoot para realizar la conexion inicial se utiliza la instruccion
BTConnection btc = Bluetooth.waitForConnection();
Por ultimo los metodos processWaste y processFood son muy parecidos pues ambos se mueven abajo, graban se mueven a arriba.
Pero se diferencian en que el metodo processFood se mueve a la izquierda, elimina y se mueve a la derecha. Como lo siguiente:
public void processFood() {
moveDown();
grab();
moveUp();
moveLeft(false);
drop();
moveRight(true);
}
En cambio el metodo proccesWaste se mueve a la derecha, elimina y se mueve a la izquierda. Este codigo se muestra a continuacion:
public void processWaste() {
moveDown();
grab();
moveUp();
moveRight(false);
drop();
moveLeft(true);
}
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario