C++ (Ubuntu)

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

例程简介

例程分为 7 类:BasicAdvancedUtilLaserUHPCalibrationHalcon

Basic 例程:与连接和基础采集相关。
Advanced 例程:与高级采集技巧相关。
Util 例程:与获取相机信息及设置参数相关。
Laser 例程:仅适用于 Laser,LSR 和 DEEP 系列相机。
UHP 例程:仅适用于 UHP 系列相机。
Calibration 例程:通过 Mech-Eye API 进行手眼标定。
Halcon 例程:通过 Mech-Eye API 获取HALCON可读取的点云。

使用前提

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

注意

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

必需软件和可选软件及其安装注意事项,详见以下小节。

安装必需软件

使用 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, 详见 在 Ubuntu 上安装 Mech-Eye SDK

    安装完成后,例程所在文件夹的路径为 /opt/mech-mind/mech-eye-sdk/samples/

安装可选软件

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

  • OpenCV:最新版本

  • PCL:最新版本

  • HALCON:20.11 或以上版本

    注解

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

注意

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

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

例程

OpenCV

PCL

HALCON

CaptureColorMap

CaptureDepthMap

CapturePointCloud

CaptureHDRPointCloud

CapturePointCloudROI

CapturePointCloudFromTextureMask

CaptureCloudFromDepth

CaptureTimedAndPeriodically

CaptureSimultaneouslyMultiCamera

CaptureSequentiallyMultiCamera

CaptureHalconPointCloud

  • 安装 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:

    sudo apt-get install libpcl-dev
    

    注解

    不同版本的 Ubuntu,运行该指令安装的 PCL 版本不同。Ubuntu 18.04 将安装 PCL 1.8.1,Ubuntu 20.04 将安装 PCL 1.10.0.

  • 安装 HALCON 并添加环境变量:

    1. 下载 HALCON 安装包后使用以下指令安装 HALCON (以 20.11 版本为例):

      tar zxvf halcon-20.11.3.0-linux.tar.gz
      sudo sh install-linux.sh #Note down the installation directory of HALCON.
      
    2. 添加 HALCON 的环境变量:在编辑器(如 vi)中打开 /etc/profile,并将以下内容复制到该文件末尾。将 /opt/halcon 替换为 HALCON 的实际安装路径。

      HALCONARCH=x64-linux; export HALCONARCH
      HALCONROOT="/opt/halcon"; export HALCONROOT
      HALCONEXAMPLES=${HALCONROOT}/examples; export HALCONEXAMPLES
      HALCONIMAGES=${HALCONROOT}/examples/images; export HALCONIMAGES
      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 的安装指南。

构建及运行例程

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

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

注意

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

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

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

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

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

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

构建例程

  1. 进入例程所在路径:

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

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

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

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

    cmake ..
    make
    

小技巧

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

运行例程

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

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

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

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

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