跳转到主要内容

概述

本手册面向具备软件开发基础的设备接入人员。相机 SDK 支持 M4、M4 Mega、M4 Pro、V1Pro、S2 和 H3 系列产品,可运行于 x86 Windows,以及 x86 和 ARM Linux 平台。 SDK 提供统一的设备访问和参数配置接口,可同步或异步获取深度图、强度图、点云和 RGB 图。部分型号还支持避障、对接和定位数据输出。
示例与 API 说明以 SDK 随附版本为准。不同产品、固件和 SDK 版本的可用参数可能不同。

环境搭建

推荐主机配置

连接与安装

硬件连接

为相机提供 24 V 电源,并通过网线连接至上位机。
硬件环境搭建相关图示

网络配置

  1. 相机默认 IP 网段为 192.168.100.*。
  2. 将上位机连接相机的网卡 IP 设置为 192.168.100.x 网段内且不冲突的地址,子网掩码设为 255.255.255.0。
网络环境搭建相关图示
  1. 连接相机时,确认防火墙规则不会拦截相机数据包。
网络环境搭建相关图示 2
  1. Linux 的网络配置与 Windows 相同。不同发行版的防火墙管理方式不同;以 Ubuntu 为例:

安装 SDK

Windows
运行 Lanxin-MRDVS-xxx.exe 安装包。如需为所有用户安装,请以管理员权限运行。
Windows 系统安装:相关图示
Windows 系统安装:相关图示 2
Windows 系统安装:相关图示 3
Windows 系统安装:相关图示 4
Linux
解压安装包并执行安装脚本:
安装脚本会将 SDK 安装至 /opt/Lanxin-MRDVS 并设置环境变量。脚本仅配置执行安装的当前用户;若运行程序的用户不同,请重新执行安装脚本,或在该用户的 ~/.bashrc 中添加:
对于安装前已打开的终端,请在运行程序前执行:

使用 相机 SDK

目录结构

相机 SDK 目录内容包含如下图:
相机 SDK 目录结构相关图示
  • Document:SDK 说明文档。
  • FirmWare:相机固件升级包。
  • Sample:多种编程语言的 相机 SDK 示例代码。
  • SDK:相机 SDK 的头文件和库文件。

开发流程

配置项目工程

建议使用 C/C++ 集成 SDK。SDK 提供基于 CMake 的 CMakeLists.txt,Sample 目录提供多语言示例;Linux 环境可参考 Linux 示例使用手册。

同步调用流程

同步方式接口调用流程图

异步调用流程

异步方式接口调用流程图

调用要求

参数类型与对应接口

参数设置前置条件

在启流状态,或工作模式(LX_INT_WORK_MODE)为常开模式时,不允许设置以下功能。
  • DcSetRoi
  • LX_INT_3D_BINNING_MODE;
  • LX_INT_2D_BINNING_MODE;
  • LX_BOOL_ENABLE_2D_TO_DEPTH;
  • LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR;
  • LX_BOOL_ENABLE_MULTI_MACHINE;
  • LX_INT_TRIGGER_MODE;
  • LX_INT_CALCULATE_UP;
  • LX_BOOL_ENABLE_HDR;
  • LX_BOOL_ENABLE_TOF_DEPTH_CALIBE;
  • LX_BOOL_ENABLE_SYNC_FRAME
  • LX_INT_SAVE_PARAMS_GROUP
工作模式(LX_INT_WORK_MODE)为常开模式时,也不允许设置:
  • LX_INT_TOF_FREQMODE
3D 自动曝光(LX_BOOL_ENABLE_3D_AUTO_EXPOSURE)开启时,不允许操作:
  • LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR ;
  • LX_INT_FIRST_EXPOSURE;
  • LX_INT_SECOND_EXPOSURE;
  • LX_INT_THIRD_EXPOSURE;
  • LX_INT_GAIN;
3D 自动曝光(LX_BOOL_ENABLE_3D_AUTO_EXPOSURE)关闭时,不允许操作:
  • LX_INT_3D_AUTO_EXPOSURE_LEVEL
不允许设置 3D 自动曝光最大值(LX_INT_3D_AUTO_EXPOSURE_MAX)和最小值
  • (LX_INT_3D_AUTO_EXPOSURE_MIN)
2D 自动曝光(LX_BOOL_ENABLE_2D_AUTO_EXPOSURE)开启时,不允许操作:
  • LX_INT_2D_MANUAL_EXPOSURE
2D 自动曝光(LX_BOOL_ENABLE_2D_AUTO_EXPOSURE)关闭时,不允许操作:
  • LX_INT_2D_AUTO_EXPOSURE_LEVEL;
滤波为非常规模式时,不允许设置:
  • LX_INT_FILTER_SMOOTH_LEVEL LX_INT_FILTER_NOISE_LEVEL
  • LX_INT_FILTER_TIME_LEVEL

8.开启 2D 反畸变时, 必须先开启 RGBD 对齐:
  • LX_BOOL_ENABLE_2D_TO_DEPTH

9.非 S2 类型的设备,开启内置算法时需先设置 tof 算法下移开启了内置算法(LX_INT_ALGORITHM_MODE) 情况下, 才允许设置算法参数
  • (LX_STRING_ALGORITHM_PARAMS)

10.要 获 取 点 云 数 据 (LX_PTR_XYZ_DATA),必 须 要 先 开 启 深 度 图
  • (LX_BOOL_ENABLE_3D_DEPTH_STREAM)

数据类型

5.1 LX_STATE

功能:SDK 接口函数返回值状态码

5.2 LX_DATA_TYPE

功能:数据格式。3D 强度图和深度图有不同的数据格式,获取数据指针需要使用对应的 feature

5.3 LX_BINNING_MODE

功能:Bining 模式

5.4 LX_STRUCT_LIGHT_CODE_MODE

功能:

5.5 LX_ALGORITHM_MODE

功能:

5.6 LX_CAMERA_WORK_MODE

功能:

5.7 LX_TRIGGER_MODE

功能:

5.8 LX_CAMERA_FEATURE

功能:各种可读、可写参数

5.8.1 int 型参数

5.8.1.1 通用参数
5.8.1.2 3D 图像参数
5.8.1.4 2D 图像参数
5.8.1.5 触发参数
5.8.1.6 滤波参数

5.8.2 float 型参数

5.8.3 bool 型参数

5.8.4 string 型参数

5.8.5 command 型参数

5.8.6 ptr 型参数

5.9 LxDeviceInfo

功能:设备属性信息结构体

5.10 LxIntValueInfo

功能:设备属性信息结构体

5.11 LxFloatValueInfo

功能:设备属性信息结构体

5.12 LX_DEVICE_TYPE

功能:设备类型

5.13 LX_OPEN_MODE

功能:设备类型

5.14 FrameDataInfo

功能:图像显示信息结构体

5.15 FrameInfo

功能:数据帧信息结构体

API 参考

API 原型以 SDK 头文件和随附版本为准。除特别说明外,接口返回 LX_SUCCESS 表示调用成功。

6.1 查找、连接与关闭相机

6.1.1 DcGetDeviceList

函数原型:
DcGetDeviceList相关图示
函数功能: 获取支持的相机列表。 函数参数:
  • [out]devlist 查找到的相机列表
  • [out]devnum 查找到的相机数量
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**内部维护内存,外部无须分配内存, 但因每次搜索前会清空原内容,故需外部保证线程安全

6.1.2 DcOpenDevice

函数原型:
DcOpenDevice相关图示
函数功能: 连接设备。 函数参数:
  • [in]open_mode 打开方式, 具体说明见 OpenMode
  • [in]param 不同的打开方式,填写不同的参数
  • [out]handle 连接成功后返回的设备句柄,后续所有接口访问都依赖该 handle
  • [out]info 连接成功后返回的相机详细信息
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.1.3 DcCloseDevice

函数原型:
DcCloseDevice相关图示
函数功能: 关闭设备 函数参数:
  • [in]handle 设备句柄
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.2 开始取流、关闭取流

6.2.1 DcStartStream

函数原型:
DcStartStream相关图示
**函数功能:**打开数据流 函数参数:
  • [in]handle 设备句柄
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.2.2 DcStopStream

函数原型:
DcStopStream相关图示
**函数功能:**关闭数据流 函数参数:
  • [in]handle 设备句柄
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3 读取与设置相机参数

6.3.1 DcSetIntValue

函数原型:
DcSetIntValue相关图示
函数功能: 设置 int 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [in]value 设置参数值
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.2 DcGetIntValue

函数原型:
DcGetIntValue相关图示
函数功能: 获取 int 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [out]value 返回参数结构体,参数的最大最小值、当前值等
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.3 DcSetFloatValue

函数原型:
DcSetFloatValue相关图示
函数功能: 设置 float 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [in]value 设置参数值
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.4 DcGetFloatValue

函数原型:
DcGetFloatValue相关图示
函数功能: 获取 float 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [out]value 返回参数结构体,参数的最大最小值、当前值等
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.5 DcSetBoolValue

函数原型:
DcSetBoolValue相关图示
函数功能: 设置 bool 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [in]value 设置参数值
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.6 DcGetBoolValue

函数原型:
DcGetBoolValue相关图示
函数功能: 获取 bool 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [out]value 返回参数
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.7 DcSetStringValue

函数原型:
DcSetStringValue相关图示
函数功能: 设置 string 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考LX_CAMERA_FEATURE
  • [in]value 设置参数值
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.8 DcGetStringValue

函数原型:
DcGetStringValue相关图示
函数功能: 获取 string 类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [out]value 返回参数,无需外部分配内存
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.9 DcGetPtrValue

函数原型:
DcGetPtrValue相关图示
函数功能: 获取指针类型参数 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
  • [out]value 返回参数,无需外部分配内存
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.3.10 DcSetCmd

函数原型:
DcSetCmd相关图示
函数功能: 执行对应 CMD 类型指令操作 函数参数:
  • [in]handle 设备句柄
  • [in]cmd 参考 LX_CAMERA_FEATURE
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.4 保存点云

6.4.1 DcSaveXYZ

函数原型:
DcSaveXYZ相关图示
函数功能: 保存点云,可直接调用 函数参数:
  • handle 设备句柄
  • filename 文件名,支持 txt,ply 和 pcd 格式。txt 格式按图像顺序保存所有数 据,ply 和 pcd 仅保存非零数据
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.5 特殊控制

6.5.1 DcSpecialControl

函数原型:
DcSpecialControl相关图示
函数功能: LX_CAMERA_FEATURE 定义之外的特殊操作 函数参数:
  • [in]handle 设备句柄
  • [in]param 操作
  • [inout]value 设置时为对应入参,获取时为对应出参,无需外部分配内存
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.6 设置 ROI 与参数路径

6.6.1 DcSetRoI

函数原型:
DcSetRoI相关图示
函数功能: 设置 ROI 区域, 输入数值若不是 8 的整数倍,内部会自动处理为目标值最近的 8 的整倍数。设置后需要更新图像尺寸参数 函数参数:
  • [in]handle 设备句柄
  • [in]offsetx 起始点水平偏移像素
  • [in]offsety 起始点垂直偏移像素
  • [in]widthroi 目标区域的宽
  • [in]heightroi 目标区域的高
  • [in]type0-3D 图像 1-2D 图像
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.7 设置相机 IP

6.7.1 DcSetCameraIp

函数原型:
DcSetCameraIp相关图示
函数功能: 设置相机 IP 和子网掩码,网关 函数参数:
  • [in]handle 设备句柄,
  • [in]ip 设备IP,
  • [in]netmask 子网掩码(若传空则内部默认”255.255.0.0”)
  • [in]gateway 网关ip(若传空则内部默认将ip 最后网段置为”1”后作为网关)
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**当未连接上设备情况下,需先通过搜索获取。若设备支持修改网关和子网掩码,则同时将网关设置为同网段,子网掩码设置为”255.255.0.0”。修改完之后设备列表会变化,需重新调用 DcGetDeviceList 接口重新获取新的设备列表

6.8 日志信息与版本信息

6.8.1 DcGetApiVersion

函数原型:
DcGetApiVersion相关图示
函数功能: 获取 API 版本号 函数参数: 返回值: char 指针数据。 备注:

6.8.2 DcSetInfoOutput

函数原型:
DcSetInfoOutput相关图示
函数功能: 设置打印信息等级 函数参数:
  • [in]print_level 0:info 所有调试信息;1:warn 重要及警告类调试信息; 2:error 仅输出错误信息
  • [in]enable_screen_print 是否在窗口打印
  • [in]log_path log 文件保存路径(不包含日志文件名),可以为空。 Windows 默认在当前用户路径,linux 默认在/var/log 路径
  • [in]language 语言(暂无用)
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.8.3 DcLog

函数原型:
DcLog相关图示
函数功能: 允许用户输出调试信息到 log 文件 函数参数:
  • [in]str 要输出的字符串,‘\0’结尾
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.8.4 DcRegisterFrameCallback

函数原型:
DcRegisterFrameCallback相关图示
函数功能: 注册数据帧回调函数,收到新的数据时自动调用 函数参数:
  • [in]handle 设备句柄,
  • [in]func 帧数据回调函数,
  • [in]usr_data 用户自定义参数, 可传空
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.8.5 DcUnregisterFrameCallback

函数原型:
DcUnregisterFrameCallback相关图示
函数功能: 取消帧回调 函数参数:
  • [in]handle 设备句柄,
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

6.9 设备状态回调

6.9.1 DcRegisterCameraStatusCallback

函数原型:
DcRegisterCameraStatusCallback相关图示
函数功能: 注册相机状态回调函数,相机状态变化时自动调用 函数参数:
  • [in]handle 设备句柄,
  • [in]func 帧数据回调函数,
  • [in]usr_data 用户自定义参数, 可传空
**备注:**应确保传入参数有效

6.9.2 DcUnregisterCameraStatusCallback

函数原型:
DcUnregisterCameraStatusCallback相关图示
函数功能: 取消相机状态注册回调 函数参数:
  • [in]handle 设备句柄,
返回值: Int 数据,该值等于 LX_SUCCESS,说明接口调用成功。 **备注:**应确保传入参数有效

版本与更新

感谢您的访问,并希望知识库能成为您深入了解迈尔微视产品和方案的得力助手!