domingo, 25 de abril de 2010

Practica 5

Esta practica está basada la Auto-localización de un robot basada en un filtro
de partículas realizado en la pracrica anterior.

Punto1: Visualización del mapa y las partículas

En este punto hemos instanciado un filtro de particulas de manera que se repartan uniformemente por el mapa que nos han dado bin1.bin, el resultado es el que se muestra a continuación:



Punto2: Diseño del radar

Hemos creado la clase Radar.java como lo pedia el enunciado con los métodos que debia contener:




Punto 3: Reconocimiento de posición y orientación

Para realizar este punto hemos utilizado un mecanismo de auto-localización consistente en aprender las características de determinados puntos del mapa. El escenario utilizado y la ubicación del robot se ve en la siguiente figura:




Los pasos realiados para la localización de los puntos sería las siguientes:


- Realizar una fase de aprendizaje para almacenar las características de cada punto del mapa (obtener 5 firmas).

- Realizar un Histograma de medidas de distancia obtenidas durante la fase de aprendizaje de un determinado punto

- El histograma real signature = radar.newScan(); junto con uno aprendido puede ser comparado realizando un test de correlación.


- Una vez localizada nuestra posicion podemos realizar el test de correlacion para conocer nuestra orientacion, pero ya sobre un unico punto candidato.






jueves, 25 de marzo de 2010

Practica4: Modelo de Movimiento Probabilistico mediante filtro de partículas
El objetivo es implemetar un filtro de partículas orientadas al problema de auto-localización de un robot para lo cuál hemos realizado lo siguiente:
Apartado 1 de la práctica:

- Modelar un mapa del entorno.
- Creación de un conjunto de partículas (100).
- Definimos dos movimientos con la función Movement uno de translación y otro de rotación.
- Inicialización de las partículas en un punto (m.getParticle(i).getPose().setLocation(p)), con una orientación determinada m.getParticle(i).getPose().setHeading(0);
- Aplicamos el movimiento a las partículas con la función ApplyMove en incrementos de 1 hasta llegar a 40 donde realizamos en movimiento rotacional definido anteriormente.
-Repitiendo este proceso hasta completar el cuadrado.

Cabe destacar que hemos utilizado un margen de ruido de 0.1 tanto para los movimientos rotacionales como de translación.

En el siguiente video se muestra el comportamiento de las partículas visualizado en el LCD del Robot.




Apartado 2 de la Práctica:
- Calculamos el ángulo de posicionamiento dividiendo el valor de Y entre X y aplicando la función trigonométrica atan2().
- Para calcular la distancia al punto destino multiplicamos el valor de Y por el seno del ángulo obtenido anteriormente.
-El proceso seria, rotar el angulo obtenido en el punto1, y avanzar la distancia obtenida en el punto 2.
- Por último para colocarnos en la posición indicada sumamos el ángulo calculado en el punto 1 con el ángulo que le pasamos como parametro de posicion final.

En este sengundo apartado nos hemos encontrando con problemas ya que hemos utilizado la funcion atan() en vez de la funcion atan2() lo cual nos ha dado problemas con el tema de angulos.

jueves, 11 de marzo de 2010

PRACTICA3: Navegación Local Evitando Obstaculos

En el Comportamiento de evitación de obstáculos usando sensores de contacto que es el primer punto de la Practica lo que realiza el robot es lo siguiente:
- Cuando choca con un objeto retrocede una distancia proporcional al tiempo que es de aproximandamente medio segundo.
- Rota un ángulo de 60º
- Realiza un recorrido en arco de un ángulo de 90 grados (Función Steer).
- Retoma su posición inicial rotando nuevamente 60.
- Continua avanzando en línea recta.

El siguiente video muestra el comportamiento explicado anteriormente:



En el tercer punto de la Práctica se ve el Comportamiento ir hacia la luz usando sensores de luz del modelo de Lego RCX. Para ello hemos implentado 2 comportamiento uno Avanzar y el otro Orientarse sobre los cuáles y através de la implentación de la clase Arbitrator se decidirá que comportamiento entrará a jugar. En Resumen lo que hace cada comportamiento es lo siguiente:
- Avanzar hace que el robot avance en línea recta mientras el nivel luz detectado por los sensores sea el mismo (Teóricamente), en la práctica ambos valores no son exactemente iguales ya que las condiciones de prueba (en el Lab.) no son ideales sino que hemos dejado un margen de error sabiendo que los niveles detectados por los sensores se ven influenciados por factores como el reflejo de la luz en el suelo, el color blanco que refleja más la luz, etc.
- Orientarse hace que si detecta en uno de sus senores mas nivel de luz que en el otro giré buscando la luz; no se se calcula mediante un ángulo de rotación a donde esta la luz exactamente; sino en las sucesivas vueltas de un Bucle se va posicionando hasta que los valores de luz sus sensores estan en el rango que hemos considerado como aceptable.

El siguiente video muestra el comportamiento explicado anteriormente:



El último punto de la práctica plantea el Comportamiento ir hacia la luz evitando obstáculos con lo desarrollado en los puntos anteriores. Para la evitación de obstáculos hemos utilizados sensores de contacto.

El siguiente video muestra el comportamiento explicado anteriormente:

jueves, 25 de febrero de 2010

Practica 2

Esta segunda practica consiste en darle varias funcionalidades a Alfredito, con el fin de familiarizarnos con los distintos sensores que tiene nuestro robot.

A continuación mostramos una serie de vídeos en los que podemos ver los resultados obtenidos.

Video 1: BumpAndGo
Cuando presionamos en el pulsador de Alfredito este se da la vuelta retrocede y gira para posteriormete continuar hacia adelante.





Video 2: ClapControl

Alfredito comenzará a moverse cuando "oiga" un sonido que supere los 50 db en este caso con una palmada y parará cuando vuelva a oir otro sonido superior al limite inferior.




Video 3: Ultrasonic

Por ultimo podemos ver a alfredito con un comportamiento similar al del BumpAndGo, pero esta vez retrocederá y girara cuando se encuentre a una distancia de 30 cm o inferior de un obstaculo.





Sobre esta practica decir que hemos tenido bastantes problemas para programar la funcionalidad de parar y arrancar con una palmada, debido a que nuestro sensor de sonido comenzaba siempre a valores muy altos.
A su vez, destacar que no hemos sido capaces de darle la funcionalidad del sigue pared, aunque lo hemos intentado no hemos obtenido los resultados obtenidos.

jueves, 18 de febrero de 2010

Evolución de Alfredito

Alfredito recien nacido:



Alfredito de niño:



Sigue creciendo el Bicho!!!!!!

Practica 1: Alfredito se da su primer paseo

El objetivo de esta primera practica era un toma de contacto con el sistema de motores de LeJOS, los resultados obtenidos los podemos comprobar en el video adjunto, donde vemos a Alfredito darse un paseo sobre una hoja dibujando un cuadrado de 40 cm de lado.

Por otro lado podemos destacar, las dificultades que hemos tenido a la hora de la instalación de LeJOS en nuestros propios equipos.






jueves, 4 de febrero de 2010

Toma de Contacto con LEJOS y Bautizo de nuestro ladrillo!!!!

Hoy hemos comenzado con las practicas de robótica, las tareas llevadas a cabo son las siguientes:

Actualización del Firmware del ladrillo, lo que nos permitirá interpretar los ejecutables que generaremos desde el copilador Lego NXJ.

Definición de las variables PATH para que nuestros equipos reconozcan las instrucciones del compilador.

Hemos ejecutado ejemplos sencillos con el fin de familiarizarnos con la interface del ladrillo.

Y por ultimo hemos utilizado el nxjbrowse en su versión de entorno gráfico para gestionar los ficheros de nuestro robot y bautizarlo como ¡¡¡¡Alfredito!!!!.