Robotic web applications

ROS is a great tool to develop new robotic applications. Its ease of use and its large amount of tools and wide community makes ROS a great way to start learning robotics, or to develop a state of the art industrial applications. In spite of all these advantages, one of ROS main limitations is that it must work on Linux systems, mainly Ubuntu. Linux and Ubuntu are increasing the number of desktop users, but nowadays the most used Operating Systems are Windows for desktop users, and Android for mobile. This makes hard to integrate applications when the end user has never used a Linux Ubuntu system, or its infrastructure is based on Windows or Android. This problem can be solved by developing robotic applications taking advantage of the ROS web framework. ROS web framework is a collection of open-source tools and modules, built around the Robot Web Tools project, with the goal of converge ROS with modern web and network technologies. This will create a broadly accessible environment for robot development and human-interaction research used over wide area networks.

Robot Web Tools uses WebSockets to communicate with ROS middleware, and offers several tools to help develop applications using rosbridge. The main front-end tools is the roslibjs package, that is a library to build ROS nodes using Javascript, and allows usage of ROS topics, services, goals, parameters and TF. ros2djs and ros3djs are used to create 2D and 3D visualization of the ROS environment, allowing to visualize maps, costmaps, grids, URDF models, InteractiveMarkers, PointClouds and other basic geometric shapes. This can be very useful to create your own navigation packages that can be controlled from any device.  Other useful tools are keyboardteleopjs, to move a robot using a simple keyboard interface, mjpegcanvasjs to visualize image topics, and speech_commands to control a robot using speech. Robot Web Tools also includes all necessary server nodes to interface the client-based modules with ROS. This nodes are  rosbridge_server, web_video_server, and tf2_web_republisher.

All these tools can help to solve the problem of the isolation of ROS in Linux systems, and allows the deployment of ROS applications on any device that can use a web browser (Mozilla Firefox, Google Chrome, Safari, etc … ) In the future we can expect more development of the Robot Web Tools project, for example with the addition of new communication standards, like WebRTC, that will help with applications demanding intensive and high-bandwidth streaming.

Robotnik Summit XL

Illustration 1: SUMMIT XL Web 3D visualization

Illustration 2: Turtlebot web visualization

Illustration 3: Turtlebot web map navigation


ROS-Industrial, donde se fusiona ROS y el sector industrial

ROS y el software de código abierto han ganado popularidad en los últimos años, principalmente en universidades y centros de investigación. La industria ahora está tratando de modernizar sus procesos de fabricación y considera que ROS es un enfoque viable para resolver problemas de fabricación nuevos y más complejos.

ROS-Industrial se creó en 2012 para desarrollar la colaboración entre ROS y la industria. Hasta ahora, los procesos del fabricante se han basado en tareas simples y repetitivas realizadas por robots, pero en los últimos años ha habido una demanda creciente de robots más dinámicos e inteligentes que puedan realizar tareas más difíciles. Ofrece herramientas y programas de alto nivel que pueden resolverlas de forma inteligente, gracias a la colaboración de universidades y al software de código abierto.

La industria puede beneficiarse de la I+D que se ha creado en torno a ROS. Su marco proporciona excelentes herramientas para la visualización y la interacción hombre-máquina, que pueden facilitar el uso de estos sistemas robóticos por parte de personal no considerado como expertos en robótica. La estandarización del mismo y sus ventajas en la industria también significarán un tiempo de implementación más rápido de los sistemas robóticos avanzados en las fábricas.

Por otro lado, ROS también puede beneficiarse de la simbiosis creada por ROS-Industrial. Por ejemplo, en forma de nuevos controladores creados por los fabricantes de brazos. Estos nuevos impulsores de brazos robóticos podrían ser utilizados por universidades e investigadores para nuevos proyectos de desarrollo. Además, hay un número creciente de herramientas que ROS-Industrial está mejorando, como herramientas de navegación, percepción, manipulación y calibración.

En navegación, ROS-Industrial ha mejorado el paquete MOVEit para optimizar la planificación de la trayectoria del brazo.

También ha desarrollado una biblioteca de calibración que permite ajustar cámaras de forma extrínseca mediante un brazo robótico.

Y, ¿qué podemos esperar de ROS-Industrial en un futuro próximo? Una de las características más esperadas es la compatibilidad de ROS y ROS-Industrial con Microsoft Windows. ROS es un software basado en Linux pero el soporte de Windows ayudará a la aceptación de ROS-Industrial en más entornos de fabricación. Por ahora, ROS-Industrial está retrasando el soporte de Windows hasta el lanzamiento de ROS 2.0, que actualmente no tiene una fecha de lanzamiento, pero lanzó su primera versión alfa en septiembre de 2015, por lo que una versión final podría necesitar más tiempo para lanzarse.

En conclusión, ROS (basado en software de código abierto) es actualmente un marco importante para la investigación, el desarrollo y la industria. Y las grandes empresas están tratando de utilizar este progreso para mejorar su proceso de fabricación. En el futuro, ROS podría convertirse en un estándar en la industria, y esto podría beneficiar a todo el subsistema ROS, incluidas universidades e investigadores.


La realidad aumentada entra en acción

La Realidad Aumentada (RA) es una visión directa o indirecta en vivo de un entorno físico del mundo real cuyos elementos son aumentados (o complementados) mediante la entrada sensorial generada por ordenador (sonido, video, gráficos, etc.)

¿Recuerdas todo el revuelo que se armó en torno a la interfaz informática de ‘Minority report’, de Steven Spielberg? Esta interfaz gestual no es en absoluto la única referencia de RA en las películas de ciencia ficción. Puede que ahora tenga en mente la pantalla de Iron-Man. Pero no todo es fantasía. Estas tecnologías cinematográficas han inspirado el desarrollo de las películas reales.

Ha pasado bastante tiempo desde que la realidad aumentada está involucrada en algunos de los proyectos más interesantes e innovadores. Este es el caso de las ya conocidas Google glasses o la última sensación de Microsoft Holo-Lens. La RA tiene una amplia gama de aplicaciones que pueden ser revolucionarias de muchas maneras.

Por ejemplo, Google Tango Project resulta muy interesante para los expertos en robótica. Este proyecto se centra en incorporar una potente tecnología de mapeo 3D en dispositivos móviles, realizar una gran cantidad de mediciones 3D por segundo y actualizar la ubicación y posición de un dispositivo mientras mapea un modelo 3D del entorno que le rodea.

Esta tecnología está muy relacionada con las funciones de mapeo integradas en las plataformas móviles de Robotnik.

Los robots móviles como el SUMMIT-XL o Turtlebot2 también llevan cámaras con sensores de profundidad como Kinect o Asus Xtion, que les permiten obtener una nube de puntos 3D del entorno. Esto se puede hacer gracias a una interfaz ROS para sensores de profundidad que utilizan el estándar OpenNI.

Con los datos, esta información se puede procesar con paquetes con tecnología ROS y API como RGBD-Slam y Octomap, que pueden construir progresivamente un mapa 3D.
Otra aplicación de RA utilizada actualmente por Robotnik implica la identificación de marcadores o códigos QR. Ofrecen información diferente al propio robot y pueden utilizarse para identificar poses de algunos objetos en el entorno o para relacionarse con una determinada ubicación en el mapa.

Augmented Reality going into action

 

Una vez más la comunidad ROS y el éxito de paquetes RA ROS como Ar_Track_Alvar o Ar_Pose , manifiesta la relevancia que está tomando esta tecnología en los últimos años.

Seguro que veremos qué más nos ofrece la RA para la comunidad robótica en los próximos años.


Un nuevo paquete de ROS disponible para la mano de Barrett

Robotnik ha desarrollado un nuevo paquete para ROS para la Barrett Hand BH8-28X que permite el control de la mano robótica, bien en velocidad o en posición, así como leer el estado actual de las articulaciones y los sensores (sensores de fuerza y sensores táctiles). Además, el software incluye paquetes con la descripción del modelo y una interfaz gráfica para interactuar con la mano.

Si está interesado en verificar todas estas nuevas características de la mano, puede visitarnos desde el 14 hasta el 18 de Septiembre en el stand nº303 en IROS 2014.

http://wiki.ros.org/Robots/BarrettHand -> Descripción técnica

http://wiki.ros.org/barrett_hand -> Descripción del paquete de ROS

http://youtu.be/aDvykgDyEg8 -> Video

 

 


Interfaces de usuario en ROS

A medida que los sistemas robóticos se vuelven más funcionales, la necesidad de utilizar medios para obtener una visión general en tiempo real de la conectividad entre las operaciones, así como la necesidad de supervisión, adquisición y manipulación de datos sobre el mismo sistema se hace cada vez más necesaria. Para saciar estas y otras necesidades empleamos las HMI's (human-machine interface) como medio de interacción entre el usuario final y el sistema.

El diseño de una HMI debe estar centrado en el usuario, debe ser un medio abierto y sencillo que facilite la interacción, además de simplificar la tarea de las actividad que éste realiza. Su objetivo fundamental es ocultar al usuario la complejidad del sistema sobre el que trabaja ofreciéndole una herramienta que mejore su usabilidad. Podemos encontrarlas de diversos tipos y en diversos lugares, desde un simple LED que nos indique el estado de un dispositivo hasta la propia interfaz que utilizamos para realizar transacciones en un cajero.

En robótica las HMI's pueden llegar a tener tanta importancia como el propio sistema robótico. De poco sirve tener un complejo sistema si el usuario u operario que debe hacerlo funcionar es incapaz de ello. La usabilidad es otro de los factores que hace de ROS[1] una apuesta firme en este campo. Haciendo uso de este framework podemos encontrar dos herramientas que nos facilitan enormemente esta interacción mediante cómodas y editables interfaces gráficas: Rviz[2] y ROS-GUI[3]. Ambas interfaces, además de estar dotadas de un visualizador de entornos 3D, nos permiten la visualización, medición e interacción con el robot así como con todo su entorno. Basadas en una arquitectura de plugins ofrecen la posibilidad de no sólo desarrollar nuestras propias herramientas sino también reutilizar las de otros.

Tal vez para determinados sistemas robóticos estas dos interfaces podrían no suplir las necesidades requeridas. Pese a esto, la sencillez de la que se vale ROS a la hora de leer el estado de sus componentes o interaccionar con ellos nos allana este camino permitiendo la creación de HMI's personalizables que se adapten a cualquiera de nuestros requisitos.

Mediante la suscripción a 'topics'[4] podemos hacer una lectura de los valores actuales de un determinado componente sin necesidad de programar a bajo nivel, permitiendo así que el desarrollador de la HMI no requiera conocimientos previos del componente sobre el cual trabaja, sólo conocimientos básicos en ROS. De la misma forma, publicando sobre un 'topic' podemos ejecutar acciones sobre un componente (por ejemplo, podemos ordenar a un robot móvil que avance X metros en línea recta a una velocidad Y m/s) o bien llamar a un servicio[5] que inicie una determinada acción (por ejemplo, reiniciar el contador de algún componente).

Sin necesidad de conocer detalles sobre el hardware con el que se trabaja, el programador puede desarrollar una HMI capaz de satisfacer las necesidades de cualquier sistema. Por otro lado, gracias a frameworks de programación como wxWidgets[6] o Qt[7], el programador puede ir un poco más allá de las HMI's creando complejas y vistosas interfaces gráficas de usuario (GUI's) que hagan más agradable la interacción humano-máquina. Las posibilidades son muchas y muy variadas, desde HMI's básicas limitadas a mostrar valores de ciertos componentes (sensores de presión, temperatura, luminosidad, proximidad, etc) hasta sofisticadas GUI's que nos permitan tanto teleoperar un robot como monitorizar el estado de cada uno de sus componentes.

Podemos encontrar muchos ejemplos de estas interfaces en los numerosos paquetes presentes en los repositorios de ROS, algunos como el dashboard[8] del robot PR2[9] proporciona información detallada acerca de la 'salud' del robot. Cada vez que el PR2 no se comporte como se supone que debería hacerlo, inspeccionar su dashboard sería la práctica correcta. Existen también otros robots que emplean un dashboard, por ejemplo el dashboard[10] del Care-O-Bot3[11] es un panel de control para mover el robot. A través de él, puedes mover diferentes partes de su cuerpo a posiciones predefinidas. Otro tipo de interfaces como la interfaz de usuario srs_ui_pro[12] desarrollada por Robotnik para el proyecto SRS[13], está pensada para ser el intermediario entre el robot Care-O-Bot3 y un teleoperador. Por otro lado, en la última distribución de ROS (llamada Groovy[14]) podemos encontrar la herramienta rqt[15] la cual es un framework que implementa en forma de plugins varias herramientas GUI que en versiones anteriores de ROS funcionaban de forma independiente. Es posible ejecutar todas las herramientas GUI existentes como ventanas acopladas dentro de rqt (incluso la nombrada Rviz). Evidentemente, cada herramienta puede lanzarse de forma independiente, sin embargo rqt hace más cómodo la gestión de todas herramientas al compactarlas en una.

Interfaz de usuario srs_ui_pro desarrollada mediante wxWidgets.

ROS pretende ser y es una apuesta firme en el desarrollo de sistemas robóticos, por ello, no ha escatimado en algo tan importante como la usabilidad. Como ya hemos comprobado, disponemos de medios más que suficientes para la creación de HMI's, bien utilizando las interfaces estándar ofrecidas (Rviz y ROS-GUI) o bien desarrollando desde cero las nuestras propias.

---

[1] http://www.ros.org

[2] http://ros.org/wiki/rviz

[3] http://www.willowgarage.com/blog/2012/10/21/ros-gui

[4] http://www.ros.org/wiki/Topics

[5] http://www.ros.org/wiki/Services

[6] http://www.wxwidgets.org/

[7] http://qt-project.org/

[8] http://pr2support.willowgarage.com/wiki/Tutorials/Dashboard

[9] http://www.willowgarage.com/pages/pr2/overview

[10] http://www.ros.org/wiki/Robots/Care-O-bot/Tutorials/Dashboard

[11] http://www.care-o-bot.de/english/

[12] http://www.ros.org/wiki/srs_ui_pro

[13] http://srs-project.eu/

[14] http://www.ros.org/wiki/groovy

[15] http://ros.org/wiki/rqt


ROS ha cumplido 5 años

ROS cumplió 5 años el pasado Noviembre y no ha dejado de crecer desde sus inicios.

Actualmente, hay 175 organizaciones y particulares que han hecho pública su versión del software ROS en los repositorios que posee indexados, frente a los 50 que había registrados en 2009.

El vídeo del V aniversario incluye imágenes del manipulador móvil G-WAM y de la plataforma Summit XL de Robotnik.