C++ (Ubuntu)
This topic introduces how to configure the Mech-Eye API C++ samples with CMake and then build the samples with the make command on Ubuntu.
Liste des exemples
Les exemples sont répartis dans les catégories suivantes : Basic, Advanced, Util, Calibration, Pcl et Halcon.
-
Basic exemples: Se connecter et acquérir des données.
-
Advanced exemples: Acquérir des données de manière plus complexe et définir des paramètres spécifiques au modèle.
-
Util exemples: Obtenir les informations de la caméra et définir des paramètres communs.
-
Calibration exemples: Effectuer l’étalonnage main-œil avec Mech-Eye API.
-
Pcl exemples: Utiliser la bibliothèque PCL pour convertir la structure de données et visualiser les données.
-
Halcon: obtenir des nuages de points lisibles par HALCON via Mech-Eye API.
The samples in each category and their descriptions are provided below.
Basic
-
ConnectToCamera: Se connecter à une caméra.
-
ConnectAndCaptureImages: Se connecter à une caméra et obtenir l’image 2D, la carte de profondeur et les données de nuage de points.
-
Capture2DImage: Obtenir et enregistrer l’image 2D.
-
CaptureDepthMap: Obtenir et enregistrer la carte de profondeur.
-
CapturePointCloud: Obtenir et enregistrer les nuages de points non texturés et texturés.
-
CapturePointCloudHDR: Définir plusieurs temps d’exposition, puis obtenir et enregistrer le nuage de points.
-
CapturePointCloudWithNormals: Calculer les normales et enregistrer le nuage de points avec des normales.
-
SaveVirtualDevice: Enregistrer les données acquises par la caméra en tant que fichier de périphérique virtuel.
Advanced
-
ConvertDepthMapToPointCloud: Générer un nuage de points à partir de la carte de profondeur et enregistrer le nuage de points.
-
MultipleCamerasCaptureSequentially: Obtenir et enregistrer des images 2D, des cartes de profondeur et des nuages de points de manière séquentielle depuis plusieurs caméras.
-
MultipleCamerasCaptureSimultaneously: Obtenir et enregistrer simultanément des images 2D, des cartes de profondeur et des nuages de points depuis plusieurs caméras.
-
CapturePeriodically: Obtenir et enregistrer périodiquement, pendant la durée spécifiée, des images 2D, des cartes de profondeur et des nuages de points depuis une caméra.
-
Mapping2DImageToDepthMap: Générer des nuages de points non texturés et texturés à partir d’une image 2D masquée et d’une carte de profondeur.
-
RenderDepthMap: Obtenir et enregistrer la carte de profondeur rendue avec la palette de couleurs jet.
-
TransformPointCloud: Obtenir et enregistrer les nuages de points dans le repère personnalisé.
-
SetParametersOfLaserCameras: Définir les paramètres spécifiques aux caméras laser (les séries DEEP et LSR).
-
SetParametersOfUHPCameras: Définir les paramètres spécifiques à la série UHP.
-
RegisterCameraEvent: Définir et enregistrer la fonction de rappel pour surveiller les événements de la caméra.
-
WarmUp: Préchauffer l’appareil.
-
CaptureStereo2DImages: Obtenir les images 2D des deux caméras 2D de Laser L Enhanced, LSR L-GL, LSR S-GL, NANO ULTRA-GL, et DEEP-GL.
Util
-
GetCameraIntrinsics: Obtenir et afficher les paramètres intrinsèques de la caméra.
-
PrintCameraInfo: Obtenir et afficher les informations de la caméra, telles que le modèle, le numéro de série, la version du firmware et les températures.
-
SetScanningParameters: Définir les paramètres dans les catégories Paramètres 3D, Paramètres 2D et ROI.
-
SetDepthRange: Définir le paramètre Plage de profondeur.
-
SetPointCloudProcessingParameters: Définir les paramètres de Traitement du nuage de points.
-
ManageUserSets: Gérer des groupes de paramètres, par exemple obtenir les noms de tous les groupes de paramètres, ajouter un groupe de paramètres, changer de groupe de paramètres et enregistrer des réglages de paramètres dans le groupe de paramètres.
-
SaveAndLoadUserSet: Importer et remplacer tous les groupes de paramètres depuis un fichier JSON, et enregistrer tous les groupes de paramètres dans un fichier JSON.
Calibration
-
HandEyeCalibration: Effectuer l’étalonnage main-œil.
Pcl
-
ConvertPointCloudToPcl: Obtenir les données de nuage de points depuis la caméra et les convertir vers la structure de données PCL.
-
ConvertPointCloudWithNormalsToPcl: Obtenir les données de nuage de points avec normales depuis la caméra et les convertir vers la structure de données PCL.
Halcon
-
ConvertPointCloudToObjectModel3D: Obtenir les données de nuage de points depuis une caméra, puis transformer et enregistrer les nuages de points à l’aide de l’interface C++ HALCON.
Cet exemple n’est pas disponible sur les plateformes basées sur l’architecture ARM64.
Prérequis
Pour utiliser les exemples C++ de Mech-Eye API, les prérequis suivants doivent être satisfaits :
-
La version du système d’exploitation Ubuntu est 18 ou supérieure.
-
Obtenez les exemples.
-
Installez les logiciels requis.
-
(Optionnel) Installez les bibliothèques logicielles dont dépendent les exemples.
| Si vous utilisez une machine virtuelle Ubuntu, assurez-vous que l’espace disque disponible est supérieur à 20 Go. Sinon, l’installation des logiciels peut échouer. |
Obtenir les exemples
Les exemples C++ sont inclus dans le chemin d’installation de Mech-Eye SDK ou peuvent être obtenus en clonant depuis GitHub. Les exemples dans le chemin d’installation correspondent à la version au moment de la publication de Mech-Eye SDK. La version sur GitHub peut contenir les derniers changements.
-
Les exemples du répertoire d’installation se trouvent dans /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera.
-
Les exemples clonés depuis GitHub se trouvent dans xxx/mecheye_cpp_samples/area_scan_3d_camera.
Installer les logiciels requis
Pour utiliser les exemples C++ de Mech-Eye API, la liste des sources logicielles doit être mise à jour, et Mech-Eye SDK ainsi que ses dépendances doivent être installés.
-
Mettre à jour la liste des sources logicielles :
sudo apt-get update -
Installer les dépendances :
sudo apt-get install -y build-essential pkg-config cmake -
Installer Mech-Eye SDK : veuillez vous référer à Guide d’installation de Mech-Eye SDK (Ubuntu).
(Optionnel) Installer les bibliothèques logicielles dépendantes
Certains exemples incluent des fonctionnalités qui dépendent des bibliothèques logicielles tierces suivantes. Si vous devez utiliser les exemples listés dans le tableau ci-dessous, vous devez installer les bibliothèques logicielles dont ils dépendent.
-
OpenCV : version la plus récente recommandée
-
PCL : version la plus récente recommandée
-
HALCON : version 20.11 ou supérieure
Les versions de HALCON antérieures à 20.11 ne sont pas entièrement testées.
| Si l’une des bibliothèques logicielles optionnelles n’est pas installée, vous devez alors effectuer les étapes de Désactiver les exemples non nécessaires (optionnel) avant de configurer les exemples. |
Veuillez vous référer au tableau suivant pour les exemples qui dépendent de bibliothèques logicielles tierces.
| Exemple | OpenCV | PCL | Halcon |
|---|---|---|---|
Capture2DImage |
√ |
||
CaptureDepthMap |
√ |
||
MultipleCamerasCaptureSequentially |
√ |
||
MultipleCamerasCaptureSimultaneously |
√ |
||
CapturePeriodically |
√ |
||
CaptureStereo2DImages |
√ |
||
HandEyeCalibration |
√ |
||
RenderDepthMap |
√ |
||
ConvertPointCloudToObjectModel3D |
√ |
||
ConvertPointCloudToPcl |
√ |
||
ConvertPointCloudWithNormalsToPcl |
√ |
Installer OpenCV
Exécutez la commande suivante pour installer la dernière version d’OpenCV :
sudo apt update && sudo apt install -y unzip
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
unzip opencv.zip
mkdir build && cd build
cmake ../opencv-4.x
cmake --build .
sudo make install
Installer PCL
Exécutez la commande suivante pour installer PCL :
sudo apt-get install libpcl-dev
| Selon les versions d’Ubuntu, cette commande installe différentes versions de PCL. Sous Ubuntu 18.04, PCL 1.8.1 est installée ; sous Ubuntu 20.04, PCL 1.10.0 est installée. |
Installer HALCON
Suivez les étapes suivantes pour installer HALCON :
-
Après avoir téléchargé l’installateur HALCON, exécutez la commande suivante pour installer HALCON (en prenant la version 20.11 comme exemple) :
tar zxvfHALCON-20.11.3.0-linux.tar.gz sudo sh install-linux.sh #Note down the installation directory of HALCON. -
Ajoutez les variables d’environnement liées à HALCON : ouvrez /etc/profile dans un éditeur (tel que vi) et collez les lignes suivantes à la fin du fichier. Remplacez
/opt/halconpar le répertoire d’installation réel de HALCON.HALCONARCH=x64-linux; exportHALCONARCH HALCONROOT="/opt/halcon"; exportHALCONROOT HALCONEXAMPLES=${HALCONROOT}/examples; exportHALCONEXAMPLES HALCONIMAGES=${HALCONROOT}/examples/images; exportHALCONIMAGES PATH=${HALCONROOT}/bin/${HALCONARCH}:${PATH}; export PATH if [ ${LD_LIBRARY_PATH} ]; then LD_LIBRARY_PATH=${HALCONROOT}/lib/${HALCONARCH}:${LD_LIBRARY_PATH}; export LD_LIBRARY_PATH else LD_LIBRARY_PATH=${HALCONROOT}/lib/${HALCONARCH}; export LD_LIBRARY_PATH fi-
Les changements seront appliqués lors de votre prochaine connexion. Vous pouvez aussi exécuter la commande
source /etc/profile/avant de configurer et de compiler les exemples. -
Pour plus d’informations, veuillez consulter le guide d’installation de HALCON.
-
Compiler et exécuter les exemples
Vous pouvez compiler tous les exemples en une seule fois ou compiler un exemple individuellement.
| Les chemins fournis dans cette section correspondent aux exemples inclus dans le chemin d’installation. Si vous utilisez les exemples clonés depuis GitHub, modifiez les chemins en conséquence. |
Désactiver les exemples non nécessaires (optionnel)
| Si vous n’avez pas installé certaines des bibliothèques logicielles optionnelles et souhaitez malgré tout compiler tous les exemples en une fois, vous devez effectuer les étapes de cette section. Sinon, une erreur se produira lors de la configuration des exemples avec CMake. |
Si vous n’avez pas besoin des exemples qui dépendent d’OpenCV, de PCL ou de HALCON, veuillez modifier le fichier CMakeLists pour désactiver ces exemples avant de compiler tous les exemples en une fois.
-
Ouvrez /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/CMakeLists.txt dans un éditeur (tel que vi).
-
Modifiez les lignes contenant
options: trouvez les lignes commençant paroptions, changezONà la fin de la ligne enOFFpour désactiver les exemples qui dépendent de la bibliothèque logicielle mentionnée dans cette ligne.Exemple : Si vous n’avez pas besoin de compiler l’exemple qui dépend de HALCON, remplacez
ONà la fin de la ligneoption(USE_HALCON…)parOFF. -
Enregistrez les modifications dans l’éditeur et fermez le fichier CMakeLists.
Compiler l’exemple
Suivez les étapes suivantes pour exécuter l’exemple :
-
Entrez dans le répertoire de l’exemple(s) :
-
Si vous souhaitez compiler tous les exemples en une seule fois, utilisez la commande suivante.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/ -
Si vous souhaitez compiler un seul exemple individuellement, utilisez la commande suivante. Remplacez Category par le nom de la catégorie de l’exemple et SampleName par le nom de l’exemple.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/Category/SampleName/
-
-
Créez un dossier build dans le répertoire pour enregistrer les exemples compilés, etc.
sudo mkdir build && cd build -
Configurer et compiler l’exemple(s) :
sudo cmake .. sudo make
| Si les fichiers du code source dans le dossier de l’exemple sont modifiés, veuillez supprimer le dossier build et répéter les étapes 2 et 3 pour recompiler les exemples. |
Exécuter les exemples
Après avoir compilé les exemples, suivez les étapes suivantes pour exécuter l’exemple :
-
Entrez dans le dossier build du répertoire de l’exemple(s) (Ignorez cette étape si vous exécutez l’exemple(s) directement après la compilation de l’exemple(s) :
-
Si tous les exemples ont été compilés en une fois, utilisez la commande suivante.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/build/ -
Si un seul exemple a été compilé individuellement, utilisez la commande suivante. Remplacez Category par le nom de la catégorie de l’exemple et SampleName par le nom de l’exemple.
cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/Category/SampleName/build/
-
-
Exécutez l’exemple : remplacez SampleName par le nom de l’exemple. Pendant l’exécution de l’exemple, saisissez l’index du Caméra auquel vous souhaitez vous connecter selon les instructions, puis appuyez sur Enter pour vous connecter au Caméra.
sudo ./SampleName -
Si des fichiers d’image et/ou de nuage de points sont enregistrés par l’exemple, vous pouvez les trouver dans le dossier build.