JdeRobot también en Windows

Este verano, en pleno proceso de crecimiento hemos decidido dar un pasito mas y llegar también a Windows con nuestros clientes Python. Sobre todo con TeachingRobotics, parte del proyecto destinada a la enseñanza de robótica, para facilitar el acceso a colegios, institutos,… que sólo cuentan con PCs Windows en sus aulas.

Para conseguirlo estamos usando el simulador gazebo dentro de un Docker, que nos permite ejecutar aplicaciones de Linux en Windows simulando una maquina virtual. Después ejecutamos los clientes en Windows estableciendo las configuraciones necesarias en el fichero de configuración, igual que si estuviéramos en Linux.

De momento sólo tenemos un par de ejemplos, pero estamos en ello y esperamos tenerlo todo preparado lo antes posible.
Para mas información visitad esta incidencia en Github 

Campeonato de programación de robots (drones)

Hace unos días celebramos las finales del primer campeonato de programación de robots (drones). La clasificación final la tienes aquí. El reto consistía en programar un drone (llamemosle gato) para que persiguiera a otro (llamemosle ratón) usando sus sensores, incluyendo sus dos cámaras. Se programaban en Python usando el entorno JdeRobot y el simulador Gazebo.

Fue muy emocionante!. Lo organizamos con tres rondas eliminatorias Q1, Q2 y Q3, con dos mangas cada una. En cada ronda los ratones cada vez eran un poco más difíciles de seguir que en la ronda anterior. En las dos mangas de cada ronda las posiciones de arranque de gato y ratón eran distintas (pero las mismas para todos los participantes). Puedes seguir todas las rondas en el canal de YouTube de JdeRobot, la ronda final Q3 con los tres mejores participantes la tienes aquí:

Entre las rondas Q2 y Q3 el Dr. Antonio Barrientos, de la UPM impartió la conferencia “Robótica:retos y soluciones”, que puedes volver a ver aquí.

Me divertí muchísimo viendo el software de los participantes en acción, con un desafío común. Vi estrategias variadas: desde los que exploraban con rápidos movimientos buscando al ratón en cuanto lo perdían incluso cambiando de cámara, otros que realizaban un seguimiento muy suave y maniobras de evitación del choque con el ratón. Brillante! Enhorabuena a todos los participantes. También a los patrocinadores (GMV, URJC y ETSIT-URJC) y al equipo de JdeRobot que proporcionaron una organización cinco estrellas: retransmisión por YouTube, infraestructura en Gazebo, componente para programar la inteligencia de los drones…

Curiosamente el gobierno de Korea organizará una competición de drones autónomos dentro de la conferencia IROS de este año. Se nota el interés creciente en drones que realizan tareas de modo autónomo :-)

OBS_ejemplo

Grabando nuestro componente: Open Broadcaster Software

Uno de los problemas a los que nos enfrentamos a la hora de grabar vídeos sobre el funcionamiento de un driver, componente o simulación con JdeRobot, suele ser el de tener que capturar información de distintas ventanas o, incluso, tener que lanzar distintos comandos tras activar la grabación. Esto suele resultar en vídeos en los que parte de la duración se va en movimientos de ventanas o en montajes posteriores de los mismos.

Existen diversas soluciones a este problema sin pasar necesariamente por el mencionado montaje de un vídeo a posteriori. En esta entrada hablaré de Open Broadcaster Software.

Open Broadcaster Software (OBS) es un software de código abierto dedicado a la grabación y emisión en vivo desde múltiples fuentes de vídeo y audio, estando incluidas entre estas fuentes el manejo de las distintas ventanas, el sonido del escritorio.
Originalmente este software se creó para plataformas Windows, pero hace algunos años se decidió reescribir para dar soporte multiplataforma, avanzando poco a poco en el funcionamiento de las nuevas plataformas.

OBS_ejemplo2

OBS nos permite establecer cómo se distribuirán y verán todas las fuentes de vídeo  y oirán las de sonido antes de comenzar y durante la emisión/grabación, preparar distintas escenas y cambiar entre ellas y establecer filtros para cada fuente entre otras funciones.

Para el ejemplo práctico de “probar un componente de jdeRobot que estemos desarrollando”, nos permitiría preparar de antemano una escena en la que se visualizara el simulador (Gazebo) y la interfaz o consola del componente sin solaparse y sin que se vieran los cambios entre ventanas. Yendo más allá, permitiría que pudiéramos preparar una escena dedicada al simulador para cuando se quisiera centrar la atención sobre él o transmitir lo que está ocurriendo con el componente en vivo a otro equipo.

Siendo un buen candidato para esta situación, cabe recordar que se trata de un trabajo aún en desarrollo, por lo que no es de extrañar encontrarse con diversos fallos a la hora de utilizarlo y que, al ser un proyecto de software libre y abierto vivo, tiene una comunidad por detrás que ayuda al desarrollo de la aplicación.

Estuvimos en Global Robot Expo

El pasado 29 de Enero estuvimos en la Global Robot Expo, la primera feria de robótica de Madrid, que se celebró en el pabellón de cristal de la casa de campo.
Compartimos stand con el resto de los integrantes de RoboCity2030, consorcio formado por seis centros madrileños líderes en I+D.

globalrobotexpo

Pudimos hacer algunas demostraciones del trabajo fin de grado de Aitor Martínez, que consiste en la creación de clientes web para JdeRobot. Las demostraciones consistían en teleoperar un drone desde el navegador web de un móvil.

Demo de UavViewerJS en el stand de RoboCity2030 en Global Robot Expo:

Algunas las hicimos delante del stand y otras en una zona que tenían preparada para volar drones desde la organización.

Demo de UavViewerJS en Global Robot Expo:

Visión artificial a bordo de coches

Hace unos días llevé el coche al taller para reparar la luna del parabrisas. Una de las zonas tenía este espacio para “calibrado de cámaras”. ¡En el taller de coches! Definitivamente los tiempos han cambiado :-) Cada vez hay más productos robóticos a bordo de los coches y esta tendencia es creciente e imparable. Hoy me centraré en varias funcionalidades basadas en cámaras. Detrás de estos productos ya en el mercado hay años previos de investigación y prototipos.

Una funcionalidad llamativa es la ayuda para aparcar. Por ejemplo las cámaras traseras que incorporan muchos vehículos de gama alta y media, como el Toyota Prius. Apuntan a zonas no directamente visibles para el conductor. En esta misma línea es muy interesante el sistema que incorpora en Nissan Qashqai, con cuatro cámaras (una delante, otra detrás y dos bajo sendos espejos en los laterales). Convenientemente transformadas y combinadas las imágenes componen en tiempo real una imagen a vista de pájaro del coche y sus inmediaciones. Esto facilita mucho el aparcamiento al conductor.

Una segunda funcionalidad relevante es la Detección de Salida de Carril (en inglés LDW, Lane Departure Warning). La cámara suele estar en la zona del espejo interior, apuntando hacia delante. Se identifican visualmente los bordes del carril, las líneas separatorias y si el vehiculo va a abandonar el carril, es sistema lanza un aviso, sonoro y otro en el salpicadero. BMW tiene modelos que lo incoporan, también Subaru, Infinity, Nissan, etc.

Y una tercera es el reconocimiento de señales de tráfico. El software analiza automáticamente las imágenes buscando señaĺes; de limitación de velocidad, prohibido adelantar, etc.. y muestra las detectadas en el salpicadero interior. Por ejemplo lo incorporan varios modelos del Ford Focus, del mismo Nissan, Opel, etc.

Estos ingredientes y otros muchos los incorporan también los prototipos de coches autónomos que se están probando actualmente (Google, Nissan, Toyota, BMW, etc…), pero esa es otra historia y merece una entrada propia en este blog.

Charla “Técnicas de optimización en visión artificial” (20160118,18h)

Título: Técnicas de optimización en visión artificial

Ponente: Alberto Martín (Verisk Analytics), Francisco Rivas (Verisk Analytics), José María Cañas

Resumen: Presentaremos varias técnicas de optimización (Ajuste de mínimos cuadrados, Descomposición en valores singulares -SVD-, RANSAC, Bundle Adjustment…) aplicándolas tres o cuatro problemas. El objetivo es describir las técnicas y hacer un análisis de fortalezas y debilidades sobre ejemplos concretos. Comentaremos tiempos típicos de cómputo, precisión, robustez a ruido térmico, robustez a díscolos (outliers), etc.. Empezaremos por ajustar la línea que subyace en un conjunto de puntos 2D con ruido. Continuaremos con ajustar el plano que subyace a un conjunto de puntos 3D con ruido. Abordaremos el problema del registro visual: conociendo los puntos 3D de un patrón y en qué píxeles aparecen en la imagen, estimar la posición y orientación 3D de la cámara. Conociéndo estas técnicas de optimización podrás usarlas como herramientas en problemas de visión, por ejemplo visualSLAM.

¿Cuándo?: 2016-01-18, 18h

¿Dónde?: Aula 170, departamental-II, campus de Móstoles de la URJC

Como siempre, es abierta. Apúntate aquí

Charla “Tecnologías web en Robótica” (20160114,17h)

Título: Tecnologías Web en robótica

Ponente: Aitor Martínez (URJC)

Resumen: ¿Puedes teleoperar un drone o ver los datos de una Kinect desde el navegador de tu teléfono móvil? Html5, Javascript (JQuery, Bootstrap…), ICE-JS pueden ayudarte a ello. Las tecnologías web han incrementado enormemente su rendimiento y funcionalidad en los últimos años. Presentaremos los desarrollos más recientes en JdeRobot conectando navegadores web con los drivers de robots y sensores, directamente. Con ellos la interfaz gráfica de una aplicación robótica puedes programarla en Javascript y es multiplataforma, ya no hay que programar un GUI para cada sistema operativo.

¿Cuándo?: 2016-01-14, 17h

¿Dónde?: Laboratorio de Robótica: Lab III, aula 3104, campus de Fuenlabrada de la URJC

Como siempre, es abierta. Apúntate aquí

http://jderobot.org/store/aitormf/uploads/videos/uavviewerjs1.mp4

Más información en http://jderobot.org/Aitormf-tfg#Greatest_Hits

¿Es el software libre un modelo de negocio en robótica?

La robótica mola, es el futuro y blabla… Eso ya lo sabemos :-) , pero ¿cómo genera dinero a día de hoy?¿Se puede ganar dinero creando software libre para robots? ¿Es el software libre un modelo de negocio en robótica?

Para avanzar en respuestas a estas preguntas situémonos en un plano no académico, lejos del altruismo e inocencia que a veces se encuentra en las universidades y centros de investigación. Se genera dinero cuando se resuelve alguna necesidad humana (de las personas, empresas, instituciones…) y esas personas están dispuestas a pagar un dinero por ello.

Empujado por los progresos tecnológicos el mercado robótico crece cada vez más en funcionalidad, productos y servicios. Es muy dinámico y no está tan maduro como otros. La limpieza domestica, los drones, la conducción autónoma o la logística son escenarios donde hay soluciones robóticas bastante fiables. El mercado robótico es innovador, cada vez más tareas son realizables de modo eficiente y barato por robots, por máquinas. La frontera de lo realizable con máquinas cada vez se amplía más con nuevos avances.

En ese mercado un modelo clásico de negocio es el de la empresa que vende un robot que hace algo. Por ejemplo iRobot con sus aspiradoras, ABB con sus brazos robotizados, etc.. Estas empresas construyen sus robots, los programan para que haga ese algo y mantienen cerrado el software. El producto robótico típicamente consta de un hardware y un software. Ellos pagan los costes necesarios: tiempo de desarrollador, pruebas, material hardware, etc. y venden a sus clientes su producto robótico a determinado precio (que cubre costes y genera beneficios).

En este escenario ¿qué aporta un modelo de software libre? Hace dos años y pico hubo un debate interesante entre Colin Angle (de iRobot, fabricante de Roomba) y Robert Bauer (de WillowGarage, empresa responsable entonces de ROS). La referencia completa la tienes en este enlace.

El principal argumento de Bauer es que la reutilización de software reduce tiempos de desarrollo y permite a los investigadores centrarse en investigar-innovar en vez de reinventar la rueda en cada nuevo proyecto robótico. Algo similar argumenta Brian Gerkey (CEO de OpenSource Robotics Foundation) en este otro enlace a propósito de ROS: resolver de modo común la infraestructura (nivel bajo) permite dedicar más tiempo al nivel alto, el de las aplicaciones. Esta idea la ilustra muy bien esta figura, extraida de la empresa OpenPerception, que comparte la misma visión.

development_timeline

En el lado privativo, el principal argumento de Colin Angle es que utilizar un modelo de software libre abre la puerta a la transferencia de tecnología a grandes conglomerados extranjeros, que se encuentran con una pieza clave del valor del producto robótico (la infraestructura) ‘gratis’. Transferencia sin retorno alguno. Y eso elimina empleos entre los creadores de esa tecnología, y resta oportunidades para aprovechar los beneficios que podría generar.

Otro argumento suyo era que el software libre (ROS en concreto) no era suficiente maduro y estable, ni ofrecía las mismas garantias (imagino que comparado con software privativo de empresas) como para que lo usaran en escenarios críticos como seguridad y defensa, o en fábricas. Este argumento me resulta endeble, puesto que precisamente con una base extensa de usuarios y estando abierto el código el tiempo en resolver fallos es menor y el sofware libre es auditable.

¿De dónde saca el dinero una empresa de software libre en robótica? ¿Son viables? Es un hecho que después de algunos años empujando software libre como ROS u OpenCV la empresa Willow Garage abandonó su planteamiento inicial por otro de una empresa autosostenible (i.e. que genera suficientes ingresos). Pero también es cierto que otras empresas como la Open Source Robotics Foundation (lidera el desarrollo de ROS y del simulador Gazebo) y OpenPerception (lidera el desarrollo de la biblioteca PCL para sensores de distancia) están vivas y siguen precisamente el modelo de negocio del software libre. E igualmente es cierto que no conozco muchas más empresas con alto impacto que lo sigan :-) Tully Foote (de la OSRF) en este informe analiza posibles modelos de negocio y explica su planteamiento.

Por mi parte comparto en mayor medida la visión abierta que la visión privativa, aunque con menos inocencia que hace unos años. He visto a empresas grandes como Google abrir sus desarrollos en WebRTC en parte para cargarse el negocio de un competidor (Microsoft compró Skype) en el mundo de la videoconferencia. Y hasta ahora me he beneficiado, y mucho, de la comunidad de software libre. Tanto con GNU/Linux como con herramientas robóticas como Gazebo, de visión como OpenCV, la propia PCL, etc… Una manera de devolver el favor, y a la que dedico parte de mi tiempo, es colaborar en la plataforma de software libre para robótica JdeRobot.

Peliaguda cuestion esta del reparto de esfuerzos y de beneficios :-)

 

 

Más sobre drones para transporte de mercancías

Hace un año pusimos una noticia en este blog (http://blog.jderobot.org/2014/09/) sobre el empleo de drones para repartir mercancías, describiendo los pilotos de Google (Wing) y de Amazon (PrimeAir). Desde entonces ha habido avances en esta dirección, comentaré aquí tres de ellos.

prime-air

Primero, Amazon ha progresado y enseñado un nuevo prototipo para su entrega exprés de mercancía con drones (Prime Air). Tiene un diseño híbrido, con algo más pinta de avión, con idea de que recorra distancias mayores de modo energéticamente más eficiente (frente el primer prototipo que eran puras hélices al estilo helicóptero). Recorre unos 24 kilometros. Apuntan a un tiempo de entrega de 30minutos.

Dicen que el drone percibe los obstáculos en el aire o en tierra y los esquiva, pero no sé realmente cómo lo hacen. Me gusta mucho la parte del aterrizaje: el comprador pone una etiqueta en el jardin de la casa, que es la que ve el drone, y se las apaña para aterrizar justo encima para dejar allí el paquete con la mercancía.

Tienes el video oficial en https://www.youtube.com/watch?v=MXo_d6tNWuY y más información en http://amzn.to/1XtyXxh

 

El segundo avance que quiero resaltar es el de la empresa alemana de paqueteria DHL en su proyecto ParcelCopter. Muestan un prototipo que navega autónomamente para entregar un paquete desde la costa a una isla cercana. Apuntan a mercancías ligeras, como medicinas.

parcelcopterTienes el video completo en https://www.youtube.com/watch?v=HrcwGHrc0zQ y más información en http://www.dhl.com/en/press/releases/releases_2014/group/dhl_parcelcopter_launches_initial_operations_for_research_purposes.html

 

Y finalmente el tercer proyecto en este comentario es el de la empresa Matternet. Está orientada a utilizar redes de drones para transporte de mercancías en zonas donde no hay buenas infraestructuras (redes de carretera, etc..). Andreas Raptopoulos, confundador de la empresa, tiene una charla en TED muy interesante sobre su proyecto. Recientemente Paola Santana, también cofundadora, contaba en un artículo de ElPais su proyecto (http://one.elpais.com/llegar-con-drones-donde-resulta-complicado-hacerlo-por-otros-caminos/). La web de la empresa es https://mttr.net/

Llevan unos cuatro años en ello. Actualmente tienen prototipos en Butan, para conectar los 180 centros de salud con los 30 hospitales de modo más rápido. Apuntan de momento a medicinas y diagnósticos (también circuitos eléctricos o documentos).

matternetMe gusta su concepto de redes de drones, no tanto uno sólo. Tienen permiso operativo de vuelo en Suiza para vuelo completamente autónomo. En la foto se ve a personal de matternet en unas pruebas de entrega de paquetes en Suiza. Utilizan una banda de altura entre 50 y 120 metros, de modo que no colisione con los vuelos de aviones. Han madurado su sistema de planificación de caminos, que tiene en cuenta la orografía, el espacio aereo, la densidad de población (evita zonas muy pobladas, aeropuertos,…) y el clima instantáneo.

 

Competiciones robóticas en Oriente Próximo

Una manera exitosa de fomentar los avances en la tecnología robótica y acercarlas a soluciones prácticas de problemas reales son los campeonatos robóticos.  Un ejemplo significativo es la competición internacional RoboCup con sus varias ligas: la de futbol, la de rescate, la doméstica y la junior. A lo largo de las ediciones anuales que han tenido lugar se aprecia un enorme progreso en las capacidades de los robots, especialmente en la liga estandard de fútbol, donde los participantes usan el mismo hardware y típicamente publican su software tras el campeonato, compartiendo sus algoritmos. Cada vez el planteamiento se acerca más al fútbol real (sin balizas de colores, líneas del campo…) y cada vez los robots juegan mejor.

Otra muestra exitosa son los desafíos del departamento de defensa americano (DARPA), que abordan algún problema en la frontera de lo conseguible con robots. Empezaron con Grand Challenge (premio 1M$ en 2004 y 2M$ en 2005) alrededor de la navegación autónoma de coches por el desierto de Nevada. Continuaron con su Urban Challenge (premio 2M$ en 2007) sobre navegación autónoma de coches en entornos urbanos, poblados y con más vehículos. Y recientemente movieron el foco hacia el uso de robots humanoides en escenarios de catastrofe (DARPA Robotics Challenge, premio 2M$ en 2015). Aquí el acicate son sustanciosos premios en metálico, y el objetivo de fondo avanzar el estado del arte de qué cosas son resolubles con robots. Aunque de momento meterlo en costes razonables no sea la prioridad, sí lo es evaluar la viabilidad técnica de resolverlo con robots autónomos.

Es llamativo cómo recientemente varios países de oriente próximo, tal vez buscando diversificar sus fuentes de financiación con otras distintas del petróleo, también fomentan campeonatos y desafíos robóticos. Tal vez intuyen que es una tecnología estratégica, cada vez más. Quiero centrarme esta vez en tres campeonatos, que son sintomas del interés creciente de estos países en la robótica.

1.- En 2015 se celebró en Doha (Qatar) la Olimpiada Robótica WRO (World Robot Olimpiad), que cambia el lugar de celebración cada año. Este campeonato se celebra anualmente y tiene vocación de difundir la robótica entre los más jóvenes, usando piezas LEGO principalmente. La alineo en el mismo planteamiento que la RoboCup Junior: educativo.

2.- Drones For Good. En Dubai (Emiratos Árabes Unidos). En esta competición se premian ideas de drones para dar algún servicio útil. No sólo hay que enunciar la idea de servicio (en un video de menos de 3:30 minutos), también la solución propuesta y su construcción. Si se enseñan prototipos reales, mejor.  Es un campeonato abierto, en el sentido que no hay retos concretos, sino que los participantes deben proponer ideas útiles con drones, eso es lo que se valora. La primera edición tuvo lugar en febrero de 2015 y el suculento premio fue de 1M$ en su convocatoria internacional. Ganó el concurso el diseño de un drone para que sea resistente a las colisiones.

3.- Mohamed Bin Zayed International Robotics Challenge. Organizado por Abu Dabhi, su primera edición será en febrero de 2017, con vocación bianual. Reparte en premios unos 5M$, entre premios en metálico y patrocinio a los equipos. Propone tres desafíos diferentes:mbzirc

3a.- Un drone real debe buscar, seguir y aterrizar de modo autónomo encima de una camioneta que tiene una figura dibujada encima. Hace énfasis en el comportamiento autónomo del drone, su navegación.

3b.- Un robot terrestre real debe buscar un panel y apretar una válvula usando una llave como las que usamos los humanos. Hace énfasis en manipulación.

3c.- Una flota de drones debe localizar, seguir, coger varios objetos (que se pueden mover)dentro de una zona de trabajo y soltarlos autónomamente en un área de recogida.

En este video se describen gráficamente las pruebas : MBZIRC 2017 Challenge Description