Robot Ordenador Integrantes: Leonel Gutiérrez. Omar Miranda. Ignacio Rondini.
Motivación Crear un robot capaz de identificar objetos y ordenarlos. Idea interesante de desarrollo real.
Proceso Plataforma y rampa por separado. Movimientos circulares e imprecisos. Conexión con el bloque.
Modificación Rampa y plataforma unidas. Necesidad de contrapeso.
Problemas Giros poco precisos. Resbalamiento de plataformas.
Construcción http://www.nxtprograms.com/forklift/index.html
Construcción http://www.nxtprograms.com/forklift/index.html
Funcionamiento
Funcionamiento
Funcionamiento
Funcionamiento
Funcionamiento
Modelo final
Código Ver tamaños Calcular Posiciones Avanzar próxima caja Recoger Caja Cambiar representación interna Apilar Caja Fin
Registro de tamaños for (int i = 1; i <= N;i++) { A.avanzar(distanciaH); A.girarRobot(girarDer); A.avanzar(distanciaV); A.evitar(aux); Thread.sleep(2000); A.verTamaño(x, N); A.avanzar(-distanciaV); A.girarRobot(girarIzq); }
Método verTamaño int suma=0; int w[] = new int[10]; for (int i = 0; i < 10; i++) { int a = this.us.getDistance(); w[i] = a;} {suma = w[i] + suma;} int promedio = suma / 10; for (int i = 0; i <= N; ++i) {if (x[i] == 0){x[i] = promedio; System.out.println("" + promedio);break;}
Registro de tamaños for (int i = 1; i <= N;i++) { A.avanzar(distanciaH); A.girarRobot(girarDer); A.avanzar(distanciaV); A.evitar(aux); Thread.sleep(2000); A.verTamaño(x, N); A.avanzar(-distanciaV); A.girarRobot(girarIzq); }
Apilar cajas posiciones de las cajas = A.comparar(x, N) A.tomarCajaInicial(subir,a, posicionChica,girarDer); int relativo1= posicionMediana – posicionChica A.girarRobot(girar); A.tomarCaja(bajar, bajarChica, Math.abs(relativoC1),girar); A.girarRampa(bajar,(a - bajarChica)); A.avanzar(distanciaV); A.girarRampa(subir,a); A.avanzar(-distanciaV);
Orientación Interna Método comparar: int posicion=0; int aux=x[0]; for (int i = 0; i < N-1; ++i) { if(x[i+1]!=0){ if (x[i+1]<aux || aux == 0) { aux = x[i+1]; posicion=i+1; } } } x[posicion]=0; return posicion;
Apilar cajas posiciones de las cajas = A.comparar(x, N) A.tomarCaja (subir,a, posicionChica,girarDer); int relativo1= posicionMediana – posicionChica A.girarRobot(girar); A.tomarCaja(bajar, bajarChica, Math.abs(relativoC1),girar); A.girarRampa(bajar,(a - bajarChica)); A.avanzar(distanciaV); A.girarRampa(subir,a); A.avanzar(-distanciaV);
Método tomarCaja this.avanzar(this.distanciaH);} for (int i = 0; i < posicion; i++){ this.avanzar(this.distanciaH);} this.girarRobot(giro); this.avanzar(this.distanciaV); Thread.sleep(500); this.girarRampa(sentido,a); this.avanzar(-(this.distanciaV));
Apilar cajas posiciones de las cajas = A.comparar(x, N) A.tomarCaja (subir,a, posicionChica,girarDer); int relativo1= posicionMediana – posicionChica A.girarRobot(girar); A.tomarCaja(bajar, bajarChica, Math.abs(relativoC1),girar); A.girarRampa(bajar,(a - bajarChica)); A.avanzar(distanciaV); A.girarRampa(subir,a); A.avanzar(-distanciaV);
Apilar cajas int relativo2 = posicionGrande - posicionMediana A.girarRobot(girar); A.tomarCaja(bajar, bajarMediana, Math.abs(relativoC2), girarDer); A.girarRampa(bajar,(a - bajarMediana));
Posibles mejoras Capacidad de ordenar mediante otras carácteristicas. Capacidad de localización de objetos en diferentes lugares.