Table des matières:
- Fournitures
- Étape 1: tout configurer
- Étape 2: Comprendre le fonctionnement du contrôleur
- Étape 3: Création d'une interface ROS-MATLAB
- Étape 4: Obtenir l'adresse IP
- Étape 5: Créer une interface graphique pour le contrôleur
- Étape 6: programmation des boutons modifiables de l'interface graphique
- Étape 7: Programmation des boutons-poussoirs de l'interface graphique
- Étape 8: Configuration de la configuration réseau sur ROS PC (Linux)
- Étape 9: Exécutez le contrôleur
Vidéo: Contrôleur robotique ROS basé sur Matlab : 9 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
Depuis que je suis enfant, j'ai toujours rêvé d'être Iron Man et je le fais toujours. Iron Man est l'un de ces personnages qui est réalistement possible et en termes simples, j'aspire à devenir Iron Man un jour même si les gens se moquent de moi ou disent que c'est impossible parce que "ce n'est impossible que si quelqu'un le fait" - Arnold Schwarzenegger.
ROS est un cadre émergent utilisé pour développer des systèmes robotiques complexes. Ses applications incluent: le système d'assemblage automatisé, la téléopération, les bras prothétiques et la machinerie lourde du secteur industriel.
Les chercheurs et les ingénieurs utilisent ROS pour développer les prototypes, tandis que différents fournisseurs l'utilisent pour créer leurs produits. Il a une architecture complexe qui le rend difficile à gérer par un boiteux. L'utilisation de MATLAB pour créer le lien d'interface avec ROS est une nouvelle approche qui peut aider les chercheurs, les ingénieurs et les fournisseurs à développer des solutions plus robustes.
Donc, cette instructable explique comment créer un contrôleur robotique ROS basé sur Matlab, ce sera l'un des très rares tutoriels à ce sujet et parmi les quelques instructables ROS. L'objectif de ce projet est de concevoir un contrôleur capable de contrôler n'importe quel robot ROS connecté à votre réseau. Alors, commençons!
crédits de montage vidéo: Ammar Akher, à [email protected]
Fournitures
Les composants suivants sont requis pour le projet:
(1) ROS PC/Robot
(2) Routeur
(3) PC avec MATLAB (version: 2014 ou supérieure)
Étape 1: tout configurer
Pour cette instructable, j'utilise Ubuntu 16.04 pour mon ordinateur Linux et ros-kinetic, donc pour éviter toute confusion, je recommande d'utiliser ros kinetic et ubuntu 16.04 car il a le meilleur support pour ros-kinetic. Pour plus d'informations sur l'installation de ros kinetic, rendez-vous sur https://wiki.ros.org/kinetic/Installation/Ubuntu. Pour MATLAB, vous achetez une licence ou téléchargez une version d'essai à partir d'ici.
Étape 2: Comprendre le fonctionnement du contrôleur
Un PC exécute le contrôleur robotique sur MATLAB. Le contrôleur prend l'adresse IP et le port du ros pc/robot.
Un ros-topic est utilisé pour communiquer entre le contrôleur et le ros pc/robot, qui est également pris comme entrée par le contrôleur. Le modem est nécessaire pour créer un LAN (réseau local) et c'est lui qui attribue les adresses IP à tous les appareils connectés à son réseau. Par conséquent, le ros pc/robot et le pc exécutant le contrôleur doivent tous deux être connectés au même réseau (c'est-à-dire le réseau du modem). Alors maintenant que vous savez "comment ça marche", passons au "comment c'est construit"…
Étape 3: Création d'une interface ROS-MATLAB
L'interface ROS-MATLAB est une interface utile pour les chercheurs et les étudiants pour prototyper leurs algorithmes de robot dans MATLAB et les tester sur des robots compatibles ROS. Cette interface peut être créée par la boîte à outils du système robotique dans matlab et nous pouvons prototyper notre algorithme et le tester sur un robot ROS ou dans des simulateurs de robots tels que Gazebo et V-REP.
Pour installer la boîte à outils du système robotique sur votre MATLAB, accédez simplement à l'option Module complémentaire de la barre d'outils et recherchez la boîte à outils robotique dans l'explorateur de modules complémentaires. En utilisant la boîte à outils robotique, nous pouvons publier ou souscrire à un sujet, tel qu'un nœud ROS, et nous pouvons en faire un maître ROS. L'interface MATLAB-ROS possède la plupart des fonctionnalités ROS dont vous pourriez avoir besoin pour vos projets.
Étape 4: Obtenir l'adresse IP
Pour que le contrôleur fonctionne, il est impératif que vous connaissiez l'adresse IP de votre robot/pc ROS et du PC exécutant le contrôleur sur MATLAB.
Pour obtenir l'IP de votre PC:
Sous Windows:
Ouvrez l'invite de commande et tapez la commande ipconfig et notez l'adresse IPv4
Pour Linux:
Tapez la commande ifconfig et notez l'adresse inet. Maintenant que vous avez l'adresse IP, il est temps de créer l'interface graphique…
Étape 5: Créer une interface graphique pour le contrôleur
Pour créer l'interface graphique, ouvrez MATLAB et tapez guide dans la fenêtre de commande. Cela ouvrira l'application de guide à travers laquelle nous créerons notre interface graphique. Vous pouvez également utiliser le concepteur d'applications sur MATLAB pour concevoir votre interface graphique.
Nous allons créer 9 boutons au total (comme indiqué sur la fig):
6 boutons-poussoirs: Avant, Arrière, Gauche, Droite, Connecter au Robot, Déconnecter
3 boutons modifiables: Ros pc ip, port et nom du sujet.
Les boutons modifiables sont les boutons qui prendront l'adresse IP du PC ROS, son port et le nom du sujet en entrée. Le nom du sujet est ce à travers lequel le contrôleur MATLAB et le robot/pc ROS communiquent. Pour modifier la chaîne sur le bouton modifiable, cliquez avec le bouton droit sur le bouton >> accédez aux propriétés de l'inspecteur >> Chaîne et modifiez le texte du bouton.
Une fois votre interface graphique terminée, vous pouvez programmer les boutons. C'est là que commence le vrai plaisir…
Étape 6: programmation des boutons modifiables de l'interface graphique
L'interface graphique est enregistrée sous forme de fichier.fig mais les fonctions de code/rappel sont enregistrées au format.m. Le fichier.m contient le code de tous vos boutons. Pour ajouter des fonctions de rappel à vos boutons, faites un clic droit sur le bouton > >Afficher les rappels>>rappel. Cela ouvrira le fichier.m de votre interface graphique à l'endroit où ce bouton particulier est défini.
Le premier rappel que nous allons coder concerne le bouton modifiable IP ROS. Sous la fonction edit1_Callback, écrivez le code suivant:
fonction edit1_Callback(hObject, eventdata, handles)
ros_master_ip global
ros_master_ip = get(hObject, 'String')
Ici, la fonction est définie comme edit1_Callback, qui fait référence au premier bouton modifiable. Lorsque nous entrons une adresse IP du réseau ROS dans ce bouton modifiable, il stockera l'adresse IP sous forme de chaîne dans une variable globale appelée ros_master_ip.
Ensuite juste sous _OpeningFcn(hObject, eventdata, handles, varargin) définissez ce qui suit (voir fig):
ros_master_ip global
ros_master_port global
global teleop_topic_name
ros_master_ip = '192.168.1.102';
ros_master_port = '11311';
teleop_topic_name = '/cmd_vel_mux/input/teleop';
Vous venez de coder globalement en dur l'ip ros-pc (ros_master_ip), le port (ros_master_port) et le nom du sujet Teleop. Cela signifie que si vous laissez les boutons modifiables vides, ces valeurs prédéfinies seront utilisées lorsque vous vous connecterez.
Le prochain rappel que nous allons coder concerne le bouton modifiable Port.
Sous la fonction edit2_Callback, écrivez le code suivant:
fonction edit2_Callback(hObject, eventdata, handles)
ros_master_port global
ros_master_port = get(hObject, 'String')
Ici, la fonction est définie comme edit2_Callback, qui fait référence au deuxième bouton modifiable. Lorsque nous entrons ici le port du ros pc/robot à partir du réseau ROS dans ce bouton modifiable, il stockera le port sous forme de chaîne dans une variable globale appelée ros_master_port.
De même, le prochain rappel que nous allons coder concerne le bouton modifiable du nom du sujet.
Sous la fonction edit3_Callback, écrivez le code suivant:
fonction edit3_Callback(hObject, eventdata, handles)
global teleop_topic_name
teleop_topic_name = get(hObject, 'String')
Semblable à ros_master_port, celui-ci est également stocké sous forme de chaîne dans une variable globale.
Ensuite, nous allons nous intéresser aux fonctions de rappel des boutons poussoirs…
Étape 7: Programmation des boutons-poussoirs de l'interface graphique
Les boutons poussoirs que nous avons créés précédemment sont ceux que nous utiliserons pour déplacer, connecter et déconnecter le robot du contrôleur. Les rappels des boutons poussoirs sont définis comme suit:
par exemple. fonction pushbutton6_Callback(hObject, eventdata, handles)
Remarque: selon l'ordre dans lequel vous avez créé vos boutons-poussoirs, ils seraient numérotés en conséquence. Par conséquent, la fonction pushbutton6 dans mon fichier.m pourrait être pour Forward alors que dans votre fichier.m, elle pourrait être pour Backwards, alors gardez cela à l'esprit. Pour savoir quelle est la fonction exacte de votre bouton-poussoir, cliquez simplement avec le bouton droit de la souris>>Afficher les rappels>>rappels et cela ouvrira la fonction de votre bouton-poussoir, mais pour cette instructable, je suppose que c'est le même que le mien.
Pour le bouton Se connecter au robot:
Sous la fonction pushbutton6_Callback(hObject, eventdata, handles):
fonction pushbutton6_Callback(hObject, eventdata, handles) global ros_master_ip
ros_master_port global
global teleop_topic_name
robot mondial
velmsg global
ros_master_uri = strcat('https://', ros_master_ip, ':', ros_master_port)
setenv('ROS_MASTER_URI', ros_master_uri)
colophane
robot = rospublisher(teleop_topic_name, 'geometry_msgs/Twist');
velmsg = rosmessage(robot);
Ce rappel définira la variable ROS_MASTER_URI en concaténant ros_master_ip et le port. Ensuite, la commande rosinit initialisera la connexion. Après la connexion, il créera un éditeur de geometry_msgs/Twist, qui sera utilisé pour envoyer la commande speed. Le nom du sujet est le nom que nous donnons dans la zone d'édition. Une fois la connexion réussie, nous pourrons actionner les boutons poussoirs avant, arrière, gauche, droite.
Avant d'ajouter des rappels aux boutons push Forward, Backward, nous devons initialiser les vitesses de vitesse linéaire et angulaire.
Par conséquent ci-dessous _OpeningFcn(hObject, eventdata, handles, varargin) définissez ce qui suit (voir fig):
global left_spinVelocity global right_spinVelocity
global forwardVelocity
arrière globalVelocity
left_spinVelocity = 2;
right_spinVelocity = -2;
forwardVelocity = 3;
arrièreVelocity = -3;
Remarque: toutes les vitesses sont en rad/s
Maintenant que les variables globales sont définies, programmons les boutons de mouvement.
Pour le bouton poussoir Renvoi:
fonction pushbutton4_Callback(hObject, eventdata, handles) global velmsg
robot mondial
global teleop_topic_name
global forwardVelocity
velmsg. Angular. Z = 0;
velmsg. Linear. X = forwardVelocity;
envoyer(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'IsLatching', true);
De même pour le bouton poussoir Backward:
fonction pushbutton5_Callback(hObject, eventdata, handles)
velmsg global
robot mondial
arrière globalVelocity
global teleop_topic_name
velmsg. Angular. Z = 0;
velmsg. Linear. X = arrièreVelocity;
envoyer(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'IsLatching', true);
De même pour le bouton Gauche: function pushbutton3_Callback(hObject, eventdata, handles)
global velmsgglobal robot global left_spinVelocity
global teleop_topic_name
velmsg. Angular. Z = left_spinVelocity;
velmsg. Linear. X = 0;
envoyer(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'IsLatching', true);
De même pour le bouton poussoir Droit:
robot global velmsgglobal
global right_spinVelocity
global teleop_topic_name
velmsg. Angular. Z = right_spinVelocity;
velmsg. Linear. X = 0;
envoyer(robot, velmsg);
latchpub = rospublisher(teleop_topic_name, 'IsLatching', true);
Une fois toutes les fonctions de rappel ajoutées et les fichiers sauvegardés, nous pouvons tester notre contrôleur.
Étape 8: Configuration de la configuration réseau sur ROS PC (Linux)
Nous allons tester le contrôleur sur un PC ros (Linux), ce qui nécessitera de configurer la configuration réseau. Si vous exécutez également le contrôleur sur un PC Linux, vous devrez également y configurer la configuration réseau.
Configuration du réseau:
Ouvrez votre fenêtre de terminal et tapez gedit.bashrc
Une fois le fichier ouvert, ajoutez les éléments suivants:
#Configuration de la machine robotique
exporter ROS_MASTER_URI=https://localhost:11311
#Adresse IP du nœud maître ROS
exporter ROS_HOSTNAME=
exporter ROS_IP=
echo "ROS_HOSTNAME: " $ROS_HOSTNAME
echo "ROS_IP: "$ROS_IP
echo "ROS_MASTER_URI:"$ROS_MASTER_URI
Vous devez suivre cette étape à chaque fois en raison de l'attribution dynamique d'IP.
Étape 9: Exécutez le contrôleur
Nous allons tester notre manette sur un bot Turtle dans Gazebo.
Pour installer Gazebo, veuillez vous référer à
Pour installer Turtle bot, veuillez vous référer à
Ouvrez le dossier dans lequel vous avez enregistré vos fichiers.fig et.m sur MATLAB et appuyez sur Exécuter (comme indiqué sur l'image). Cela ouvrira le contrôleur sur le PC. Avant d'appuyer sur connexion, assurez-vous que votre simulateur de robot tortue fonctionne.
Pour tester votre simulation TurtleBot:
Ouvrez Terminal sur Ros pc et tapez: $ roslaunch Turtlebot_gazebo Turtlebot_world.launch. Cela ouvrira une simulation de Turtlebot sur ce PC. Le nom du sujet de TurtleBot est /cmd_vel_mux/input/teleop, que nous avons déjà fourni dans l'application. Tapez l'adresse IP du ros pc, le port et le nom du sujet dans les boutons modifiables et appuyez sur le bouton. Connect to Robot. Votre robot tortue devrait commencer à se déplacer lorsque vous appuyez sur Avant, Arrière, etc.
Pour afficher les vitesses linéaires et angulaires:
Ouvrez un nouveau terminal et tapez la commande: $ rostopic echo /cmd_vel_mux/input/teleop
Et voilà, votre propre contrôleur robotique ROS basé sur Matlab. Si vous avez aimé mon instructable, donnez-lui un vote sur le concours d'auteur pour la première fois et partagez-le avec autant de personnes que possible. Merci.
Conseillé:
[Souris portable] Contrôleur de souris portable basé sur Bluetooth pour Windows 10 et Linux : 5 étapes
[Souris portable] Contrôleur de souris portable basé sur Bluetooth pour Windows 10 et Linux : j'ai créé un contrôleur de souris basé sur Bluetooth qui peut être utilisé pour contrôler le pointeur de la souris et effectuer des opérations liées à la souris PC à la volée, sans toucher aucune surface. Le circuit électronique, qui est intégré à un gant, peut être utilisé pour suivre h
Contrôleur de jeu DIY basé sur Arduino - Contrôleur de jeu Arduino PS2 - Jouer à Tekken avec la manette de jeu DIY Arduino : 7 étapes
Contrôleur de jeu DIY basé sur Arduino | Contrôleur de jeu Arduino PS2 | Jouer à Tekken avec la manette de jeu DIY Arduino : Bonjour les gars, jouer à des jeux est toujours amusant, mais jouer avec votre propre contrôleur de jeu personnalisé DIY est plus amusant. Nous allons donc créer un contrôleur de jeu utilisant arduino pro micro dans cette instructables
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): 4 étapes (avec images)
Générateur de musique basé sur la météo (Générateur Midi basé sur ESP8266): Bonjour, aujourd'hui, je vais vous expliquer comment créer votre propre petit générateur de musique basé sur la météo. Il est basé sur un ESP8266, qui ressemble un peu à un Arduino, et il réagit à la température, à la pluie et l'intensité lumineuse. Ne vous attendez pas à ce qu'il fasse des chansons entières ou un programme d'accords
Bras robotique ROS MoveIt Partie 2 : Contrôleur de robot : 6 étapes
ROS MoveIt Robotic Arm Part 2: Robot Controller: https://github.com/AIWintermuteAI/ros-moveit-arm.git Dans la partie précédente de l'article, nous avons créé des fichiers URDF et XACRO pour notre bras robotique et lancé RVIZ pour contrôler notre bras robotique dans un environnement simulé. Cette fois, nous le ferons avec la rea
Bras robotique basé sur un microcontrôleur PIC : 6 étapes (avec photos)
Bras robotique basé sur un microcontrôleur PIC : De la chaîne de montage des industries de fabrication automobile aux robots de téléchirurgie dans l'espace, les bras robotiques sont présents partout. Les mécanismes de ces robots sont similaires à ceux d'un humain qui peut être programmé pour une fonction similaire et augmenter