Descubrí ROS hace 2,5 meses. Al principio fue muy difícil, pero ahora comienzo a entender mejor los conceptos y siento que ROS me hizo mucho más productivo para programar un robot.
Déjame darte algunos antecedentes para que sepas de dónde empecé. Con 2 pasantías (10 meses), tenía conocimientos sobre programación en algunos lenguajes (scripting, OO, web, …) y también sabía algo sobre administración de sistemas y red (debido a mi última pasantía como DevOps).
Así que diría que es un buen fondo para comenzar a aprender ROS, incluso si realmente no estudié en profundidad ninguno de los temas en los que he trabajado.
Empecemos !
- ¿Cuáles son algunos hacks caseros para observar las estrellas?
- ¿Cuáles son los consejos de supervivencia para una emergencia radioactiva?
- ¿Debo comprar un vaporizador de tela o una plancha de ropa?
- ¿Cuáles son algunos consejos para asegurarse de que mis hijos experimenten un conjunto diverso de razas?
- ¿Qué consejos tienes para comenzar un periódico escolar?
El comienzo temprano:
Principios de septiembre. Solo estoy cofundando una empresa de robótica como CTO. Bueno, en otras palabras, yo soy el chico de la computadora. Nuestro objetivo: construir un robot accesible para fabricantes, nuevas empresas y pequeñas empresas. Como descubrí ROS mientras buscaba ayuda sobre cómo lidiar con la cinemática inversa, los caminos cartesianos y muchas otras cosas. Matemáticas para robótica no es fácil. Confía en mí, es un verdadero dolor.
Mi objetivo con ROS: construir una pila completa para un brazo robótico personalizado de 6 ejes, desde la interfaz de usuario (página web o móvil) hasta los motores de robot.
Primero me gustó lo que vi en algunos videos geniales, y el hecho de que la mayoría del código esté en la licencia BSD es excelente para los negocios. Así que empecé a leer sobre los conceptos. Creo que la wiki de ROS es genial, aunque cuando empiezas, creo que puedes necesitar algunas pautas. Puede comenzar con los tutoriales básicos para comprender más sobre Temas, Servicios y Acciones (bueno, tal vez siga con Temas y Servicios, luego, cuando entienda más, pruebe Acciones).
Después de eso realmente no sabía por dónde empezar. ¿Cómo puedo tener una representación de mi robot en ROS? ¿Cómo puedo usar la planificación de movimiento? ¿Cómo controlo los motores? ¿Puedo construir una pila completa? ¿Puedo usar ROS en una Raspberry Pi 3 y Arduino? Son muchas preguntas, y la lista continúa …
Así que busqué en línea libros sobre ROS. No los enumeraré porque encontré una respuesta que algunas personas ya preguntaron en quora. Algunos de los recursos descritos son excelentes.
Aprendiendo lo básico
Terminé leyendo libros durante días, haciendo tutoriales con el repositorio de github del autor. También vi casi todos los videos de ROSCON de 2012 en Youtube. Realmente, mira esto, es genial. Aprenderá sobre los principios, las aplicaciones que puede hacer y descubrirá los conceptos básicos de algunos paquetes importantes.
Primero aprendí a tratar temas, servicios y acciones (para este tipo de información, la ROS también es muy buena). Es importante comprender los conceptos de comunicación en ROS al principio, para que pueda comenzar a pensar en la arquitectura de su proyecto. Una vez que entienda cómo se comunican los nodos entre sí, podrá ir más lejos.
Comenzando a construir la pila para controlar mi robot personalizado
Lo siguiente en lo que me centré fue en URDF (ver video aquí). URDF le permitirá obtener una representación de su robot. Sin eso no se puede hacer nada. Por eso le aconsejo que aprenda cómo crear un archivo URDF (vea también xacro para una configuración mejor y más fácil de cambiar más adelante).
Después de que mi robot estuviera completamente “URDFied”, pude verlo en RVIZ (¡Qué buena recompensa!). Rviz es una herramienta de simulación que le ayudará a ver su modelo de robot, las transformaciones (tf es la parte difícil :)), y le permitirá mover su robot desde comandos de empalmes, o con un planificador de movimiento.
Una vez que obtuve la descripción de mi robot en URDF, todo lo que quería hacer era decirle al robot: “Oye, muévete a x = 0.1, y = 0.1, z = 0.2, y no me obligues a hacer el *** *** ¡Matemáticas! ”(No, las matemáticas son divertidas, incluso doy algunas clases de matemáticas después de trabajar)
Aquí viene MoveIt !. ¡Muévelo! es una excelente herramienta para la planificación de movimientos y trayectos. Hará las cuentas por usted, todo lo que necesita es una configuración previa y su URDF listo. Después de eso, puedes hacer muchas cosas impresionantes con tu robot. Si está usando python, esto podría ayudar.
Después de que hayas terminado con Moveit! necesita obtener la trayectoria calculada y, de hecho, ejecutarla con sus propios controladores, en su propio robot. Esta parte me resultó bastante difícil de entender, qué mensajes van a dónde, en qué orden, dónde se supone que obtendré la salida, etc. (consejo: el mensaje que buscará es este. A continuación, encontrará más información. en ROS wiki, respuestas ROS y Google)
El último paso antes de que pudiera controlar realmente el robot real, y no solo la simulación, era interconectar ROS con una placa Arduino. Entonces el arduino controlará los motores paso a paso y los servomotores. Bueno, hay un paquete para eso!
Luego pasé mucho tiempo tratando de codificar en el Arduino para que las cosas funcionen sin problemas.
Estuve en este punto después de unas 4 semanas de trabajo. (incluyendo fines de semana)
Bueno, el primer mes fue bastante difícil, casi todo lo que hice durante ese mes es aprender los conceptos básicos de ROS, crear un modelo para mi robot, ¡jugar con Moveit! Y tratando de controlar mi robot con una placa Arduino.
Entonces depende de lo que tengas que hacer.
Después de aprender lo básico y cómo controlar su robot, depende de su proyecto. Para mí, fue construir una pila completa para que el robot fuera accesible para el usuario final. Así que eché un vistazo a:
- Mensajes IMU ROS para interconectar mis datos con el sistema ROS
- ROS en Raspberry Pi
- Rosbridge Suite le permitirá configurar un socket web entre un sistema ROS y un sistema que no sea ROS. Eso es genial para completar la pila (usuario -> motores)
- Y muchos muchos mas…
Algunos recursos útiles:
- Gazebo para la simulación en un mundo real.
- Sensores
- Navegación 2D si tienes un robot móvil.
- … Luego lea más materiales en la wiki y en los repositorios de github (PR, números)
Conclusión:
¡2.5 meses después de que empecé, puedo decir que aprender ROS vale la pena!
ROS es un excelente middleware de código abierto para usar con su robot. Dependiendo de sus conocimientos previos, la curva de aprendizaje puede ser lenta al principio. Pero en unas pocas semanas / meses podrá comprender más y más cosas, y su productividad será mucho mayor. Además, tu robot hará cosas increíbles, que no puedes programar solo por tu cuenta.
Puede elegir entre C ++ y Python para la programación con ROS. Si desea una creación rápida de prototipos y no está tan familiarizado con C ++, recomiendo comenzar a usar Python (no se preocupe, no es necesario que todas sus aplicaciones estén en Python, ya que los nodos son independientes del idioma).
Lo importante es, no te rindas. Al principio, se sentirá estancado y desorientado, pero después de pasar por eso y comenzar a entender los conceptos, ¡verá los beneficios de usar ROS!
Espero que esta respuesta te ayude, puedes obtener más información sobre el robot que actualmente estoy programando aquí y leer algunos artículos sobre cobots y robots accesibles aquí.