Interface ROS 1

Vous consultez actuellement la documentation pour la dernière version (2.5.4). Pour accéder à une autre version, cliquez sur le bouton "Changer de version" situé dans le coin supérieur droit de la page.

■ Si vous n’êtes pas sûr de la version du produit que vous utilisez, veuillez contacter le support technique Mech-Mind pour obtenir de l’aide.

Ce sujet présente l’installation et l’utilisation de l’interface ROS 1 pour Mech-Eye SDK.

Les dernières interfaces ROS 1 ne sont compatibles qu’avec Mech-Eye SDK 2.3.4 ou supérieur. Si vous souhaitez continuer à utiliser le programme ROS existant après l’installation de la dernière version de Mech-Eye SDK, veuillez modifier le programme ROS conformément au Guide de migration.

Prérequis

Pour utiliser l’interface ROS 1 de Mech-Eye SDK, les prérequis suivants doivent être satisfaits :

L’interface ROS 1 de Mech-Eye SDK a été testée avec les versions ROS 1 et Ubuntu ci-dessus. Les exemples de commandes de ce sujet se basent sur ces versions.

Installer les bibliothèques logicielles dépendantes

L’interface ROS 1 de Mech-Eye SDK dépend des bibliothèques logicielles suivantes :

  • OpenCV : version 3.0 ou supérieure

  • PCL : version 1.8 ou supérieure

Après avoir installé ROS Noetic Ninjemys, exécutez les commandes suivantes pour installer les bibliothèques logicielles dépendantes :

sudo apt install libopencv-dev
sudo apt install ros-noetic-cv-bridge
sudo apt install libpcl-dev
sudo apt install ros-noetic-pcl-conversions
sudo apt install python3-colcon-common-extensions

Cloner et construire l’interface

Suivez ces étapes pour cloner et construire l’interface ROS 1 pour Mech-Eye SDK :

  1. Exécutez les commandes suivantes pour cloner l’interface ROS 1 :

    mkdir -p ~/catkin_ws/src && cd ~/catkin_ws/src
    git clone https://github.com/MechMindRobotics/mecheye_ros_interface.git
  2. Exécutez la commande suivante pour configurer l’environnement :

    source /opt/ros/noetic/setup.bash
  3. Exécutez les commandes suivantes pour construire l’interface ROS 1 :

    cd ~/catkin_ws
    catkin_make

Utiliser l’interface

Suivez ces étapes pour utiliser l’interface ROS 1 pour Mech-Eye SDK :

  1. (Facultatif) Modifiez la configuration dans le fichier de lancement start_camera (.launch) à l’emplacement ~/catkin_ws/src/mecheye_ros_interface/launch/ selon vos besoins :

    • Enregistrer automatiquement les fichiers obtenus en local : Définissez la valeur de save_file sur true pour enregistrer automatiquement les fichiers obtenus dans le répertoire /tmp/.

    • Se connecter à un Caméra spécifique via l’adresse IP spécifiée :

      1. Définissez la valeur de camera_ip sur l’adresse IP de la caméra.

      2. Modifiez le fichier de programmation C++ MechMindCamera (.cpp) dans /catkin_ws/src/mecheye_ros_interface/src/ : Commentez la fonction if (!findAndConnect(camera)) et décommentez les lignes situées sous cette fonction.

        Après avoir modifié les fichiers de programmation C++ ou le fichier d’en-tête MechMindCamera (.h) dans le répertoire de travail, exécutez à nouveau la commande catkin_make.
  2. Ouvrez un terminal et exécutez la commande suivante pour démarrer l’interface :

    source ~/catkin_ws/devel/setup.bash
    roslaunch mecheye_ros_interface start_camera.launch
  3. Saisissez l’index du Caméra auquel vous souhaitez vous connecter selon l’instruction, puis appuyez sur Entrée pour vous connecter au Caméra.

  4. Ouvrez un nouveau terminal et exécutez la commande suivante pour appeler un service. Remplacez service_name par le nom du service, parameter_name par le nom du paramètre de la caméra et parameter_value par la valeur de paramètre à définir.

    La section Services fournit les commandes d’exemple de chaque service.
    source ~/catkin_ws/devel/setup.bash
    rosservice call [/service_name] "{parameter_name: parameter_value}"

Sujets

Les sujets suivants sont fournis par l’interface ROS 1 de Mech-Eye SDK :

  • /mechmind/camera_info : paramètres intrinsèques de la caméra

  • /mechmind/stereo_color_image_left : l’image 2D stéréo gauche encodée en bgr8

  • /mechmind/stereo_color_image_left : l’image 2D stéréo gauche encodée en bgr8

  • /mechmind/stereo_color_image_right : l’image 2D stéréo droite encodée en bgr8

  • /mechmind/depth_map : la carte de profondeur encodée en image monocanal, le canal contenant un nombre flottant 32 bits

  • /mechmind/point_cloud : les données de nuage de points non texturé

  • /mechmind/textured_point_cloud : les données de nuage de points texturé

Services

Voici les services fournis par l’interface ROS 1 de Mech-Eye SDK ainsi que l’exemple de commande pour chacun.

Acquérir des données

  • capture_color_image : Acquérir l’image 2D.

    Exemple :

    rosservice call /capture_color_image
  • capture_depth_map : Acquérir la carte de profondeur.

    Exemple :

    rosservice call /capture_depth_map
  • capture_point_cloud : Acquérir le nuage de points non texturé.

    Exemple :

    rosservice call /capture_point_cloud
  • capture_textured_point_cloud : Acquérir le nuage de points texturé.

    Exemple :

    rosservice call /capture_textured_point_cloud
  • capture_stereo_color_images : Acquérir les images 2D des deux caméras 2D.

    Ce service n’est disponible que pour les modèles suivants : DEEP-GL, LSR S-GL, LSR L-GL et LSR XL-GL.

    Exemple :

    rosservice call /capture_stereo_color_images

Gérer les groupes de paramètres

  • get_all_user_sets : Obtenir les noms de tous les groupes de paramètres disponibles.

    Exemple :

    rosservice call /get_all_user_sets
  • get_current_user_set : Obtenir le nom du groupe de paramètres actuellement sélectionné.

    Exemple :

    rosservice call /get_current_user_set
  • set_current_user_set : Sélectionner le groupe de paramètres à utiliser.

    Ce service comporte 1 paramètre :

    • value (string) : le nom du groupe de paramètres à sélectionner.

    Exemple : Sélectionner le groupe de paramètres nommé 123.

    rosservice call /set_current_user_set "{value: '123'}"
    Les noms de groupes de paramètres constitués uniquement de chiffres doivent être entourés de guillemets simples.
  • add_user_set : Ajouter un groupe de paramètres. Le groupe de paramètres nouvellement ajouté est automatiquement sélectionné comme groupe de paramètres courant.

    Ce service comporte 1 paramètre :

    • value (string) : le nom du groupe de paramètres à ajouter.

    Exemple : Ajouter un groupe de paramètres nommé 123.

    rosservice call /add_user_set "{value: '123'}"
    Les noms de groupes de paramètres constitués uniquement de chiffres doivent être entourés de guillemets simples.
  • delete_user_set : Supprimer le groupe de paramètres spécifié.

    Ce service comporte 1 paramètre :

    value (string) : le nom du groupe de paramètres à supprimer.

    Exemple : Supprimer le groupe de paramètres nommé 123.

    rosservice call /delete_user_set "{value: '123'}"
    Les noms de groupes de paramètres constitués uniquement de chiffres doivent être entourés de guillemets simples.

Obtenir les informations de la caméra

device_info : Obtenir les informations de la caméra actuellement connectée.

Les informations obtenues comprennent :

  • Modèle

  • Numéro de série

  • Version matérielle

  • Version du firmware

  • Adresse IP

  • Masque de sous-réseau

  • Méthode d’attribution de l’adresse IP

  • Numéro de port

Exemple :

rosservice call /device_info

Ajuster les paramètres de la caméra

À partir de Mech-Eye SDK 2.3.4, des méthodes sont fournies en fonction des types de données des paramètres de la caméra, et l’interface ROS 1 propose les services correspondants. Pour obtenir ou ajuster la valeur d’un paramètre de caméra, appelez le service correspondant au type de données du paramètre de caméra et saisissez le nom du paramètre de caméra comme paramètre du service. Les types de données et les noms des paramètres de la caméra se trouvent dans les fichiers d’en-tête du chemin d’installation de Mech-Eye SDK : /opt/mech-mind/mech-eye-sdk/include/area_scan_3d_camera/parameters/.

Les types de données suivants des paramètres de la caméra sont distingués :

  • _Int

  • _Float

  • _Bool

  • _Enum

  • _Roi

  • _Range

  • _FloatArray

  • get_int_parameter : Obtenir la valeur du paramètre de caméra de type _Int spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre Scan2DExpectedGrayValue.

    rosservice call /get_int_parameter "{name: Scan2DExpectedGrayValue}"
  • set_int_parameter : Définir la valeur du paramètre de caméra de type _Int spécifié.

    Ce service comporte 2 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • value (int) : la nouvelle valeur du paramètre de la caméra.

    Exemple : Définir la valeur du paramètre Scan2DExpectedGrayValue sur 101.

    rosservice call /set_int_parameter "{name: Scan2DExpectedGrayValue, value: 101}"
  • get_float_parameter : Obtenir la valeur du paramètre de caméra de type _Float spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre Scan2DExposureTime.

    rosservice call /get_float_parameter "{name: Scan2DExposureTime}"
  • set_float_parameter : Définir la valeur du paramètre de caméra de type _Float spécifié.

    Ce service comporte 2 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • value (float) : la nouvelle valeur du paramètre de la caméra.

    Exemple : Définir la valeur du paramètre Scan2DExposureTime sur 40.1.

    rosservice call /set_float_parameter "{name: Scan2DExposureTime, value: 40.1}"
  • get_bool_parameter : Obtenir la valeur du paramètre de caméra de type _Bool spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre Scan2DToneMappingEnable.

    rosservice call /get_bool_parameter "{name: Scan2DToneMappingEnable}"
  • set_bool_parameter : Définir la valeur du paramètre de caméra de type _Bool spécifié.

    Ce service comporte 2 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • value (bool) : la nouvelle valeur du paramètre de la caméra.

    Exemple : Définir la valeur du paramètre Scan2DToneMappingEnable sur True.

    rosservice call /set_bool_parameter "{name: Scan2DToneMappingEnable, value: True}"
  • get_enum_parameter : Obtenir la valeur du paramètre de caméra de type _Enum spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre Scan2DExposureMode.

    rosservice call /get_enum_parameter "{name: Scan2DExposureMode}"
  • set_enum_parameter : Définir la valeur du paramètre de caméra de type _Enum spécifié.

    Ce service comporte 2 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • value (string) : la nouvelle valeur du paramètre de la caméra.

    Exemple : Définir la valeur du paramètre Scan2DExposureMode sur Timed.

    rosservice call /set_enum_parameter "{name: Scan2DExposureMode, value: Timed}"
  • get_roi_parameter : Obtenir la valeur du paramètre de caméra de type _Roi spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre Scan2DROI.

    rosservice call /get_roi_parameter "{name: Scan2DROI}"
  • set_roi_parameter : Définir la valeur du paramètre de caméra de type _Roi spécifié.

    Ce service comporte 5 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • x (uint32) : la nouvelle coordonnée x du coin supérieur gauche de la ROI.

    • y (uint32) : la nouvelle coordonnée y du coin supérieur gauche de la ROI.

    • width (uint32) : la nouvelle largeur de la ROI.

    • height (uint32) : la nouvelle hauteur de la ROI.

    Exemple : Définir la valeur du paramètre Scan2DROI sur 20, 20, 600, 800 (il s’agit d’une ROI de 600 px de large, 800 px de haut, dont le coin supérieur gauche est au pixel (20,20)).

    rosservice call /set_roi_parameter "{name: Scan2DROI, x: 20, y: 20, width: 600, height: 800}"
  • get_range_parameter : Obtenir la valeur du paramètre de caméra de type _Range spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre DepthRange.

    rosservice call /get_range_parameter "{name: DepthRange}"
  • set_range_parameter : Définir la valeur du paramètre de caméra de type _Range spécifié.

    Ce service comporte 3 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • lower (int32) : la nouvelle valeur minimale de l’intervalle de valeurs du paramètre de la caméra.

    • upper (int32) : la nouvelle valeur maximale de l’intervalle de valeurs du paramètre de la caméra.

    Exemple : Définir la valeur du paramètre DepthRange sur 200–1000.

    rosservice call /set_range_parameter "{name: DepthRange, lower: 200, upper: 1000}"
  • get_float_array_parameter : Obtenir la valeur du paramètre de caméra de type _FloatArray spécifié.

    Ce service comporte 1 paramètre :

    • name (string) : le nom du paramètre de la caméra.

    Exemple : Obtenir la valeur du paramètre Scan2DHDRExposureSequence.

    rosservice call /get_float_array_parameter "{name: Scan2DHDRExposureSequence}"
  • set_float_array_parameter : Définir la valeur du paramètre de caméra de type _FloatArray spécifié.

    Ce service comporte 2 paramètres :

    • name (string) : le nom du paramètre de la caméra.

    • array (float64[]) : la nouvelle valeur du paramètre de la caméra.

    Exemple : Définir la valeur du paramètre Scan2DHDRExposureSequence sur [30.0, 35.5, 40.0].

    rosservice call /set_float_array_parameter "{name: Scan2DHDRExposureSequence, array: [30.0,35.5,40.0]}"

Cette page est-elle utile ?

Veuillez nous indiquer comment améliorer :

Nous accordons de l’importance à votre vie privée

Nous utilisons des cookies pour vous offrir la meilleure expérience possible sur notre site web. En continuant à utiliser le site, vous reconnaissez accepter l’utilisation des cookies. Si vous refusez, un cookie unique sera utilisé pour garantir que vous ne soyez pas suivi ou reconnu lors de votre visite sur ce site.