Aller au contenu
Guide du développeur pour

SDK SLAM FJD Trion

Démarrage rapide
Méthodes publiques
Exemple d'utilisation
Précautions

Aperçu

SLAM SDK est une bibliothèque C++ permettant de communiquer avec les appareils S2/P2/P1, offrant des fonctions telles que la découverte des appareils, la numérisation de cartes et le téléchargement de données.

Espace de noms

namespace fjminislam

Définition des constantes

Configuration du port 

Nom de la constanteValeurDescription
BROADCAST_PORT29527Port de diffusion de l'appareil
PORT9090Ports de communication de l'appareil

Télécharger l'énumération des types de données

enum DownloadDataType
{
    FJDSLAM = 1,   // données au format FJDSLAM
    PLY     = 2,   // données de nuage de points au format PLY
    PTS     = 3,   // données de nuage de points au format PTS
    LAS     = 5,   // données de nuage de points au format LAS
    FJDRTK  = 6,   // données au format FJDRTK
    RTCM    = 9,   // données au format RTCM
    INSV    = 99,  // données au format INSV
};

Structure de l'appareil

struct Device
{
std::string serialno; // Numéro de série de l'appareil
std::string ip; // Adresse IP de l'appareil
std::string fwversion; // Version du firmware
};

Classe SDK

Fonction constructeur et destructeur

SDK(); // Constructeur par défaut
~SDK(); // Destructeur

Variable membre publique

std::vector<fjminislam::Device> device_list; // Liste des appareils

get_available_devices 

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

Fonction : Rechercher les appareils disponibles

Paramètre

search_time

Durée de recherche, unité : secondes, par défaut : 3 secondes

Valeur de retour  : Liste des appareils 

get_maplist 

json get_maplist(); 

Fonction : Obtenir les informations de la liste des cartes

Valeur de retour  : Informations de carte au format JSON, contenant les champs suivants : 

Nom du champTypeDescription
resultboolRésultat de la requête, true indique le succès
values.has_cameraarray<int>Avec ou sans caméra, 1 signifie oui et 0 signifie non
values.maplistarray<string>Liste des noms de carte
values.match_statusarray<int>Indique s'il faut continuer le balayage à partir d'un point d'arrêt, 1 signifie oui, 0 signifie non
values.rtk_locked_percentarray<int>Pourcentage de verrouillage RTK
values.slam_dis_in_marray<int>Kilométrage de mission, unité : mètres
values.task_time_in_secarray<int>Durée de la tâche, en secondes
values.vec_data_types_for_downloadarray<int>Type de données téléchargeables, 1 indique l'existence

start_map 

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

Fonction : Démarrer la tâche de numérisation

Paramètre

nom_carte

Nom de carte personnalisé, facultatif

Valeur de retour  : Le résultat du démarrage au format JSON, contenant les champs suivants : 

Nom du champTypeDescription
resultboolRésultat de la requête, true indique le succès
values.statusintStatut de la tâche :
0 - Mission annulée
1 - Statut normal
-1 - Échec de l'initialisation
-2 - Équipement occupé
-4 - Traitement de la tâche
-6 - Le stockage de la caméra Insta est insuffisant

stop_map 

json stop_map();

Fonction : Arrêter la tâche de numérisation

Valeur de retour  : Résultat de l'arrêt au format JSON, contenant les champs suivants : 

Nom du champTypeDescription
resultboolRésultat de la requête, true indique le succès
values.messagestringDescription du message
values.successboolSi l'arrêt a réussi

check_device_task 

json check_device_task(bool force_check=true); 

Fonction : Obtenir ou exécuter l'auto-vérification de l'appareil

Paramètre

force_check

Indique s'il faut forcer l'auto-vérification, true signifie uniquement obtenir le résultat, false signifie effectuer l'auto-vérification

Valeur de retour : Résultat de l'auto-vérification au format JSON, contenant les champs suivants :

Nom du champTypeDescription
resultboolRésultat de la requête, true indique le succès
values.statusintÉtat de l'appareil :
7 - Tous les appareils fonctionnent correctement
5 - Anomalies LiDAR

download_map_data 

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

Fonction : Télécharger les données de scan

Paramètres

nom_carte
  • Nom de la carte
type
  • Type de données à télécharger, voir l’énumération :
DownloadDataType
save_path 
  • Chemin d’enregistrement des données, par ex. : 
/tmp/

Valeur de retour : true indique un téléchargement réussi, false indique un échec du téléchargement 

time_syn 

json time_syn();

Fonction : Synchroniser l’heure avec le scanner

Valeur de retour  : Résultat de la synchronisation de l’heure au format JSON, contenant les champs suivants : 

Nom du champTypeDescription
resultboolRésultat de la requête, true indique le succès
values.left_timeintTemps restant
values.statusboolStatut de synchronisation, true indique le succès

check_scanner_connection 

bool check_scanner_connection();

Fonction : Vérifier l'état de connexion du scanner

Valeur de retour  : true indique une connexion normale, false indique une connexion anormale 

connect_device 

bool connect_device(fjminislam::Device device); 

Fonction : Se connecter à l'appareil spécifié

Paramètre

device

 Informations sur l'appareil à connecter

Valeur de retour  : true indique une connexion réussie, false indique un échec de connexion 

get_current_name 

std::string get_current_name();

Fonction : Obtenir le nom de l'appareil actuellement connecté

Valeur de retour  : Nom de l'appareil 

get_version 

std::string get_version();

Fonction : Obtenir la version du SDK

Valeur de retour  : Numéro de version du SDK 


Processus d'utilisation de base 

#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("aucun scanner trouvé\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("appareil sélectionné, numéro de série : %s ip : %s\n",selected_scanner.serialno.c_str(), selected_scanner.ip.c_str());

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

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

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

    json time_syn_result = sdk.time_syn();
    printf("réponse de time_syn : %s\n", time_syn_result.dump().c_str());

    json start_map_result = sdk.start_map("test1");
    printf("réponse de start_map : %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("nom_actuel : %s\n", cur_name.c_str());

    json stop_map_result = sdk.stop_map();
    printf("réponse de stop_map : %s\n", stop_map_result.dump().c_str());

    json get_maplist_result = sdk.get_maplist();
    printf("réponse de get_maplist : %s\n", get_maplist_result.dump().c_str());

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


  1. Avant d'utiliser le SDK, veuillez vous assurer que l'appareil est correctement connecté au réseau 

  2. Veuillez maintenir l'appareil stable pendant le processus de numérisation et éviter les mouvements brusques

  3. Veuillez vous assurer qu'il y a suffisamment d'espace dans le chemin de stockage lors du téléchargement des données

  4. Il est recommandé de vérifier l'état de connexion de l'appareil avant d'appeler l'API 


Processus d'utilisation de base 

#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("aucun scanner trouvé\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("appareil sélectionné, numéro de série : %s ip : %s\n",selected_scanner.serialno.c_str(), selected_scanner.ip.c_str());

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

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

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

    json time_syn_result = sdk.time_syn();
    printf("réponse de time_syn : %s\n", time_syn_result.dump().c_str());

    json start_map_result = sdk.start_map("test1");
    printf("réponse de start_map : %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("nom_actuel : %s\n", cur_name.c_str());

    json stop_map_result = sdk.stop_map();
    printf("réponse de stop_map : %s\n", stop_map_result.dump().c_str());

    json get_maplist_result = sdk.get_maplist();
    printf("réponse de get_maplist : %s\n", get_maplist_result.dump().c_str());

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

Support pour robot-chien FJD Trion S1

Grâce à un algorithme SLAM de pointe, le S1 construit votre réalité pendant la numérisation, afin que vous ne manquiez aucun détail.
Image du produit

Support pour robot-chien FJD Trion S1

Grâce à un algorithme SLAM de pointe, le S1 construit votre réalité pendant la numérisation, afin que vous ne manquiez aucun détail.
Image du produit

Structure des données

Structure de l'appareil

struct Device
{
std::string serialno; // Numéro de série de l'appareil
std::string ip; // Adresse IP de l'appareil
addressstd::string fwversion; // Version du firmware
};

Classe SDK

Constructeur

Fonction constructeur et destructeur

Variable membre publique

D

  1. Avant d'utiliser le SDK, veuillez vous assurer que l'appareil est correctement connecté au réseau 

  2. Veuillez maintenir l'appareil stable pendant le processus de numérisation et éviter les mouvements brusques

  3. Veuillez vous assurer qu'il y a suffisamment d'espace dans le chemin de stockage lors du téléchargement des données

  4. Il est recommandé de vérifier l'état de connexion de l'appareil avant d'appeler l'API 

En savoir plus

Comment recadrer et rogner des données 3DGS

Tutoriel des fonctionnalités du modèle FJD Trion

En savoir plus

Comment utiliser l'identification automatique des essences d'arbres

Tutoriel des fonctionnalités du modèle FJD Trion

En savoir plus

Comment créer un Gaussian Splatting 3D

Tutoriel des fonctionnalités du modèle FJD Trion

En savoir plus

Comment utiliser la fonction HyperDense+

Tutoriel des fonctionnalités du modèle FJD Trion

En savoir plus

Comment utiliser les nouveaux outils de dessin

Tutoriel des fonctionnalités du modèle FJD Trion

En savoir plus

Comment utiliser les outils de rectification

Tutoriel des fonctionnalités du modèle FJD Trion

Développer

Support pour robot-chien FJD Trion S1

Grâce à un algorithme SLAM de pointe, le S1 construit votre réalité pendant la numérisation, afin que vous ne manquiez aucun détail.
Image du produit

Support pour robot-chien FJD Trion S1

Grâce à un algorithme SLAM de pointe, le S1 construit votre réalité pendant la numérisation, afin que vous ne manquiez aucun détail.
Image du produit
SDK SLAM FJD Trion