Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Sondage : quels sont les meilleurs langages de programmation pour la filière robotique ?
Quels sont vos critères ?

Le , par Patrick Ruiz

59PARTAGES

15  0 
Quels sont les meilleurs langages pour programmer des robots ?
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 ?

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de PofNClimb
Membre à l'essai https://www.developpez.com
Le 09/07/2020 à 10:48
Pour moi, après plusieurs années passées dans la robotique médicale, la règle est simple :
  • pour faire du temps réel et/ou se donner une chance d'obtenir un marquage CE ou FDA : C/C++
  • pour le reste (comme se contenter de jouer des trajectoires), le langage du fabricant suffit (VAL3 est peu agréable à utiliser, URScript et KRL sont pas mal, le langage de Denso est très bien)
2  0 
Avatar de Anselme45
Membre extrêmement actif https://www.developpez.com
Le 09/07/2020 à 13:36
Le choix du langage de programmation est fonction du projet à mener, des contraintes auxquelles il faut faire face.

Non! A moins de faire dans la recherche en robotique, on ne choisit pas son langage de programmation en robotique!

Cela dépend du fournisseur des composants utilisés: Quand tu achètes un robot industriel, tu utilises le langage de programmation fourni par le constructeur du robot et rien d'autre!
2  0 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 09/07/2020 à 11:17
Tout dépend de la contrainte de traitement.
Pour du temps réel je ne ferai rien d'autre que du C/C++.
Mais si la gestion n'est pas lourde alors du Python peut être plus sympa.
2  1 
Avatar de transgohan
Expert éminent https://www.developpez.com
Le 09/07/2020 à 15:45
Citation Envoyé par Anselme45 Voir le message
Cela dépend du fournisseur des composants utilisés: Quand tu achètes un robot industriel, tu utilises le langage de programmation fourni par le constructeur du robot et rien d'autre!
Tout dépend du driver (au sens large suivant le produit) fourni...
Quand l'interface avec le robot est clairement bloquée de partout on est d'accord qu'il vaut mieux utiliser (on a pas le choix en fait...) le langage propriétaire du fournisseur.
Mais sinon je ne vois pas pourquoi tu n'aurais pas le droit d'utiliser le langage qui te plait pour programmer le robot tant que tu peux attaquer l'interface de commande.

Après il faut aussi voir que la news ne porte pas que sur les robots industriels.
1  0 
Avatar de Metalman
Membre expert https://www.developpez.com
Le 12/07/2020 à 21:21
Pas de ADA ? (j'ai un vague souvenir qu'il y a plusieurs niveaux de compilation & exigences qui permettent d'assurer qu'il n'y aura pas d'états inattendus, ou quelque chose du genre)
1  0 
Avatar de redbullch
Membre confirmé https://www.developpez.com
Le 16/07/2020 à 20:37
En 2020, on peut gentiment commencer à s'intéresser à Rust pour la robotique.
1  0 
Avatar de Galet
Membre actif https://www.developpez.com
Le 13/07/2020 à 11:57
Bonjour à tous,
KRL/Karel et Val3 sont des langages spécifiques à chaque fabricant.
KRL et C++ ne s'adressent pas aux mêmes programmeurs car ne répondent pas aux mêmes fonctions !
Autant comparer Python avec Excel...
0  0 
Avatar de Galet
Membre actif https://www.developpez.com
Le 13/07/2020 à 12:15
Dans nombre de cas, on ne peut pas utiliser un autre langage que celui du fabricant, qui est adapté au Hardware (complète ou compense), aux applications habituelles (Soudure, manutention...), au marché visé (Automobile, médical...), et aux programmeurs concernés (Informaticiens, Chercheurs, roboticiens, Automaticiens...).

Comme le langage "universel" n'existe pas, programmer un robot KUKA avec Rapid (ABB) serait impensable car réduirait aux avantages communs sans exploiter les capacités spécifiques de chaque matériel.

Comparer C++ et Val3 revient à comparer Fortran et PHP : Tout dépend de ce que l'on souhaite ...
0  0 
Avatar de darklinux
Membre éclairé https://www.developpez.com
Le 09/07/2020 à 9:49
Python , pour moi , une évidence
1  5