Introduction à la programmation de robots
La programmation d'un robot implique l'écriture de programmes informatiques qui permettent à un robot de percevoir son environnement, de planifier et prendre des décisions, ainsi que d’exécuter des tâches. Par exemple, la programmation d’un robot de terrain, lui permettant de naviguer de manière autonome dans un bâtiment, nécessite des fonctions de détection et de perception, de localisation et de cartographie, de planification et de suivi de trajectoire, des contrôles d’actionneur et d’autres tâches.
La programmation de robots implique généralement de :
- Permettre au robot de percevoir son environnement grâce à des algorithmes de Computer Vision et de Deep Learning pour la détection, la classification et le pistage d’objets, ainsi que pour l’estimation de mouvement
- Permettre l’autonomie du robot à travers des algorithmes pour la localisation et la cartographie simultanées (SLAM), l’évitement de collision et la planification de mouvement
- Contrôler le comportement du robot en concevant des systèmes de contrôle comme le contrôle prédictif, le contrôle du couple assisté par ordinateur et le suivi de trajectoire
- S'interfacer et communiquer avec des capteurs et actionneurs connectés à différentes plateformes embarquées, comme des CPU, des GPU, des FPGA et des microcontrôleurs
Lorsqu’ils débutent avec la programmation d'un robot, les ingénieurs développent souvent un diagramme de machine à états du comportement attendu du robot. En outre, des langages de programmation tels que C/C++, Python®, Java® et MATLAB® sont utilisés pour le développement d’algorithmes, et des middleware comme ROS (Robot Operating System) sont utilisés pour l’abstraction hardware, le contrôle bas niveau d’équipements, la transmission de message entre processus et le déploiement hardware.
Un workflow courant de programmation d'un robot.
Une seule erreur lors d’une étape peut souvent impacter l’intégralité du workflow de programmation d’un robot. La modélisation et la simulation lors du développement logiciel permettent d’éliminer les erreurs d’implémentation en identifiant les problèmes pendant le prototypage plutôt que lors de la production des robots ou même pire, pendant leur utilisation en conditions réelles. La simulation des systèmes permet également aux ingénieurs d’affiner leur design en ajustant les paramètres de contrôle, sans avoir à se soucier des dépendances de plateforme ni de l’accès au hardware du robot.
MATLAB offre plusieurs algorithmes et fonctions prédéfinis pour la programmation d'un robot. Par exemple, avec seulement quelques lignes d’algorithmes de Deep Learning prêts à l’emploi dans MATLAB, les robots peuvent identifier des objets dans un environnement. Simulink® offre des blocs prédéfinis afin d’utiliser la modélisation et la simulation avec l'approche Model-Based Design pour la programmation d'un robot. Par exemple, les blocs ROS dans Simulink permettent aux programmateurs de robots de s’abonner à des données de capteurs et de publier des commandes de robots sur un réseau ROS sans avoir à écrire de code.
Utilisation de blocs ROS pour la publication et la souscription de messages dans Simulink. Voir l'exemple.
En utilisant MATLAB et Simulink pour la programmation d'un robot, vous pouvez construire une simulation robotique évolutive pour prototyper, tester des modèles de concepts et débugger à moindre coût. Vous pouvez ensuite utiliser les modèles haute-fidélité pour la validation, tout en conservant le reste des algorithmes dans le même environnement de simulation. Une fois le résultat souhaité obtenu au niveau de la simulation du robot, vous pouvez générer un code exécutable autonome pour le système embarqué à partir du modèle Simulink dans des langages de programmation courants. En utilisant la connectivité ROS de MATLAB et Simulink avec un réseau ROS, vous pouvez générer des nœuds ROS en C++ directement à partir de MATLAB et Simulink pour tester et vérifier vos applications sur des robots compatibles ROS et des simulateurs de robots tels que Gazebo.
Pour plus de détails sur la programmation d'un robot, voir Robotics System Toolbox™, Navigation Toolbox™, ROS Toolbox, MATLAB et Simulink.
Exemples et démonstrations
Détection et perception
Planification de trajectoire et décision
Contrôle
Références logicielles pour la programmation de robots
FAQ sur la Programmation de robots
La programmation de robots consiste à écrire des programmes informatiques qui permettent à un robot de percevoir son environnement, de planifier et de prendre des décisions, puis d'exécuter des tâches telles que la navigation, la détection d'objets et la commande des actionneurs.
Les langages de programmation couramment utilisés pour la programmation de robots incluent C/C++, Python, Java et MATLAB, souvent associés à des middlewares tels que ROS pour l'abstraction matérielle et le contrôle des périphériques.
MATLAB fournit des algorithmes intégrés pour la perception, la planification et la commande, tandis que Simulink propose des blocs prédéfinis pour la modélisation, la simulation et l'intégration avec ROS, sans nécessiter d'écriture manuelle de code.
La simulation permet de réduire les erreurs d'implémentation en identifiant les problèmes dès la phase de prototypage. Elle aide également les ingénieurs à affiner la conception des systèmes en ajustant les paramètres de commande et permet de tester les systèmes sans nécessiter l'accès à un robot physique.
ROS (Robot Operating System) est un middleware utilisé pour l'abstraction matérielle, le contrôle des périphériques de bas niveau et l'échange de messages entre processus. Il facilite le déploiement sur matériel ainsi que la communication avec les capteurs et les actionneurs.
La programmation de robots implique généralement la perception à l'aide de la vision par ordinateur et du Deep Learning, l'autonomie grâce au SLAM et à la planification de trajectoire, la commande du comportement à l'aide de systèmes de contrôle, ainsi que l'interfaçage avec les capteurs et les actionneurs sur des plateformes embarquées.
Oui. Vous pouvez générer du code exécutable autonome dans des langages de programmation courants à partir de modèles Simulink pour des systèmes embarqués. Vous pouvez également générer directement des nœuds ROS C++ pour le déploiement sur des robots compatibles ROS et des simulateurs tels que Gazebo et Isaac Sim.
Voir aussi: Automatisation industrielle et machines, Robotique et systèmes autonomes, la robotique et les systèmes autonomes, mécatronique, Simscape Multibody, Control System Toolbox, Stateflow, Automated Driving Toolbox, Computer Vision Toolbox, Embedded Coder, MATLAB Coder, Simulink Coder, contrôle PID, cinématique inverse, services cloud pour la robotique, planification de trajectoire, système de navigation inertielle