Configurer Matlab et la Toolbox ROS pour Ned/Ned2
V.2.1
Difficulté : moyenne
Temps : ~1h
avec toutes les installations (peut varier en fonction de votre connexion internet).
Note
- Ce tutoriel est fonctionnel à partir de :
- La version v4.1.0 de la ned_ros_stackLa version v4.1.0 de Niryo Studio
Ce tutoriel est conçu pour Ned/Ned2. Si vous utilisez un Niryo One, cliquez-ici.
Objectifs
Préparer l’espace de travail Matlab afin de pouvoir l’utiliser pour les autres tutoriels liés à Matlab
Être capable d’utiliser Ned/Ned2 avec Matlab
Être capable de créer du contenu avec Ned/Ned2 et Matlab en utilisant ROS
Prérequis
Connaissances de base concernant Matlab
Connaissances de base en robotique et à propos de ROS
Être capable d’utiliser Ned/Ned2
Note
Ce dont vous aurez besoin
Un Ned ou un Ned2
Un ordinateur sous Ubuntu ou Windows
Matlab (2014 ou ultérieur) installé sur celui-ci
Une connexion Wi-Fi
Note
Pour réaliser ce tutoriel nous avons utilisé un ordinateur sous Windows10, avec Matlab2022a et un Ned2.
Installation des extensions
Il est nécessaire d’installer les extensions après les avoir téléchargées depuis le site de Matlab.
Matlab ROS Toolbox : Présentation
Astuce
Pour plus de détails, nous vous invitons à prendre connaissance du tutoriel officiel concernant ROS Toolbox.
Télécharger le package « ned_ros » depuis notre GitHub
Afin de contrôler Ned/Ned2 avec Matlab, il est nécessaire de générer des messages ROS sur le robot depuis Matlab. Pour ce faire, il faut tout d’abord installer le package « ned_ros » disponible sur notre GitHub.
Vous pouvez cloner le package « ned_ros » depuis notre GitHub
git clone https://github.com/NiryoRobotics/ned_ros.git
Ou le télécharger en ZIP
Configurer pyenv dans Matlab
Dans la fenêtre de commande Matlab, tapez :
pyenv
Si vous obtenez cette réponse :
Vous devez installer python3.9.
Note
N’oubliez pas de cocher la case « Add Python 3.9 to PATH »
Maintenant, dans la fenêtre de commande Matlab, tapez :
pyenv('Version'),('YOUR_PATH/python.exe')
Installation de Cmake version 3.19
Vous pouvez maintenant tester cette commande dans un terminal :
cmake --version
Dans Matlab, essayez de compiler ces lignes :
folderpath = "/YOUR_PATH/ned_ros"
rosgenmsg(folderpath)
Si CMake n’est pas trouvé, tapez dans la fenêtre de commande Matlab :
>> oldPath = getenv('PATH');
>> newPath = strcat(oldPath,pathsep,'YOUR_PATH\bin'); %YOUR_PATH of the /bin folder
>> setenv('PATH',newPath);
>> system('cmake --version')
Maintenant, reessayez la compilation des deux lignes.
Erreur possible : « Pas de compilateur C++ »
Dans ce cas, vous devez installer Visual Studio 2019 (seul compilateur C++ supporté par ROS).
Puis, dans la fenêtre de commande Matlab tapez :
mex -setup
Et cliquez sur :
mex -setup C++
Configuration l’espace de travail pour la génération de messages et de services ROS sur le robot
Maintenant que vous avez le package ned_ros, il faut relier les messages et services du Ned/Ned2 à Matlab.
folderpath = "/YOUR_PATH/ned_ros"
rosgenmsg(folderpath)
Vous devriez obtenir le message suivant :
Identifying message files in folder '/YOUR_PATH/ned_ros'..Done.
Validating message files in folder '/YOUR_PATH/ned_ros'..Done.
[12/12] Generating MATLAB interfaces for custom message packages... Done.
Running catkin build in folder '/YOUR_PATH/ned_ros/matlab_msg_gen_ros1/win64'.
Build in progress. This may take several minutes...
Build succeeded.build log
To use the custom messages, follow these steps:
1. Add the custom message folder to the MATLAB path by executing:
addpath('/YOUR_PATH/ned_ros/matlab_msg_gen_ros1/win64/install/m')
savepath
1. Refresh all messages class definitions, which requires clearing the workspace, by executing:
clear classes
rehash toolboxcache
1. Verify that you can use the custom messages.
Enter "rosmsg list" and ensure that the output contains the generated
custom message types.
Etape 1 : utilisez la commande suivante dans la fenêtre de commandes
addpath('/YOUR_PATH/ned_ros/matlab_msg_gen_ros1/win64/install/m')
savepath
Note
Il est normal d’obtenir à ce moment un message d’avertissement. Vous pouvez passer à l’étape 2.
Etape 2 : utilisez une seconde commande
clear classes
rehash toolboxcache
Note
Il est normal d’obtenir à ce moment un message d’avertissement. Vous pouvez passer à l’étape 3.
Etape 3 : dernière commande
rosmsg list
Vous devriez maintenant voir l’ensemble des messages disponibles depuis Matlab, particulièrement ceux de niryo_robot.
niryo_robot_commander/ArmMoveCommand
niryo_robot_commander/GetFKRequest
niryo_robot_commander/GetFKResponse
niryo_robot_commander/GetIKRequest
niryo_robot_commander/GetIKResponse
niryo_robot_commander/JogShiftRequest
niryo_robot_commander/JogShiftResponse
niryo_robot_commander/PausePlanExecution
niryo_robot_commander/RobotCommand
niryo_robot_commander/ShiftPose
(...)
niryo_robot_vision/DebugColorDetectionRequest
niryo_robot_vision/DebugColorDetectionResponse
niryo_robot_vision/DebugMarkersRequest
niryo_robot_vision/DebugMarkersResponse
niryo_robot_vision/ObjDetectionRequest
niryo_robot_vision/ObjDetectionResponse
niryo_robot_vision/TakePictureRequest
niryo_robot_vision/TakePictureResponse
Vous pouvez à présent commenter ces deux lignes, ce qui sera à faire à chaque fois que vous connecterez un nouveau robot.
Note
Vous pouvez également voir l’ensemble des services disponibles depuis Matlab en utilisant la commande « rosservice list ».
Matlab a maintenant accès aux messages et services ROS du Ned ! Vous pouvez à présent allumer le robot, le connecter à internet et configurer la connexion avec Matlab.
Connexion du Ned/Ned2 à internet et récupération de son adresse IP
Maintenant que les services et messages ROS du Ned sont disponibles sous Matlab, nous allons configurer la connexion avec Matlab en utilisant la boîte à outils « ROS Toolbox ».
La manière la plus simple de trouver l’adresse IP du robot est d’utiliser Niryo Studio. Retrouvez plus d’informations dans la documentation de Niryo Studio.
Note
Vous devez connecter Ned/Ned2 en mode Wi-Fi (not Hotspot).
Note
Configuration de la communication entre Ned/Ned2 et Matlab
Maintenant que Ned/Ned2 est connecté à internet, nous pouvons passer à la configuration de la communication avec Matlab.
Note
L’hôte est votre ordinateur avec Matlab avec l’adresse IP IP_HOST_COMPUTER,
Le robot est Ned/Ned2, avec l’adresse IP IP_OF_NED.
Pour définir cet environnement de travail, nous allons utiliser la fonction « setenv » de Matlab ROS Toolbox. Ajoutez ces deux lignes à la fin de votre script Matlab.
ipaddress = "http://IP_0F_NED:11311";
setenv('ROS_MASTER_URI','ipaddress')
setenv('ROS_IP','IP_HOST_COMPUTER')
Communiquer avec Ned/Ned2 depuis Matlab
Nous pouvons à présent utiliser Matlab et ROS Toolbox pour communiquer avec le robot.
Ajoutez la ligne suivante à votre script :
rosinit(ipaddress)
Avant de déconnecter ou d’éteindre le robot, n’oubliez pas de taper « rosshutdown » dans la fenêtre de commande Matlab, pour couper la connexion avec ROS.
Note
Vous êtes maintenant prêt à utiliser Matlab et ROS Toolbox pour contrôler Ned/Ned2 !