C++(Ubuntu)

本章介绍如何在Ubuntu系统中使用CMake配置Mech-Eye API的C++例程,并使用make指令构建例程。

例程简介

例程分为以下类别:BasicAdvancedUtilCalibrationPclHalcon

  • Basic例程:连接和采集数据。

  • Advanced例程:通过复杂、高阶的方式采集数据,设置部分型号特有参数。

  • Util例程:获取相机信息和设置通用参数。

  • Calibration例程:通过Mech-Eye API进行手眼标定。

  • Pcl例程:利用PCL库进行数据格式转换、可视化等。

  • Halcon例程:通过Mech-Eye API获取HALCON可读取的点云。

各分类中包含的例程及其简介如下。

Basic
  • ConnectToCamera:连接相机。

  • ConnectAndCaptureImages:连接相机并获取2D图、深度图及点云数据。

  • Capture2DImage:从相机获取并保存2D图。

  • CaptureDepthMap:从相机获取并保存深度图。

  • CapturePointCloud:从相机获取并保存无纹理点云和纹理点云。

  • CapturePointCloudHDR:设置多个曝光时间,然后从相机获取并保存点云。

  • CapturePointCloudWithNormals:计算法向量,并保存含法向量的点云。

Advanced
  • ConvertDepthMapToPointCloud:从深度图生成并保存点云。

  • MultipleCamerasCaptureSequentially:使用多台相机按序获取并保存2D图、深度图及点云。

  • MultipleCamerasCaptureSimultaneously:使用多台相机同时获取并保存2D图、深度图及点云。

  • CapturePeriodically:在设定时间内,定时获取并保存2D图、深度图和点云。

  • Mapping2DImageToDepthMap:从覆盖掩膜的2D图和深度图生成并保存无纹理点云和纹理点云。

  • SetParametersOfLaserCameras:设置激光相机特有的参数。

  • SetParametersOfUHPCameras:设置UHP系列相机特有的参数。

  • RegisterCameraEvent:定义并注册检测相机连接状态的回调函数。

  • CaptureStereo2DImages:获取Deep(V3)、Laser L Enhanced(V3)、PRO XS(V4)、LSR L(V4)、LSR S(V4)和DEEP(V4)的两个2D相机的2D图像。

Util
  • GetCameraIntrinsics:获取并打印相机内参。

  • PrintCameraInfo:获取并打印相机型号、序列号、固件版本、温度等信息。

  • SetScanningParameters:设置3D参数2D参数感兴趣区域分组下的参数。

  • SetDepthRange:设置深度范围参数。

  • SetPointCloudProcessingParameters:设置点云后处理参数。

  • ManageUserSets:管理参数组,如获取所有参数组的名称、新增参数组、切换参数组和保存参数设置至参数组。

  • SaveAndLoadUserSet:从JSON文件导入并替换所有参数组,将所有参数组保存为JSON文件。

Calibration
  • HandEyeCalibration: 进行手眼标定。

Pcl
  • ConvertPointCloudToPcl:从相机获取点云数据并转换为PCL数据结构。

  • ConvertPointCloudWithNormalsToPcl:从相机获取含法向量的点云数据并转换为PCL数据结构。

Halcon
  • ConvertPointCloudToObjectModel3D:从相机获取点云数据,通过HALCON C++接口转换并保存点云。

    该例程无法在ARM64架构的平台上使用。

使用前提

使用Mech-Eye API的C++例程,需先满足以下使用前提:

  • 正确连接相机和电脑

  • Ubuntu系统版本为18或以上。

  • 获取例程。

  • 安装必需软件。

  • (可选)安装例程依赖的软件库。

若使用Ubuntu系统的虚拟机,请保证磁盘可用空间大于20G,否则软件安装可能失败。

获取例程

C++例程包含在Mech-Eye SDK的安装路径中,也可从GitHub克隆获取。安装路径中的例程为Mech-Eye SDK发布时的版本,GitHub上的例程可能包含最新修改。

  • 安装路径中的例程位于/opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera路径下;

  • 通过GitHub克隆获取的例程位于xxx/mecheye_cpp_samples/area_scan_3d_camera路径下。

安装必需软件

使用Mech-Eye API的C++例程,必须更新软件源列表,并安装依赖库及Mech-Eye SDK。

  1. 更新软件源列表:

    sudo apt-get update
  2. 安装依赖库:

    sudo apt-get install -y build-essential pkg-config cmake
  3. 安装Mech-Eye SDK:详见Mech-Eye SDK安装指南(Ubuntu)

(可选)安装依赖的软件库

部分例程中的功能依赖以下第三方软件库。如需使用下表中列出的例程,则必须安装其依赖的软件库。

  • OpenCV:推荐最新版本

  • PCL:推荐最新版本

  • HALCON:20.11或以上版本

    低于20.11版本的HALCON未经完全验证。

如未安装可选软件库,则配置例程前必须执行禁用不需要的例程(可选)中的操作。

依赖第三方软件库的例程详见下表。

例程 OpenCV PCL HALCON

Capture2DImage

CaptureDepthMap

MultipleCamerasCaptureSequentially

MultipleCamerasCaptureSimultaneously

CapturePeriodically

CaptureStereo2DImages

HandEyeCalibration

ConvertPointCloudToObjectModel3D

ConvertPointCloudToPcl

ConvertPointCloudWithNormalsToPcl

安装OpenCV

请执行以下命令安装最新版本的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

安装PCL

请执行以下命令安装PCL:

sudo apt-get install libpcl-dev
不同版本的Ubuntu,运行该指令安装的PCL版本不同。Ubuntu 18.04将安装PCL 1.8.1,Ubuntu 20.04将安装PCL 1.10.0.

安装HALCON

请执行以下步骤安装HALCON:

  1. 下载HALCON安装包后,执行以下命令安装HALCON(以20.11版本为例):

    tar zxvfHALCON-20.11.3.0-linux.tar.gz
    sudo sh install-linux.sh #Note down the installation directory ofHALCON.
  2. 添加HALCON的环境变量:在编辑器(如vi)中打开/etc/profile,并将以下内容复制到该文件末尾。将/opt/halcon替换为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
    • 环境变量在重新登录后生效。或者请在构建例程前先执行source /etc/profile/指令。

    • 更多关于HALCON安装的内容,请参阅HALCON的安装指南。

构建及运行例程

你可以一次性构建全部例程,也可以仅构建单独一个例程。

本节以安装路径中包含的例程为例提供相关路径,如使用从GitHub克隆获取的例程,需对应更改路径。

禁用不需要的例程(可选)

未安装可选软件库的情况下一次性构建全部例程时,必须进行该节的操作。否则使用CMake配置例程时将报错。

如不需要使用依赖OpenCV、PCL或HALCON的例程,在一次性构建全部例程前,需对CMakeLists文件进行编辑,禁用这些例程。

  1. 在编辑器(如vi)中打开/opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/CMakeLists.txt

  2. 编辑option语句:找到以option开头的行,将行末的ON改为OFF,可禁用依赖该行提及软件库的例程。

    示例:不需要构建依赖HALCON的例程,则将option(USE_HALCON…​)行末尾的ON改为OFF

  3. 在编辑器中保存对CMakeLists文件的修改。

构建例程

请执行以下步骤构建例程:

  1. 进入例程所在路径:

    • 如一次性构建全部例程,请使用以下指令。

      cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/
    • 如单独构建某个例程,请使用以下指令。将路径中的Category替换为例程所在类别的名称,将SampleName替换为例程名称。

      cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/Category/SampleName/
  2. 在例程所在路径下新建build文件夹,用于保存编译完成的例程等。

    sudo mkdir build && cd build
  3. 配置并构建例程:

    sudo cmake ..
    sudo make
如修改了例程文件夹中的源码文件,需删除build文件夹后,重新执行第2和3步,重新构建例程。

运行例程

构建例程后,请执行以下步骤运行例程:

  1. 进入例程路径下的build文件夹(如构建例程后直接运行例程,可跳过此步):

    • 如一次性构建了全部例程,请使用以下指令。

      cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/build/
    • 如单独构建了某个例程,请使用以下指令。将路径中的Category替换为例程所在类别的名称,将SampleName替换为例程名称。

      cd /opt/mech-mind/mech-eye-sdk/samples/cpp/area_scan_3d_camera/Category/SampleName/build/
  2. 运行例程:将SampleName替换为例程名称。例程运行过程中,请根据提示输入待连接相机的编号(index),并按Enter键连接相机。

    sudo ./SampleName
  3. 如例程保存了图像或点云,将在build文件夹中得到保存的文件。

我们重视您的隐私

我们使用 cookie 为您在我们的网站上提供最佳体验。继续使用该网站即表示您同意使用 cookie。如果您拒绝,将使用一个单独的 cookie 来确保您在访问本网站时不会被跟踪或记住。