Python(Ubuntu)

本章介绍如何在Ubuntu系统中获取并运行Mech-Eye API的Python例程。

例程简介

例程分为以下类别:basicadvancedutil

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

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

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

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

basic
  • connect_to_camera:连接相机。

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

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

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

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

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

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

advanced
  • convert_depth_map_to_point_cloud:从深度图生成并保存点云。

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

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

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

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

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

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

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

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

util
  • get_camera_intrinsics:获取并打印相机内参。

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

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

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

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

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

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

使用前提

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

  • 正确连接相机和电脑

  • 确保安装的Python为64位,且版本在3.7至3.11之间。

  • 获取例程。

  • 安装必需软件。

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

获取例程

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

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

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

执行以下指令从GitHub克隆Python例程:

cd ~
git clone https://github.com/MechMindRobotics/mecheye_python_samples.git

安装必需软件

使用Mech-Eye API的Python例程,必须安装依赖库、Mech-Eye SDK及Python Mech-Eye API。

  1. 安装Mech-Eye SDK:详见Mech-Eye SDK安装指南(Ubuntu)

  2. 安装pip3或升级pip3,保证其版本为20.3.1或以上。

    操作步骤
    • 执行以下指令查看pip3是否安装及其版本:

      pip3 -V
    • 执行以下指令安装pip3:

      sudo apt install python3-pip
    • 执行以下指令升级pip3:

      python3 -m pip install --upgrade pip
  3. 升级g++,保证选中的版本为12或以上。

    如g++版本低于12,将导致import失败。
    操作步骤
    1. 执行以下指令安装新版本g++(以g++ 13为例):

      sudo add-apt-repository ppa:ubuntu-toolchain-r/test
      sudo apt-get update
      sudo apt install g++-13
    2. 通过ls指令查看已安装的g++的版本:

      ls /usr/bin/g++*
    3. 执行以下指令将各版本的g++添加为alternative(以g++ 9和g++ 13为例):

      命令末尾的数字为优先级。数字越大,优先级越高。
      sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 10
      sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-13 20
    4. 执行以下指令,选择g++版本。输入新版本g++对应的数字以选中该版本。

      sudo update-alternatives --config g++
    5. 执行以下指令,确认是否成功选中新版本g++:

      g++ --version
  4. 安装Python Mech-Eye API。

    sudo pip3 install MechEyeApi

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

部分例程中的功能依赖OpenCV。如需使用下方列出的例程,则必须安装OpenCV(推荐最新版本)。

  • capture_2d_image

  • capture_depth_map

  • multiple_cameras_capture_sequentially

  • multiple_cameras_capture_simultaneously

  • capture_periodically

  • capture_stereo_2d_images

请执行以下命令安装最新版本的OpenCV:

sudo apt-get install libopencv-dev
sudo apt-get install python3-opencv

运行例程

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

请执行以下步骤运行例程:

  1. 进入例程所在的文件夹。将路径中的category替换为例程所在类别的名称。

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

    sudo python3 sample_name.py
  3. 如例程保存了图像或点云,将在例程所在文件夹中得到保存的文件。

自行编写程序时,请先使用import指令导入Mech-Eye API:

python3
import MechEye
import open3d