Cómo y porqué aprender robótica con ROS, Robot Operating System
Sistema ROS, Robot Operating System, unas nociones básicas para aprender robótica
¿Quieres empezar a aprender robótica mediante la programación, pero no sabes por dónde empezar?
Te entendemos porque la robótica es enorme, hay tantas cosas que hacer y que aprender. Puede ser bastante desalentador ver todo lo que abarca la robótica, pero porque no empezar por lo más básico, empezar a aprender programando un LED para que parpadee.
Tenemos buenas noticias para tí: ROS es sin duda la forma que estás buscando para empezar. En este post, veremos qué es ROS, qué puedes aprender con él, y te daremos algunas pautas sobre cómo empezar a aprenderlo, y poder crear algunas aplicaciones robóticas geniales. ROS te permitirá empezar a crear impresionantes aplicaciones robóticas con gran rapidez.
¿Qué es ROS?
ROS (Robot Operating System), es un framework para la escritura de software de robot. Digamos que es un gran sistema operativo de código abierto mantenido por la Open Source Robotics Foundation (OSRF). Este proyecto comenzó en 2007 por Willow Garage, un laboratorio de robótica, para proporcionar a los personas que trabajan con robots un conjunto estándar de configuración y herramientas que les permitierán programar y trabajar mejor y más rápido.
ROS está ahora detrás de muchos tipos de robots, como drones, coches autónomos, robots similares a los humanos, brazos robóticos, y muchos más…
Para usar ROS, necesitarás un SO Ubuntu que se ejecute en tu ordenador, algunos otros sistemas operativos son compatibles, pero es mejor comenzar con Ubuntu. Recomendamos el uso de Ubuntu 16.04 junto con ROS Kinetic (versión 2016), ya que es, por el momento, la versión más desarrollada y mantenida.
¿Por qué aprender robótica con ROS?
La robótica es difícil de desarrollar, y los robots son a menudo sistemas muy complejos que requieren una experiencia en muchos campos. El problema con la robótica es que la gente sigue reinventando la rueda. Digamos que si tienes un año para construir un robot programando desde cero, seguramente pasarás casi la mitad del tiempo para crear un sistema básico de comunicación y prorgramacion, y al final de tu proyecto, notarás que no fuiste más allá de lo que todos los demás están haciendo.
ROS está aquí para proporcionarle al usuario y desarrollador un conjunto de herramientas y algunos atajos para iniciar su aplicación desde un nivel superior. No tiene que preocuparse de cómo se comunicarán las diferentes partes. Además, dispondrá de herramientas integradas gratuitas, como la planificación del movimiento, el reconocimiento de objetos, la navegación 2D, la asignación de salas en 3D, etc. De esta manera, no necesita volver a hacer lo que han hecho antes cientos de desarrolladores, y puede ceñirse al núcleo de su proyecto.
Que aprenderás con ROS
La robótica se trata de mecánica, electrónica e informática. Con ROS aprenderás sobre todo sobre lo último, la informática. Aprenderás sobre:
- Programación (C++ / Python) para desarrollar su aplicación.
- Administración de sistemas y red, para instalar y mantener ROS en diferentes versiones de SO, manejar paquetes fuente/binarios, comunicarse con dispositivos externos usando varios protocolos (HTTP, WebSocket, I2C, SPI,…).
- Conceptos robóticos, como la cinemática inversa, localización, mapeo 3D, inteligencia artificial,…
Usando ROS dispondrás de una base central para tu aplicación robótica. Con esto, y el número de herramientas disponibles, podrás:
- Tener una mejor comunicación entre todos los sensores, controladores, actuadores, interfaces de usuario,… de tu proyecto
- Manejar sistemas robóticos grandes y complejos. Será más fácil obtener una imagen global de un enorme proyecto robótico.
- Amplíar tus conocimientos de robótica. ROS está impulsando muchos tipos de robots. Incluso si estás programando un avión teledirigido, aprenderás cosas útiles que se pueden aplicar, por ejemplo, más tarde a un brazo robot.
Cómo aprender robótica con ROS. Conceptos básicos
- Suscribirte a ROSCON 2012 en Youtube. ROSCON es donde los desarrolladores, programadores y usuarios se reúnen cada año para discutir el progreso pasado y el camino a seguir. Esta serie de vídeos te ayudará a entender algunos conceptos fundamentales, y te dará toneladas de ideas para tu proyecto.
- Añade a tu lista de favoritos el wiki de ROS, donde encontrarás muchos tutoriales para principiantes. Estos tutoriales te enseñarán cómo configurar una aplicación ROS básica mientras utilizas los conceptos básicos de comunicación.
- Si no puedes esperar a ver proyectos reales que se ejecutan en la vida real, también en la wiki podrás echar un vistazo a los robots existentes impulsados por ROS con código fuente abierto, disponibles para que aprenda cualquiera.
Lo más importante es que necesitarás entender los conceptos de ROS: cómo funcionan los Temas, los Servicios y las Acciones (Topics, Services, y Actions). Es importante entender los conceptos de comunicación en ROS al principio, para que puedas empezar a pensar en la arquitectura de tu proyecto. Después de entender cómo se comunican los nodos entre sí, podrás ir más allá.
Te recomendamos que pienses en un proyecto de robótica y veas cómo puedes utilizar ROS para potenciar tu robot. Tener un proyecto personal te mantendrá motivado y te permitirá aprender más rápido.
Cómo aprender robótica con ROS. Unos conceptos más avanzados.
Es hora de que hagas un trabajo más serio, más ambicioso y difícil. La forma en que aprendes ahora dependerá en gran medida del tipo de robot que quieras programar. Aquí hay algunos paquetes y recursos que tal vez quieras consultar:
- URDF: una representación XML de tu robot. Con eso puedes fácilmente tener un modelo global de tu robot dentro de tu sistema ROS, y permitir que otros paquetes lo usen.
- Rviz: una herramienta de simulación que utilizará el formato URDF de tu robot para mostrar una visualización 3D.
- Moveit: un marco de planificación de movimiento completo. Moveit utilizará algunos comandos que le des junto con el archivo URDF, y calculará una trayectoria completa para tu robot.
- Control ROS: un conjunto de controladores + una interfaz para tu hardware, también puede conectarlo a Moveit.
- Rosbridge: una forma de comunicación entre un sistema ROS y un sistema que no es ROS, utilizando el protocolo WebSocket.
- Mensajes IMU ROS, para interconectar los datos IMU (Unidad de Medida Inercial) con un sistema ROS.
- Gazebo: una completa herramienta de simulación, incluyendo las limitaciones físicas y el entorno. Así podrás trazar una habitación con un drone en Gazebo, y reproducirlo exactamente de la misma manera después en la vida real!
Bueno, podríamos seguir escribiendo más y más sobre estás aplicaciones. Pero sólo necesitas saber que se están desarrollando muchos aplicaciones sobre diferentes parte de robótica. Cuando necesites desarrollar una pieza nueva, revisa antes si alguien ya ha trabajado en ella. te ahorrará tiempo y te permitirá progresar más eficientemente.
ROS y la comunidad en torno al sistema
ROS tiene una comunidad enorme y en crecimiento. Al aprender robótica con ROS, te garantizamos que no estarás solo. Aquí es donde puedes encontrar ayuda y conocer a nuevos apasionados de la robótica:
- ROS answers, que es el «desbordamiento de pila» de ROS. Muchas de las preguntas y respuestas existentes son muy útiles y te ayudarán a entender algunos conceptos y resolver sus problemas. También puedes hacer cualquier pregunta que tengas.
- Repositorios de github ROS. Para casi todos los paquetes puede encontrar el código en línea. Si tienes un problema y crees que esto está relacionado con el código del paquete, puedes abrir fácilmente una «pregunta» y comenzar una discusión con los responsables del paquete. También puedes contribuir a añadir nuevas funcionalidades. De esa manera puedes ayudar a otras personas compartiendo tu trabajo y tus progresos.
- Lista de correo ROS. Te aconsejamos que te suscribas a ella, recibirás noticias sobre cualquier proyecto de robótica, lanzamientos, preguntas de los usuarios… Una gran manera de mantenerte al día sobre el desarrollo de ROS y las nuevas características y aplicaciones.
Ya no tienes una excusa para no aprender robótica, y si has caido aquí por casualidad y no sabes lo qué es un robot, nuestros amigos de Revista Robotica te lo cuentan detalladamente.
- ¿Cómo Programar un Robot?
- Robótica Educativa, definición, qué es y ventajas para los niños
- ¿Cómo Programar un Robot?
- Robots Industriales, Qué son y Cómo elegirlos
- Robots colaborativos: qué son y qué hacen
- Cómo y porqué aprender robótica con ROS, Robot Operating System
- ¿Qué es un robot? ¿y la Robótica?