Logiciel robot

Le logiciel robot est un ensemble de commandes ou d’instructions codées qui indiquent aux appareils mécaniques et aux systèmes électroniques, connus sous le nom de robots, les tâches à effectuer. Le logiciel robot est utilisé pour effectuer des tâches autonomes. De nombreux systèmes logiciels et frameworks ont été proposés pour faciliter la programmation des robots.

Certains logiciels de robot visent à développer des dispositifs mécaniques intelligents. Les tâches courantes comprennent les boucles de rétroaction, le contrôle, la recherche de chemin, le filtrage de données, la localisation et le partage de données.

introduction
Bien qu’il s’agisse d’un type de logiciel spécifique, il reste assez diversifié. Chaque fabricant a son propre logiciel de robot. Alors que la grande majorité des logiciels concerne la manipulation de données et l’affichage des résultats à l’écran, les logiciels de robot sont destinés à la manipulation d’objets ou d’outils dans le monde réel.

Logiciel de robot industriel
Le logiciel pour robots industriels comprend des objets de données et des listes d’instructions, appelées flux de programme (liste d’instructions). Par exemple,

Aller à Jig1

est une instruction adressée au robot pour accéder aux données de position nommées Jig1. Bien sûr, les programmes peuvent aussi contenir des données implicites, par exemple

Indiquez à l’axe 1 de se déplacer de 30 degrés.

Les données et le programme résident généralement dans des sections séparées de la mémoire du contrôleur du robot. On peut changer les données sans changer le programme et vice versa. Par exemple, on peut écrire un programme différent en utilisant le même Jig1 ou ajuster la position de Jig1 sans changer les programmes qui l’utilisent.

Exemples de langages de programmation pour robots industriels
En raison de la nature hautement exclusive du logiciel de robot, la plupart des fabricants de matériel de robot fournissent également leur propre logiciel. Même si cela n’est pas inhabituel dans d’autres systèmes de contrôle automatisés, l’absence de normalisation des méthodes de programmation pour les robots pose certains problèmes. Par exemple, il existe plus de 30 fabricants différents de robots industriels. Par conséquent, 30 langages de programmation de robots différents sont également requis. Il existe suffisamment de similitudes entre les différents robots pour qu’il soit possible d’acquérir une compréhension étendue de la programmation de robots sans avoir à apprendre le langage propriétaire de chaque fabricant.

Une méthode de contrôle des robots de plusieurs fabricants consiste à utiliser un logiciel de post-traitement et de programmation (robotique) hors ligne. Avec cette méthode, il est possible de gérer un langage de programmation de robot spécifique à une marque à partir d’un langage de programmation universel, tel que Python (langage de programmation). Cependant, la compilation et le téléchargement de code hors ligne fixe sur un contrôleur de robot ne permettent pas au système robotique de connaître l’état, de sorte qu’il ne peut pas adapter son mouvement et récupérer en fonction des modifications de l’environnement. Le contrôle adaptatif en temps réel unifié pour n’importe quel robot n’est actuellement possible qu’avec Actin.

Quelques exemples de langages de programmation de robots publiés sont présentés ci-dessous.

Tâche en clair:
Déplacer vers P1 (position de sécurité générale)
Déplacer vers P2 (une approche de P3)
Déplacer vers P3 (une position pour choisir l’objet)
Fermer la pince
Déplacer à P4 (une approche à P5)
Déplacer vers P5 (une position pour placer l’objet)
Préhenseur ouvert
Déplacer vers P1 et terminer
VAL était l’un des premiers «langages» de robots et était utilisé dans les robots Unimate. Des variantes de VAL ont été utilisées par d’autres fabricants, y compris Adept Technology. Stäubli utilise actuellement VAL3.
Exemple de programme:
LIEU DE PROGRAMME
1. DÉPLACEZ P1
2. MOVE P2
3. DÉPLACEZ P3
4. CLOSEI 0.00
5. DÉPLACEZ P4
6. DÉPLACEZ P5
7. OPENI 0.00
8. MOVE P1
.FIN
Exemple de programme Stäubli VAL3:
commencer
movej (p1, tGripper, mNomSpeed)
movej (appro (p3, trAppro), tGripper, mNomSpeed)
movel (p3, tGripper, mNomSpeed)
fermer (tGripper)
movej (appro (p5, trAppro), tGripper, mNomSpeed)
movel (p5, tGripper, mNomSpeed)
ouvert (tGripper)
movej (p1, tGripper, mNomSpeed)
fin
trAppro est une variable de transformation cartésienne. Si nous utilisons in avec la commande appr, nous n’avons pas besoin d’enseigner les points P2 et P4, mais nous transformons de manière dynamique une approche de la position de sélection et de placement pour la génération de trajectoire.
Epson RC + (exemple pour un capteur à vide)
Fonction PickPlace
Saut P1
Saut P2
Saut P3
Sur le vide
Attends .1
Saut P4
Saut P5
Hors vide
Attends .1
Saut P1
Repousser
ROBOFORTH (un langage basé sur FORTH).
: PICKPLACE
P1
P3 GRIP RETRAIT
P5 UNGRIP RETRAIT
P1
;
(Avec Roboforth, vous pouvez spécifier des positions d’approche pour des emplacements afin que vous n’ayez pas besoin de P2 et P4.)

Il est clair que le robot ne doit pas continuer le mouvement suivant tant que la pince n’est pas complètement fermée. La confirmation ou le temps alloué est implicite dans les exemples ci-dessus de CLOSEI et GRIP, tandis que la commande de mise sous vide nécessite une temporisation pour assurer une aspiration satisfaisante.

Autres langages de programmation de robots

Langage de programmation visuel
Le langage de programmation LEGO Mindstorms EV3 est un langage simple avec lequel les utilisateurs peuvent interagir. C’est une interface utilisateur graphique (GUI) écrite avec LabVIEW. L’approche consiste à commencer par le programme plutôt que par les données. Le programme est construit en faisant glisser des icônes dans la zone de programme et en ajoutant ou insérant dans la séquence. Pour chaque icône, vous spécifiez ensuite les paramètres (données). Par exemple, pour l’icône d’entraînement motorisé, vous spécifiez quels moteurs et de combien ils bougent. Lorsque le programme est écrit, il est téléchargé dans la «brique» (le microcontrôleur) de Lego NXT à des fins de test.

Langages de script
Un langage de script est un langage de programmation de haut niveau utilisé pour contrôler l’application logicielle. Il est interprété en temps réel, ou « traduit à la volée », au lieu d’être compilé à l’avance. Un langage de script peut être un langage de programmation général ou peut être limité à des fonctions spécifiques utilisées pour améliorer l’exécution d’une application ou d’un programme système. Certains langages de script, tels que RoboLogix, ont des objets de données résidant dans des registres et le déroulement du programme représente la liste des instructions, ou du jeu d’instructions, utilisées pour programmer le robot.

Langages de programmation en robotique industrielle
Marque de robot Nom de langue
ABB RAPID
Comau PDL2
Fanuc Karel
Kawasaki AS
Kuka KRL
Stäubli VAL3
Yaskawa Inform
Les langages de programmation sont généralement conçus pour construire des structures de données et des algorithmes à partir de zéro, tandis que les langages de script sont davantage conçus pour connecter ou «coller» des composants et des instructions. Par conséquent, le jeu d’instructions de langage de script est généralement une liste simplifiée de commandes de programme utilisées pour simplifier le processus de programmation et permettre un développement rapide des applications.

Langues parallèles
Une autre approche intéressante mérite d’être mentionnée. Toutes les applications robotiques nécessitent une programmation basée sur le parallélisme et les événements. Le parallélisme est l’endroit où le robot fait deux choses ou plus en même temps. Cela nécessite du matériel et des logiciels appropriés. La plupart des langages de programmation utilisent des threads ou des classes d’abstraction complexes pour gérer le parallélisme et la complexité qui en découle, comme l’accès simultané à des ressources partagées. URBI fournit un niveau d’abstraction plus élevé en intégrant le parallélisme et les événements au cœur de la sémantique du langage.

quand (visage.visible)
{
headPan.val + = camera.xfov * face.x
& amp;
headTilt.val + = camera.yfov * visage.y
}

Le code ci-dessus déplace les moteurs headPan et headTilt en parallèle pour que la tête du robot suive le visage humain visible sur la vidéo prise par sa caméra chaque fois qu’un visage est vu par le robot.

Logiciel d’application robot
Quelle que soit la langue utilisée, le logiciel robot permet de créer des applications robotiques qui aident ou divertissent les gens. Les applications incluent des logiciels de commande et contrôle et de gestion des tâches. Le logiciel de commande et de contrôle comprend des interfaces utilisateur graphiques de contrôle de robot pour les robots télécommandés, un logiciel de commande de type point-n-clic pour des robots autonomes et un logiciel de planification pour les robots mobiles dans les usines. Le logiciel de gestion des tâches comprend de simples interfaces glisser-déposer permettant de définir des itinéraires de livraison, des patrouilles de sécurité et des visites guidées; il comprend également des programmes personnalisés écrits pour déployer des applications spécifiques. Un logiciel d’application de robot à usage général est déployé sur des plates-formes robotiques largement distribuées.

Considérations de sécurité
Les erreurs de programmation représentent un grave problème de sécurité, en particulier dans les grands robots industriels. La puissance et la taille des robots industriels signifient qu’ils sont capables d’infliger des blessures graves s’ils sont programmés incorrectement ou s’ils ne sont pas utilisés correctement. En raison de la masse et des vitesses élevées des robots industriels, il est toujours dangereux pour un humain de rester dans la zone de travail du robot pendant son fonctionnement automatique. Le système peut commencer à bouger à des moments inattendus et un humain sera incapable de réagir rapidement dans de nombreuses situations, même s’il est prêt à le faire. Ainsi, même si le logiciel est exempt d’erreurs de programmation, vous devez veiller à rendre un robot industriel sûr pour les travailleurs humains ou les interactions humaines, telles que le chargement ou le déchargement de pièces, le dégagement d’un bourrage de pièces ou la maintenance. Le livre ANSI / RIA R15.06-1999, Norme nationale américaine pour les robots et les systèmes de robots – Exigences de sécurité (révision du manuel ANSI / RIA R15.06-1992) de la Robotic Industries Association est la norme acceptée sur la sécurité des robots. Cela inclut des directives pour la conception de robots industriels, ainsi que pour la mise en œuvre ou l’intégration et l’utilisation de robots industriels dans les ateliers. De nombreux concepts de sécurité tels que les contrôleurs de sécurité, la vitesse maximale en mode apprentissage et l’utilisation de barrières physiques sont abordés.

Projets de logiciels de robotique
Vous trouverez ci-dessous une liste de logiciels libres et à code source ouvert destinés aux projets de robotique.

CLARAty – Architecture en couches couplées pour l’autonomie robotique. Il s’agit d’une collaboration entre quatre institutions: le laboratoire de propulsion par réaction de la NASA, le centre de recherche Ames de la NASA, Carnegie Mellon et l’Université du Minnesota.
dLife – Bibliothèque Java gratuite / Open Source pour Robotics, AI et Vision. Prise en charge de Pioneer, Khepera II & amp; II, Hemission, Aibo et Finch ainsi que des simulations joueur / scène.
Experimental Robotics Framework – Logiciel permettant de réaliser des expériences avec plusieurs robots en 3D, avec prise en charge des dernières technologies, reposant sur Player / Stage et Open / CV.
MARIE – Environnement d’intégration de la robotique autonome et autonome – est un logiciel libre utilisant une approche basée sur les composants pour construire des systèmes logiciels de robotique en intégrant des composants logiciels existants et nouveaux.
Microsoft – Microsoft Robotics Developer Studio
OpenRDK – Un framework logiciel open-source pour la robotique permettant de développer des modules faiblement couplés. Il fournit une gestion transparente des accès simultanés, une communication basée sur tableau pour les processus inter-processus (via les sockets) et intra-processus (via la mémoire partagée), ainsi qu’une technique de liaison permettant la conception de système conceptuel de ports de données en entrée / sortie. Des modules de connexion à des simulateurs et à des pilotes de robot génériques sont fournis.
OpenRTM-aist – une plate-forme logicielle développée sur la base du standard middleware RT. Il est développé par l’Institut national des sciences et technologies industrielles avancées au Japon.
OROCOS – le projet de logiciel Open Robot Control Software fournit une boîte à outils de logiciel libre pour le contrôle en temps réel des bras de robots et des machines-outils.
OPRoS – Open Platform Robotic Services est un projet open source de développement de robots. Il fournit une solution comprenant une plate-forme de robot et des outils de développement d’interface graphique avec le code source des composants de l’appareil robot.
RoboDK – Une plate-forme de kit de développement de robots pour simuler des robots industriels. RoboDK vous permet de programmer tout robot utilisant Python et gère la syntaxe propre à la marque en fonction de votre contrôleur de robot.
Robotics Library est une bibliothèque C ++ open-source couvrant la cinématique, la planification, la visualisation et les pilotes matériels de plusieurs robots.
Robotics Toolbox for MATLAB – C’est un logiciel libre qui fournit des fonctionnalités pour la représentation de la pose (transformations homogènes, angles d’Euler et RPY, quaternions), des robots à bras (cinématique et dynamique inverses / inversées) et des robots mobiles (contrôle, localisation et planification)
Projet Rossum, GW Lucas, projet de robotique à code source ouvert.
Player / Stage Project – Un système de simulation et d’interface robotique très populaire, logiciel libre, utilisé pour la recherche et l’enseignement en robotique dans le monde entier.
Pyro, Python Robotics – Robotique populaire Logiciel libre utilisé dans les universités et les collèges.
RoboMind – Logiciel éducatif pour apprendre les bases de la robotique et de la programmation.
Système d’exploitation Robot – Le système d’exploitation Robot est une plate-forme open-source pour la programmation de robots utilisant Python et C ++. Java, Lisp, Lua et Pharo sont pris en charge mais sont encore au stade expérimental.
Noyau Robot Intelligence

Programmation hors ligne
Visual Components est un logiciel commercial de simulation d’événements discrets 3D qui permet la simulation de flux de matériaux et la robotique sur une seule et même plateforme. La fonctionnalité peut être étendue avec des capacités de programmation hors ligne et une connectivité à un automate programmable.
« Les bases – Logiciel de robot ». Société de robotique de Seattle.
« Logiciel de robot autonome mobile (MARS) ». Georgia Tech Research Corporation.
« Base de données Tech ». robot.spawar.navy.mil.
Logiciel de robotique adaptative au laboratoire national de l’Idaho

Contrôle en ligne
Energid Technologies développe et vend le SDK Actin, une boîte à outils robotique, un moteur d’optimisation et un système de gestion des contraintes écrit en C ++ utilisant une cinématique basée sur Jacobian pour optimiser les performances sur tous les types de robots. Actin étant vendu en tant que SDK, il peut être étiqueté en blanc ou OEM dans d’autres progiciels de commande de robots. Cette approche permet aux utilisateurs de développer le contrôle d’un système connu en mode hors ligne via une interface graphique, puis de laisser Actin gérer le contrôle en ligne de haut niveau pour diffuser en continu des commandes conjointes constamment mises à jour au robot / contrôleur afin d’éviter les collisions en adaptant aux changements environnementaux détectés.