Club robotique de Sophia-Antipolis

Accueil > Découverte > Pratiquer la robotique > Bien débuter en robotique amateur > Quel langage pour un robot ?

Quel langage pour un robot ?

samedi 16 juillet 2011, par Julien H.

Beaucoup de débutants ont peur de commencer à construire un robot mobile autonome car ils craignent d’être bloqué par l’apprentissage d’un langage de programmation.

Ce n’est pas un problème, et on peut même s’en passer dans certains cas. Mais afin de clarifier cette question, voici quelques éléments d’introduction à la robotique ludique.

Qu’est ce qu’un langage informatique ?

Un langage est un ensemble de signes permettant de communiquer. C’est-à-dire des éléments communs permettant d’exprimer une information d’un émetteur à un récepteur de manière à ce que cette information soit la moins modifiée possible.

Bien entendu, il n’y a pas toujours une difficulté égale pour l’émetteur ou le récepteur. Entre humains, on peut choisir la langue maternelle d’un des deux interlocuteurs, ou une troisième langue que l’un connaitra mieux que l’autre.

En robotique, il y a deux cas : entre robots, ou entre composants électroniques, le langage - qu’on appelle alors protocole de communication - est souvent imposé par les capacités des puces électroniques utilisées. Mais lorsqu’il s’agit pour un humain de donner des ordres au robot, principalement sous la forme d’un programme informatique enregistré dans la mémoire d’une puce électronique, le choix du langage revient à faciliter le travail de l’humain, avec plusieurs contreparties :
 soit un langage limité, pour éviter les erreurs de traduction
 soit des transformations complexes en consignes compréhensibles des puces électroniques.

Pas de langage du tout

On peut commencer par construire un robot non programmable, en s’inspirant des BEAMs et ainsi appréhender les principes de sensation/réaction utilisés sur la plupart des robots, en connectant par une électronique simple un capteur à un actionneur. De plus, ces robots ne sont pas réservés aux débutants et permettent d’aller assez loin pour peu qu’on est de l’imagination. Un grand nombre de robots programmables pourraient être plus performants s’ils délégaient une partie de leurs actions programmées à un système électronique autonome.

On peut aussi choisir de programmer un robot sans langage écrit, les signes de communication étant alors visuels pour limiter les possibilités grammaticales : au lieu d’avoir une dizaine de mots-clés comme dans un langage informatique classique (if, goto, write, ...) ce qui donnerait des centaines de combinaisons, on utilise des blocs graphiques dont les connexions sont limitées. Un autre avantage de ce type de programmation est la lecture d’un seul coup d’oeil de l’ensemble du programme (éventuellement avec des moyens d’encapsulation pour créer des blocs personnels eux-mêmes définis par un graphe visuel).

Cette solution graphique est de plus en plus répandue, y compris en informatique classique : les traitements de base de données, les algorithmes mathématiques, la conception d’interfaces homme-machine, les logiciels de gestion, etc.. sont de plus en plus développés avec des langages graphiques.

Mais comme nous le disions au paragraphe précédent, il n’y a pas de magie, et il faut à un moment convertir ces graphes en consignes compréhensibles par une puce électronique. On parle alors de "bas-niveau", le concepteur humain restant à un "haut-niveau". Cette conversion peut être développée spécifiquement pour un robot par le même développeur, l’effort d’utilisation d’un langage étant limité à cette conversion, la conception pouvant se faire avec le langage graphique haut-niveau. Mais dans la plupart des cas, on utilise un environnement de développement déjà développé, pour ne pas avoir à traiter la partie conversion bas-niveau. Dans ce cas,

Cependant les outils graphiques pour la robotique sont de plus en plus perfectionnés : chaque année, nous découvrons comment des collégiens et des lycéens poussent encore plus loin les limites d’utilisation du NXT-G, le langage graphique des Lego Mindstorms. De plus, cet environnement est lui-même issu d’un outil encore plus complet, LabView de National Instruments, destiné aux professionnels de l’électronique et de la recherche scientifique.

Vous pouvez donc sans complexe vous simplifier le travail et choisir un robot qui supporte un langage graphique. On a cité le Lego Mindstorms, il y a également les robots Mavin utilisés au club, et mis à disposition des adhérents si vous êtes intéressés pour en tester un avant achat.

Pas un langage, mais des langages

Revenons-en aux langages de programmation classiques. Même si vous avez votre propre langage de prédilection, d’autres vont entrer en jeu dans la conception d’un robot.

Ils sont nécessaires car en descendant les couches de conception du haut-niveau au bas-niveau, on peut faire un ou plusieurs changements de langages. Si on considère que la puce électronique programmable principale de votre robot reçoit un exécutable binaire, une succession de 0 et de 1 selon un langage machine qui lui est spécifique. Mais ce code machine va sans doute être généré par un compilateur, qui prendra une suite d’instructions lisibles par un humain, le code assembleur, pour la convertir une à une en suite binaire. Même s’il est possible d’écrire soi-même un programme en assembleur (ou "asm"), il est également possible d’utiliser un langage plus évolué, comme le langage C voire même au-dessus un langage objet, comme le C++, le C# ou le Java, etc... Même dans le cas d’un langage graphique (voir paragraphe ci-dessus), il y a souvent une interprétation dans un langage écrit, comme c’est le cas pour le Mavin dont l’éditeur permet de passer du graphe au programme C.

Cette séquence d’interprétation et de compilation qui va de votre programme jusqu’à l’exécutable binaire utilise plusieurs langages pour une seule puce. Il ne faut pas oublier qu’un robot peut être composé de plusieurs circuits programmés, soit par vous, soit en usine (on parle alors de "firmware" par opposition à votre code, le "software"). Selon les puces et selon les constructeurs, vous pouvez être amené à changer de langage.

Enfin, sachez que les langages informatiques utilisés pour faire des robots sont souvent complétés d’instructions spécifiques. Même si vous maitrisez le C ou le Java pour faire un programme sur ordinateur, des instructions particulières, proches du bas-niveau, peuvent être nécessaire de connaitre pour accéder aux entrées/sorties électroniques ou aux composants internes des micro-contrôleurs (timers, interruptions, ...).

Mais pas de panique : les langages écrits se ressemblent beaucoup une fois que la syntaxe - principale différence - est assimilée. La construction linéaire, multi-tâche ou par interruption d’un programme embarqué est indépendante du langage choisi.

Des langages spécifiques aux robots

Plusieurs initiatives sérieuses ont permis d’inventer de nouveaux langages, qui n’existaient pas en informatique conventionnelle et ont été pensé pour la robotique.

C’est le cas des langages scriptés, permettant une reconfiguration rapide d’éléments majeurs d’un programme robotique : gestion des capteurs, réactions aux événements internes et externes, enchainements de mouvements, algorithmes de traitement du signal.

Le principal, et surtout celui déjà utilisé à Pobot sur certains projets, est Urbiscript, créé par la société Gostai qui l’a rendu Open Source. Ce langage écrit s’accompagne d’un environnement graphique, permettant de mêler les deux options évoquées dans les paragraphes précédents.

S’il ne s’agit pas d’un langage spécifique, une mention doit être faite de ROS, un système d’exploitation pour robots de la société Willow Garage, qui utilise des langages et des concepts informatiques connus (Linux, modules noyau, C++) pour permettre de construire le logiciel d’un robot complexe.

Vos commentaires

Un message, un commentaire ?

modération a priori

Attention, votre message n’apparaîtra qu’après avoir été relu et approuvé.

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.