martes, diciembre 12, 2006

Paso 7: Visión, se pudo

Hace rato que no actualizamos la página y no por eso significa que el proyecto se haya abandonado, sino todo lo contrario. Queja más, queja menos, logramos hacer una interfaz medianamente decente para el sistema de visión del proyecto y lo mejor de todo... funcionó!

Ahora que está hecho, es muy probable que caigamos en el comentario típico: es una tonteria. Sin embargo, las idas y vueltas quer tuvimos desde finales de octubre nos levaron a tener severos atrasos en el desarrollo del programa, por lo que tuvimos miedo de fracasar en ésta etapa. Además, la cosa podía complicarse más de lo esperado si éste trabajo no se presentaba para la materia de Computadores II donde uno staba anotado en la materia y el otro la cursó de oyente para reforzar y aprender algunos temas perdidos.

Finalmente, en casi 5 días y sus respectivas noches, instalamos el bunker y le dimos duro y parejo, dejando como lo resultado lo que viene a continuación.





1. Retomando la idea del proyecto

Con el título de “Estimación de Posición y Velocidad de un Patrón Visual” se entregó un informe en el que se detallaron los sieguientes objetivos:

"Por medio del paquete Artoolkit, realizar la captura de imágenes, medición de la posición de un patrón visual en el plano y posterior estimación de la velocidad. Con estos datos, se presentan en pantalla las gráficas de los valores obtenidos. Finalmente, ésta información se enviará, vía puerto serial, a una terminal de dialogo para su posterior empleo. "

2. Sistema de visión

Dado que la etapa de captura de video significaba invertir una gran cantidad de tiempo en desarrollarla, decidimos adoptar como base el paquete Artoolkit v1.7.3 . De ésta forma pudimos no sólo capturar imágenes de video entregadas por una camara, sino que, además, nos permitió identificar los marcadores que servirán de objetivo para el seguimiento en posición y velocidad de la plataforma, al poder obtener con relativa sencillez la posición del marcador en el eje x-y-z.

3. Interfaz de Usuario

Al ejecutar el proyecto, se presenta una pantalla en la que se setean los parámetros de la captura de video tales como, la velocidad de cuadros por segundo, tamaño en píxeles de la ventana y el formato de color ha emplear, siendo estos últimos, los únicos que pueden modificarse.

Una vez finalizada la configuración del video, emerge la pantalla principal de la figura 1, donde se realizan todas las operaciones propuestas. En la misma, se puede observar los módulos anteriormente mencionados y demás información necesaria para la obtención y el análisis de los datos.

En un recuadro se presentan los parámetros dimensionales de la imagen como así también el tiempo de captura. Este tiempo es empleado por el programa para la realización de las siguientes tareas:

  • Ejecución del bucle principal. En él se almacena la imagen, detecta el marcador y se obtiene la matriz de transformación.
  • Exhibición de las coordenadas en pantalla.
  • Envío de la información por el puerto serial.
  • Conformación del vector de la imagen capturada.

Figura 1. Pantalla principal del entorno visual, identificación y comunicación.

Se ha colocado además una barra de desplazamiento (con un indicador de valor), con el objeto de establecer en forma manual el umbral de binarización empleado para la detección del marcador. Este valor, previamente seteado por default en 100, será enviado a la clase responsable del tratamiento de la imagen.

En el cuadro “Identificación del Marcador”, la clase responsable de la generación de gráficos, muestra una imagen en donde se efectúa el seguimiento, mediante cursores, del patrón empleado. La intercepción de la línea vertical y horizontal denota la ubicación actual del patrón, entendiéndose como la coordenada X=0 e Y=0 (independientemente de Z) la posición central de la imagen.

En otro cuadro, denominado “Estimación de la Posición”, se presentan los valores x-y-z que posee el marcador con respecto a la cámara. El patrón empleado para su identificación es el propuesto en el paquete Artoolkit.

Finalmente, se estableció un cuadro de Comunicación. En él se presenta información referente al manejo del puerto: apertura, configuración y tiempo de espera. Además, se colocó un botón que, al oprimirlo, establece los parámetros de la comunicación (velocidad de transmisión, cantidad de bits de datos, paridad y número de bits de parada). Ello habilita el puerto serial de la PC para el envío de datos.

La transmisión cesa al oprimir dicho botón nuevamente. Los datos enviados serán las coordenadas del marcador x-y-z.


4. Detalles del programa

La programación del proyecto fue realizada en wxDev-C++ V6.10, utilizando el compilador GCC por defecto, para ser usado en Windows (Win32 modo gráfico).

Se desarrollaron tres clases:

Artool: Núcleo del programa. Posee todos los métodos y atributos necesarios para el análisis de imágenes y detección de de los patrones o marcadores.

En un método de inicialización, abre la ruta de acceso a video, determina el tamaño de la imagen y configura los parámetros de la cámara.

El método principal, captura la imagen, detecta los marcadores, determina la visibilidad de los mismos y obtiene la matriz de transformación entre el marcador y la cámara.

Finalmente, detiene la captura de imágenes y cierra el acceso al recurso de video.

Complementariamente, la clase está provista de una serie de “geters” y “seters” para obtener las coordenadas del patrón y ajustar el umbral de binarización.

PlotXY: Esta clase realiza la confección de la imagen mostrada y, por medio de la importación de ciertos atributos de la artool, establece los cursores de identificación y seguimiento del marcador.

SerialCom: Una de las funcionalidades que se aportó a la librería Artoolkit es la comunicación con diferentes dispositivos desde la PC, a través del puerto serial.

La clase CSerialCom provee todas las características típicas del manejo del puerto. Entre ellas se puede contar con los parámetros de comunicación (tasa de baudios, cantidad de bits de datos, paridad, número de bits de parada), los tiempos de espera para la escritura y lectura de datos, la apertura y cierre del puerto y, finalmente, las funciones de envío y recepción de datos. Incluso, fue agregado un método dedicado al envío de cadena de caracteres ya que un solo byte no es suficiente para los fines del proyecto.


5. Conclusiones

Al desarrollar el Proyecto, nos propusimos cumplir con esmero los objetivos planteados en el pre-informe.

Los inconvenientes encontrados fueron, en su mayoría, la configuración del paquete Artoolkit y las librerías que éste requiere. Otra dificultad, que por falta de tiempo no hemos podido solucionar, fue el de presentar la imagen capturada por la cámara en el formulario. Y finalmente, el hecho de querer modificar on-line el tiempo de muestreo.

Como desarrollo a futuro, se trabajará para solucionar los inconvenientes presentados, como así también el de optimizar la identificación del marcador empleando, entre tantas cosas, un ajuste eficiente del umbral de binarización. Otorgarle robustez a la comunicación con dispositivos externos. Exhibir la imagen capturada conjuntamente con la identificación de los marcadores y la estimación de la velocidad de los mismos. Se desea incursionar también en el empleo de threads (hilos de ejecución) los cuales, por cuestiones de tiempo, no hemos llegado a preparar.

domingo, octubre 29, 2006

En que andamos?

A modo de actualizar la página, y lejos de confirmar otro paso alcanzado, ambos nos encontramos abocados en saldar compromisos, ya sean de índole laboral, proyectos que se encontraban en curso ó, en el caso de uno de nosotros, terminar de cursar las últimas tres materias de la carrera. Deseosos por dedicarle el tiempo que un proyecto final requiere, continuamos mientras tanto diseñando la mecánica del sistema. No mostramos un progreso aparente en este tema, somos conscientes de ello, pero sucede que en este último mes hallamos un método por demás interesante de transmisión. Si bien sostenemos nuestros objetivos mencionados en publicaciones anteriores, con esta nueva técnica reduciremos costos de diseño y tiempo de armado. La idea es hallar el sistema de transmisión que más se ajuste a nuestros requerimientos. Hasta que punto lograremos equilibrar la relación costo-beneficio?

En este último mes, nos hemos pasado tardes llenando pizarrones con diseños de estructuras, despieces, medidas, resultados de pruebas de torque y velocidad de nuestros motores, por citar algunos temas. Basándonos únicamente en nuestra experiencia práctica y capacidad creativa, nos preguntamos si somos capaces de crear nuevos diseños, formas constructivas que disten de lo convencional, resignar lo existente en el mercado local y de uso común, si no son estos los adecuados para implementar. Sobre todo si provenimos de un tipo de Ingeniería que no nos forma en estos temas, sino que aborda la etapa mecánica como una "caja negra" que deberá de comportarse según pautas de funcionamiento establecidas.

Pues bien, cuales son las fuentes de diseño de nuestra planta (llámese "planta" a la estructura física del proyecto)? Un gran porcentaje proviene de nosotros mismos, como mencionamos, de experiencias laborales, de teoría recurrida e investigaciones realizadas sobre cada tema. Pero hemos de destacar la intervención de ellos, los amigos de siempre, compañeros de carrera que han caminado junto a nosotros a lo largo de estos años. Conmueve realmente verlos tomarse como propia esta idea, involucrarse sin pedírselo. Los ves debatiendo, manifestándose, y llenando pizarrones junto a nosotros. Estuve tratando de encontrar una palabra que encierre esa sensación de ver a estos futuros monstruos de la Ingeniería reunidos, preguntándonos constantemente como vamos, en qué andamos. Y la misma fue... emocionante, nada mas sincero y gráfico que eso. Nombrarlos a todos sería pasarnos días escribiendo y seguramente nos olvidaremos de muchos que, en mayor ó menor medida han intervenido proponiendo ideas ó bien, brindándonos su apoyo. Y a modo de retribuirles de una manera muy humilde pero sincera aquello, queremos darlos a conocer en nuestras sucesivas publicaciones. Hoy, un compañero y amigo, Juan Pablo Demolis, Paco, como todos lo conocen. Está desarrollando, en conjunto con un equipo de personas entre los cuales se encuentra uno de nosotros, un proyecto para una importante empresa nacional, líder en su mercado. Conjuntamente, lleva a cabo una ayudantía en la materia Control Automático II. Además se halla cursando sus últimas materias y conformando su Trabajo Final.

En días pasados, el equipo estuvo intercambiando ideas sobre varios aspectos del sistema de visión artificial. Fue quizás, la charla más delirante que hemos tenido. El corazón de este delirio se originó en la manera de fijar las coordenadas de un objeto en movimiento establecidos desde la cámara, donde a su vez la misma se halla moviéndose. En lo personal recordé los orígenes de la teoría relativista de Albert E. Conclusión y primera aproximación, empleo de lógica difusa, ó al menos la idea en que ésta se basa, para guiar la plataforma por el campo de acción. Pero recuerden que es solo una primera hipótesis para solucionar este problema de movimiento relativo.

Por ahora es todo lo que tenemos, faltan establecer entre todas las alternativas presentes, aquella a emplear. Pero nos tranquiliza saber que nos encontramos transitando la etapa más crítica, los prediseños.

sábado, septiembre 30, 2006

Paso 6: La estructura. Primeras definiciones

Qué es lo que se busca al momento de diseñar algo? Fundamentalmente que el resultado final sea el esperado, pero qué se espera? Qué es lo que uno está dispuesto a resignar para llegar a concretar un proyecto? Todas estas preguntas nos hicimos nosotros en la facultad tras horas de deliberar cómo es que íbamos a encarar la construcción. Como una suerte de torbellino de ideas, empezamos a listar aquellas cosas que priorizábamos sobre otras.

Fundamental, que la estructura sea rígida: pequeños movimientos causados por el propio desplazamiento de la plataforma ocasionarían entradas de perturbación que influirían no solo en la parte de compensación de oscilaciones sino también en un cambio en las coordenadas visuales de la cámara. Explicado de otra manera, quizás más simple, al moverse la estructura de repente, el sistema, por el lado de la cámara, interpreta ésta como que el objetivo ha "pegado un salto". En ese momento los datos cambian y se ordena a los motores que busquen esa nueva posición. Un segundo más tarde todo vuelve a su estado de reposo inicial y la cámara reordena a los motores la nueva coordenada. Pero, el objeto había cambiando bruscamente su posición? Para la cámara sí. Por otra parte está el sistema de compensación, el objetivo del mismo es el de mantener la carga sin oscilar durante todo el recorrido; se imaginan que pasaría si, paralelamente que se efectúa el movimiento planar del sistema, la estructura cede? No solo se compensarían las oscilaciones propias del traslado, sino también las de la propia estructura que a su vez afecta la del traslado. Es tan confuso supongo entender lo que pasaría si no se hacen las cosas como deben, como para nosotros tratar de explicarlo.


Retomando, rigidez. Otro factor importante es el tiempo de armado. El equipo se planteó hacerse primeramente de la planta para, sobre ella, empezar los estudios de identificación. Con planta me refiero al sistema físico, la estructura. De nada nos serviría emplear el tiempo armando maquetas que poco tendrían que ver con la estructura final. Por lo tanto, y apurados por comenzar las tareas de programación en C++ para el reconocimiento de patrones, decidimos dedicarnos ambos en buscar diseños y los materiales a utilizar, en lugar de que uno solo de nosotros lo haga. Este mismo concepto de minimizar los tiempos sirve también para el lapso de armado y la versatilidad de los materiales a emplear. Debemos buscar cierta forma de construir la estructura que nos permita efectuar modificaciones sin que tengamos que desechar, ni el material ni el tiempo que nos llevó construir esa parte. Por consiguiente, nuestro criterio es el de emplear la menor parte de piezas especiales, y hacernos si,

de piezas estándar de fabricación sencilla. Puede pensarse esto como una suerte de Lego (o será que los dos tuvimos ese juego...).















Y por último, pero no menos importante entre nuestros criterios de fabricación, esta la estética y por supuesto, el monto a costear. El equipo, de común acuerdo desde el inicio de este reto, se planteo casi como fundamental cuidar la estética del trabajo presentado (eso no quita que no podamos cumplir con eso, pero apuntamos a que no ocurra). Y por último, como bueno y barato no son conceptos que vayan de la mano, se intentará alcanzar un aceptable en lo que refiere al factor costo-material empleado.

(*)









(*) Datos obtenidos de Industrias JQ

Nuestras metas eran claras, solo había que encontrar un diseño y materiales que se adapten a las mismas. Una de las mejores opciones que hallamos fue la de utilizar perfilería de aluminio para confeccionar el "esqueleto" de la plataforma. Este tipo de material cumple con casi todas las expectativas propuestas, con excepción de, como era de imaginarse, el precio. Son muy pocos los fabricantes en el país de perfilería especial, mayoritariamente todo lo que se encuentra en plaza es importado, y sus costos, elevados. Es por eso que en veinte días aproximadamente el equipo viajará a Rosario para visitar una de las únicas empresas nacionales que trabajan la extrusión para conformar este tipo de material, y poder hacernos de la cantidad de metros lineales que utilizaremos.











El sistema de tracción comentado en días anteriores ya está practicamente definido, solo debemos ultimar detalles y llevar a cabo pruebas de velocidad y torque en nuestros motores. El tipo de material no ferroso para las poleas según criterios de diseño tenidos en cuenta fue el nylon. Este cumple con los niveles de dureza esperados observando ventajas significativas por sobre el delrin, teflón, poliuretano y polipropileno. Con respecto a las guias utilizaremos unas barras rigidas de aluminio en las cuales se le mecanizarán las ranuras de acople por fricción de las poleas y el alesado de las espinas de centrado.













































Falta definir la estructura móvil, sobre todo las transmisiones internas, pero para ello faltan hacer ensayos. Esperamos tenerlos para esta semana.

Gracias por el apoyo que recibimos y por las manos tendidas, esperemos alcanzar las metas propuestas.

Un gran abrazo a todos!

jueves, septiembre 07, 2006

Paso 5: Primer ensayo de visión andando!

Paso 4: Primeras aproximaciones al sistema mecánico: La Tracción

Uno de los detalles más importantes a tener en cuenta es la mecánica del sistema. Los estudiantes de ingeniería, con orientación electrónica y/o de programación, tenemos por costumbre desdeñar los aspectos mecánicos, y mucho más los químicos, de cualquier problema. Sin embargo, si las cosas tienen que salir bien, es un aspecto que no debemos descuidar. Más adelante, cuando seamos dueños de nuestras propias empresas, nos daremos el gusto de contratar a alguien que lo haga por nosotros, pero mientras tanto no queda otra salida.

Sabíamos por otros proyectos finales que hemos visto, que la traslación del carro podía ser un inconveniente grave a sortear durante el desarrollo del trabajo. Entre las dificultades que encontramos con el uso de engranajes y correas, podemos citar:

  • Juego o zonas muertas.
  • Resbalamientos.
  • Alto roce.
  • Paso discreto.
  • Vibraciones.


Como se había comentado anteriormente, Raúl hizo algunas sugerencias respecto de la tracción de los carros en la plataforma. Una de ellas es el empleo de una cremallera con perfil de W (o multi V), posiblemente de fundición. Sobre la misma irán apoyadas las ruedas del carro, que serán maquinadas para que el contacto sea puntual y trabajadas con un material como la Poliamida o similar.

El sistema completo se conoce como rueda de fricción y entre las ventajas que encontramos tenemos:

  • Eliminación del juego.
  • Deslizamiento suave.
  • Mejor aprovechamiento de la potencia disponible.
  • Cero resbalamiento.

Ahora esperamos que con todas estas ventajas la cosa salga bien. Los detalles y especificaciones vendrán más adelante, por el momento no es más que una introducción.


Poliamida:

http://es.wikipedia.org/wiki/Poliamida

http://www.jq.com.ar/Imagenes/Productos/Poliamida6/poliamida6.htm

Rueda de fricción:

http://fai.unne.edu.ar/contenido/6TRANSMISION%20DEL%20MOVIMIENTO.htm

Paso 3: Esquema general del sistema

Como podrá verse más adelante, el sistema que hemos pensado puede tomarse como un conjunto de bloques relacionados entre sí, en el que cada uno cumple con una función específica.

Núcleo: Corresponde al microcontrolador y aún no se ha determinado si uno solo concentrará todas las funciones a realizar, o serán más para distribuirse las tareas. En una primera etapa creemos que los uC de ATMEL, en especial Atmega8 o Atmega16, podrían ser de mucha utilidad. Las razones se deben a la familiaridad que poseemos con la marca y a la existencia de un programador casero para cargar los programas al micro.

Sensores: Serán los encargados de medir la posición de la plataforma en el plano y el ángulo del péndulo para que el control de las oscilaciones tenga efecto. En el primer caso, se emplearán encoders y, en el segundo, se necesitarán dos potenciómetros o sensores de efecto Hall, uno por cada grado de libertad o eje.

Actuación: Se trata del elemento final de control, en nuestro caso son dos motores de imán permanente de corriente continua, para cubrir los movimientos en el plano x-y. Además, se deberán construir drivers que serán los encargados de suministrar la potencia necesaria para que éstos funcionen correctamente.

Comunicación: El uC estará comunicado permanentemente con una PC para informarle de la posición de la plataforma y los ángulos del péndulo. A esto se le agrega el sistema de visión residente en la PC, que determinará la referencia en posición y velocidad para el seguimiento de objetos, por lo que deberá transmitir al micro tanto posición como velocidad respecto del carro principal de la plataforma.

Visión: Uno de los atractivos del proyecto será el uso de una cámara web que se empleará para observar los eventos que sucedan bajo el manipulador. En éste caso, nuestra intención será usar paquetes o herramientas ya desarrolladas que faciliten los cálculos del procesamiento de las imágenes digitales.

Entradas Discretas: Existirán en un principio dos tipos diferentes de sensores discretos. Por un lado, habrá microinterruptores para realizar la calibración del manipulador y, por el otro, barreras ópticas para determinar el sentido de paso de los vehículos bajo la plataforma.


Atmel: www.atmel.com

Atmega8: www.atmel.com/dyn/products/product_card.asp?part_id=2004

Atmega16: www.atmel.com/dyn/products/product_card.asp?part_id=2010

Grado de libertad:

www.dliengineering.com/vibman-spanish/gradodelibertad1.htm

http://es.wikipedia.org/wiki/Grado_de_libertad

http://club.telepolis.com/ohcop/gradlibe.html

http://pespmc1.vub.ac.be/ASC/DEGREE_FREED.html

http://en.wikipedia.org/wiki/Degrees_of_freedom_(engineering)

www.zyvex.com/nanotech/6dof.html

Efecto Hall: http://robots-argentina.com.ar/Sensores_magnetismo.htm

Drivers:

http://robots-argentina.com.ar/MotorCC_PuenteH.htm

http://www.x-robotics.com/motorizacion.htm

http://www.eis.uva.es/amuva/cybertaller/electronica/electronica.htm

http://robotroom.com/HBridge.html

lunes, septiembre 04, 2006

Paso 2: Entrega del Pre-Proyecto y primeros bocetos

El Lic. Germán Osella acordó participar como director de nuestro proyecto, causando una gran satisfacción. Esto es mucho más que un paso fundamental ya que su buena predisposición y conocimientos fueron determinantes a la hora de su elección.

A continuación detallamos el Pre-Proyecto entregado. Si bien es la primera aproximación concreta al problema que nos hemos planteado, nos servirá para desarrollar nuestro trabajo futuro

Descripción:

La motivación impulsora del presente trabajo, es el desarrollo de un sistema de control que elimine las oscilaciones de una carga con movimiento pendular. Para ello, se construirá un manipulador del tipo plataforma de 2 grados de libertad.

A modo de generar el movimiento planar del manipulador, se empleará un sistema de Visión Artificial con el fin de localizar y seguir patrones visuales dentro del campo de acción de la plataforma.

Sistemas de este tipo podrían aportar soluciones donde la carga o descarga de materiales deben efectuarse sobre vehículos en movimiento, en los cuales el tiempo y costo son factores determinantes.

Objetivos Propuestos:

  1. Lograr compensar el movimiento pendular de una carga en un grado de libertad.
  2. Incorporarle al proyecto un sistema de reconocimiento de objetivos móviles empleando visión artificial, con el fin de generar un seguimiento de los mismos en dicho grado de libertad
  3. Adicionar un grado de libertad para los dos ítems anteriores de manera tal que el control y el seguimiento se lleven a cabo en el plano x-y.
  4. Lograr la manipulación de una carga sobre objetivos móviles y/o estáticos.
  5. En función de las pautas anteriormente mencionadas, implementar distintas estrategias de control a modo de comparación del desempeño del sistema.

domingo, agosto 27, 2006

Paso 1: Definición del Pre-Proyecto

La semana del 20 de agosto definimos el Pre-Proyecto aunque todavía resta determinar el lugar donde trabajaremos.

Luego estuvimos con Raúl durante la mañana del 26/08 buscando orientación para la construcción del sistema de tracción y soporte de la plataforma. Entre las ideas que surgieron, a las que más tarde entraremos en detalle, dejó expuesto un pensamiento interesante a la hora del diseño:

Siempre se debe considerar el Factor de Ignorancia.

jueves, agosto 17, 2006

Paso 0: Preliminares y un poco de historia

Corrían los últimos días del mes de diciembre de 2005, cuando sucedió el encuentro y formalización del equipo para trabajar en el proyecto final de carrera. Ninguno de los dos tenía una idea clara sobre qué sería conveniente hacer, ni qué temas abordar siendo que habíamos pasado algún tiempo dedicándole nuestros pensamientos al techo oscuro de la habitación, a quitarle horas al sueño con sueños vanos y otros no tanto.

Unas pocas palabras fueron suficientes para fijar un pacto, un compromiso que significaría mucho más que estrechar las manos. Se trataba de trabajar a la par por unos cuantos meses hasta completar y validar el esfuerzo realizado durante toda una carrera.

Pasó el verano y los cerebros continuaron estériles. Llegó marzo y poco a poco asomaron algunos indicios de vitalidad. A partir de allí pasamos por varias ideas, desde las más locas hasta las más banales, chocamos contra puertas sin picaportes y desembocamos en laberintos sin salidas. Sin embargo, las propuestas que inicialmente habían sido desechadas terminaron siendo las que tomaron forma.

En medio del trajín diario en la facultad aparecieron propuestas laborales de toda índole, tanto para uno como para el otro, y muchas de ellas implicaban abandonar el Proyecto Final de Carrera e incluso el país.

La decisión fue una sola y optamos por mantener con vida el compromiso establecido en diciembre. Aún así, los modelos mentales que cada uno tenía fueron puestos a prueba en agosto con resultados algo inesperados: aquello que suponíamos viable ya no lo era.

Nuevamente tuvimos que poner todos nuestros esfuerzos en una nueva idea o en reaprovechar los despojos de otras ya usadas. Agosto debía ser el mes del comienzo y seguía siendo el mes de la búsqueda, por lo que nuestra situación no resultó ser la más cómoda.

Finalmente llegamos al 14 de agosto de 2006. Pasamos todo un día encerrados en un aula debatiendo, pensando, en silencio, dibujando… y nos pusimos de acuerdo.


Modelos Mentales