martes, 14 de diciembre de 2010

Py-caro

Py-caro es una aplicación del tipo front-end para icaro.
La idea es tener un programa que permita de forma visual y simple hacer una primera aproximación a la manipulacion de mecanismos electricos sencillos (motores de corriente continua, paso a paso, leds).
Py-caro esta programado en python usando las librerías pygame para gestionar los gráficos, y ejecutando código icaro para mandar señales a la placa np03.
la version para descargar esta en estado BETA, funciona y mas o menos hace lo que tiene que hacer, pero le falta un gran trabajo de correccion de errores (sobre todo los errores en tiempo de ejecución tan dificiles de descubrir).
El sistema se basa en poner objetos (motores, leds) y mediante conectores y lineas, unirlos a las salidas correspondientes de la placa np03.

pantalla principal de Py-caro

el programa es bastante simple visualmente, a la derecha estan lo botones con los objetos que se pueden insertar, motores de corriente continua, motores paso a paso, un botón para encender un led o cualquier cosa que requiera un solo pin de la placa, un botón para activar hasta 4 pines a la ves y un jostick ara manejar u pequeño robot de 2 motores que muevan sus dos ruedas.
a la izquierda se encuentan los 8 pines de la placa de control (de color violeta) donde se conectan los objetos para controlar mecanismos físicos en la placa. los pines violetas estan ordenados de arriba a abajo, siendo el mas alto el pin numero 1 y el mas bajo el pin numero 8, en realidad son representaciones de un byte por lo tanto su orden seria:

pin 1 = 1
pin 2 = 2
pin 3 = 4
pin 4 = 8
pin 5 = 16
pin 6 = 32
pin 7 = 64
pin 8 = 128

Funcionamiento


Para empezar se elige el objeto en el menú de la derecha, el cual aparecerá en la pantalla .

controlador de motores de corriente continua

Con el boton derecho del mouse sobre el cuerpo nos permitira moverlo y acomodarlo en distintas partes de la pantalla.

detalle del controlador de motores C.C

Los botones verdes ejecutan código ICARO cuando se los aprieta (boton izquiero del mouse), para conectar el controlador con un pin violeta primero hay que hacer click con el boton del medio (generalmente la bolita que sirve para subir y bajar de pagina) o con los dos botones al mismo tiempo (en notebooks) sobre el conector amarillo, con eso aparecera una linea blanca que seguirá al puntero del mouse.

linea para unir el conector amarillo con el violeta


Para "fijar" la unión entre los dos conectores, llevar el mouse hasta uno de los pines violetas y apretar el botón izquierdo y se dibujara una linea roja que representa la unión y a cual pin controlara el objeto.


controlador de C.C conectado al pin 1 de la placa

una ves conectados todos los pines del controlador, al apretar sobre los botones verdes, se ejecuta código ICARO y activa un pin o los dos pines para mover para un lado o para el otro al motor c.c (usando un rele doble inversor o un puente H).
En el siguiente ejemplo se puede ver como controlar un motor paso a paso desde Py-caro, y ademas la integración con el entorno SUGAR para las OLPCs.


controlador de motores paso a paso (4 bobinas)




Video de Py-caro con SUGAR

En el video anterior se puede ver como Py-caro esta integrado con SUGAR y controla un pequeño motor paso a paso de una impresora vieja.


dos formas de controlar un motor paso a paso

También se puede controlar usando objetos "led" y activando una a una las bobinas del motor (presionando en secuencia en cada controlador led).

Para descargar el código fuente escrito de Py-caro:

http://valentinbasel.fedorapeople.org/pycaro.tar

todavia hay mucho por mejorar, pero ya se pueden grabar las sesiones y volverlas a abrir con los controladores para c.c, led y "paso a paso".
tambien hay un par mas de controladores para agregar como, semáforos, vayas que suben y bajan o controladores personalizados.
esta version trabaja con icaro-0.6.2.261110 y puerto serie, para usarla en puerto paralelo hay que modificar todos los icr que están en la carpeta icaro, pronto voy a subir una modificación que permita usar los dos puertos indistintamente

jueves, 25 de noviembre de 2010

robot con brazo actuador

Este robot usa el mismo chasis que el robot con cámara de vigilancia, solo que se sustituyo la cámara por un brazo de 1 grado de libertad (solamente en el eje Y) con una pinza hidráulica echa con 2 jeringas como mecanismo para abrir y cerrar la pinza.
La pinza es accionada por un motor con una varilla roscada que mueve un tornillo al que esta pegado el embolo de la primer jeringa. Cuando el motor se acciona el tornillo mueve el embolo haciendo que la jeringa empuje una columna de agua por el tubo hacia la otra jeringa que reacciona moviéndose en sentido contrario (efecto de pascal).


representación del efecto de pascal

En ese sentido el conjunto motor-varilla se convierte en un actuador lineal.
como es muy difícil saber cuantos segundos activar el motor para que mueva la jeringa hasta el tope y no se pase, se instalo dos sensores final de carrera, uno en la base del conjunto motor-varilla para que cuando el tornillo llegue hasta la base del motor se apague, y otro en la pinza.
Para controlarlo se uso dos camaras webs (una en la pinza y otra de navegación) y la interface gráfica fue echa en python con librerías pygtk, el control de los motores esta escrito con icaro 0.6 y la interface de hardware es la placa np03.
En este robot se usan 2 de las 5 entradas digitales de la placa np03 para determinar cuando la pinza esta cerrada o totalmente abierta, mediante icaro se activa el motor-varilla hasta que la pinza aprieta el sensor o el tornillo llega hasta la base del motor.

robot visto desde arriba



Vista de costado


Detalle de la pinza y la jeringa

Detalle del actuador lineal

Motor y sensor "final de carrera"


Vista general del actuador lineal con
la jeringa

Los videos siguientes muestran como funciona el robot para agarrar una pequeña flor de papel en una plataforma y mover lo hacia otra plataforma.
el sistema se controla desde VNC y la GUI esta escrita en python.
Los dos videos muestran la misma escena, uno filmando el robot y el otro es una captura de escritorio de la computadora que se uso para controlar remotamente al robot.





filmación del robot trabajando.





captura de escritorio VNC.



miércoles, 22 de septiembre de 2010

robot de vigilancia

La placa de conexión NP03 sirve de interface entre la computadora y los periféricos (sensores, actuadores) que queramos controlar con el lenguaje ICARO.

Se conecta a la computadora mediante un cable Serie o un adaptador Serie/USB y puede manejar hasta 8 dispositivos digitales (ON/OFF) simultáneos con una tension maxima de 12 V - 500 mA y la minima de 5 V - 500 mA

La parte mas importante del circuito es el microcontrolador PIC 16F628A que sirve de interface para demultiplexar los bytes enviados a traves del puerto serie, y para mandar informacion de los 6 sensores digitales que tiene.




Esquema de funcionamiento de la placa



diagrama esquemático del circuito

PCB de la placa


Este es un Robot con cámara de vigilancia aprovechando la placa np03 de puerto serie/usb, el sistema esta controlado por una netbook ASUS de 8 pulgadas y 2 gigas de disco duro.
en la netbook se instalo icaro (version 0.6), tkinter (para la ventana de control), opencv (para manejar las camras), vncserver (para controlar remotamente a la netbook) y python.
el mecanismo de funcionamiento es sencillo, se activa el servidor vnc y desde otra pc dentro de la misma red wifi se llama al cliente vnc (vncviewer) y se abre un usuario dentro de la netbook.
como ROOT (desde la terminal) se abre el programa ./gui.py que es una ventana echa en tkinter y python que contiene los botones para enviar la informacion a la placa de control.
cuando se apreta un boton, se graba un numero en el archivo variables.txt y se ejecuta el archivo .icr con icaro.
el software icaro lee variables.txt y en funcion del valor (que graba en una variable) del numero, activa los puertos y genera el voltaje que accionan los motores que controlan las dos ruedas y los dos ejes de la camara de vigilancia



detalle de la placa montada sobre el robot




la placa con los reles para controlar el giro de los motores


robot de costado


Vista de frente del robot



Otra vista

El siguiente es un video de 4 minutos donde se puede ver la vision del robot de vigilancia, usando sus dos camaras web (la propia de la netbook y la movil).
En el video se puede ver como desde la pc controlo el robot (mediante VNC) y lo muevo por el living de la casa.
como la computadora es de bajos recursos, los videos no son de la mejor calidad, pero sirve ara mostrar las posibilidades del sistema.




conferencia CNEISI

Estas son unas imagenes (cortesia de Matias Maceira) de la conferencia que di en el 4º Congreso Nacional de Estudiantes de Ingeniería en Sistemas de Información (CNEISI 2010) en la UTN Santa Fe.
La charla se trato sobre robótica educativa con software libre y fue una presentación de ICARO como alternativa libre a software de robótica educativa privativos.







Después de la presentación, mostré el funcionamiento de un pequeño robot controlado por una netbook (ASUS de 8 pulgadas) al cual comandaba desde otra netbook mediante una red inalambrica y un servidor VNC.
el robot esta construido con dos motores CC controlados con la placa icaro NP03 , un adaptador serie/usb que conectaba la placa a la netbook (de prestaciones similares a las XO del proyecto OLPC)
En el siguiente video se puede ver al robot navegando y mostrando las imagenes mediante su camara web en el proyector de la sala (también se puede ver como se cae tratando de cruzar un cable).




En este video, muestro el uso de librerias open-cv para reconocimiento de rostros y un proyecto de front-end para icaro escrito en python con librerías pygame.



Quería aprovechar este medio para mandar un saludo y nuestro agradecimiento a la gente que estuvo en la organización del evento que fueron muy amables en invitarnos a dar las charlas sobre software libre que se dieron en el congreso.

jueves, 19 de agosto de 2010

Nueva pagina web de ICARO

La gente de proyecto FEDORA mediante su sistema de redmine, dieron alojamiento para el codigo fuente de icaro y los planos PCB de las placas de control que estamos desarrollando.

para descargar el .tar con el código fuente de ICARO, planos, pdfs y demás información ir a la web de rpmdev:

http://rpmdev.proyectofedora.org/projects/icaro/wiki

Ahi se alojaran los paquetes actualizados del sistema he información tecnica.

jueves, 18 de marzo de 2010

camara de vigilancia

Este proyecto muestra como usar ICARO como un script para controlar dos motores CC (corriente continua) y rotar sobre sus ejes una camara web.
Se usa como interface de control un pequeño programa escrito en python usando las librerias graficas Tkinter (Tk) para generar una ventana con 4 botones (arriba, abajo, izquierda, derecha) y con otro programa en python usando librerias opencv para visualizar la camara web.
cuando se presiona un boton, el programa graba un valor en un archivo de texto (variable.txt) y ejecuta el archivo ICARO el cual toma el valor del archivo de texto y en funcion de eso, activa el motor correspondiente y su direccion.
pasandole mas datos a traves de "variable.txt" se puede aumentar o disminuir la velocidad de giro o sus tiempo de encedido.
De esta forma ICARO se vuelve un lenguaje de script y se puede controlar desde distintas interfaces como python o hasta PHP, con lo que se podria hacer una camara controlada por internet (mediante streamind de video).


Diagrama esquematico del proyecto


usando un par de motoreductores CC se controlan los dos ejes (x,y), se usan dos pines de la placa ICARO para controlar cada motor, un pin activa/desactiva la tension en el motor y el otro trabaja sobre un Rele que cambia el sentido de la direccion de giro del motor.


diseño de la camara
con los dos motores de control





Aca se puede ver como funciona el programa, primero se activa el archivo camara.py (programa python) con lo que se genera la ventana con los botones de control, despues se activa la camara web mediante opencv.
cada ves que se apreta un boton, se graba un valor numerico en un archivo de texto, luego se ejecuta ICARO mediante una llamada a sistema y abre el archivo de texto, lee el valor y activa los puerto en funcion de eso.




Imagen de la camara con el controlador





Detalle de la camara con
el motor de control eje Y

Motor eje X

placa controladora ICARO con dos reles
para cambiar la direccion de giro de los motores



Video de ejemplo de la camara