Sondage : quels sont les meilleurs langages de programmation pour la filière robotique ?
Quels sont vos critères ?
Le choix du langage de programmation est fonction du projet à mener, des contraintes auxquelles il faut faire face. Pour ne citer que celles-là, la filière robotique de par sa transversalité impose à ses acteurs de savoir coller à des spécifications de programmation temps réel et mettre sur pied des interfaces homme-machine graphiques dans bien des cas. Dès lors, la question du choix du langage de programmation se pose avec acuité. Dans le cas des projets de robotique, il serait même plus judicieux de parler de choix des langages de programmation. De C/C++ au langage de description de matériel (HDL) en passant par Java et autres MATLAB, on revient sur les raisons pour lesquelles les professionnels de la filière sont susceptibles de faire usage d’un langage donné.
1. C/C++
La plupart des programmeurs s'appuient sur C/C++ pour garantir d’excellentes performances temps réel aux robots. Motif : C/C++ a fait ses preuves dans la filière programmation système en général et temps réel en particulier. De plus, de nombreuses bibliothèques matérielles utilisées en robotique s'appuient sur l'un de ces langages. Lorsque la mémoire du robot est fortement limitée, le "C" standard est préféré pour pousser la précision à la gestion de chaque octet. Toutefois, avec ses nombreux outils, bibliothèques et fonctions, le C++ occupe une place importante dans le domaine. La robotique dépend beaucoup des performances en temps réel, ce qui fait de C et C++ des quasi standards pour les travailleurs de la filière.
2. Python
Python est l'un des plus populaires et considéré comme l'un des langages de programmation les plus faciles pour la robotique.
Une des raisons de sa popularité en robotique est probablement que Python (et C++) sont les deux principaux langages de programmation disponibles sur ROS - un système d'exploitation dédié aux robots. Le principal objectif de ce langage est la facilité d'utilisation. Par rapport à d'autres langages de programmation orientés objet comme Java ou C/C++, Python nécessite moins de travail de codage, ce qui permet de gagner beaucoup de temps. Python permet de se passer de beaucoup de choses qui prennent du temps en programmation, comme la définition et la distribution des types de variables.
Il existe également un grand nombre de bibliothèques gratuites pour Python, ce qui signifie qu'il est inutile de repartir de zéro lors de l'implémentation d'une fonctionnalité de base. Et comme il permet des liaisons simples avec du code C/C++, les parties du code les plus performantes peuvent être implémentées dans ces langages pour éviter la perte de performance.
Toutefois, sa nature de langage interprété peut devenir un talon d'Achille sur de gros projets du fait de l'incapacité à détecter les erreurs.
3. LISP
LISP est le deuxième plus ancien langage de programmation au monde après FORTRAN. Certaines parties du ROS (Robot Operating System) sont écrites en LISP, bien qu'il ne soit pas nécessaire de le connaître pour utiliser le ROS. Le langage est utilisé pour développer des fonctions de commande de robot dans une catégorie de micro-ordinateurs qui aide à la manipulation de diverses fonctions de robot.
4. Prolog
Ce langage de programmation robotique est classé aux côtés de Lisp quand on parle de développement dans le domaine de l'intelligence artificielle. Prolog est un langage de programmation logique qui permet aux programmeurs de représenter la "connaissance" sous une forme qu'un algorithme d'IA peut comprendre. Les fonctionnalités qu'il offre comprennent une correspondance efficace des formes, une structuration des données en arborescence et un retour en arrière automatique. Toutes ces fonctionnalités offrent un cadre de programmation étonnamment puissant et flexible. IBM a fait usage de ce langage de dans le cadre de la mise sur pied de son intelligence artificielle dénommée Watson.
5. Java
La majorité d'institutions de l'enseignement supérieur offrant des cours de robotique et des certifications incluent Java comme un passage obligé au sein de leurs programmes d'études parce que ce langage fournit à ses utilisateurs de nombreuses fonctionnalités de haut niveau requises dans la programmation robotique.
Sa nature de langage interprété permet d'utiliser le même code sur de nombreuses machines différentes qui fournissent des fonctionnalités spécialisées aux robots pour effectuer des tâches réalisées en principe par des humains. Le Java Media Framework fait partie des bases de code dont on use de cette façon.
Java fait partie des langages qu'on cite comme entrant dans les ingrédients de la mise sur pied de Watson et AlphaGo par IBM.
6. Pascal
Bon nombre de fabricants ont développé leur propre langage de programmation de robots en s'appuyant sur Pascal. Un listing de certains rentrant dans cette catégorie est proposé au point numéro 10. La familiarisation avec ces langages pour robots industriels peut donc se faire en revisitant Pascal, ce, sans se lier à une marque particulière de robot.
7. MATLAB
MATLAB est très populaire auprès de certains ingénieurs en robotique pour l'analyse des informations et la construction d'un système de contrôle. Il s'agit d'un langage de haute performance pour l'informatique technique. Il intègre le calcul, la visualisation et la programmation dans un environnement facile à utiliser où les problèmes et les solutions sont généralement exprimés en notation mathématique familière.
Les points forts de MATLAB pour la programmation des robots sont les suivants : un système très puissant pour l'analyse des données et de la cinématique du robot, un code utilisable rapide à écrire, une boîte à outils robotique largement utilisée, possibilité d’effectuer des simulations complexes.
Les faiblesses de MATLAB pour la programmation de robots sont les suivantes : pas vraiment conçu pour s'interfacer avec le matériel des robots, coûteux en tant que langage propriétaire, partage de code possible uniquement entre possesseurs de MATLAB, pas autant de bibliothèques tierces que d'autres alternatives.
8. C#
Contrairement au C++, le C# est facile à apprendre. Le C# est facile car il gère automatiquement la gestion de la mémoire. Les points forts du C# pour la programmation de robots sont les suivants : facile à apprendre et à intégrer dans de grands projets, muni d’une grande variété de bibliothèques, dispose d'un excellent environnement de développement gratuit (Microsoft Visual C# Express), fonctionne sur le Framework .NET et est très interopérable.
Les faiblesses de C# pour la programmation de robots sont les suivantes : le développement de logiciels est limité à Windows
De nombreuses interfaces homme-machine (IHM) sont développées en C#. Une IHM fait souvent partie des systèmes dits de supervision, contrôle et acquisition des données (SCADA).
9. Langages de description du matériel (HDL)
Ces langages seront très familiers aux ingénieurs en électronique qui créent l'électronique de bas niveau des robots. Le langage de description du matériel est utilisé pour spécifier les portes et les puces et simuler le comportement des spécifications des puces résultantes grâce à un simulateur de matériel.
Les HDL permettent d'orienter les objets et d'accumuler les déchets de manière simple par rapport à d'autres opérations et sémantique complexes par rapport aux langages traditionnels qui fonctionnent sur le flux de contrôle par opposition au flux de données.
10. Langages de programmation des robots industriels
Presque tous les fabricants de robots ont développé leur propre langage de programmation de robot, ce qui a mené à la résolution de l'un des plus vieux problèmes de la robotique industrielle.
ABB a son langage de programmation RAPID. Kuka a le KRL (Kuka Robot Language). Comau utilise PDL2, Yaskawa utilise INFORM et Kawasaki utilise AS. Ensuite, les robots Fanuc utilisent Karel, les robots Stäubli utilisent VAL3 et les robots Universal utilisent URScript.
Ces dernières années, des options de programmation plus générales comme ROS Industrial, la programmation hors ligne agnostique des fabricants et le guidage manuel ont commencé à offrir des options plus standardisées aux programmeurs.
Ces dernières années, des options de programmation plus générales comme ROS Industrial, la programmation hors ligne agnostique des fabricants et le guidage manuel ont commencé à offrir des options plus standardisées aux programmeurs. En tant qu'acteur de la filière on reste néanmoins susceptible de faire usage du langage du fabricant.
Et vous ?
Quels langages ou combinaisons de langages utilisez-vous pour vos projets de programmation des robots ?
Sur quels critères vous basez-vous pour effectuer votre choix ?
Voir aussi :
Quels sont les meilleurs langages de programmation en 2017 ? Et pourquoi ? Java, C# et C++ seraient-ils encore les préférés des développeurs ?
Programmation : découvrez les sept raisons pour lesquelles vous devez apprendre le langage Python, selon myTectra
Quels langages utilisez-vous pour le développement de systèmes embarqués ?
Partager