Skip to main content

Overview

This guide is for developers integrating camera devices. It covers the Camera SDK APIs for M4, M4 Mega, M4 Pro, V1 Pro, S2, S2 Max, and H3 Series products. The SDK runs on x86 Windows and x86 or Arm Linux systems. The Camera SDK provides unified device-access and parameter-configuration APIs. It supports synchronous and asynchronous acquisition of depth, intensity, point cloud, and RGB data. Some camera models also provide obstacle-avoidance, docking, or localization data.
Examples and API descriptions are based on the SDK version shipped with the product. Available parameters may vary by product, firmware, and SDK version.
The examples are intended as development guidance and may not cover every device or use case.

Environment setup

Connect and install

Hardware connection

The camera is connected to an external 24V voltage and is connected to the host computer where the host computer is located using a network cable, as shown in Figure 2.1. Figure 2.1 Camera connection diagram

Network configuration

  1. The default IP network segment of the camera is: 192.168.100.*
  2. On the host computer, set the IP address of the network port connected to the camera to an address in the 192.168.100.x network segment and ensure that it does not conflict with the device. The subnet mask is 255.255.255.0, as shown in the figure below:
  3. When connecting to the camera, it is recommended to turn off the firewall to prevent the camera data packets from being intercepted by the host where the SDK is located, as shown in the following figure:
  4. The network configuration of Linux is the same as that of Windows. Firewall commands vary by distribution. On Ubuntu, run:

Install the SDK

Windows
Open the installation package and install Lanxin-MRDVS-xxx.exe. If you need to install it for all users, you need administrator rights to run the installation package. The figure below shows the installation process.
Linux
  1. Unzip the package and run the installation script:
The installation script installs the SDK in /opt/Lanxin-MRDVS and sets environment variables for the current user. If the program runs as another user, rerun the script for that user or add the following line to that user’s ~/.bashrc:
For terminal sessions that were open before installation, run the following command before starting the program:

Use the Camera SDK

Directory structure

The contents of the Camera SDK directory include the following images:
Camera SDK directory structure related diagram
  • Document contains various documentation for the SDK
  • FirmWare contains camera firmware upgrade package
  • Sample contains sample code using the Camera SDK in various programming languages
  • SDK includes the header files and library files of Camera SDK

Development workflow

Configure the project

C/C++ is recommended for SDK integration. The SDK includes a CMakeLists.txt file for CMake builds, and the Sample folder contains examples in multiple languages. For details, see the examples in Sample and the Linux examples user guide.

Synchronous call flow

Asynchronous call flow


Calling requirements

Parameter types and corresponding APIs

  1. For enumeration types prefixed with LX_INT, use DcSetIntValue or DcGetIntValue to set or get INT type parameters;
  2. For enumeration types prefixed with LX_FLOAT, use DcSetFloatValue or DcGetFloatValue to set or get FLOAT type parameters;
  3. For enumeration types prefixed with LX_BOOL, use DcSetBoolValue or DcGetBoolValue to set or get BOOL type parameters;
  4. For enumeration types prefixed with LX_STRING, use DcSetStringValue or DcGetStringValue to set or get string type parameters;
  5. Use DcSetCmd to execute instructions for enumeration types prefixed with LX_CMD;
  6. For enumeration types prefixed with LX_PTR, use DcGetPtrValue to obtain pointer type results;

API preconditions

When streaming is active, or when LX_INT_WORK_MODE is set to always-on mode, do not set the functions listed below.
1. When the flow is started or the working mode (LX_INT_WORK_MODE) is normally open mode, the following functions are not allowed to be set:
  • 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
2. Settings are not allowed even when the working mode (LX_INT_WORK_MODE) is normally open:
  • LX_INT_TOF_FREQMODE
3. When 3D automatic exposure (LX_BOOL_ENABLE_3D_AUTO_EXPOSURE) is turned on, the following function enumeration operations are not allowed:
  • LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR ;
  • LX_INT_FIRST_EXPOSURE;
  • LX_INT_SECOND_EXPOSURE;
  • LX_INT_THIRD_EXPOSURE;
  • LX_INT_GAIN;
4.When 3D automatic exposure (LX_BOOL_ENABLE_3D_AUTO_EXPOSURE) is turned off, the following function enumeration is not allowed to operate:
  • LX_INT_3D_AUTO_EXPOSURE_LEVEL
Setting the 3D automatic exposure maximum value (LX_INT_3D_AUTO_EXPOSURE_MAX) and minimum value is not allowed
  • (LX_INT_3D_AUTO_EXPOSURE_MIN)
5. When 2D automatic exposure (LX_BOOL_ENABLE_2D_AUTO_EXPOSURE) is turned on, the following function enumeration operations are not allowed:
  • LX_INT_2D_MANUAL_EXPOSURE

6. When 2D automatic exposure (LX_BOOL_ENABLE_2D_AUTO_EXPOSURE) is turned off, the following function enumeration is not allowed to operate:
  • LX_INT_2D_AUTO_EXPOSURE_LEVEL;

7.In extraordinary filtering mode, the following settings are not allowed:
  • LX_INT_FILTER_SMOOTH_LEVEL LX_INT_FILTER_NOISE_LEVEL
  • LX_INT_FILTER_TIME_LEVEL

8.When turning on 2D anti-distortion, RGB-D alignment must be turned on first:
  • LX_BOOL_ENABLE_2D_TO_DEPTH

9.For non-S2 type devices, when turning on the built-in algorithm, you need to set the tof algorithm first. The algorithm parameters are only allowed to be set when the built-in algorithm (LX_INT_ALGORITHM_MODE) is turned on.
  • (LX_STRING_ALGORITHM_PARAMS)

10.To obtain point cloud data (LX_PTR_XYZ_DATA), you must first open the depth map
  • (LX_BOOL_ENABLE_3D_DEPTH_STREAM)

Data types

5.1 LX_STATE

Function: SDK interface function return value status code

5.2 LX_DATA_TYPE

Function: data format. 3D intensity map and depth map have different data formats. To obtain the data pointer, you need to use the corresponding feature.

5.3 LX_BINNING_MODE

Function: Bining mode

5.4 LX_STRUCT_LIGHT_CODE_MODE

Function:

5.5 LX_ALGORITHM_MODE

Function:

5.6 LX_CAMERA_WORK_MODE

Function:

5.7 LX_TRIGGER_MODE

Function:

5.8 LX_CAMERA_FEATURE

Function: Various readable and writable parameters

5.8.1 int type parameters

5.8.1.1 General parameters
5.8.1.2 3D image parameters
5.8.1.4 2D image parameters
5.8.1.5 Trigger parameters
5.8.1.6 Filter parameters

5.8.2 float type parameters

5.8.3 bool type parameter

5.8.4 string type parameters

5.8.5 Command type parameters

5.8.6 ptr type parameters

5.9 LxDeviceInfo

Function: Device attribute information structure

5.10 LxIntValueInfo

Function: Device attribute information structure

5.11 LxFloatValueInfo

Function: Device attribute information structure

5.12 LX_DEVICE_TYPE

Function: device type

5.13 LX_OPEN_MODE

Function: device type

5.14 FrameDataInfo

Function: Image display information structure

5.15 FrameInfo

Function: Data frame information structure

API reference

API prototypes are defined by the SDK headers and the shipped SDK version. Unless noted otherwise, LX_SUCCESS indicates a successful call.

6.1 Find, connect and close the camera

6.1.1 DcGetDeviceList

Function prototype: Function function: Get a list of supported cameras. Function parameters:
  • [out]devlist Found camera list
  • [out]devnum Number of cameras found
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Remarks: The memory is maintained internally, and there is no need to allocate external memory. However, because the original content will be cleared before each search, external thread safety needs to be ensured.

6.1.2 DcOpenDevice

Function prototype:
DcOpenDevice related icons
Function function: Connect your device. Function parameters:
  • [in]open_mode open mode, see OpenMode for details
  • [in]param different opening methods, fill in different parameters
  • [out]handle is the device handle returned after successful connection. All subsequent interface access depends on this handle.
  • [out]info Camera details returned after successful connection
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.1.3 DcCloseDevice

Function prototype:
DcCloseDevice related icons
Function function: Turn off the device Function parameters:
  • [in]handle device handle
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.2 Start streaming and close streaming

6.2.1 DcStartStream

Function prototype:
DcStartStream related icons
**Function:**Open data stream Function parameters:
  • [in]handle device handle
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.2.2 DcStopStream

Function prototype:
DcStopStream related icons
**Function:**Close data flow Function parameters:
  • [in]handle device handle
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3 Reading and setting camera parameters

6.3.1 DcSetIntValue

Function prototype:
DcSetIntValue related icons
Function function: Set int type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [in]value sets parameter value
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.2 DcGetIntValue

Function prototype:
DcGetIntValue related icons
Function function: Get int type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value returns the parameter structure, the maximum and minimum values ​​of the parameters, the current value, etc.
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.3 DcSetFloatValue

Function prototype:
DcSetFloatValue related icons
Function function: Set float type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [in]value sets parameter value
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.4 DcGetFloatValue

Function prototype:
DcGetFloatValue related icons
Function function: Get float type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value returns the parameter structure, the maximum and minimum values ​​of the parameters, the current value, etc.
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.5 DcSetBoolValue

Function prototype:
DcSetBoolValue related icons
Function function: Set bool type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [in]value sets parameter value
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.6 DcGetBoolValue

Function prototype:
DcGetBoolValue related icons
Function function: Get bool type parameter Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value return parameters
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.7 DcSetStringValue

Function prototype:
DcSetStringValue related icons
Function function: Set string type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd refer to LX_CAMERA_FEATURE
  • [in]value sets parameter value
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.8 DcGetStringValue

Function prototype:
DcGetStringValue related icons
Function function: Get string type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value returns parameters without external allocation of memory
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.9 DcGetPtrValue

Function prototype:
DcGetPtrValue related icons
Function function: Get pointer type parameters Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
  • [out]value returns parameters without external allocation of memory
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.3.10 DcSetCmd

Function prototype:
DcSetCmd related icons
Function function: Execute corresponding CMD type command operation Function parameters:
  • [in]handle device handle
  • [in]cmd reference LX_CAMERA_FEATURE
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.4 Save point cloud

6.4.1 DcSaveXYZ

Function prototype:
DcSaveXYZ related icons
Function function: Save the point cloud and call it directly Function parameters:
  • handle device handle
  • filename file name, supports txt, ply and pcd formats. txt format saves all data in image order, ply and pcd only save non-zero data
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.5 Special Controls

6.5.1 DcSpecialControl

Function prototype:
DcSpecialControl related icons
Function function: LX_CAMERA_FEATURE Special operations beyond the definition Function parameters:
  • [in]handle device handle
  • [in]param operation
  • [inout]value is the corresponding input parameter when set, and the corresponding outgoing parameter when obtained, without external allocation of memory.
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.6 Set ROI and parameter path

6.6.1 DcSetRoI

Function prototype:
DcSetRoI related icons
Function function: Set the ROI area. If the input value is not an integer multiple of 8, it will be automatically processed internally as the nearest integer multiple of 8 to the target value. Image size parameters need to be updated after setting Function parameters:
  • [in]handle device handle
  • [in]offsetx horizontal offset of starting point in pixels
  • [in]offsety vertical offset of starting point in pixels
  • [in]widthroi width of the target area
  • [in]heightroi height of the target area
  • [in]type0-3D image 1-2D image
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.7 Set camera IP

6.7.1 DcSetCameraIp

Function prototype: Function function: Set camera IP and subnet mask, gateway Function parameters:
  • [in]handle device handle,
  • [in]ip device IP,
  • [in]netmask subnet mask (if empty, the internal default is “255.255.0.0”)
  • [in]gateway gateway ip (if empty, the internal default is to set the last network segment of ip to “1” as the gateway)
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: When the device is not connected, you need to obtain it through search first. If the device supports modifying the gateway and subnet mask, set the gateway to the same network segment and the subnet mask to “255.255.0.0”. After modification, the device list will change, and you need to call the DcGetDeviceList interface again to obtain the new device list.

6.8 Log information and version information

6.8.1 DcGetApiVersion

Function prototype:
DcGetApiVersion related icons
Function function: Get API version number Function parameters: Return value: char pointer data. Remark:

6.8.2 DcSetInfoOutput

Function prototype: Function function: Set printing information level Function parameters:
  • [in]print_level 0: info all debugging information; 1: warn important and warning debugging information; 2: error only output error information
  • [in]enable_screen_print whether to print in the window
  • [in]log_path The log file saving path (does not include the log file name), can be empty. Windows defaults to the current user path, and Linux defaults to the /var/log path.
  • [in]language language (not used yet)
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.8.3 DcLog

Function prototype:
DcLog related icons
Function function: Allow users to output debugging information to the log file Function parameters:
  • [in]str The string to be output, terminated by ‘\0’
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.8.4 DcRegisterFrameCallback

Function prototype: Function function: Register a data frame callback function and automatically call it when new data is received. Function parameters:
  • [in]handle device handle,
  • [in]func frame data callback function,
  • [in]usr_data user-defined parameters, can be passed empty
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.8.5 DcUnregisterFrameCallback

Function prototype:
DcUnregisterFrameCallback related icons
Function function: Cancel frame callback Function parameters:
  • [in]handle device handle,
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

6.9 Device status callback

6.9.1 DcRegisterCameraStatusCallback

Function prototype: Function function: Register the camera status callback function, which is automatically called when the camera status changes. Function parameters:
  • [in]handle device handle,
  • [in]func frame data callback function,
  • [in]usr_data user-defined parameters, can be passed empty
Note: Make sure the parameters passed in are valid

6.9.2 DcUnregisterCameraStatusCallback

Function prototype:
DcUnregisterCameraStatusCallback related icons
Function function: Cancel camera status registration callback Function parameters:
  • [in]handle device handle,
Return value: Int data, this value is equal to LX_SUCCESS, indicating that the interface call is successful. Note: Make sure the parameters passed in are valid

Versions and updates