C++(Ubuntu)

您正在查看旧版本的文档。点击页面右上角可切换到最新版本的文档。

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

例程简介

例程分为7类:BasicAdvancedUtilLaserUHPCalibrationHalcon

  • Basic例程:与连接和基础采集相关。

  • Advanced例程:与高级采集技巧相关。

  • Util例程:与获取相机信息及设置参数相关。

  • Laser例程:仅适用于Laser,DEEP与LSR系列相机。

  • UHP例程:仅适用于UHP系列相机。

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

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

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

Basic
Advanced
Util
  • GetCameraIntri:获取并打印相机内参。

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

  • SetDepthRange:设置相机深度范围。

  • SetParameters:设置相机参数。

  • SetUserSets:执行参数组相关功能,如获取参数组名称,选择参数组,保存参数值至当前参数组。通过参数组可以保存一组参数值并快速应用。

Laser
UHP
Calibration
Halcon

使用前提

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

  • 正确连接相机和电脑

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

  • 获取例程。

  • 安装必需软件。

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

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

获取例程

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

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

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

安装必需软件

使用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

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并添加环境变量:

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

      tar zxvfHALCON-20.11.3.0-linux.tar.gz
      sudo sh install-linux.sh #Note down the installation directory ofHALCON.
    • 添加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/c++/source/CMakeLists.txt

  2. 编辑option语句:找到以option开头的行,将行末的ON改为OFF,可禁用依赖该行提及软件的例程。 示例:不需要构建依赖HALCON的例程,则将以option(USE_HALCON开头的行末尾的ON改为OFF

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

构建例程

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

  1. 进入例程所在路径:

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

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

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

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

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

运行例程

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

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

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

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

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

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

我们重视您的隐私

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