Visitas totales

miércoles, 9 de marzo de 2011

PRACTICA 3

Hola!!
En esta semana hemos tenido que desarrollar la "Navegación local evitando obstáculos". Engranando varios programas con distintas acciones definiendo el comportamiento en módulos:

takeControl(). Si se cumplen unas condiciones se toma el control del robot.
action(). Este método se ejecuta cuando el comportamiento se activa.
suppress(). Este método termina el código que ejecuta el método action(). 

...que aplicados al entorno de la navegación local y con la ayuda de varios de nuestros sensores evitamos los obstaculos que se interponían en el camino.
Pasamos a describir las cuatro partes de esta practica:


1.- Comportamiento de evitacion de obstáculos. Sensor contacto.
En este programa nuestro robot camina hacia adelante y en el caso de que choquemos con algun objeto, retrocedemos y lo sortearemos rodeandolo por uno de sus lados. Detallamos su partes:

Adelante.java -> programa que avanza en linea recta. Prioridad BAJA
Hit.java -> programa que se activa al chocar el sensor con algún objeto. Prioridad ALTA.
Touch.java -> Encargado de gestionar ambos módulos y sus prioridades.
Video demostrativo:


2.- Comportamiento de evitacion de obstáculos. Sensor ultrasonido.
Evitar obstaculos usando el sensor de ultrasonidos. Similar al ejercicio anterior solo que sin llegar a impactar sobre el objeto implicado. Lo evita cuando esta a una distancia aproximada de 40cm o menor. Detallamos sus partes:

Adelante.java -> programa que avanza en linea recta siempre que puede. Prioridad BAJA
Adel_I.java -> programa que al detectar con el sensor de US un objeto cercano próximo a él, realiza los cálculos para evitar el golpe girando la cabeza 180º y viendo la distancia minima y el ángulo al que se encuentra el objeto para después hacer el cálculo de la fuerza resultante entre la atractiva y la repulsiva y sacar el giro que tiene que hacer para esquivar el objeto y la distancia que tiene que recorrer para volver a sittuarse hacia su destino. Prioridad ALTA.
USVFF.java -> Encargado de gestionar ambos módulos y sus prioridades.
Video demostrativo:


3.- Comportamiento ir hacia la luz
En este apartado hemos usado dos sensores de luz del primo de nuestro robot el RCX colocados a 45º sobre el eje central. En caso de que uno de los sensores reciba más luz que en el otro se ira hacia ese lado.

IrAdelante.java -> programa que avanza en linea recta. Prioridad BAJA
Orientar.java -> programa que gracias a la informacion recogida por los 2 sensores de luz detecta en que direccion hay mas luz y va hacia ella. Prioridad ALTA.
SigueLuz.java -> Encargado de gestionar ambos módulos y sus prioridades.
Video demostrativo:

4.- Comportamiento ir hacia la luz evitando obstaculos
En este apartado vamos evitando obstaculos y siguiendo la luz. Para ello utilizamos todos los programas detallados anteriormente.

IrAdelante.java  -> programa que avanza en linea recta. Prioridad BAJA
Adel_I.java-> Como hemos comentado antes, programa que al detectar con el sensor de US un objeto cercano próximo a él, realiza los cálculos necesarios para sortear el objeto y seguir hacia su destino. Prioridad MEDIA.
Orientar.java -> programa que detecta un en que direccion hay mas luz y va hacia ella. Prioridad ALTA.
USLuz.java -> Encargado de gestionar ambos módulos y sus prioridades.
Video demostrativo:

CALCULO DE DATOS FUERZAS REPULSIVAS:

Tanto para el apartado 2 como para el apartado 4 hemos tenido que hacer una serie de cálculos para poder sacar el vector resultante hacia donde tiene que ir el robot.
Por una parte tenemos un punto donde queremos ir (x,y) con la fuerza atractiva que nos llevara el robot hacia ese punto. Y por otra parte tenemos la fuerza repulsiva, dada cuando el robot encuentra un obstáculo cerca. El robot calculará la distancia mínima al objeto y el ángulo en el que se encuentra, para pasar estas coordenadas polares a cartesianas. Una vez tengamos estas fuerzas, las sumaremos la xatrac con la xrepuls y la yatrac con la yrepuls, para poder hayar sobre ellas la fuerza resultante en la que el robot girará con el ángulo de esa fuerza y se desplazará con su modulo, para mas tarde volver a tomar el rumbo definido.

jueves, 3 de marzo de 2011

3º Nuevo montaje

Hola!!


Esta semana he vuelto a evolucionar un poco mas, me e desprendido de algunos sensores que ya no me hacian falta y me he montado una nueva estructura para la nueva práctica que esta en marcha, asi que a ver como va la semana...
Aqui os dejo mi foto:

miércoles, 23 de febrero de 2011

PRACTICA 2

Hola!
En estas dos semanas, hemos seguido con nuestras practicas. cada dia evoluciona mas nuestro robot. En este caso era el turno de ponernos en contacto con los diferentes sensores, dichos sensores son los siguientes:
- Sensor de contacto .
- Sensor de ultrasonidos (nos proporciona la distancia que hay a los obstaculos).
- Microfono.
- Sensor de luz.
- Bateria.
La semana ha sido bastante buena entre el montaje de las piezas y posteriormente los programas donde ya vemos como
interactua con el exterior. 
Pasamos a detallar cada uno de los apartados:


1.- Obteniendo información
Información.java -> mostramos por pantalla las características de nuestro robot:
Nombre - Valores sensor ultrasonido (mm) y luz en modo pasivo - tensión batería(mV) - memoria total - memoria libre (bytes):


2.- Control del robot por sonido
ClapControl.java -> programa con el que avanzaremos en linea recta con una palmada/sonido recibido con el sensor ultrasonido.
Se toman cuatro lecturas previas cada 500 ms. La mayor medida tomada sera el mínimo que el sonido debe superar para hacer avanzar/parar la marcha del robot.
NOTA: En caso de no superar el sonido mínimo el robot lo ignora y continua lo que estuviera haciendo. 
Video demostrativo: (en el segundo 6 ignora la orden por no llegar al minimo)


3.- Bump & GO! Usando sensores de contacto
BumpAndGo.java -> programa que avanza hacia delante. Si encuentra un obstáculo choca con el. Retrocede unos centimetros. y gira aleatoriamente entre 0º - 360º para continuar su marcha.
Vídeo demostrativo:


4.- Bump & GO! Usando sensores de ultrasonido
SimpleAvoid.java -> mismo programa que el anterior usando en este caso el sensor ultrasonidos. Al estar a una distancia menor a 20 cm, retrocede y cambia de direccion.
Video demostrativo:






5.- Comportamiento sigue-pared para salir de un laberinto
SiguePared.java -> programa que sigue el contorno de una pared a una distancia de 20 cm. Si hay un obstáculo lo esquiva. Si se aleja de ella, se aproxima.
Video demostrativo:


6.- Calibración del sensor ultrasonidos
Ejercicio1 -> Aqui mostramos las distancias minimas y maximas del sensor.



 

Ejercicio2 -> Aquí tenemos las medidas tomadas a 40cm entre -90º y 90º. Como podemos observar no todos los valores alcanzan un rango de visión. Los marcados con "-" equivalen a 255, medida erronea segun el sensorLos valores validos rotan entre -50º y 50º aproximadamente, mas allá de eso con algunas dificultades.


Ejercicio3 -> Como bien podemos ver en la grafica existe un error sistemático. La diferencia entre la distancia media del robot y la distacia real esta entre 2-3 cm:



Ejercicio4 -> Ahora vamos a ver la incertidumbre del valor del sensor. Vamos a comprobar por separado la incertidumbre en el eje X (en la dirección del haz del sensor y en eje Y (perpendicular al haz).

Ejercicio4.1 ->Incertidumbre en el eje X: Para ello vamos colocando el robot cada vez a una distancia y desconectando y conectando el sensor vemos lo que marca:
 

En estas 2 gráficas vemos la diferencia entre la distancia real y la obtenida:


 

 


Ejercicio4.2 -> Incertidumbre en el eje Y: Colocamos el robot en el origen de coordenadas y por medio de una carpeta vamos viendo a que distancia, tanto por la izquierda como por la derecha, perdemos la medición (valor=255).


Ya por ultimo calculamos las matriz de covarianza resultante del error P que representa la incertidumbre del sensor:


 

jueves, 17 de febrero de 2011

Nuevo montaje

Saludos!!

Ya estoy montado y probando mis nuevas funciones!! que interesante esta esto de usar los sensores.
Aqui os dejo las fotos que os dije y en nada colgamos la Practica2.
Mi montaje paso a paso: con mis brazos (micro y sensor de luz), con mi cuello que me permite mover la cabeza (ultrasonidos) y sensor de contacto.


Y mi resultado final:

sábado, 12 de febrero de 2011

A por la Practica2

Hola de nuevo!!

Esta semana me examine ya de la Practica1 y la verdad que fue bastante bien la cosa...
Haber como se da estas 2 semanas con la Practica2 donde ya vereis como he crecido..., tengo un monton de sensores!!
Mientras me hacen las fotos que ya colgare al blog y me van programando, os enseño aqui unos videos de como hacen uso de sus sensores algunos primos mios. Vais a flipar, espero que esta gente me haga programas asi.


Este todavia tiene que aprender que al toque no se aparca pero lo hace muy bien.

viernes, 4 de febrero de 2011

PRACTICA 1

Hola.
Esta semana hemos estado haciendo prácticas para seguir mi evolución poco a poco. Ya me faltan menos piezas.
Las tareas de esta semana han sido lentas y arduas. No por la complejidad de ellas, sino por la dificultad de encontrar material que se adapte a mí para realizar cálculos y poder tomar medidas.
Material escolar, folios, cinta adhesiva, metro y mucha paciencia han sido los ingredientes. Después hemos tenido que ingeniar un mecanismo para pintar en la superficie por la que iba pasando. Aunque parezca increíble ha funcionado. Varios de estos materiales han sufrido graves desperfectos irreversibles. Afortunadamente nadie ha sufrido ningún percance. Ha merecido la pena, todo ha salido a pedir de boca.

Paso a detallar que se ha hecho durante la semana:

1.- Control básico del motor

BasicMotor1.java -> programa que hace avanzar el motor cuando se pulsa cualquier botón y se detiene cuando se vuelve a pulsar.

BasicMotor2.java -> programa que cada vez que se pulse un botón, el motor gire 45 grados y se detenga automáticamente con la función rotate().

BasicMotor3.java -> mismo programa que el anterior pero usando la función rotateTo().

2.- Visualización de la odometría del motor
LeePosicion.java -> programa que muestra por el ladrillo desde una posición inicial los grados que vamos girando en cada momento. Oscila entre 0 y 360.

Un video de muestra:


3.- Cuadrado de calibración de movimiento
Cuadrado.java -> programa que permite realizar un cuadrado de 40cmx40cm, para ello va trazando una línea sobre una superficie de papel. Repeticion de la acción unas 10 veces.
Videos de muestra:

1ra vuelta:
10ma vuelta(reverse angle)

Foto Finish


4.- Cálculo de la matriz de covarianza
Covarianza.java -> programa que avanza un metro en linea 'recta'. Tomamos las medidas de desviación (X, Y) y calculamos la matriz.



5.- Visualización de la trayectoria
Trayectoria.java -> programa que visualiza en la pantalla del ladrillo la trayectoria seguida
en tiempo real seg un el sistema de referencia del mundo w.


viernes, 28 de enero de 2011

Montaje de Emanuel

Saludos a todos,

el otro dia se quedo en el aula el grupo para montarme todas las piezas y estar ya disponible para empezar a darme vida. Este ha sido el resultado de mi montaje:


En nada se colgará los nuevos avances de la practica 1 que ya han empezado.

Un saludo ;)