¿Cómo Programar un Robot? Lenguajes para Programar Robots
Los 10 lenguajes de programación más populares en robótica
Puede que la robótica no sea un campo nuevo, pero está experimentando un crecimiento masivo. De hecho, muchos expertos teorizan que los avances en la robótica, la IO y la inteligencia artificial cambiarán los futuros mercados laborales tanto (si no más) que la revolución industrial. Créase o no, en 2016 la industria de la robótica, en lo que respecta a las ventas industriales y no industriales, representó aproximadamente 31.000 millones de dólares. Para 2022, se espera que esa cifra alcance los 237.300 millones de dólares.
Aunque la industria de la robótica es un milagro de la ciencia moderna bien adaptada para aumentar la automatización, los robots todavía necesitan creadores, mantenimiento y programadores. Así que echemos un vistazo más de cerca a los mejores lenguajes de programación para aprender para un futuro en el excitante y explosivo campo de la robótica.
- ¿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?
Por qué «depende» es una respuesta inútil
Desafortunadamente, nunca obtendrás una respuesta sencilla si preguntas «¿Cuál es el mejor lenguaje de programación para la robótica?» a toda una sala llena de profesionales de la robótica (o en foros como Stack Overflow, Quora, Trossen, Reddit o Research Gate).
Los ingenieros electrónicos darán una respuesta diferente a la de los técnicos en robótica industrial. Los programadores de visión por computador darán una respuesta diferente a los robóticos cognitivos. Y todos estarían en desacuerdo en cuanto a cuál es «el mejor lenguaje de programación». Al final, la respuesta con la que la mayoría de la gente estaría de acuerdo es «depende». Esta es una respuesta bastante inútil para el principiante que está tratando de decidir qué lenguaje aprender primero. Incluso si esta es la respuesta más realista, porque depende de qué tipo de aplicación quieres desarrollar y qué sistema estás usando.
¿Qué lenguaje de programación debería aprender primero?
Probablemente es mejor preguntar, ¿qué lenguaje de programación es el que deberías empezar a aprender primero? Seguirás teniendo opiniones diferentes, pero muchos expertos en robótica pueden estar de acuerdo en los lenguajes clave.
Lo más importante para los robots es desarrollar «La mentalidad de programación» en lugar de dominar un lenguaje específico. En muchos sentidos, no importa realmente qué lenguaje de programación se aprende primero. Cada lenguaje que aprendes desarrolla tu competencia con la mentalidad de programación y hace más fácil el aprendizaje de cualquier nuevo lenguaje siempre que sea necesario.
Hay más de 1500 lenguajes de programación en el mundo, que son demasiados para aprender. Aquí están los diez lenguajes de programación más populares en la robótica en este momento. Cada lenguaje tiene diferentes ventajas para la robótica. La forma en que los hemos ordenado es sólo en parte en orden de importancia de menor a mayor valor.
BÁSIC / Pascal
BASIC y Pascal fueron dos de los primeros lenguajes de programación que muchos expertos en robótica aprendieron. Son la base de varios de los lenguajes de robots industriales, descritos a continuación. El BASIC fue diseñado para principiantes (significa Beginners All-Purpose Symbolic Instruction Code), lo que lo convierte en un lenguaje bastante simple para empezar. Pascal fue diseñado para fomentar las buenas prácticas de programación y también introduce construcciones como punteros, lo que lo convierte en un buen «trampolín» para pasar de BASIC a un lenguaje más avanzado. Hoy en día, ambos lenguajes están un poco anticuados para ser buenos para el «uso diario». Sin embargo, puede ser útil aprenderlos si vas a hacer mucha programación de bajo nivel o si quieres familiarizarte con otros lenguajes de robots industriales.
Lenguajes de los robots industriales
Casi todos los fabricantes de robots han desarrollado su propio lenguaje de programación de robots, que ha sido uno de los problemas de la robótica industrial. Puedes familiarizarte con varios de ellos aprendiendo Pascal. Sin embargo, todavía tendrás que aprender un nuevo lenguaje cada vez que empieces a usar un nuevo robot.
ABB tiene su lenguaje de programación RAPID. Kuka tiene el KRL (Kuka Robot Language). Comau usa PDL2, Yaskawa usa INFORM y Kawasaki usa AS. Luego, los robots Fanuc usan Karel, los robots Stäubli usan VAL3 y los Robots Universales usan URScript.
En los últimos años, las opciones de programación como ROS Industrial han empezado a proporcionar opciones más estandarizadas para los programadores. Sin embargo, si eres un técnico, es más probable que tengas que usar el lenguaje del fabricante.
C (Objetive) y C++
C y C++ son sin duda los lenguajes de programación más importantes que puedes aprender para ampliar tu formación y establecer una trayectoria para el campo de la robótica. ¿Por qué? Bueno, hay un montón de razones. En primer lugar, estos dos lenguajes son el código más utilizado en la industria de la robótica, pero hay muchos beneficios secundarios para aprender cualquiera de los dos lenguajes.
C y C++ son lenguajes orientados a objetos que se utilizan en una amplia variedad de campos. Todo, desde el diseño de juegos hasta el CAD, utiliza C y C++, entre otros lenguajes orientados a objetos. Y una vez que aprendas un lenguaje orientado a objetos, tendrás habilidades que se transfieren fácilmente a otras facetas de la programación. Incluso entre diferentes lenguajes de programación, una vez que has aprendido un lenguaje orientado a objetos, esencialmente los has aprendido todos (con pocas excepciones).
En realidad, lo principal que cambiará entre los diferentes lenguajes de programación es la sintaxis. Encontrarás que -más o menos- los lenguajes orientados a objetos tienen los mismos tipos de datos y las mismas estructuras de datos. Por ejemplo, los arrays, las estructuras de bucle, la recursividad y otros mecanismos similares son inherentes a los lenguajes orientados a objetos. Sin embargo, los caracteres exactos que se escriben para crear esas estructuras cambiarán de un lenguaje a otro.
Pero la parte más difícil es aprender cómo funcionan todos los mecanismos en primer lugar. Aprender un lenguaje orientado a objetos es un poco como montar en bicicleta. Una vez que hayas aprendido a hacerlo una vez, no lo olvidarás. Sin embargo, quería hacer una distinción importante. Técnicamente, el lenguaje de programación C, que es muy antiguo, es en realidad procesal. Pero hay una versión más reciente llamada Objetive C que, como habrán adivinado, añade al lenguaje una sintaxis orientada a los objetos.
C# y el .NET Framework
Si ya tienes algunas habilidades de programación en C++, aprender C# no va a ser tan difícil. De hecho, mucha de la sintaxis es idéntica, pero lo que cambia son las librerías de funciones y objetos que puedes emplear en tu código. C# es sólo uno de los muchos lenguajes de programación dentro del marco de trabajo .NET que lo abarca todo. Como ya sabrás, C# y la biblioteca .NET son productos de Microsoft, lo que los convierte en la plataforma de referencia para el desarrollo de aplicaciones de Windows.
A estas alturas, probablemente te preguntes por qué querrías aprender C# si se adapta bien a los programas de Windows, ¿verdad? Bueno, Microsoft, como una compañía que siempre está pensando en el futuro, ya ha hecho inversiones en el futuro de la robótica. Más específicamente, tiene una herramienta llamada Microsoft Robotics Developer Studio, y esta herramienta usa el C# como su lenguaje principal.
La última versión, la cuarta, viene con una variedad de componentes que incluyen Lenguaje de Programación Visual, Ambiente de Simulación Visual, Servicios de Software Descentralizado, y Tiempo de Ejecución de Concurrencia y Coordinación. Naturalmente, va a llevar mucho tiempo aprender este entorno, pero tener un conocimiento fundamental de C# es un activo indiscutible.
MATLAB
MATLAB ha existido aparentemente desde siempre y ahora tiene 34 años. Se utiliza a menudo en las disciplinas de ingeniería para controlar y analizar datos, así como para crear sistemas de control. También es genial porque se «conecta» (o se interconecta) con otros lenguajes frecuentemente usados en robótica, como C#, C, C++, Java y otros. Una de sus características clave es la capacidad de manipular y graficar datos y viene con un entorno GUI.
Pero también viene con una interfaz centrada en la robótica, conocida como Robotics Toolbox, que soporta funciones de robótica móvil así como robótica de tipo brazo. No lo recomendariamos como el mejor punto de partida para los principiantes, no porque sea difícil de aprender, sino porque hay habilidades más versátiles para aprender (como C++) que tienen una aplicación mucho más amplia.
Python
Ha habido un enorme resurgimiento de Python en los últimos años, especialmente en la robótica. Una de las razones de esto es probablemente que Python (y C++) son los dos principales lenguajes de programación que se encuentran en ROS. Como Java, es un lenguaje interpretativo. A diferencia de Java, el enfoque principal del lenguaje es la facilidad de uso. Mucha gente está de acuerdo en que lo consigue muy bien.
Python prescinde de muchas de las cosas habituales que ocupan tiempo en la programación, como definir y fundir tipos de variables. Además, hay un gran número de librerías gratuitas para él, lo que significa que no tienes que «reinventar la rueda» cuando necesitas implementar alguna funcionalidad básica. Y como permite enlaces sencillos con código C/C++, esto significa que las partes de mayor rendimiento del código pueden implementarse en estos lenguajes para evitar la pérdida de rendimiento. A medida que más electrónica comience a soportar Python «out-of-the-box» (como con Raspberry Pi), es probable que veamos mucho más Python en la robótica.
Lenguaje ensamblador
El lenguaje ensamblador es la forma más baja de programación. Esto no quiere decir que sea el más deshonroso, sino que es la instrucción más básica que se le puede asignar a cualquier controlador o procesador. Lenguajes como Java y C++ son lenguajes de alto nivel y tienen una capa de abstracción entre ellos y la arquitectura del procesador subyacente que no requiere que el programador entienda todos los tediosos comandos subyacentes a nivel del procesador.
Sin embargo, entender el lenguaje ensamblador es una gran habilidad que un programador de robótica puede obtener, especialmente si está trabajando en microcontroladores. Sin embargo, hay que saber que no hay una sola plataforma o arquitectura de microcontrolador y que el lenguaje ensamblador no es una habilidad general fundamental como el C++. Como tal, sólo podemos recomendar esto como una habilidad auxiliar. Claro, es útil conocer el lenguaje ensamblador, pero no es necesario y ciertamente no es el mejor lugar para empezar.
El verdadero inconveniente del lenguaje ensamblador es que no está estandarizado como Java, BASIC, C++, u otros lenguajes similares. El lenguaje ensamblador cambia de un procesador a otro, y mientras que algunos comandos y conceptos son similares, muchos no lo son. Así que si inviertes mucho tiempo en aprender el lenguaje ensamblador para el procesador X, y luego se requiere que trabajes en un controlador usando el procesador Y, puedes sentir que has perdido algo de tiempo.
Java
Algunos ingenieros electrónico, siempre se sorprenden que algunos licenciados en informática enseñen Java a los estudiantes como su primer lenguaje de programación. Java «esconde» la funcionalidad de la memoria subyacente del programador, lo que hace que sea más fácil de programar que, digamos, C, pero también significa que tienes menos comprensión de lo que realmente hace con tu código. Si llegas a la robótica desde una formación en ciencias de la informática (y mucha gente lo hace, especialmente en la investigación) probablemente ya hayas aprendido Java.
Al igual que C# y MATLAB, Java es un lenguaje interpretativo, lo que significa que no está compilado en código de máquina. Más bien, la máquina virtual de Java interpreta las instrucciones en tiempo de ejecución. La teoría para usar Java es que se puede usar el mismo código en muchas máquinas diferentes, gracias a la máquina virtual de Java. En la práctica, esto no siempre funciona y a veces puede hacer que el código se ejecute lentamente. Sin embargo, Java es bastante popular en algunas partes de la robótica, así que puede que lo necesites.
Lisp
Lisp es el mejor para la creación de prototipos y puede procesar datos simbólicos. Tiene una creación dinámica simple de nuevos objetos y es capaz de «recolectar basura» automáticamente con sus rutinas. El ciclo de vida de este lenguaje de programación permite la evaluación interactiva y recompilar la función y el documento mientras el programa está funcionando.
Lisp es un grupo de lenguajes de programación como Clojure y Common Lisp usado para el propósito general y dinámico que se desarrolla en la IA simbólica tradicional.
Lenguajes de descripción de hardware (HDL)
Los lenguajes de descripción de hardware son básicamente una forma de programación para describir la electrónica. Estos lenguajes son bastante familiares para algunos robots, porque se utilizan para programar Field Programmable Gate Arrays (FPGAs). Los FPGA permiten desarrollar hardware electrónico sin tener que producir un chip de silicio, lo que los convierte en una opción más rápida y fácil para algunos desarrollos. Si no haces un prototipo de electrónica, puede que nunca utilices HDL. Aún así, es importante saber que existen, ya que son bastante diferentes de otros lenguajes de programación. Por un lado, todas las operaciones se realizan en paralelo, en lugar de secuencialmente como en los lenguajes basados en procesadores.
¿En qué orden deberías aprenderlos?
El hecho de que hayamos enumerado estos diez no significa que tengas que aprenderlos todos, o incluso ninguno. Lo más importante es encontrar un lenguaje que se sienta natural para ti y que encaje con tu hardware robótico. Quieres un lenguaje que te permita desarrollar programas de forma rápida y fácil, para que puedas centrarte más en el desarrollo de la funcionalidad. Por esta razón, te recomendamos aprender Python primero. Esta es sólo nuestra opinión personal. Si otro lenguaje tiene más sentido para ti, entonces aprende eso en su lugar. Sin embargo, Python es un lenguaje increíblemente sencillo de aprender y enormemente poderoso gracias a las muchas bibliotecas de fácil acceso.
Podrás escuchar muchos relatos de programadores (ya experimentados) que aprendieron Python en un par de días y se convirtieron inmediatamente a él para casi todas sus necesidades de programación. Como dijo alguien, «Puedo producir código utilizable en Python tan rápido como puedo escribir». Después de haber adquirido un razonable dominio del uso de Python, recomendariamos aprender C, seguido de C++. Lo necesitarás para interactuar con la gran mayoría de los controladores de hardware robótico.