Saltar al contenido
Guía para desarrolladores de

SDK SLAM de FJD Trion

Inicio rápido
Métodos públicos
Ejemplo de uso
Precauciones

Descripción general

SLAM SDK es una biblioteca de C++ para comunicarse con dispositivos S2/P2/P1, que proporciona funciones como descubrimiento de dispositivos, escaneo de mapas y descarga de datos.

Espacio de nombres

namespace fjminislam

Definición de constantes

Configuración del puerto 

Nombre de la constanteValorDescripción
BROADCAST_PORT29527Puerto de difusión del dispositivo
PORT9090Puertos de comunicación del dispositivo

Descargar enumeración de tipos de datos

enum DownloadDataType
{
    FJDSLAM = 1,   // Datos en formato FJDSLAM
    PLY     = 2,   // Datos de nube de puntos en formato PLY
    PTS     = 3,   // Datos de nube de puntos en formato PTS
    LAS     = 5,   // Datos de nube de puntos en formato LAS
    FJDRTK  = 6,   // Datos en formato FJDRTK
    RTCM    = 9,   // Datos en formato RTCM
    INSV    = 99,  // Datos en formato INSV
};

Estructura del dispositivo

struct Device
{
std::string serialno; // Número de serie del dispositivo
std::string ip; // Dirección IP del dispositivo
std::string fwversion; // Versión del firmware
};

Clase SDK

Función de constructor y destructor

SDK(); // Constructor predeterminado
~SDK(); // Destructor

Variable miembro pública

std::vector<fjminislam::Device> device_list; // Lista de dispositivos

get_available_devices 

std::vector<fjminislam::Device> get_available_devices(int search_time=3);

Función: Buscar dispositivos disponibles

Parámetro

search_time

Duración de la búsqueda, unidad: segundos, valor predeterminado: 3 segundos

Valor de retorno : Lista de dispositivos 

get_maplist 

json get_maplist(); 

Función: Obtener información de la lista de mapas

Valor de retorno : Información del mapa en formato JSON, que contiene los siguientes campos: 

Nombre del campoTipoDescripción
resultadoboolResultado de la solicitud, true indica éxito
values.has_cameraarray<int>Con o sin cámara, 1 significa sí y 0 significa no
values.maplistarray<string>Lista de nombres de mapas
values.match_statusarray<int>Si se continúa el escaneo desde un punto de interrupción, 1 significa sí, 0 significa no
values.rtk_locked_percentarray<int>Porcentaje de bloqueo RTK
values.slam_dis_in_marray<int>Kilometraje de la misión, unidad metros
values.task_time_in_secarray<int>Tiempo de la tarea, en segundos
values.vec_data_types_for_downloadarray<int>Tipo de datos descargable, 1 indica existencia

start_map 

json start_map(std::string mapname="");

Función: Iniciar tarea de escaneo

Parámetro

nombre_mapa

Nombre de mapa personalizado, opcional

Valor de retorno : El resultado del inicio en formato JSON, que contiene los siguientes campos: 

Nombre del campoTipoDescripción
resultadoboolResultado de la solicitud, true indica éxito
values.statusintEstado de la tarea:
0 - Misión abortada
1 - Estado normal
-1 - Error de inicialización
-2 - Equipo ocupado
-4 - Tarea en procesamiento
-6 - El almacenamiento de la cámara Insta es insuficiente

stop_map 

json stop_map();

Función: Detener la tarea de escaneo

Valor de retorno : Resultado de la detención en formato JSON, que contiene los siguientes campos: 

Nombre del campoTipoDescripción
resultadoboolResultado de la solicitud, true indica éxito
values.messagestringDescripción del mensaje
values.successboolSi la detención se realizó correctamente

check_device_task 

json check_device_task(bool force_check=true); 

Función: Obtener o ejecutar la autocomprobación del dispositivo

Parámetro

force_check

Si se debe forzar la autocomprobación; true indica solo obtener el resultado y false indica realizar la autocomprobación

Valor de retorno: Resultado de la autocomprobación en formato JSON, que contiene los siguientes campos:

Nombre del campoTipoDescripción
resultadoboolResultado de la solicitud, true indica éxito
values.statusintEstado del dispositivo:
7 - Todos los dispositivos están bien
5 - Anomalías en el LiDAR

download_map_data 

bool download_map_data(std::string mapname, fjminislam::DownloadDataType type, std::string save_path);

Función: Descargar datos de escaneo

Parámetros

nombre_mapa
  • Nombre del mapa
tipo
  • Tipo de datos de descarga, consulte la enumeración:
TipoDeDatosDeDescarga
ruta_guardado 
  • Ruta de guardado de datos, p. ej.: 
/tmp/

Valor de retorno : true indica una descarga correcta, false indica un fallo en la descarga 

sincronización_hora 

json sincronización_hora();

Función: Sincronizar la hora con el escáner

Valor de retorno : Resultado de la sincronización de hora en formato JSON, que contiene los siguientes campos: 

Nombre del campoTipoDescripción
resultadoboolResultado de la solicitud, true indica éxito
values.left_timeintTiempo restante
values.statusboolEstado de sincronización, true indica éxito

check_scanner_connection 

bool check_scanner_connection();

Función: Comprobar el estado de conexión del escáner

Valor de retorno : true indica una conexión normal, false indica una conexión anómala 

connect_device 

bool connect_device(fjminislam::Device device); 

Función: Conectar al dispositivo especificado

Parámetro

device

 Información del dispositivo que se va a conectar

Valor de retorno : true indica conexión correcta, false indica fallo de conexión 

get_current_name 

std::string get_current_name();

Función: Obtener el nombre del dispositivo conectado actualmente

Valor de retorno : Nombre del dispositivo 

get_version 

std::string get_version();

Función: Obtener la versión del SDK

Valor de retorno : Número de versión del SDK 


Proceso básico de uso 

#include "fjminislam_sdk.h"

int main() {
    fjminislam::SDK sdk = fjminislam::SDK();
    sdk.get_version();
    fjminislam::Device selected_scanner;
    std::vector<fjminislam::Device> devices_list = sdk.get_available_devices();
    if (devices_list.size() == 0) {
        printf("no scanner found\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("selectd device,serialno:%s ip:%s\n",selected_scanner.serialno.c_str(), selected_scanner.ip.c_str());

    std::string sdk_version = sdk.get_version();
    printf("sdk_version: %s\n", sdk_version.c_str());

    if (!sdk.connect_device(selected_scanner)) {
        printf("connect_device failed\n",);
        return 2;
    }

    if (!sdk.check_scanner_connection()) {
        printf("check_scanner_connection failed\n");
        return 3;
    }

    json time_syn_result = sdk.time_syn();
    printf("time_syn response: %s\n", time_syn_result.dump().c_str());

    json start_map_result = sdk.start_map("test1");
    printf("start_map response: %s\n", start_map_result.dump().c_str());
    
#ifdef _WIN32
    Sleep(30);
#else
    sleep(30);
#endif
    std::string cur_name = sdk.get_current_name();
    printf("cur_name: %s\n", cur_name.c_str());

    json stop_map_result = sdk.stop_map();
    printf("stop_map response: %s\n", stop_map_result.dump().c_str());

    json get_maplist_result = sdk.get_maplist();
    printf("get_maplist response: %s\n", get_maplist_result.dump().c_str());

    bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
    printf("download_map_data response: %d\n", download_result);
    return 0;
}


  1. Antes de usar el SDK, asegúrese de que el dispositivo esté correctamente conectado a la red 

  2. Mantenga el dispositivo estable durante el proceso de escaneo y evite movimientos bruscos

  3. Asegúrese de que haya suficiente espacio en la ruta de almacenamiento al descargar datos

  4. Se recomienda comprobar el estado de conexión del dispositivo antes de llamar a la API 


Proceso básico de uso 

#include "fjminislam_sdk.h"

int main() {
    fjminislam::SDK sdk = fjminislam::SDK();
    sdk.get_version();
    fjminislam::Device selected_scanner;
    std::vector<fjminislam::Device> devices_list = sdk.get_available_devices();
    if (devices_list.size() == 0) {
        printf("no scanner found\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("selectd device,serialno:%s ip:%s\n",selected_scanner.serialno.c_str(), selected_scanner.ip.c_str());

    std::string sdk_version = sdk.get_version();
    printf("sdk_version: %s\n", sdk_version.c_str());

    if (!sdk.connect_device(selected_scanner)) {
        printf("connect_device failed\n",);
        return 2;
    }

    if (!sdk.check_scanner_connection()) {
        printf("check_scanner_connection failed\n");
        return 3;
    }

    json time_syn_result = sdk.time_syn();
    printf("time_syn response: %s\n", time_syn_result.dump().c_str());

    json start_map_result = sdk.start_map("test1");
    printf("start_map response: %s\n", start_map_result.dump().c_str());
    
#ifdef _WIN32
    Sleep(30);
#else
    sleep(30);
#endif
    std::string cur_name = sdk.get_current_name();
    printf("cur_name: %s\n", cur_name.c_str());

    json stop_map_result = sdk.stop_map();
    printf("stop_map response: %s\n", stop_map_result.dump().c_str());

    json get_maplist_result = sdk.get_maplist();
    printf("get_maplist response: %s\n", get_maplist_result.dump().c_str());

    bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
    printf("download_map_data response: %d\n", download_result);
    return 0;
}

Soporte para perro robot FJD Trion S1

Impulsado por un algoritmo SLAM líder, el S1 construye tu realidad mientras escaneas, para que no te pierdas ningún detalle.
Imagen del producto

Soporte para perro robot FJD Trion S1

Impulsado por un algoritmo SLAM líder, el S1 construye tu realidad mientras escaneas, para que no te pierdas ningún detalle.
Imagen del producto

Estructura de datos

Estructura del dispositivo

struct Device
{
std::string serialno; // Número de serie del dispositivo
std::string ip; // IP del dispositivo
addressstd::string fwversion; // Versión del firmware
};

Clase SDK

Constructor

Función de constructor y destructor

Variable miembro pública

D

  1. Antes de usar el SDK, asegúrese de que el dispositivo esté correctamente conectado a la red 

  2. Mantenga el dispositivo estable durante el proceso de escaneo y evite movimientos bruscos

  3. Asegúrese de que haya suficiente espacio en la ruta de almacenamiento al descargar datos

  4. Se recomienda comprobar el estado de conexión del dispositivo antes de llamar a la API 

Leer más

Cómo recortar y ajustar datos 3DGS

Tutorial de las funciones del modelo FJD Trion

Leer más

Cómo usar la identificación automática de especies de árboles

Tutorial de las funciones del modelo FJD Trion

Leer más

Cómo crear Gaussian Splatting 3D

Tutorial de las funciones del modelo FJD Trion

Leer más

Cómo usar la función HyperDense+

Tutorial de las funciones del modelo FJD Trion

Leer más

Cómo usar las nuevas herramientas de dibujo

Tutorial de las funciones del modelo FJD Trion

Leer más

Cómo usar las herramientas de rectificación

Tutorial de las funciones del modelo FJD Trion

Ampliar

Soporte para perro robot FJD Trion S1

Impulsado por un algoritmo SLAM líder, el S1 construye tu realidad mientras escaneas, para que no te pierdas ningún detalle.
Imagen del producto

Soporte para perro robot FJD Trion S1

Impulsado por un algoritmo SLAM líder, el S1 construye tu realidad mientras escaneas, para que no te pierdas ningún detalle.
Imagen del producto
SDK SLAM de FJD Trion