¿Qué lenguajes informáticos necesitamos saber para la robótica?

La mejor respuesta

La respuesta más simple sería C ++ y Python .

Todos los proyectos de robótica con los que he trabajado se ejecutan en cualquiera de estas plataformas, de una forma u otra. Sin embargo, esta sería una respuesta incompleta sin mostrarle la imagen real de lo que sucede dentro de la robótica.

Sistema operativo:

  • C ++ y Python son definitivamente el lenguaje de programación que usas al final. Sin embargo, los códigos de la mayoría de los robots en estos días viven dentro de un sistema operativo llamado ROS (Robot Operating System). ROS proporciona una elegante arquitectura de software para facilitar el control y la planificación del robot. Existen estos diferentes programas de nodo que usted escribe que pueden publicar cierta información que puede ser utilizada por otros nodos que viven dentro de ROS . Por ejemplo, el nodo de localización que estima la posición de un dron en el mundo 3D publicaría esta información para que la utilicen otros nodos. Un nodo planificador de trayectorias puede suscribirse a estos nodos para obtener estos datos y evaluar la siguiente ruta para el dron. Cada uno de estos nodos son códigos simples C ++ o Python .

Programación para investigación en robótica:

  • Simulación : Casi todas las simulaciones y pruebas rigurosas en la fase de investigación se realizan primero en MATLAB antes de convertirlo a un código C ++ o Python . Esto se debe a las elegantes herramientas de visualización y las prácticas funciones preescritas que ofrece la plataforma. Los códigos MATLAB también se pueden integrar con ROS .

Programación para la cognición visual:

  • Modelos de aprendizaje automático : si el robot utiliza algún tipo de aprendizaje automático o técnicas de aprendizaje profundo, primero se entrena con plataformas como Tensorflow, Keras, PyTorch , etc. y luego se entrena los modelos se transfieren a ROS como un nodo. Por ejemplo, un dron de búsqueda y rescate usaría un modelo de detección humana como un nodo ROS que se suscribe al nodo de imagen de cámara sin procesar y publica toda la detección humana.
  • Procesamiento de imágenes : OpenCV es una herramienta de procesamiento de imágenes ampliamente utilizada que puede integrarse con C ++ o Python dentro de ROS . Un robot de fútbol, ​​por ejemplo, necesitaría este módulo para detectar todas las bolas de colores en la imagen.

Programación para hardware de robótica:

  • Programación de hardware : para el nivel de hardware FPGA programación, se utiliza verilog o VHDL .
  • Firmware o microcontroladores : Programación de AVR para ATMEGA Los chips son ampliamente utilizados si desea tener un control más eficiente y sofisticado del hardware. Una opción más fácil es usar el microcontrolador Arduino que usa un contenedor alrededor del lenguaje C . Es bastante sencillo programar en Arduino para ejecutar un servomotor o controlar un controlador de motor.
  • Computadoras de placa única : si necesita más memoria y potencia de procesamiento que la proporcionada por Arduino o Atmega , elige Raspberry Pi o Beagle Board . Ambos admiten Ubuntu integrado con Python o C ++ en ROS , ¡lo que hace su vida más fácil!

Al final, todo se reduce a Python, C ++ y MATLAB en una plataforma ROS . ROS acaba de conquistar el campo de la robótica tanto que la mayoría de las nuevas herramientas de programación de robótica nacen como ROS paquetes.

Respuesta

Tal vez la hoja de ruta que creé le ayude en su viaje para aprender robótica. Veo que esta pregunta se hace mucho.

La hoja de ruta tiene 4 niveles y cada nivel se centra en 4 conceptos básicos.

Nivel de calentamiento

  1. Aprender codificación: Empiece a elegir al menos un lenguaje de programación útil. Arduino IDE es bueno.Python es genial. C / C ++ será fantástico. Mi sugerencia sería Python . Hay varias razones para esto y más adelante en la hoja de ruta verá por qué.
  2. Aprenda electrónica: Comience a construir circuitos . Puede ser tan simple como encender un LED. A continuación, encienda más LED. Haga una señal de tráfico simple. Implementar interruptores. Aprenda las ideas teóricas detrás de cómo funcionan el voltaje, la corriente, las resistencias, los transistores, los circuitos en serie y en paralelo. ¡Explore los sensores y los servomotores también!
  3. Aprenda el montaje básico: De niños, nos encantaba hacer juguetes y cosas de construcción. Haz lo mismo aquí. Aprenda a hacer algunas estructuras básicas usando madera, acrílico, fibra o plástico.
  4. Integre con el microcontrolador: Con conocimiento de lo anterior conceptos, debería intentar probarlos en un microcontrolador básico. Después de todo, quieres que tu circuito «reaccione». La opción más popular entre aficionados y principiantes es usar Arduino . Arduino realmente ha simplificado el proceso de codificación e implementación de circuitos reaccionarios básicos.

(Recursos: YouTube, Khan Academy, Code, Coursera, Udemy)

Nivel principiante

  1. Aprenda programación orientada a objetos: No solo es importante codificar en robótica sino también cómo codificar bien . La programación orientada a objetos (OOP) es un músculo tremendo para crecer y antes de que pueda hacer esto, más se agradecerá en el futuro. OOP no es exclusivo de Python. Sin embargo, en Python puede implementarlos fácilmente y practicar. A través de OOP, aprenderá sobre clases, métodos, herencia, etc. y esta es una técnica excelente para escribir códigos funcionales, modulares y eficientes.
  2. Learn Física, probabilidad y álgebra lineal: A medida que pasa de ser un especialista en robótica infantil a un adolescente, es importante que también sepa cómo otros miembros de la comunidad escriben, leen y hablan la robótica. Este lenguaje de robótica utiliza mucho física, probabilidad y álgebra lineal. Sí, es posible que no disfrutes de estas materias en la escuela o la universidad, pero créeme, las necesitas si lo estás en serio la robótica. No se puede hacer visión por computadora sin conocer las matrices. No se puede planificar rutas sin tener conocimientos de física. No se puede hacer inteligencia artificial o aprendizaje automático sin conocer la probabilidad.
  3. Habilidades informáticas más complicadas: ¿Qué quiero decir con eso? Muchos recién llegados a la robótica se quedan perplejos (¡yo también lo estaba!) De que necesitan aprender este nuevo sistema operativo de apariencia alienígena que tiene un pingüino en algún lugar al lado. Me refiero al sistema operativo Linux . Es imperativo que alguien que busque profundizar en la robótica se familiarice con Linux. Muchas bibliotecas, paquetes y software desarrollados para robótica se distribuyen de manera muy fácil y eficiente en entornos Linux. Elección popular de SO Linux: Ubuntu
  4. Sistemas integrados: Ahora que ha desarrollado un mejor conocimiento de codificación, circuitos, conceptos teóricos y familiaridad con Linux, necesitamos implementarlos en una computadora más pequeña que nuestra computadora portátil. Así que sigue adelante y prueba los conceptos de nivel de preparación junto con los conceptos anteriores en una mini computadora como Raspberry Pi o BeagleBone. Conecta algunos sensores, servos y una cámara a una de estas minordenadores y escribe código para sentir, mover y detectar cosas.

(Recursos: YouTube, Khan Academy, Code, Coursera, MIT OCW)

Nivel intermedio

  1. Desarrolle fundamentos teóricos: Aquí, dependiendo de qué área de la robótica le interesa, necesita aprender más sobre la teoría detrás de ella. Más información sobre la manipulación de brazos robóticos (cinemática y control), percepción (visión por computadora, álgebra lineal , matrices), aprendizaje automático / inteligencia artificial (probabilidad, estadísticas, matemáticas). ¿Ves cómo algunos de los conceptos anteriores son fundamentales para estas áreas de robótica centrales?
  2. Use bibliotecas avanzadas: Ahora necesita implementar la máquina algoritmos de aprendizaje y / o visión por computadora en su robot. Después de todo, el robot debería poder ver, pensar y aprender, ¿verdad?En Python, existen increíbles bibliotecas escritas para implementar algoritmos de aprendizaje automático y visión por computadora, p. Ej. tensor de flujo y OpenCV. De manera similar, también se puede practicar mucha IA en Python. Por supuesto, puede hacer lo mismo en C / C ++. Sin embargo, intento mantener la coherencia aquí.
  3. Familiarízate con ROS: Con el conocimiento de todo lo anterior, una excelente El middleware que uno debería aprender es el Robot Operating System (ROS). Puede ser un poco complicado de aprender al principio. Sin embargo, ROS te abre las puertas para probar algoritmos avanzados y simulaciones en robots que ni siquiera tienes. ¿Quieres pilotar un quadcopter? ¿O navegar un robot de forma autónoma en un mapa? ¿Qué tal hacer que un brazo industrial levante un objeto? Puede hacerlo en ROS a través de su entorno de simulación llamado Gazebo.
  4. Más CAD: Puede que le interese desarrollar y diseñar robots complejos. Empiece a aprender software de diseño 3D como Blender o SolidWorks para que pueda diseñar sus propios robots.

Nivel experto

  1. Siga aprendiendo y creciendo: Cada concepto mencionado anteriormente es infinito por sus propias virtudes, y para convertirse en un experto en robótica, deberá invertir tiempo y seguir aprendiendo. Te darás cuenta de que necesitas aprender más clasificadores o modelos para detectar mejor objetos / imágenes. O puede que necesite obtener más información sobre los algoritmos de control para optimizar sus soluciones.
  2. Más software / hardware: Dependiendo de su área de interés y especialización, estará haciendo cada vez más de codificación, desarrollo algorítmico, ROS y / o diseño robótico.

Por último, definitivamente no soy un experto y, por lo tanto, no puedo agregar mucho a eso . Lo que puedo decir con seguridad es que ni siquiera yo sé lo que no sé. Una cosa importante que debe recordar es: comience y sea consistente =)

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *