Aug
07
2009
1

PathFinder, evolución

Después de mucho tiempo sin actualizar, vuelvo… Esta vez con una evolución del Pathfinder: se ha añadido la posibilidad de dirigir al robot dando palmas.

El modelo sigue siendo el anterior, mismo robot con las mismas piezas. También hereda toda la funcionalidad del modelo anterior, por eso de “evolución”

Video:

Programación:

A partir de ahora, ya abandono el IDE gráfico de Lego, para centrarme en el entorno de desarrollo de NXC. Como ya hablé, NXC es un entorno de desarrollo modo texto, programación a pelo, sin IDE, con toda la aspereza que esto lleva, pero que permite desarrollar cosas mucho más complejas.

Bueno, al lio: Pathfinder.nxc Este es el código fuente para que se lo baje quien quiera y haga con el lo que le plazca.

Se ha añadido a la programación antenrior la tarea check_sonido, que se encarga de esperar a que se produzca un sonido “fuerte” para pararse.
En caso de que se produzca un segundo sonido “fuerte”, en caso de que no se produzca ningún sonido más, gira a la izquierda. Si después de la segunda palmada, se produce una tercera, girará a la derecha.
Después de girar, seguirá su camino (la tarea que comprueba que no haya nada delante sigue activa en todo momento)
En caso de que solo se haya producido un sonido “fuerte”, se quedará parado hasta que se produzca otro sonido fuerte.

¿Como se sabe si se ha producido otro sonido “fuerte” dentro de un rango de sonido?

start esperar;
start wait_for_mic;
until((time_out)||(mic));

Este trozo de código realiza tres acciones:
La primera es iniciar la tarea “esperar”:

task esperar(){
	time_out=0;
	Wait(1000);
	time_out=1;
}

Que se encarga de poner un flag global a 1 pasado un segundo.

La segunda acción es iniciar la tarea “wait_for_mic”:

task wait_for_mic(){
    mic=0;
    until((MIC > THRESHOLD)||(time_out));
    if(!time_out)
        mic=1;
}

Esta tarea se encarga de esperar a un sonido “fuerte” o a que se la variable “time_out” sea puesta a 1 por la tarea “esperar”. En el caso de que se produzca un sonido antes del tiempo establecido, el flag global “mic” se pondrá a 1.

La tercera acción es esperar a que se active alguna de las dos flag globales. Las siguientes acciones que se llevarán a cabo serán en función del estado de las flags, si el flag “mic” está activo significa que se ha producido un sonido, por lo que habrá que esperar a otro sonido, o si es el tercero, girar…
Si ha sido el flag “time_out” es que está activo, entonces no se ha producido ningún otro sonido y habrá que parase, o girar a la izquierda…

Conclusión.

En fin, es una nueva aportación… esperemos que lleguen más. De hecho, estoy trabajando en una idea que consiste en aplicar todo el tema de giro asistido y control de tracción de los coches. La idea es hacer un coche de cuatro ruedas,con tracción trasera, con un motor por rueda tractora, ponerle solo las llantas para que no agarre, y ver que tal gira…

Written by Alvaro in: Lego NXT | Tags:
Nov
26
2008
5

PathFinder

Este es el primer robot que he construido partiendo de un diseño del IDE, pero con aportaciones mias al modelo.

PathFinder

PathFinder

Detalle sistema giro sensor ultrasónico

Detalle sistema giro sensor ultrasónico

Se trata de un robot basado el en “Tribot” que se dedica a correr hasta que se encuentra con algún objeto delante; entonces gira el sensor ultrasónico a derecha e izquierda, mide, y gira 90º hacia donde tenga más espacio, y vuelta a empezar.Además, cuando detecta un sonido, se para.

En este vídeo se puede el funcionamiento.

Programación.

Este robot lo he programado en ambas maneras, tanto con el IDE gráfico como NXC.

IDE gráfico: al ser un programa bastante amplio,no he podido poner una imagen del diagrama, pero os dejo en archivo: pathfinder.rbt.

NXC: La mejor manera de ver como funciona es ver el código fuente, aunque ahí va un resumen:
La tarea main se encarga de arrancar las tareas avanzar y check_sonido, que se encarga de parar en caso de un sonido fuerte. Main también es la tarea que se encarga de comprobar si no se encuentra nada enfrente del robot; utiliza las funciones medir() y girar() para realizar el giro.

Aquí tenéis el código fuente: PathFinder.

dscn0252

dscn0251

dscn0250

Hasta pronto!

Written by Alvaro in: Lego NXT |
Nov
26
2008
0

Más robots…

Grúa

Después de haber construido mi primer robot, y siguiendo las instrucciones que hay en el IDE gráfico, construí una grúa capaz de recoger pelotas de pedestales construidos para ello.

El montaje fué bastante entretenido ya que tenía muchas piezas. La programación la realicé siguiendo las instrucciones del IDE, así que también fue fácil. Esta es la grúa:

Grua

Grua

El comportamiento es sencillo: el brazo gira sobre el eje donde se apoya, baja y sube el brazo, y cierra o abre las pinzas. Es capaz de reconocer el color de la pelota que recoge.

Este robot, tiene un problema, y es que el sensor de tacto está demasiado duro y no consigue detectar cuando está agarrando algo… normalmente tira la pelota del pedestal. La solución, quitar el sensor de tacto y adosar a un lado el sensor ultrasónico, de manera que cuando la pelota esta dentro de las pinzas se detecte y se cierren las pinzas.

Con la mejora del sensor ultrasónico era capaz de recoger una pelota independientemente de la altura a la que estubiese, pero tenia que estar en cierta posición. Lo apunto para el futuro…

Andador

Otro robot que he construido ha sido este:

Alpharex

Alpharex

El nombre que le da Lego es “Alpharex”. Lo único que hice con el fué montarlo y verlo andar. Fué muy divertido montarlo, ya que tiene muchas piezas y es bastante complejo.

Hasta luego!

Written by Alvaro in: Lego NXT |
Nov
18
2008
0

Mi primer robot

Lo primero que hice nada más abrir la caja, como no podía ser de otra manera, fue empezar a montar el primero robot con las instrucciones en papel que vení­an en la caja, para una vez montado, probar el programa demo que trae el robot ya instalado. Esta fue la primera vez que vi como se movía y sonaba el robot: una maravilla.

Acto seguido, y sin parar, saque el CD, instale el software y seguí con las instrucciones que seguían para crear un modelo más complejo, para después empezar a programar por primera vez el robot desde la interfaz gráfica. El robot que estaba construyendo se llama “Tribot”:

Tribot

Tribot

Es un robot bastante sencillo y con pocas piezas, pero da mucho juego, ya que lleva todos los sensores y los tres motores. Su funcionamiento es bastante interesante: con dos motores, uno por rueda se mueve, con el tercer motor mueve la tenaza para atrapar la pelota. ¡Mejor verlo en acción!

En este vídeo se ve como el robot arranca hasta encontrarse la pelota en el pedestal, que al pulsar el botón del sensor de tacto, se para. Así permanece hasta que el sensor de sonido detecta un sonido fuerte como es este caso de una palmada. Entonces cierra las tenazas atrapando la pelota para después girase media vuelta y continuar andando. Así, hasta que el sensor de luz reflejada detecte que ha salido del circulo del “Test Area”, ya que cambia el color del suelo de blanco a negro, para entonces soltar la pelota.

Y aquí como es la programación del NXT-G:

Programación Tribot

Programación Tribot

Espero que os parezca interesante, cualquier comentario sugerencia o duda es bienvenido.

Written by admin in: Lego NXT | Tags: , ,
Nov
15
2008
1

Programación

La programación es la parte más importante del proceso de desarrollo, aunque no es la única. Antes de ponerse a programar, hay que tener un robot construido, lo cual también es muy divertido y puede llegar a ser un reto tan complicado o más que la programación.

Hasta el momento solo he probado dos maneras de programar el robot. La primera es con el propio software que viene incluido en la caja del robot, NXT-G, desarrollado por Lab-View. Es un entorno de desarrollo integrado y gráfico, es decir, todo el desarrollo se realiza a golpe de ratón, de una manera muy intuitiva y rápida, es decir, que se programa arrastrando iconos que representan acciones a realizar por el robot. Además tiene herramientas de diagnostico y gestión del robot muy útiles. Esta herramienta es muy cómoda para empezar y familiarizarse con el robot y su método de funcionamiento, pero en seguida se queda corta, sobre todo si estas acostumbrado a programar, como es mi caso. Solución, NXC (Not eXactly C)

IDE gráfico.

IDE gráfico.

NXC es la segunda manera de programar que he utilizado, y probablemente será la que más use, pues aunque no cuente con un entorno de desarrollo, ni herramientas de control y gestión del robot, puedo programar el robot con un leguaje de programación casi exacto a C, cosa que me resulta muy comodo pués manejo bien este lenguaje.

Este entorno de desarrollo tiene únicamente dos herramientas de linea de ordenes (Shell), un compilador (nbc) y una herramienta que permite descargar los archivos compilados al robot (nxtcom), ambas disponibles aquí.

Con esto es suficiente, pués para programar solo se necesita un editor de textos, y desde Mac OS dispongo también de una Shell, así que ya tenemos todo. Además, con un pequeño Makefile, se hace muy cómodo el compilar y mandar el programa al robot.

También contamos con un API, es decir, una serie de funciones para controlar el robot, que van desde control de tareas, hasta control de los sensores, pasando por control de sonidos y de escritura en pantalla. Esta interfaz que tenemos contra en hardware es muy poderosa, por esto es porque merece la pena programar “a pelo”. La única pega que he encontrado hasta ahora es que no se pueden matar hilos desde otro…

La forma de programar es sencilla:procedimental y basada en tareas concurrentes, de manera que podemos tener varias tareas ejecutándose al mismo tiempo. La primera tarea a crear es “main” que será la que se ejecute al arrancar el programa (¡Como en C!). Después podemos definir otras tareas y ejecutarlas cuando sea necesario. También tenemos soporte para crear y usar funciones… vamos como en C.

task main()
{
OnFwd(OUT_A, 75);
OnFwd(OUT_C, 75);
Wait(4000);
OnRev(OUT_AC, 75);
Wait(4000);
Off(OUT_AC);
}

Aquí tenemos el código de un pequeño programa que mueve los motores en los puertos A y C.

Esto es todo…

Written by admin in: Lego NXT | Tags:
Nov
12
2008
1

¿De que hablo?

Pero que te has comprado, hijo…

Lo primero es decir que es este gadget: Lego NXT es un robot que se construye con lego technic, es decir con una rama de lego más orientado a la construcción al estilo mecano de toda la vida. Cuenta con una CPU que se parece a un iPod, con una pantalla LED y cuatro botones, va alimentado con 6 pilas AA y dispone de 4 puertos para sensores, y 3 para motores.Cuenta con un procesador de 32 bits, capacidad para 256 tareas concurrentes, bluetooth…

Los puertos de los sensores son de lectura únicamente, no se puede enviar información a los sensores; parece obvio. Los tres puertos para los motores son de entrada y salida, como salida podemos activarlos para que se muevan, y como lectura podemos leer el movimiento que se ha producido.

Los sensores son:

  • Sensor ultrasónico, permite medir la distancia a un objeto hasta 255 cm con una precisión de +/- 3cm. (Alguien que sepa por que hasta 255cm)
  • Sensor de sonido, permite detectar sonidos del ambiente.
  • Sensor de luz, permite detectar la luz ambiente, y la luz reflejada, ya que posee un LED que emite luz debajo del sensor de luz.
  • Sensor de tacto, es simplemente un botón, que informa de si está pulsado o no.

Además de estos sensores existen otros muy interesantes como giroscopios, gravitrómentros, sensores RFID y brújula, entre otros.

Los motores son en realidad servomotores, es decir motores paso a paso que permiten especificar el giro y la velocidad. Tienen una precisión de un grado, tanto para lectura como para movimiento. Poseen una gran fuerza ya que el motor esta muy desmultiplicado con una serie de engranajes.

El set viene, claro está, con un gran set de piezas que permiten construir 4 robots diferentes siguiendo las instrucciones. Pero siguiendo tu imaginación, se pueden construir muchos más, y si además cuentas con más piezas de technic, entonces los modelos pueden llegar a ser muy personalizables.

Lego NXT

Lego NXT

Para más información: http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT

Written by admin in: Lego NXT | Tags:
Nov
11
2008
0

Primer mensaje.

Recientemente me hice con un robot de Lego NXT. Hacía mucho que llebaba pensando comprarme uno, pero por unas cosas y otras no encontré el momento adecuado.

Por fín lo tengo, ya he empezado a trastear con el y me apetece tener un registro donde compartir mis experiencias y conocimientos.

¡Hasta pronto!

Written by admin in: Lego NXT |

Powered by WordPress | Aeros Theme | TheBuckmaker.com WordPress Themes