jueves, 24 de febrero de 2011

Práctica 2. Calibrando el ultrasonidos

En esta entrada vamos a responder a las cuestiones que tienen que ver con la calibración de nuestro sensor de ultrasonidos, gracias a esta prueba tendremos un conocimiento más exacto de nuestro sensor, pudiendo actuar en consecuencia sobre las medidas que nos proporcione.


Punto 1.

Distancia mínima = 22cm (20cm reales)
Distancia máxima = 193cm (190cm reales)

Por debajo de los 20cm el sensor ofrece lecturas pero con un error cada vez mas grande, la mínima lectura que observamos fue de 7cm (estando a 4cm reales), como vemos es un error enorme y decidimos que las medidas de las que nos podemos empezar a fiar estan en el rango puesto arriba.

Como veremos a continuación en valores intermedios de este rango el error del sensor baja bastante hasta ser prácticamente cero para distancias medias.


Punto 2

Ahora medimos la sensibilidad del sensor frente a los obstáculos situados en ángulo, realizando las pruebas que se nos indican en el enunciado los resultados fueron los siguientes:

0º − 37cm
10º − 38cm
20º − 38cm
30º − 40cm
40º - 41cm
-10º − 38cm
-20º − 40cm
-30º − 41cm
-40º - 44cm

Para inclinaciones mayores (de 50º en adelante) el sensor se salia de rango mostrando 255 de modo que podemos deducir que nuestro sensor es fiable para ángulos de aproximación menores de 50º.

Se supone que los pares de ángulos (Xº/ -Xº) deberían dar lecturas idénticas, en nuestro caso aunque se aproximan no llegan a serlo, esto puede deberse simplemente a colocaciones ligeramente diferentes en cuanto a los ángulos positivos y negativos, no se puede atinar exactamente con el mismo ángulo siempre.


Punto 3

En esta prueba realizamos medidas a las distancias indicadas en el enunciado y en cada una de ellas el sensor de VivaBender detectaba siempre 1cm por encima de la medida real de modo que según nuestros datos la media de error era igual a 1cm. Si tenemos en cuenta posibles errores mínimos en la posición exacta del robot a la hora de medir llegamos a la conclusión de que para el rango estudiado el sensor de ultrasonidos es muy preciso.


Punto 4

Este punto fue el más tedioso en cuanto a mediciones se refiere, realizamos las múltiples medidas que se nos pedían en el enunciado, no vamos a poner aqui la larga lista de números obtenidos asi que los resumiremos directamente en las ecuaciones de la matriz de covarianza.

Siguiendo la fórmula empleada anteriormente en la práctica 1:


Obtuvimos los siguientes resultados:


Observamos que el error en X es bastante pequeño, no asi como el error en Y, y como hay una relación entre ambos ejes, cuanto mas aumenta X mayor error hay en Y, para observar mejor este aspecto podemos observar la siguiente gráfica.



En ella vemos representado el cono de apertura del sensor (como era de esperar el sonido se expande cuanta más distancia recorre), este cono debe ser simétrico hacia las Y negativas (no representado en la gráfica). No sale un cono suave como cabría esperar pero esto es debido a la dificultad de realizar mediciones precisas que nos hubieran dado un cono mucho mas "continuo".


Hasta aquí la calibración del sensor de ultrasonidos, hemos obtenido resultados algo sorprendentes (no esperabamos tanta precisión en rangos medios) y resultados esperados (como la representación del cono de apertura), en conclusión teniendo en cuenta las limitaciones en distancia y ángulo de nuestro sensor podemos decir que los datos que nos envia son bastante exactos de acuerdo a la realidad.

Práctica 2. Algo más que pintar un cuadrado

Bueno y aquí está la entrada de la prática 2. En esta práctica usaremos por primera vez los sensores de nuestro robot, lo que permitirá a VivaBender realizar tareas un poco más complejas que las realizadas hasta ahora.

Para empezar a familiarizarnos con los sensores hemos tenido que hacer un programa que mostrase por pantalla la información recogida por varios de ellos y a tiempo real.

La información cambia en tiempo real.

Este punto no ha tenido más complicación que encontrar que funciones nos devolvían la información requerida, nada que un paseo por la API de lejOS no pueda solucionar. Con esto hecho podíamos pasar al siguiente punto.


Controlando mediante palmas.

El primer programa a realizar consistía en controlar a VivaBender mediante sonido, cada vez que escuchase una palmada echaría a andar y en caso de ya estar andando se pararía, un comportamiento sencillo que podemos apreciar en el siguiente video.



Como podemos observar en el video se realiza una calibración del nivel de la palmada antes de empezar para así asegurarnos de que el robot reaccionará adecuadamente al sonido. Una vez registrado ese nivel le aplicamos cierto margen de tolerancia en la reacción (por si en la calibración hemos hecho una palmada muy fuerte).


Rebotando contra las paredes

En el siguiente ejercicio usamos el sensor de contacto.

Debajo de ese enorme parachoques está el sensor de contacto.

La tarea consiste en avanzar hasta encontrar un obstáculo, "rebotar" contra él, girar un número aleatorio de grados y volver hacia delante hasta encontrar el siguiente obstáculo y vuelta a empezar.


Podemos ver como realiza giros aleatorios no sólo en ángulo sino también en sentido de giro.



Rebotando... con cuidado

Ahora tenemos que echar mano del sensor de ultrasonidos. El ejercicio es básicamente el mismo que el anterior, sólo que esta vez evitaremos chocar gracias a los ultrasonidos.




Midiendo constantemente el valor que nos da el sensor podemos saber si nos aproximamos a un obstáculo en cuyo caso podemos reaccionar a tiempo para no chocar contra él. Como se observa en el video hemos dado un margen algo alto cuando el robot se acerca de frente a la pared para así poder tener más seguridad en las aproximaciones a la pared con ángulos más complicados, aun así este sensor falla si a VivaBender le da por acercarse a la pared con un ángulo muy oblicuo (como observaremos en la sección de calibración de este sensor).


Escapando del laberinto

Llegamos al ejercicio más complicado de la práctica, VivaBender tiene que seguir una pared a cierta distancia para poder escapar de un laberinto.

Con el sensor orientado en ángulo podemos percibir los rincones.

En este ejercicio hemos implementado un control basado en casos basándonos únicamente en la información recogida mediante el sensor de ultrasonidos distinguiendo:

- Estás muy cerca.- Giro muy cerrado a la izquierda (el único giro bloqueante, hay que asegurarse de que se aleja lo suficiente).
- Estás cerca.- Giro cerrado hacia la izquierda.
- Te empiezas a acercar desde una distancia aceptable .- Giro muy abierto hacia la izquierda.
--- Distancia aceptable a la pared --- (el robot mantiene el rumbo de la última orden hasta entrar en algún caso concreto)
- Te empiezas a alejar desde una distancia aceptable a la pared.- Giro muy abierto hacia la derecha.
- Pierdes la pared.- Giro cerrado a la derecha.

Observamos el resultado en estos dos videos.







Hasta aquí la primera parte, más tarde publicaremos la entrada dedicada a la calibración del sensor de ultrasonidos.

domingo, 6 de febrero de 2011

Práctica 1. Primeros pasos con Viva Bender

Una vez ya terminado el diseño de nuestro robot seguido del manual que trae nxt, nos disponemos a llevar a cabo una serie de ejercicios básicos.

1.1 El Cuadrado
Después de haber aprendido funciones básicas de los motores, nos disponemos a llevar a cabo un ejercicio que nos dará la diferencia de lo que nosotros queremos y lo que realmente es el resultado.

Lo primero, es buscar un buen sitio para colocar nuestro lápiz, ya que vamos a necesitar que nuestro robot pinte su trayectoria, la mejor posición es la que está en el centro del eje, ya que al girar, si el lápiz está colocado en el centro, este no verá modificada su posición en el plano.
Con la mayor precisión que hemos podido y con la ayuda de nuestro viejo compañero el celo, hemos colocado un lápiz en el eje de esta forma:


Ahora, queremos pintar un cuadrado de 40x40 (linea blanca), pero como podemos observar en la imagen inferior, Viva Bender ha pintado su propio cuadrado de 40x40 (linea roja), muy diferente de la teoría. Esto se debe principalmente a nuestro diseño del robot, distancia entre las ruedas, resistencia con el lápiz al pintar,orientación manual de nuestro robot...etc, una serie de parámetros que dificultan la realización correcta de nuestro objetivo. Cuanto mas preciso sea nuestro robot, mayor aproximación a la teoría, pero en la práctica hay dificultades.


1.2 Calculo Matriz de Covarianza
Como siguiente ejercicio, realizamos el cálculo de la matriz de covarianza, a partir de la siguiente fórmula:

Nos disponemos a recorrer un metro con nuestro robot desde un " mismo punto inicial " (entrecomillado por la inexactitud del mismo). El objetivo es comprobar que a medida que avanzamos el grado de incertidumbre aumenta y su distancia también, ya que cuanto mas pegado al eje x (0) mayor distancia recorre y cuanto mas se aleja de y menos distancia recorre en x. (linea roja, trayectorias del robot)

    Tomamos 10 medidas:     
           X    Y           
      1. (97'9,1'2)         
      2. (97'9,0'4)         
      3. (97'8,-0'2)        
      4. (98'1,-0'2)        
      5. (98'0,-0'4)        
      6. (98'1,-0'6)        
      7. (97'9,-0'7)        
      8. (97'8,-0'8)        
      9. (97'9,-1'9)        
      10.(98'1,-2'6)        
                            
     media(97'95,-0'58)     
                            
Matriz P (0'0125    -0'0388)
         (-0'0388    1'0336)



1.3 Visualización de la trayectoria
Por último, queremos mostrar el recorrido que realiza el robot en la pantalla, para ello solo programamos que hiciera un recorrido (mostrado en el segundo video), y que a su vez fuese dibujando en tiempo real su trayectoria.
Las fórmulas para el cálculo del desplazamiento y el cálculo del ángulo son :
(Desplazamiento)
(ángulo)


(Viva Bender en funcionamiento)
Esta muestra es sencillamente fácil, solo hay que tener en cuenta la posición actual del robot y los ángulos hacia donde gira el mismo.

Limitaciones: (La pantalla no es infinita, nuestro recorrido se ve completamente porque está dentro de los márgenes de la pantalla).
(Trayectoria dibujada por VB)     

1.4 Conclusión:
Aproximar la teoría a la práctica es bastante complicado, lo que para el robot creé ser correcto, en nuestra realidad hay imperfecciones, ya que no realiza la trayectoria con bastante perfección por ejemplo.
La situación en la que se encuentre también es un factor importante, porque la superficie de apoyo afecta directamente al correcto funcionamiento, se producen resbalones en superficies pulidas, no funciona bien en superficies con cierto ángulo etc...
Aún con todo ello, el robot es suficientemente preciso en las tareas que hemos realizado.