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 constante | Valeur | Description |
| BROADCAST_PORT | 29527 | Port de diffusion de l'appareil |
| PORT | 9090 | Ports 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 champ | Type | Description |
| result | bool | Résultat de la requête, true indique le succès |
| values.has_camera | array<int> | Avec ou sans caméra, 1 signifie oui et 0 signifie non |
| values.maplist | array<string> | Liste des noms de carte |
| values.match_status | array<int> | Indique s'il faut continuer le balayage à partir d'un point d'arrêt, 1 signifie oui, 0 signifie non |
| values.rtk_locked_percent | array<int> | Pourcentage de verrouillage RTK |
| values.slam_dis_in_m | array<int> | Kilométrage de mission, unité : mètres |
| values.task_time_in_sec | array<int> | Durée de la tâche, en secondes |
| values.vec_data_types_for_download | array<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 champ | Type | Description |
| result | bool | Résultat de la requête, true indique le succès |
| values.status | int | Statut 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 champ | Type | Description |
| result | bool | Résultat de la requête, true indique le succès |
| values.message | string | Description du message |
| values.success | bool | Si 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 champ | Type | Description |
| result | bool | Résultat de la requête, true indique le succès |
| values.status | int | É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 champ | Type | Description |
| result | bool | Résultat de la requête, true indique le succès |
| values.left_time | int | Temps restant |
| values.status | bool | Statut 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;
}Avant d'utiliser le SDK, veuillez vous assurer que l'appareil est correctement connecté au réseau
Veuillez maintenir l'appareil stable pendant le processus de numérisation et éviter les mouvements brusques
Veuillez vous assurer qu'il y a suffisamment d'espace dans le chemin de stockage lors du téléchargement des données
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
Support pour robot-chien FJD Trion S1
Téléchargement du package SDK
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
Avant d'utiliser le SDK, veuillez vous assurer que l'appareil est correctement connecté au réseau
Veuillez maintenir l'appareil stable pendant le processus de numérisation et éviter les mouvements brusques
Veuillez vous assurer qu'il y a suffisamment d'espace dans le chemin de stockage lors du téléchargement des données
Il est recommandé de vérifier l'état de connexion de l'appareil avant d'appeler l'API
Comment recadrer et rogner des données 3DGS
Tutoriel des fonctionnalités du modèle FJD Trion
Comment utiliser l'identification automatique des essences d'arbres
Tutoriel des fonctionnalités du modèle FJD Trion
Comment créer un Gaussian Splatting 3D
Tutoriel des fonctionnalités du modèle FJD Trion
Comment utiliser la fonction HyperDense+
Tutoriel des fonctionnalités du modèle FJD Trion
Comment utiliser les nouveaux outils de dessin
Tutoriel des fonctionnalités du modèle FJD Trion
Comment utiliser les outils de rectification
Tutoriel des fonctionnalités du modèle FJD Trion