|
ROBÓTICA: LA NECESIDAD DE ORIENTAR A SERVICIOS
Al trabajar en el área de la robótica, múltiples disciplinas vienen a relucir tornando un simple proyecto en una sinergia de conocimientos que, por naturaleza, al consolidarse en el mercado se han vuelto un producto obsoleto. ¿Cuántos de nosotros no compramos un computador que en un par de meses ya se ha quedado viejo? ¿A cuántos no nos ha pasado que por comprar el mejor tablet gastamos el doble de dinero que si hubiésemos esperado tan sólo un par de semanas? Lo mismo acontece cuando tratamos de vincular en un mismo objeto las diferentes tendencias computacionales, los sensores más relevantes de actualidad y el hardware de accionamiento que hace nuestro proyecto relevante; esta convergencia de áreas demanda el tiempo que hace que nuestros proyectos lleguen al mercado ya con unas cuantas desventajas. Por esto, esencialmente, la robótica orientada a servicios ha venido a ofrecer las posibilidades de actualización inmediata, intercambiabilidad tanto de hardware como de software, y modularización de proyectos, que permita la alta reutilización de trabajos e integración de soluciones independientemente de plataformas y lenguajes de programación, grupos de trabajo y hasta de la misma aplicación para la que inicialmente fueron creadas. A continuación refiero las básicas que intervienen en el diseño de una solución de base robótica para describir después cómo es que funciona esta idea de robótica orientada a servicios y cómo puede comenzarse a trabajar obteniendo un mayor impacto y relevancia global.
Buscando una solución
Cuando se trabaja un proyecto de robótica, una tarea típica consiste en desarrollar experimentos simulados previos a la implementación real. Esta búsqueda de ahorro de dinero usualmente se torna costosa en tiempo por la generación del ambiente simulado y de los robots a utilizar, intentando que tengan una fidelidad adecuada comparada con la realidad en donde se esperan implementar. Ahora, una vez que se obtienen buenos resultados del proceso de simulación, avanzar a la realidad requiere de otra etapa consumidora de tiempo al preparar y adecuar los códigos y algoritmos a las conexiones reales del robot. Realizado esto, los problemas del mundo real emergen como los verdaderos retos de nuestro proyecto, amenazando ahora con consumir aún más tiempo y reduciendo la relevancia de los materiales y de los enfoques de programación que se están utilizando y que podrían ya no ser la mejor solución.
Así, en los años recientes, la comunidad de robótica comenzó a crecer la inquietud por desarrollar mejor software que permitiera una mayor transparencia entre los experimentos simulados y las implementaciones reales, con la firme idea de reducir los tiempos de desarrollo al mismo tiempo en que se pudieran lograr soluciones relevantes, eficientes y robustas. De esta forma se tornó clave el diseño de soluciones robóticas bajo los conceptos de: modularidad, reutilización de códigos, integración y abstracción de hardware, escalabilidad, fácil actualización, y mantenimiento de aplicaciones simple y rápido. Uno de los primeros paquetes computacionales que vino a cumplir con estos conceptos es el Proyecto Player (http://playerstage.sourceforge.net/) nacido en 2001. La reutilización de códigos que permite este software y sus capacidades de rápida simulación en 2D hicieron de este un popular sistema de contribuciones científicas, impulsando en unos años lo que no se había logrado en décadas. Sin embargo, su método de programación orientado a objetos haría que poco a poco encontrará a su sucesor.
Posteriormente en el año 2006 se comenzaban a importar los conocimientos de programación orientada a servicios utilizados en soluciones de tecnologías web, pero ahora hablando por primera vez bajo el término de robótica orientada a servicios. En este año salía la primera versión del hoy conocido como Microsoft Robotics Developer Studio (http://www.microsoft.com/robotics/). Sin embargo, su carácter de código cerrado, a pesar de ser software libre y con servicios de simulación 3D, haría que su impacto fuera prácticamente nulo entre la comunidad de robótica. Al año siguiente y confirmando la tendencia de hacer software bajo los conceptos ya mencionados nacía el proyecto ORCA (http://orca-robotics.sourceforge.net/) como un software orientado a componentes en donde drivers y algoritmos se volvían bloques de programación denominados componentes, simplificando aún más el desarrollo de aplicaciones complejas a partir de la integración de partes simples. Sin embargo, al 2008 se crea ROS (http://www.ros.org) como una evolución al proyecto Player y ORCA ofreciendo una arquitectura y funcionalidad orientada a servicios muy similar a la del Microsoft Robotics Developer Studio pero en carácter de software abierto y de base Linux. ROS es hoy por hoy quizá el más popular software de diseño de proyectos y soluciones robóticas. Cabe mencionar, que en la actualidad, el impacto de ROS y del Microsoft Robotics Studio 2010 han promovido en gran manera la generación de soluciones robóticas orientadas a servicios, proveyendo del camino para el rápido prototipado en simulación e implementación real de tal forma que ya existen disponibles gran cantidad de servicios reusables e integrables.
Y entonces, ¿Qué es un servicio?
Orientando a servicios
Un servicio, computacionalmente, no es más que una clase cuya instancia es un objeto remoto conectado a través de proxies para obtener un comportamiento deseado. En otras palabras, es un bloque de código representando componentes de hardware como sensores y actuadores, componentes de software como interfaces de usuario y algoritmos especializados, o incluso algún tipo de integración de datos como repositorios, fusión de datos y orquestadores de múltiples servicios. Estos bloques pueden interconectarse según las necesidades de la tarea, dando lugar a proyectos y aplicaciones complejas en base a la utilización de múltiples bloques simples y organizados.
La principal ventaja de desarrollar bajo este concepto es que ya existan servicios pre-desarrollados en repositorios de libre utilización que otros desarrolladores puedan tomar para sus propias aplicaciones. Inclusive, de no existir el servicio que se requiere, se podría codificar y contribuir así a un mayor repositorio. La idea central es que no se requiera del entendimiento total del código que contiene un servicio ni de su lenguaje de programación, sino simplemente de qué hay que enviarle y qué nos responderá a través de los proxies para comenzar a utilizarlo.
Comparando con soluciones orientadas a objetos, orientar a servicios resulta conveniente porque se tiene un acoplamiento más libre y menos riguroso entre las componentes de una aplicación. Además, brinda la libertad de codificar en varios lenguajes de programación para una misma aplicación, lo que lo hace independiente de un solo equipo de trabajo, evadiendo también la necesidad de comprender a fondo cada línea de código. Por lo tanto, el reutilizar se vuelve mucho más transparente y cualquier actualización y/o adaptación de nuevas librerías o componentes, puede hacerse sin tener que detener los procesos y trabajar fuera de línea.
Por otro lado, a pesar de ser bastante similar a las soluciones orientadas a componentes, orientar a servicios brinda particulares ventajas como: independencia de plataformas, protocolos y dispositivos; composición independiente, dinámica y en línea; y no requiere de una tecnología fija ni de proveedores homogéneos. Es decir, se pueden tener aplicaciones compuestas de varios servicios los cuales pueden descubrirse dinámicamente al estar en línea en alguna red, sin tener que detener los procesos ni homogeneizar el lenguaje de programación ni el equipo de trabajo. Así, las partes que compongan un proyecto pueden disponibilizarse en un servidor al cual se pida acceso para utilizar lo requerido y liberarlo en caso de ya no necesitarlo.
El alcance de este tipo de desarrollo se fundamenta en la cantidad de servicios disponibles para su reutilización y en las relaciones que se van desarrollando entre empresas manufactureras de software y de hardware para robótica. Pues a la fecha, los principales desarrolladores de robótica para investigación científica venden sus productos ofreciendo ya los servicios necesarios para comenzar a operarlos. Así, desde proyectos industriales de alta especificación, hasta proyectos de robótica en hogar, todos comparten mismos repositorios de programación que permitan acelerar el proceso de puesta en marcha de una solución de base robótica y permitiendo lidiar directamente con los problemas más relevantes de la realidad sin perder tanto tiempo en el proceso. Aplicaciones de actualidad
Para finalizar cabe mencionar los problemas más relevantes en el área de la robótica que se han venido trabajando con este tipo de perspectiva orientada a servicios. Esencialmente, para el área de robótica móvil se trabaja con problemas como: navegación autónoma, navegación cooperativa, coordinación de navegación, localización, mapeamento de escenarios, control de posición, control de formaciones, cobertura y navegación en parvadas, entre otros. Posteriormente, cada uno de ellos tiene sus problemas específicos dependiendo del ambiente de aplicación. Sin embargo, las características uniformes e independientes de las tareas dan lugar a las contribuciones más relevantes entre las que encontramos desarrollos como: RobuBOX, ROS Turtle, Codeplex MSRDS Services, y HelloApps.
RobuBOX por su parte es un producto de una empresa líder dedicada a dar soluciones con robótica móvil denominada Robosoft. Este producto promete brindar los servicios más críticos de localización y planeación de trayectorias aplicados en diversas tareas. Los servicios proveídos se planean utilizar mediante el Microsoft Robotics Studio.
ROS Turtle contiene una cantidad impresionante de servicios diversos para operar con el hardware más relevante de actualidad. Además, constantemente se proveen diferentes servicios de software para problemas de alta dificultad como la localización y mapeamento simultáneo 3D con vehículos autónomos aéreos, implicando el control de navegación, la planeación de trayectorias, y la fusión de datos. De esta manera, realizar un proyecto de tal magnitud es mucho más rápido y robusto al utilizar los servicios ya disponibles.
Codeplex (posiblemente ahora también el Kinect SDK), es la vertiente de repositorios de servicios para utilización del Microsoft Robotics Studio. Si bien comparados con los servicios disponibles para ROS son mucho menos, este sitio tiene diferentes servicios disponibles que también reducen el tiempo de puesta en marcha y de prototipado de soluciones, trabajando en ambiente Windows.
Finalmente, HelloApps.com es un ejemplo de proveedores externos no lucrativos que brindan sus servicios para simplificar el desarrollo de aplicaciones complejas, brindando un espacio de programación basada en scripts y servicios de fácil interacción con software importante de ingeniería como lo son LabView y Matlab. Todos sus servicios son también para utilización en el Microsoft Robotics Studio.
Por ende, comenzar a desarrollar proyectos bajo las vertientes ya sea de ROS o del Microsoft Robotics Studio, es un compromiso que a todos habrá de beneficiarnos, prometiendo que la solución sea relevante y parte del estado del arte donde nos encontramos ahora.
-- Concluyendo, la robótica orientada a servicios se presenta hoy en día como una necesidad para estar trabajando con soluciones relevantes e ir a la par con el estado del arte, produciendo para la fácil actualización y mantenimiento, dejando de lado las tendencias de un consumismo ineficiente y promoviendo el reciclaje a un nivel intelectual. Todo esto además de promover el desarrollo comunitario mediante la cooperación de proveedores globales independientes que impulsen el estado del arte tecnológico a pasos más firmes y constantes. Invito a todo roboticista que no conozca estos sistemas a dar una rápida exploración para comenzar a desarrollar bajo estas pautas.
ACERCA DEL AUTOR Jesús Cepeda. Comprometido roboticista. Para más información acerca de su perfil profesional, visita: http://www.linkedin.com/in/chuycepeda
Compartir artículo
|
Autor
Escrito por Jesús Cepeda el 24-10-2011 a las 15:33:46
PhD Student en Universidade Federal de Minas Gerais
Comprometido roboticista. Para más información acerca de su perfil profesional, visita: http://www.linkedin.com/in/chuycepeda
http://chuycepeda.blogspot.com/
Categoría
Área Tecnología
Curso relacionado
Gestión Tecnológica PYME Diseño de modelos de negocio innovadores Innovación en el procesado de frutas y hortalizas de la industria agroalimentaria
|