Calibracion del giro

May 1st, 2008

Dados los problemas que tuvimos en el giro del robot, decidimos caracterizar el error producido por el giro de los motores para realizar la consecuente corrección en el movimiento para posteriores programas.

Tomamos varias medidas en diferentes ángulos.

- Ángulo de 90º

- Ángulo de 180º

- Ángulo de 270º

- Ángulo de 360º

- Ángulo de -90º

- Ángulo de -180º

- Ángulo de -270º

- Ángulo de -360º

Hemos realizado la toma de medidas cuatro veces para cada ángulo, teniendo en cuenta que los positivos son giros en sentido a las agujas del reloj y los negativos son en sentido inverso a las agujas del reloj.

Grados de giro Media Desviación típica
90º 1.8º 0.03
180º 3.8º 0.62
270º 7,4º 1.1
360º 9,1º 1.81

La media y la desviación típica son un tanto orientativas además varían de robot a robot.

Radar

May 1st, 2008

Enunciado

En esta práctica haremos un radar usando el ultrasonido, la idea es conseguir que el robot obtenga un mapa del entorno de modo que su información del entorno aumente y le permita navegar de forma autónoma esquivando los obstáculos por ejemplo.

(1) Montaje del robot con el ultrasonido sobre un motor para que sea capaz de moverse, hemos conseguido poner el ultrasonido mirando hacia adelante y hemos cambiado el diseño del robot para que sea mas estable.




(2) Creación del radar, el ultrasonido esta sobre un motor y gira con este mientras toma medidas de la distancia a la que estan los obstaculos. Tambien hay que dibujar en pantalla alguna representacion de lo anterior.

Como la información que nos devuelve el radar es la distancia del objeto y el ángulo en que se tomo la medida tenemos que convertir estas coordenadas polares en cartesianas para pintarlas:


Además hay que trasladar estas coordenadas a coordenadas de pantalla y normalizarlas para que se ajusten al tamaño de la pantalla.

(3) Navegación usando el radar

Dado el vector de distancias buscamos la medida mas alta, y seguimos su dirección. Esto nos garantiza que no iremos a parar contra un obstaculo cercano

video

El Código del Radar


El Código del Navegador

Hola Mundo

May 1st, 2008

Enunciado

En esta práctica tomamos contacto con el robot, la idea es imprimir en pantalla ciertos valores obtenidos de los sensores o del propio robot que son:

  1. Nombre del robot, le hemos llamado “Fermín”
  2. Valor del sensor de ultrasonidos en mm. hay que tener en cuenta que el sensor de ultrasonidos devuelve el valor en cm así que hay que multiplicarlo por 10.
  3. Valor del sensor de luz, al usar el metodo readNormalizedValue el sensor nos devuelve un valor entre 0 y 1023 correspondiente a la entrada en bruto del sensor, al llamar a readValue el sensor nos devuelve una entrada en porcentaje entre el valor mínimo y máximo usados al calibrar.
  4. Tensión de la batería expresada en milivoltios.
  5. Memoria libre expresada en bytes, para encontrar esto tenemos que buscar en el api de LejOS hasta encontrarnos con lo siguienteRuntime.getRuntime().freeMemory()

Fermin y los 64 bits

May 1st, 2008

Lo primero que hemos tenido que hacer es instalar el software para poder programar el robot, nos encontramos con algunos problemas que hemos visto anteriormente.

Pero nos encontramos con que una vez solucionados todos los problemas anteriores no compilaba por problemas con la arquitectura de 64 bits, o al menos eso parecía por el mensaje de error que salía.

Para solucionarlo hay que hacer lo siguiente:

(1) Entrar en el directorio ~/lejos_nxt/libnxt
(2) Editar el fichero build.xml y agregar lo siguiente:

< value=”-fPIC”>

Justo después de todas las demás entradas de compilerarg.

La opción -fPIC de gcc genera código independiente de la posición que se puede usar para enlazado dinámico y evita los problemas de límite en la tabla global de desplazamientos (que parece ser el problema con los 64 bits).

Esto según dice el man solo funciona con algunas máquinas (con nuestro portátil funciona).

(3) ir a la carpeta ~/lejos_nxt/build y ejecutar ant, saldrán algunos mensajes de warning por la conversión del tamaño de punteros (entre 64 y 32) pero no parece dar ningún problema (de momento).

Que es Lego Mindstorms NXT

May 1st, 2008

Lego Mindstorms es una linea de productos Lego con bloques programables, motores eléctricos y sensores, se origino a partir de los bloques de sensores programables usados en Lego Dacta, la primera versión fue comercializada en 1998 como Robotic Invention System (RIS), la versión actual en 2008 se conoce como Lego Mindstorms NXT.

Los kits NXT salieron en 2006 para reemplazar a la generación anterior, el kit básico consta de 3 servo motores, sensor de ultrasonidos, sensor de sonido, sensor de contacto y sensor de luz. Se conecta al pc mediante USB o bluetooth y viene normalmente con una interfaz gráfica para programar.

Yo uso leJOS, que es un sistema basado en Java, se pueden usar plugins en Eclipse para compilar y subir el programa al brick del robot etc.

Al descargar Lejos viene un README de lo mas completo, aunque al menos en ubuntu habian algunos problemas, al seguir los pasos de la instalacion nos encontramos con algo muy parecido a lo siguiente:

BUILD FAILED
/home/usuario/lejos_nxj/build/build.xml:65: The following error occurred while executing this line:
/home/usuario/lejos_nxj/src/libnxt/build.xml:144: gcc failed with return code 1

Prueba a añadir esto en los ficheros …/lejos_nxj/src/libnxt/build.xml y …/lejos_nxj/src/jbluez/build.xml:

Justo a continuación de:

<includepath>
<pathelement location=”.”/>
</includepath>

Añade:

<includepath>
<pathelement location=”/usr/lib/jvm/java-6-sun/include”/>
</includepath>
<includepath>
<pathelement location=”/usr/lib/jvm/java-6-sun/include/linux”/>
</includepath>

Cada uno deberá sustituir java-6-sun por la versión que tenga instalada.

Con esto todo parece funcionar, a menos de que tengas un AMD-64…

Que es esto?

May 1st, 2008

Todos los días me paso unas cuantas horas programando por cuestión de trabajo, estudios a veces incluso me quedan ganas para hacerlo por diversión, y con el paso de los años las cosas que programas se van haciendo mas y mas complicadas a veces hasta un poco esotéricas y la información que necesitas cada vez se hace mas escasa, asi que siempre pienso porque no ir poniendo algunas de las cosas interesantes que hago online para que a los demás les sirva de ayuda y para tenerlo todo en un lugar donde lo pueda encontrar fácilmente…

También tenia ganas de probar de probar el Wordpress y montar todo en un servidor, así que aquí estamos a ver que tal sale.