Descripción general
Esta guía está dirigida a desarrolladores que integran dispositivos de cámara. Cubre las API de Camera SDK para los productos de las series M4, M4 Mega, M4 Pro, V1 Pro, S2, S2 Max y H3. El SDK se ejecuta en sistemas Windows x86 y Linux x86 o Arm. Camera SDK proporciona API unificadas para acceder a dispositivos y configurar parámetros. Admite la adquisición síncrona y asíncrona de datos de profundidad, intensidad, nube de puntos y RGB. Algunos modelos de cámara también proporcionan datos de prevención de obstáculos, acoplamiento o localización.Los ejemplos y las descripciones de las API se basan en la versión del SDK incluida con el producto. Los parámetros disponibles pueden variar según el producto, el firmware y la versión del SDK.
Configuración del entorno
Configuración recomendada del host
Conectar e instalar
Conexión del hardware
La cámara se conecta a una fuente externa de 24 V y al ordenador host donde se encuentra el host mediante un cable de red, como se muestra en la figura 2.1. Figura 2.1 Diagrama de conexión de la cámaraConfiguración de red
- El segmento de red IP predeterminado de la cámara es: 192.168.100.*
- En el ordenador host, configura la dirección IP del puerto de red conectado a la cámara con una dirección del segmento de red 192.168.100.x y asegúrate de que no entre en conflicto con el dispositivo. La máscara de subred es 255.255.255.0, como se muestra en la figura siguiente:
- Al conectarte a la cámara, se recomienda desactivar el firewall para evitar que el host donde se encuentra el SDK intercepte los paquetes de datos de la cámara, como se muestra en la figura siguiente:
- La configuración de red de Linux es la misma que la de Windows. Los comandos del firewall varían según la distribución. En Ubuntu, ejecuta:
Instalar el SDK
Windows
Abre el paquete de instalación e instala Lanxin-MRDVS-xxx.exe. Si necesitas instalarlo para todos los usuarios, debes ejecutar el paquete de instalación con permisos de administrador. La figura siguiente muestra el proceso de instalación.Linux
- Descomprime el paquete y ejecuta el script de instalación:
/opt/Lanxin-MRDVS y configura las variables de entorno para el usuario actual. Si el programa se ejecuta con otro usuario, vuelve a ejecutar el script para ese usuario o añade la siguiente línea al archivo ~/.bashrc de dicho usuario:
Usar Camera SDK
Estructura de directorios
El contenido del directorio de Camera SDK incluye las siguientes imágenes:
- Document contiene diversa documentación del SDK
- FirmWare contiene el paquete de actualización del firmware de la cámara
- Sample contiene código de ejemplo que utiliza Camera SDK en varios lenguajes de programación
- SDK incluye los archivos de encabezado y de biblioteca de Camera SDK
Flujo de desarrollo
Configurar el proyecto
Se recomienda usar C/C++ para integrar el SDK. El SDK incluye un archivoCMakeLists.txt para compilaciones con CMake, y la carpeta Sample contiene ejemplos en varios lenguajes. Para obtener más información, consulta los ejemplos de Sample y la guía del usuario de los ejemplos de Linux.
Flujo de llamadas síncronas
Flujo de llamadas asíncronas
Requisitos de las llamadas
Tipos de parámetros y API correspondientes
- Para los tipos enumerados con el prefijo LX_INT, usa DcSetIntValue o DcGetIntValue para establecer u obtener parámetros de tipo INT;
- Para los tipos enumerados con el prefijo LX_FLOAT, usa DcSetFloatValue o DcGetFloatValue para establecer u obtener parámetros de tipo FLOAT;
- Para los tipos enumerados con el prefijo LX_BOOL, usa DcSetBoolValue o DcGetBoolValue para establecer u obtener parámetros de tipo BOOL;
- Para los tipos enumerados con el prefijo LX_STRING, usa DcSetStringValue o DcGetStringValue para establecer u obtener parámetros de tipo string;
- Usa DcSetCmd para ejecutar instrucciones de los tipos enumerados con el prefijo LX_CMD;
- Para los tipos enumerados con el prefijo LX_PTR, usa DcGetPtrValue para obtener resultados de tipo puntero;
Condiciones previas de las API
1. Cuando se inicia el flujo o el modo de funcionamiento (LX_INT_WORK_MODE) es el modo normalmente abierto, no se permite establecer las siguientes funciones:- 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_TOF_FREQMODE
- LX_BOOL_ENABLE_MULTI_EXPOSURE_HDR ;
- LX_INT_FIRST_EXPOSURE;
- LX_INT_SECOND_EXPOSURE;
- LX_INT_THIRD_EXPOSURE;
- LX_INT_GAIN;
- LX_INT_3D_AUTO_EXPOSURE_LEVEL
- (LX_INT_3D_AUTO_EXPOSURE_MIN)
- LX_INT_2D_MANUAL_EXPOSURE
6. Cuando la exposición automática 2D (LX_BOOL_ENABLE_2D_AUTO_EXPOSURE) está desactivada, no se permite operar la siguiente enumeración de funciones:
- LX_INT_2D_AUTO_EXPOSURE_LEVEL;
7.En el modo de filtrado extraordinario, no se permiten las siguientes configuraciones:
- LX_INT_FILTER_SMOOTH_LEVEL LX_INT_FILTER_NOISE_LEVEL
- LX_INT_FILTER_TIME_LEVEL
8.Al activar la corrección de distorsión 2D, primero se debe activar la alineación RGB-D:
- LX_BOOL_ENABLE_2D_TO_DEPTH
9.Para dispositivos que no sean de tipo S2, al activar el algoritmo integrado primero debes establecer el algoritmo ToF. Los parámetros del algoritmo solo se pueden establecer cuando el algoritmo integrado (LX_INT_ALGORITHM_MODE) está activado.
- (LX_STRING_ALGORITHM_PARAMS)
10.Para obtener datos de nube de puntos (LX_PTR_XYZ_DATA), primero debes abrir el mapa de profundidad
- (LX_BOOL_ENABLE_3D_DEPTH_STREAM)
Tipos de datos
5.1 LX_STATE
Función: código de estado del valor devuelto por la interfaz del SDK5.2 LX_DATA_TYPE
Función: formato de datos. El mapa de intensidad 3D y el mapa de profundidad tienen formatos de datos diferentes. Para obtener el puntero de datos, debes usar la característica correspondiente.5.3 LX_BINNING_MODE
Función: modo de binning5.4 LX_STRUCT_LIGHT_CODE_MODE
Función:5.5 LX_ALGORITHM_MODE
Función:5.6 LX_CAMERA_WORK_MODE
Función:5.7 LX_TRIGGER_MODE
Función:5.8 LX_CAMERA_FEATURE
Función: diversos parámetros legibles y escribibles5.8.1 Parámetros de tipo int
5.8.1.1 Parámetros generales
5.8.1.2 Parámetros de imagen 3D
5.8.1.4 Parámetros de imagen 2D
5.8.1.5 Parámetros de disparo
5.8.1.6 Parámetros de filtrado
5.8.2 Parámetros de tipo float
5.8.3 Parámetros de tipo bool
5.8.4 Parámetros de tipo string
5.8.5 Parámetros de tipo comando
5.8.6 Parámetros de tipo ptr
5.9 LxDeviceInfo
Función: estructura de información de los atributos del dispositivo5.10 LxIntValueInfo
Función: estructura de información de los atributos del dispositivo5.11 LxFloatValueInfo
Función: estructura de información de los atributos del dispositivo5.12 LX_DEVICE_TYPE
Función: tipo de dispositivo5.13 LX_OPEN_MODE
Función: tipo de dispositivo5.14 FrameDataInfo
Función: estructura de información para mostrar imágenes5.15 FrameInfo
Función: estructura de información del fotograma de datosReferencia de API
Los prototipos de API están definidos por los encabezados del SDK y la versión distribuida del SDK. Salvo que se indique lo contrario, LX_SUCCESS indica una llamada correcta.
6.1 Buscar, conectar y cerrar la cámara
6.1.1 DcGetDeviceList
Prototipo de la función: Función: Obtiene una lista de cámaras compatibles. Parámetros de la función:- [out]devlist Lista de cámaras encontradas
- [out]devnum Número de cámaras encontradas
6.1.2 DcOpenDevice
Prototipo de la función:
- [in]open_mode modo de apertura; consulta OpenMode para obtener más información
- [in]param métodos de apertura diferentes; completa parámetros diferentes
- [out]handle identificador del dispositivo devuelto después de una conexión correcta. Todo acceso posterior a la interfaz depende de este identificador.
- [out]info detalles de la cámara devueltos después de una conexión correcta
6.1.3 DcCloseDevice
Prototipo de la función:
- [in]handle identificador del dispositivo
6.2 Iniciar y cerrar la transmisión
6.2.1 DcStartStream
Prototipo de la función:
- [in]handle identificador del dispositivo
6.2.2 DcStopStream
Prototipo de la función:
- [in]handle identificador del dispositivo
6.3 Leer y establecer parámetros de la cámara
6.3.1 DcSetIntValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [in]value establece el valor del parámetro
6.3.2 DcGetIntValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [out]value devuelve la estructura de parámetros, los valores máximo y mínimo de los parámetros, el valor actual, etc.
6.3.3 DcSetFloatValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [in]value establece el valor del parámetro
6.3.4 DcGetFloatValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [out]value devuelve la estructura de parámetros, los valores máximo y mínimo de los parámetros, el valor actual, etc.
6.3.5 DcSetBoolValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [in]value establece el valor del parámetro
6.3.6 DcGetBoolValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [out]value devuelve los parámetros
6.3.7 DcSetStringValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [in]value establece el valor del parámetro
6.3.8 DcGetStringValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [out]value devuelve los parámetros sin asignar memoria externa
6.3.9 DcGetPtrValue
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
- [out]value devuelve los parámetros sin asignar memoria externa
6.3.10 DcSetCmd
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]cmd referencia a LX_CAMERA_FEATURE
6.4 Guardar la nube de puntos
6.4.1 DcSaveXYZ
Prototipo de la función:
- handle identificador del dispositivo
- filename nombre de archivo; admite los formatos txt, ply y pcd. El formato txt guarda todos los datos en el orden de la imagen; ply y pcd solo guardan los datos distintos de cero
6.5 Controles especiales
6.5.1 DcSpecialControl
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]param operación
- [inout]value es el parámetro de entrada correspondiente al establecerlo y el parámetro de salida correspondiente al obtenerlo, sin asignar memoria externa.
6.6 Establecer la ROI y la ruta de parámetros
6.6.1 DcSetRoI
Prototipo de la función:
- [in]handle identificador del dispositivo
- [in]offsetx desplazamiento horizontal del punto inicial en píxeles
- [in]offsety desplazamiento vertical del punto inicial en píxeles
- [in]widthroi ancho del área de destino
- [in]heightroi alto del área de destino
- [in]type0: imagen 3D; 1: imagen 2D
6.7 Establecer la IP de la cámara
6.7.1 DcSetCameraIp
Prototipo de la función: Función: Establece la IP de la cámara, la máscara de subred y la puerta de enlace. Parámetros de la función:- [in]handle identificador del dispositivo,
- [in]ip IP del dispositivo,
- [in]netmask máscara de subred (si está vacía, el valor predeterminado interno es “255.255.0.0”)
- [in]gateway IP de la puerta de enlace (si está vacía, el valor predeterminado interno establece como puerta de enlace el último segmento de red de ip en “1”)
6.8 Información de registro y de versión
6.8.1 DcGetApiVersion
Prototipo de la función:
6.8.2 DcSetInfoOutput
Prototipo de la función: Función: Establece el nivel de información que se muestra. Parámetros de la función:- [in]print_level 0: toda la información de depuración; 1: información de depuración importante y de advertencia; 2: solo muestra información de error
- [in]enable_screen_print indica si se muestra en la ventana
- [in]log_path ruta donde se guarda el archivo de registro (no incluye el nombre del archivo de registro); puede estar vacía. En Windows, la ruta predeterminada es la del usuario actual y en Linux es la ruta /var/log.
- [in]language idioma (todavía no se utiliza)
6.8.3 DcLog
Prototipo de la función:
- [in]str cadena que se va a enviar, terminada en ‘\0’
6.8.4 DcRegisterFrameCallback
Prototipo de la función: Función: Registra una función de devolución de llamada para los fotogramas de datos y la llama automáticamente cuando se reciben datos nuevos. Parámetros de la función:- [in]handle identificador del dispositivo,
- [in]func función de devolución de llamada para los datos del fotograma,
- [in]usr_data parámetros definidos por el usuario; se puede dejar vacío
6.8.5 DcUnregisterFrameCallback
Prototipo de la función:
- [in]handle identificador del dispositivo,
6.9 Devolución de llamada del estado del dispositivo
6.9.1 DcRegisterCameraStatusCallback
Prototipo de la función: Función: Registra la función de devolución de llamada del estado de la cámara, que se llama automáticamente cuando cambia el estado de la cámara. Parámetros de la función:- [in]handle identificador del dispositivo,
- [in]func función de devolución de llamada para los datos del fotograma,
- [in]usr_data parámetros definidos por el usuario; se puede dejar vacío
6.9.2 DcUnregisterCameraStatusCallback
Prototipo de la función:
- [in]handle identificador del dispositivo,