7.2 (Re)Positioning The School
7.4 Continuing Professional Development
El software abierto para el libre desarrollo, permite desarrollar productos innovadores e impulsa el avance tecnológico en diferentes áreas, ya que al ser gratuito tiene mayor fuerza de investigación y desarrollo. Tanto ingenieros como entusiastas son capaces de desarrollar productos y servicios por medio del software libre, esta es una herramienta muy valiosa para la creación de nuevas empresas con base tecnológica, debido a que se elimina el pago de licencias.
La librería de código abierto OpenCV para visión artificial, puede ser utilizada con diferentes lenguajes de programación (C, C++, java y python). OpenCV cuenta con una gran comunidad de usuarios, por lo tanto se encuentran muchas ideas y mejoras disponibles, la mayoría de desarrollos encontrados utilizan C++. El lenguaje de programación que se utilizó en este trabajo de grado fue python, inicialmente se programó la parte correspondiente a visión artificial en C++, pero debido a que ROS solamente permite su manejo con python, se determinó realizar el desarrollo completo del trabajo de grado en python. Python permite una mayor simplicidad con respecto a C++, las principales ventajas fueron la eliminación de la declaración de variables, el permitir obtener diferentes valores de salida en una sola función sin tener estos que estar dentro de un arreglo matricial y la organización del código, ya que no se requiere el uso de llaves sino se utiliza la indentación, lo cual permite seguir el flujo del programa de una manera más sencilla.
El uso de ROS (Sistema Operativo Robótico) como herramienta para el control de la plataforma móvil entorpeció el inicio del trabajo de grado, debido a su complejo modo de operación. Anteriormente en un proyecto basado en el robot iRobot Create utilizando Matlab como herramienta de programación, se evidenció una interfaz más sencilla, y que permitía un rápido entendimiento en su manejo. Sin embargo, una vez se entiende la arquitectura de grafos de ROS, se puede manipular sin mayores complicaciones. Las comunidades de desarrolladores de OpenCV y ROS fueron una gran ayuda en el desarrollo del proyecto. En repetidas ocasiones, preguntas relacionadas a la programación del open source y debates específicos de éste proyecto en foros web, fueron muy oportunos para la solución de errores y replanteamiento de ideas, pues se recibió una rápida retroalimentación por parte de esta comunidad que desinteresadamente brinda ideas y enseña. Esta útil herramienta, fue la solución a los varios estancamientos en los que el proyecto cayó durante la implementación. Actualmente formo parte de esta comunidad que coopera en búsqueda de un más rápido desarrollo tecnológico, razón por la cual dejo manuales y valiosa documentación sobre ROS en los anexos, los cuales pueden ser consultados para realizar desarrollos en ROS por parte de nuevos usuarios.
La transmisión de imágenes por medio de una red local IP entorpece la continuidad de la operación del robot, ya que cada vez que el sistema está capturando una imagen el sistema se detiene. Para reducir el tiempo en el cual el sistema esté transmitiendo la imagen, se redujo la resolución de la imagen al mínimo posible (0.7 megapíxeles). Sin embargo esto tiene un costo en el procesamiento de imágenes, ya que se pierde precisión en los cálculos. La solución a este problema es el desarrollo de un sistema embebido el cual no transmita una imagen inalámbricamente sino solamente los comandos hacia el robot, esta implementación eliminaría la utilización del router, permitiría la manipulación de imágenes con mayor resolución y agilizaría la continuidad de la operación del robot.
El celular utilizado tiene los recursos suficientes para procesar la imagen. Si el procesamiento se realizara en el celular no sería necesario trasmitir imágenes sino solamente la información necesaria para el funcionamiento del robot (dirección y tiempo de avance o giro).
Los cambios en la iluminación global son con frecuencia un reto en las escenas al aire libre. La dirección, intensidad y el color de la luz ambiente influyen en el reconocimiento de los objetos. Para contrarrestar cambios muy bruscos en la iluminación, el sistema permite cambiar el patrón de color cada vez que se considere necesario, sin necesidad de modificar el código (por medio de la interfaz). También permite cambiar las pelotas por otras de diferente color y/o cambiar las marcas sobre el robot.
El robot iRobot Create es una plataforma comercial robótica que posee varios sensores los cuales permiten implementaciones en robótica móvil muy completas. Sin embargo para esta implementación no se utilizaron estos sensores, debido a que ninguno de estos sensores era lo suficientemente sensible para detectar la colisión con una de las pelotas. Los encoders tampoco fueron utilizados en esta
60
implementación debido a que la precisión de estos no es buena, esto se debe a que el iRobot Create es una plataforma robótica comercial económica y no posee la precisión necesaria.
El desarrollo del proyecto como producto es viable. Tras realizar el análisis financiero del producto, se llega a la conclusión de que se necesita una gran inversión inicial para continuar con la investigación y desarrollo de este. Sin embargo esta cantidad puede ser retribuida en los siguientes tres años a la inversión. Ser capaz de inventar e innovar no es suficiente, la capacidad de reconocer una necesidad en el entorno es una ventaja, pero saber vender una idea y llevarla al mercado es la clave del éxito.
61