programación robots

¿Qué lenguaje de programación usan los robots?

Todo dispositivo electrónico o máquina requiere de un idioma tanto para moverse como para comunicarse con otros dispositivos, con humanos o con el entorno.
Este idioma es el lenguaje de programación que un robot necesita, es decir, el código o conjunto de instrucciones -algoritmos- que hará que el robot ejecute las tareas de forma eficiente.

De entre los más de 1.500 lenguajes de programación que existen, ¿Cuál es el mejor lenguaje de programación robótica? Pues sencillamente, depende. Depende de las aplicaciones que se pretendan desarrollar o del sistema que utilizado.

Algunos de los lenguajes de programación de robots disponibles son: C#, Python, Java, MATLAB o PHP, pero este artículo se centra en el lenguaje de programación robótica que Robotnik trabaja para el desarrollo de sus robots móviles autónomos.

RB-KAIROS

LENGUAJES DE PROGRAMACIÓN EN ROBÓTICA INDUSTRIAL

Actualmente el lenguaje de programación más usado en el sector de la robótica industrial es el C++.

Probablemente le siga de cerca Python. Este lenguaje es clave en las pruebas de un robot móvil autónomo y también muy extendido en el sector de la robótica debido a su relación con los desarrolladores de ROS.

Programación robótica con PYTHON

Conocido como el lenguaje de los datos, PYTHON es un lenguaje de programación de código abierto, probablemente de los más sencillos, populares y versátiles de todos los que hay.
Es un lenguaje de Programación Orientada a Objetos (POO) totalmente vinculado al desarrollo de inteligencia artificial y la realidad virtual.

Python es sobre todo un lenguaje muy flexible y rápido para prototipos en los que el usuario final simplemente tendrá que ejecutar el código, sin necesidad de compilar. El problema de

Python es que quizás, como no tiene en cuenta los errores hasta que se ejecuta, puede fallar en medio de un programa.

Programación robótica con C++

El C++ surgió como extensión del lenguaje de programación C, conocido como un lenguaje multiparadigma porque está orientado a objetos, igual que Python, pero también a paradigmas de programación estructurada y programación genérica.

Aunque el desarrollo de aplicaciones en C++ a veces precisa de más tiempo debido a que requiere la compilación del software, se trata de un lenguaje de programación robusto que permite crear programas complejos siguiendo una estructura sólida sin dar pie a equivocaciones o errores.

¿QUÉ LENGUAJE DE PROGRAMACIÓN SE UTILIZA EN ROBOTNIK?

En Robotnik se utilizan los lenguajes de programación robótica C++ y Python de cara a crear rutinas, algoritmos o a la comunicación con los sensores, motores, drivers, etc., pero para la interacción al más alto nivel con el robot, se huye de esta opción, creando un entorno que encapsula estos lenguajes de programación en un lenguaje más inteligible y comprensible para alguien que apuesta por la robótica móvil en su negocio, pero no tiene conocimientos de programación.

Robotnik apuesta por proporcionar gran parte del código fuente del robot, así como las simulaciones de los mismos, a través de nuestro GitHub oficial. Permitiendo que desarrolladores de todo el mundo puedan probar nuestros robots de forma virtual y aportar mejoras al código que ofrecemos

Pero para el usuario final o cliente, lo extrapola a un entorno de programación más intuitivo como una interfaz de programación por bloques. De hecho, ya se puede observar que el lenguaje de programación por bloques es el que se está enseñando en los colegios desde hace un tiempo, por su sencillez y funcionalidad.

Una experiencia intuitiva para el usuario

De este modo, ya no hace falta que el usuario se introduzca en una terminal en blanco y negro o transmitirle un comando excesivamente complejo, sino que, a través del HDMI se obtiene un bloque que encapsula acciones ya preprogramadas configurables como sucede en tareas de logística: que el robot móvil vaya de un punto X a un punto Y del mapa, que transporte una carga de un punto A a un punto B o sencillamente que se vaya al cargador cuando el nivel de batería sea bajo.

Después de más de 20 años de experiencia de Robotnik, es sabido que esta es la opción más cómoda para el usuario final. Puede que en una empresa que decide incorporar robótica móvil autónoma en su negocio, haya alguna persona con los suficientes conocimientos técnicos que sepa programar a bajo nivel el Core o las bases del robot como lo hacen los ingenieros en Robotnik, pero en caso de que no sea así, tampoco es un impedimento. La ventaja es que no es imprescindible tener a alguien en plantilla con conocimientos de lenguajes de programación de robots.

Otra de las ventajas de estos dos lenguajes de programación robótica es que son los principales que ROS ofrece y cuyas librerías están más desarrolladas.

En Robotnik se ha apostado por ROS desde su creación, pero ¿Qué es ROS?

ROS

ROS no es exactamente un lenguaje de programación robótica sino que es un sistema o framework en el que programar el software de los robots.

Es decir, un conjunto de marcos de software de código abierto que permite abstraer el hardware.
Imagina que ya tienes la herramienta para programar. Ahora necesitas también el entorno donde poder hacerlo, y ahí es donde aparece ROS.

Antes de la aparición de ROS, cuando el usuario cambiaba de robot o adquiría uno distinto, tenía que aprender a utilizar un nuevo software. En cambio, ahora es posible compartir programas, códigos y funciones de uso común entre distintos robots. También facilita la integración entre sistemas, cosa que es más costosa si cambias de paradigma.

Se trata de un conjunto de paquetes, recursos y herramientas que crea un punto en común para todos los desarrolladores de forma que, si alguien ha hecho un programa que se comunica con un driver o que hace determinado algoritmo, tienen una interfaz -ROS- que te permite que otros puedan usar lo que necesiten para programar su código. ROS es un lenguaje de lenguajes que te permite comunicarte entre distintos nodos escritos en cualquier idioma.

Este estándar es el más desarrollado entre los programadores de robótica móvil.

Si está interesado en leer más en detalle sobre ROS: ¿Aprender ROS online?

¿Sabías que todos los robots de Robotnik soportan software ROS?

 

 


Robotnik, patrocinador premium del 3er ROS Developers Day

Robotnik patrocina el 3er ROS Developers Day  (* anteriormente llamado "Conferencia de Desarrolladores ROS"), un evento práctico online para desarrolladores de sistemas operativos de robots. El evento tiene como objetivo conectar a los desarrolladores de ROS de todo el mundo, evitando las restricciones geográficas, y posibilitando compartir las últimas aplicaciones de ROS a través prácticas en tiempo real.

En esta conferencia, los principales desarrolladores de ROS podrán dar a conocer sus últimos avances a través de diferentes webcasts. Es el caso de nuestro colega Alejandro Arnal, desarrollador de software de Robotnik, cuyo webinar se titula "Trabajar con manipuladores móviles". Los manipuladores móviles son robots formados por una base móvil y un brazo robótico y que pueden interactuar en entornos donde hay personas. Nuestro colega le enseñará a la audiencia cómo programar un manipulador móvil y practicarán con el manipulador móvil RB-KAIROS de Robotnik.


ROS CONTROL, an API to control them all

ROS has been one of the greatest advances of the robotics industry in the past years. Its development began as a way to help the development of robot applications, easing the communication between sensors and algorithms, following the paradigm of “program once, test everywhere”.

This has been the pattern of the last years, and ROS has performed extremely good in that way. For example, you could code an algorithm to take an image as its input, without caring about which model, resolution or connection type, as long as it was supported by ROS and adopted its API.

But this focusing on the high level layer of application development led to an unthinkable oblivion: How was the access to actuators managed? How were the references of the actuators calculated? As in the case of high level applications, where the end user shouldn’t care about the source and destination of the data used and produced by him, in the case of robot control the user shouldn’t care about which type of actuators are used by a robot.

But today, this is not the situation anymore. ROS Control is the API that has been developed by the ROS community to allow simple access to different actuators. Using this standard API, the controller code is separated from the actuator code. For example, one could write a new controller implementing a fancy control strategy, and test it on different hardware without changing a single line of code. Or one could test different control algorithm with same hardware to find the most suitable for its needs.

ROS Control has different features that make it really appealing: real time capabilities, that allows to run control loops at hundreds of hertz; a simple manager interface, that gives access to the actuators and handles resource conflicts; a safety interface, that knows the hardware limitation of the joints and ensures that the commands sent to the actuators are between their limits; and a set off-the-shelf controllers that are ready to be used.

Have you ever thought about the mapping between joint and actuator space? ROS Control already did it. Normally this mapping is one-to-one, i.e. one actuator controls one joint, and their movement is related by a gearbox, so you don’t need to do messy calculations. However, in case of more complex scenarios, e.g. when a differential transmission is used, ROS Control gives us an elegant solution through its transmission interface to cope with this problem.

What about mixing different robot components into one? This is a trend nowadays, where robot components are autonomous and usable on their own, but can also be assembled into a single functional system. In those cases, ROS provides high level coordination between the components, but with ROS Control this coordination is also achieved at the low level, extending the control possibilities to far and beyond, for example, with a more coupled control between a robotic arm and the tool attached to it.

Finally, the separation between controllers and actuators allows an interesting option: simulation. Gazebo, the standard robot simulator used by ROS, implements simulated ROS Control actuators, and one can write and test a controller even before it has the real robot available. This feature of ROS Control is used at Robotnik to test new kinematic configurations for its most edgy robots, allowing for quick prototype delivery.

ROS Control is one of the key parts for the domination of the robotic world by ROS. As a world leading company in the ROS community, Robotnik makes an extensive use of ROS Control to give its customers the best products available on the market.