Bueno ya estamos en la etapa final (y vaya etapa jaja), y vamos a enseñaros ésta práctica que básicamente es de autolocalización. Agradecimientos a los profesores por el mapa del aula de libre acceso jaja.
En el primer apartado cargaremos un mapa.bin el cual será el mapa real que utilizaremos para los demás ejercicios. En este apartado utilizando la clase Particle ya utilizada anterioremente, pondremos 100 partículas dispersas en el mapa y veremos como quedan esparcidas por él, hemos tenido un percance al situar los ejes x e y, aqui mostramos una foto del mapa ya bien colocado:
En el segundo apartado, haremos un barrido de 360 grados en la resolución que queramos (nosotros de 10 en 10º), es decir 36 medidas con el radar de ultrasonidos, cogiendo la distancia en cada medida, y anotándola, al terminar tendremos 36 valores repartidos de 0 a 255 (el máximo que detecta el radar). Iremos pulsando las teclas para ir viendo los valores en cada distancia, por ejemplo 0=0 1=0 2=0 ...53=2 54=0 55=2.. ect...
El tercer apartado utilizaremos el mapa ya mencionado (el real) y tomaremos 5 puntos. En cada punto tomaremos un histograma de distancias (el del apartado 2), también tomaremos en cada ángulo de 0 a 360 (de 10 en 10) tomaremos las distancias, es decir angulo0=34 angulo10=45... ect. De esta forma creamos 5 archivos con estos valores, para después colocando el robot en cualquiera de éstos puntos y haciendo una comprobación de la varianza de los histogramas, el robot sepa situarse en que punto de los 5 está y pueda dar la orientación en la que está, es decir el desfase entre el punto 0 que tomáramos como origen al hacer las mediciones del punto, y la orientación actual. Un pequeño vídeo de como hemos tomado alguna medida:
jueves, 15 de abril de 2010
lunes, 22 de marzo de 2010
Práctica 4 - Modelo de movimiento probabilístico mediante filtro de partículas
Bienvenidos blogueros, aquí os traemos una nueva práctica en la que empezamos a utilizar las partículas de la clase Particle para la autolocalización relativa del robot, además también haremos cálculo de rutas con puntos intermedios (waypoints) haciendo cálculos de ángulos y orientación.
- Modelo de movimiento mediante la clase MCLParticleSet: La realización de este apartado consiste en la utilización de un cojunto de partículas y mostrarlo en la pantalla con el movimiento que va realizando el robot. Es decir, primero creamos un mapa con un rectángulo y un conjunto de líneas u obstáculos (en este caso nuestro mapa es un cuadrado simple). Después inicializamos todas las partículas que se crean de forma aleatoria, y las colocaremos en un mismo punto (origen relativo), que se supone será el punto de partida del robot.
El comportamiento de las partículas es sencillo, para modelar la trayectoria relativa de nuestro robot, vamos almacenando la distancia que va recorriendo, y obteniendo la variación respecto a la anterior aplicamos esa mismo cambio a cada una de las particulas con un error de desplazamiento tanto en los ejes X e Y, como en el ángulo. Así, como podemos observar en el vídeo, inicialmente las partículas estarán ordenadas y poco a poco irán acumulando error y se irán expandiendo de la trayectoria original del robot. Aquí nuestro compañero DeathFate nos comenta el video:
- Cálculo de trayectoria: En este apartado se va a pedir unas coordenadas que se introducirán mediantes los botones del robot, y un cierto ángulo de giro una vez llegado al destino, éste ángulo será relativo al punto de origen de la orientación con la que comienza el robot. Para hacer este apartado hemos tenido que realizar una serie de cálculos de trayectoria, calculando ángulo y módulo dependiendo del cuadrante en el que se encuentre la resultante según un eje imaginario que tiene el robot al inciarse. Un video de demostración:
En la próxima práctica profundizaremos más en el tema de la localización y el cálculo de trayectorias con nuestro Piticli. Feliz semana santa! y aquí os dejo un juego flash en la sección de juegos de la derecha para poder prácticar un poco como tendría que moverse un robot, tiene funciones y según aumentan los niveles hay que darle al coco, sabiendo que "código" habría que repetir ya que las casillas tienen un límite, haber hasta que nivel llegáis.
- Modelo de movimiento mediante la clase MCLParticleSet: La realización de este apartado consiste en la utilización de un cojunto de partículas y mostrarlo en la pantalla con el movimiento que va realizando el robot. Es decir, primero creamos un mapa con un rectángulo y un conjunto de líneas u obstáculos (en este caso nuestro mapa es un cuadrado simple). Después inicializamos todas las partículas que se crean de forma aleatoria, y las colocaremos en un mismo punto (origen relativo), que se supone será el punto de partida del robot.
El comportamiento de las partículas es sencillo, para modelar la trayectoria relativa de nuestro robot, vamos almacenando la distancia que va recorriendo, y obteniendo la variación respecto a la anterior aplicamos esa mismo cambio a cada una de las particulas con un error de desplazamiento tanto en los ejes X e Y, como en el ángulo. Así, como podemos observar en el vídeo, inicialmente las partículas estarán ordenadas y poco a poco irán acumulando error y se irán expandiendo de la trayectoria original del robot. Aquí nuestro compañero DeathFate nos comenta el video:
- Cálculo de trayectoria: En este apartado se va a pedir unas coordenadas que se introducirán mediantes los botones del robot, y un cierto ángulo de giro una vez llegado al destino, éste ángulo será relativo al punto de origen de la orientación con la que comienza el robot. Para hacer este apartado hemos tenido que realizar una serie de cálculos de trayectoria, calculando ángulo y módulo dependiendo del cuadrante en el que se encuentre la resultante según un eje imaginario que tiene el robot al inciarse. Un video de demostración:
En la próxima práctica profundizaremos más en el tema de la localización y el cálculo de trayectorias con nuestro Piticli. Feliz semana santa! y aquí os dejo un juego flash en la sección de juegos de la derecha para poder prácticar un poco como tendría que moverse un robot, tiene funciones y según aumentan los niveles hay que darle al coco, sabiendo que "código" habría que repetir ya que las casillas tienen un límite, haber hasta que nivel llegáis.
jueves, 11 de marzo de 2010
Práctica 3 - Navegación local evitando obstáculos
Seguimos avanzando con Roboticly, en esta práctica probaremos una nueva arquitectura en la cual se podrán realizar programas semi-complejos, con la implementación de comportamientos.
Se tendrán diferentes comportamientos, con prioridades determinadas y dependiendo de situaciones de entrada, se optará por uno u otro, de esta forma, nos permite jerarquizar y modularizar los objetivos.
El algoritmo empieza cuando se ve un objeto a una cierta distancia mínima, en ese momento se obtiene tanto la distancia a la que está, y a que dirección está del robot, una vez con ésto, se irán calculando los vectores de repulsión (proporcional a la distancia), y sumandolo con el vector de dirección, obtendremos una resultante, a la cual mandaremos al robot, este proceso se repite hasta que se ha superado por completo el obstáculo y se retoma la dirección adecuada. Mostramos el vídeo:
Se tendrán diferentes comportamientos, con prioridades determinadas y dependiendo de situaciones de entrada, se optará por uno u otro, de esta forma, nos permite jerarquizar y modularizar los objetivos.
Evitar obstáculos con Sensor de Tacto:
El robot debe de chocar contra un obstaculo (una lata), y dependiendo que sensor de choque lo haga, realizara un arco para la derecha o izquierda recuperando su trayectoria. Mostramos el vídeo:Evitar obstaculos con sensor de ultrasonido:
Para evitar las latas ahora, nos basaremos en el algotimo de vector de fuerzas virtuales, comportamiento es sencillo de comprender pero bastante dificil de implementar, debido a los impedimentos fisicos que nos ponen los sensores.El algoritmo empieza cuando se ve un objeto a una cierta distancia mínima, en ese momento se obtiene tanto la distancia a la que está, y a que dirección está del robot, una vez con ésto, se irán calculando los vectores de repulsión (proporcional a la distancia), y sumandolo con el vector de dirección, obtendremos una resultante, a la cual mandaremos al robot, este proceso se repite hasta que se ha superado por completo el obstáculo y se retoma la dirección adecuada. Mostramos el vídeo:
Comportamiento de ir hacia la luz:
Primero calibramos los valores altos y bajos del umbral de los sensores, para asi hacer este comportamiento genérico a cualquier escenario.Una vez con esto, nuestro robot tomara rumbo a la luz segun la intensidad luminosa llegue a uno u a otro sensor, realizando cambios bruscos si el desnivel entre un sensor y otro es demasiado, y poco a poco si la diferencia entre sensores es pequeña. Mostramos el vídeo:Comportamiento de ir hacia la luz evitando obstáculos:
Por último, combinaremos los comportamientos de ir hacia la luz, con el de evitar obstaculos con sensores de tacto, asi, nuestro robot ira hacia la luz, y si ve un obstáculo lo esquivara, y despues retomara rumbo hacia la luz. Se implementara alternando comportamientos en diferentes casos, con distintas prioridades. Mostramos el vídeo:jueves, 25 de febrero de 2010
Práctica 2 - Obteniendo información sensorial
Bueno como ya comentamos la semana pasada aquí tenemos la práctica 2 con las diferente pruebas de sensores, hay que destacar principalmente el esfuerzo hecho en el programa SIGUE-PARED, le hemos dedicado más tiempo y esmero para perfeccionarlo y espero que os guste, aparte las demás partes de sensores también trabajadas y los algo pesado cálculos de error. Vamos a pasar a enseñar la chicha:
- Información y control del robot por sonido: En este vídeo mostramos 2 apartados de la práctica, en uno mostramos información del nombre, batería en mv, porcentaje de luz.. y después probamos el funcionamiento del sensor de sonido (micrófono), con un programita simple en el cual el robot avanza y se para al oir un sonido por encima de unos determinados decibelios. Aquí mostramos el vídeo:
- Bumb and go! con sensores de tacto y de ultrasonido - Pues no hay mucho más que decir que 1 vídeo en el cual probamos estos 2 sensores en uno choca y da un pequeño retroceso y gira un ángulo aleatorio entre 30 y 330, para que sea mínimo de 30º por cualquier lado, y el de ultrasonidos detecta los obstáculos a una distancia mínima y hace lo mismo que el anterior. Vídeo:
- Sigue-pared: Nuestro pequeño mini reto conseguido, pasa esquinas cerradas, puertas, esquinas abiertas, está inmunizado contra cualquier pared medianamente estable, le hemos dedicado más tiempo y hemos tenido que ir averiguando más truquillos y funciones desconocidas: Pongo un vídeo del antes y el después:
- Cálculos y matriz: Cuentas y errores, cálculos para determinar el error del sensor super ultrasónico!:O, en el eje x, en el eje y, mínimo ángulo que detecta, etc.. Todo esto lo colgamos en un archivo a continuación (CÁLCULO P2) donde podéis ir mirando todas las cuentas que seguro estaréis muy interesados jaja.
calculos_p2
Aquí una imagen de la visión con ultrasonidos del robot:
La próxima semana voy aponer encuestas para que podais evaluar todos nuestras prácticas y también el blog. Un saludo y hasta la semana que viene.
- Información y control del robot por sonido: En este vídeo mostramos 2 apartados de la práctica, en uno mostramos información del nombre, batería en mv, porcentaje de luz.. y después probamos el funcionamiento del sensor de sonido (micrófono), con un programita simple en el cual el robot avanza y se para al oir un sonido por encima de unos determinados decibelios. Aquí mostramos el vídeo:
- Bumb and go! con sensores de tacto y de ultrasonido - Pues no hay mucho más que decir que 1 vídeo en el cual probamos estos 2 sensores en uno choca y da un pequeño retroceso y gira un ángulo aleatorio entre 30 y 330, para que sea mínimo de 30º por cualquier lado, y el de ultrasonidos detecta los obstáculos a una distancia mínima y hace lo mismo que el anterior. Vídeo:
- Sigue-pared: Nuestro pequeño mini reto conseguido, pasa esquinas cerradas, puertas, esquinas abiertas, está inmunizado contra cualquier pared medianamente estable, le hemos dedicado más tiempo y hemos tenido que ir averiguando más truquillos y funciones desconocidas: Pongo un vídeo del antes y el después:
- Cálculos y matriz: Cuentas y errores, cálculos para determinar el error del sensor super ultrasónico!:O, en el eje x, en el eje y, mínimo ángulo que detecta, etc.. Todo esto lo colgamos en un archivo a continuación (CÁLCULO P2) donde podéis ir mirando todas las cuentas que seguro estaréis muy interesados jaja.
calculos_p2
Aquí una imagen de la visión con ultrasonidos del robot:
La próxima semana voy aponer encuestas para que podais evaluar todos nuestras prácticas y también el blog. Un saludo y hasta la semana que viene.
viernes, 19 de febrero de 2010
Avances robótica
Aqui agrego un enlace a una página en constante actualización sobre todas las novedades y curiosidades que aparecen en robótica en el mundo mientras esperamos la nueva entrada de la práctica 2, en esta nueva práctica haremos sobre todo pruebas de los sensores de micrófono, sensores de ultrasonidos y sensor de contacto o choque. El robot podrá medir distancias, activarse y desactivarse en función de sonidos y poder tomar distintas rutas en cuando tome contacto con algún obstáculo. Sin más dilación aquí el enlace de la página y hasta la semana que viene.
P.D: Se irán añadiendo vídeos y algún juego en la barra de la derecha, y posiblemente alguna encuesta en el futuro.

---->>> http://robotica.es/
P.D: Se irán añadiendo vídeos y algún juego en la barra de la derecha, y posiblemente alguna encuesta en el futuro.

---->>> http://robotica.es/
miércoles, 17 de febrero de 2010
Practica1 - Primeros pasos con el API e instalación eclipse
Vamos a empezar a colgar nuestros primeros progresos de la práctica 1 con alguna foto y vídeos.
-Control básico del motor: aquí mostramos un vídeo con los primeros programas para probar los motores del robot.
- Visualización de la odometría del motor: hemos realizado 2 bucles en los cuales mostramos de 0 a 360 grados y retornamos a 0 grados despues, vemos como el motor que hemos puesto como brazo en el puerto B gira hacia delante una vuelta y hacia detrás (próximamente el brazo destructor será un arma para luchar).
- Cuadrado de calibración de movimiento: ésta parte ha sido bastante más costosa por las pruebas hasta llegar a calibrar la distancia de las ruedas y la distancia entre ellas, mucho tiempo tirados por los suelos viendo a Roboticli pintando hojas y pizarras.. jaja ,colgamos el vídeo en el cuál se ve la cartulina donde hemos hecho las medidas y vamos a entregar, hemos hecho un bucle de 10 para que haga el cuadrado 10 veces sin parar, y el error ha sido bastante aceptable, aun acumulando errores relativos de las vueltas anteriores. Además en pantalla muestra con una línea de píxeles negros el cuadrado que va recorriendo nuestro robot. Aqui dejamos el Video..
- Visualización de la trayectoria: Consiste en ir visualizando cualquier dirección o movimiento que haga el robot pintándolo con píxeles en la pantalla del robot. Para la prueba tenemos un vídeo en el que hacemos un hexágono y lo va pintando,el robot deja de pintar píxeles en pantalla si se obstruyen los motores. Aqui dejamos el Video..
- Cálculo de la matriz de covarianza: Una vez realizada la prueba anterior, de realizar 10 veces un cuadrado, obtenemos los errores relativos de cada vuelta con respecto a su ultimo origen, y obtenemos la matriz de covarianza. Nada más que decir que aquí esta la matriz tan sencillita que queda después del pitote de cálculos que los entregaremos ya en otra hoja.
P= [ 0,132 0,0572
0,0572 1069 ]
-Control básico del motor: aquí mostramos un vídeo con los primeros programas para probar los motores del robot.
- Visualización de la odometría del motor: hemos realizado 2 bucles en los cuales mostramos de 0 a 360 grados y retornamos a 0 grados despues, vemos como el motor que hemos puesto como brazo en el puerto B gira hacia delante una vuelta y hacia detrás (próximamente el brazo destructor será un arma para luchar).
- Cuadrado de calibración de movimiento: ésta parte ha sido bastante más costosa por las pruebas hasta llegar a calibrar la distancia de las ruedas y la distancia entre ellas, mucho tiempo tirados por los suelos viendo a Roboticli pintando hojas y pizarras.. jaja ,colgamos el vídeo en el cuál se ve la cartulina donde hemos hecho las medidas y vamos a entregar, hemos hecho un bucle de 10 para que haga el cuadrado 10 veces sin parar, y el error ha sido bastante aceptable, aun acumulando errores relativos de las vueltas anteriores. Además en pantalla muestra con una línea de píxeles negros el cuadrado que va recorriendo nuestro robot. Aqui dejamos el Video..
- Visualización de la trayectoria: Consiste en ir visualizando cualquier dirección o movimiento que haga el robot pintándolo con píxeles en la pantalla del robot. Para la prueba tenemos un vídeo en el que hacemos un hexágono y lo va pintando,el robot deja de pintar píxeles en pantalla si se obstruyen los motores. Aqui dejamos el Video..
- Cálculo de la matriz de covarianza: Una vez realizada la prueba anterior, de realizar 10 veces un cuadrado, obtenemos los errores relativos de cada vuelta con respecto a su ultimo origen, y obtenemos la matriz de covarianza. Nada más que decir que aquí esta la matriz tan sencillita que queda después del pitote de cálculos que los entregaremos ya en otra hoja.
P= [ 0,132 0,0572
0,0572 1069 ]
jueves, 4 de febrero de 2010
Toma de Contacto
Hoy por primera vez hemos conocido como dialogar con nuestro pequeño amigo, con la ayuda de un pequeño tutorial, se reseteo y se instalo la ultima version de LeJOS.
Con unas pequeñas pruebas aprendimos a compilar y empotrar programas desde el terminal de Linux, y con la aplicacion nxjbrowse.
Una vez hecho esto, estamos preparados para afrontar el siguiente reto.
Con unas pequeñas pruebas aprendimos a compilar y empotrar programas desde el terminal de Linux, y con la aplicacion nxjbrowse.
Una vez hecho esto, estamos preparados para afrontar el siguiente reto.
sábado, 30 de enero de 2010
Comienzo
Bueno aquí empezamos este blog para ir viendo todo lo que va ir realizando nuestro robot, que esperemos que sea mucho jaja, los obstáculos que vayamos pasando al programarlo y al probarlo, y pues que a todos los lectores en especial los que nos evaluen, les parezca interesante nuestros progresos. Un saludo y empezamos:O!
Suscribirse a:
Entradas (Atom)
