Panoramica
SLAM SDK è una libreria C++ per comunicare con i dispositivi S2/P2/P1, che fornisce funzioni come il rilevamento dei dispositivi, la scansione delle mappe e il download dei dati.
Namespace
namespace fjminislam
Definizione delle costanti
Configurazione della porta
| Nome della costante | Valore | Descrizione |
| BROADCAST_PORT | 29527 | Porta di broadcast del dispositivo |
| PORT | 9090 | Porte di comunicazione del dispositivo |
Scarica enumerazione del tipo di dati
enum DownloadDataType
{
FJDSLAM = 1, // Dati in formato FJDSLAM
PLY = 2, // Dati nuvola di punti in formato PLY
PTS = 3, // Dati nuvola di punti in formato PTS
LAS = 5, // Dati nuvola di punti in formato LAS
FJDRTK = 6, // Dati in formato FJDRTK
RTCM = 9, // Dati in formato RTCM
INSV = 99, // Dati in formato INSV
};Struttura del dispositivo
struct Device
{
std::string serialno; // Numero di serie del dispositivo
std::string ip; // Indirizzo IP del dispositivo
std::string fwversion; // Versione del firmware
};
Classe SDK
Funzione costruttore e distruttore
SDK(); // Costruttore predefinito
~SDK(); // Distruttore
Variabile membro pubblica
std::vector<fjminislam::Device> device_list; // Elenco dei dispositivi
get_available_devices
std::vector<fjminislam::Device> get_available_devices(int search_time=3);
Funzione: Cerca i dispositivi disponibili
Parametro:
search_time
Durata della ricerca, unità: secondi, predefinito: 3 secondi
Valore restituito : Elenco dei dispositivi
get_maplist
json get_maplist();
Funzione: Ottieni le informazioni dell'elenco delle mappe
Valore restituito : Informazioni sulla mappa in formato JSON, contenenti i seguenti campi:
| Nome campo | Tipo | Descrizione |
| result | bool | Risultato della richiesta, true indica successo |
| values.has_camera | array<int> | Con o senza fotocamera, 1 significa sì e 0 significa no |
| values.maplist | array<string> | Elenco dei nomi delle mappe |
| values.match_status | array<int> | Se continuare la scansione da un punto di interruzione, 1 significa sì, 0 significa no |
| values.rtk_locked_percent | array<int> | Percentuale di blocco RTK |
| values.slam_dis_in_m | array<int> | Chilometraggio della missione, unità metri |
| values.task_time_in_sec | array<int> | Tempo dell'attività, in secondi |
| values.vec_data_types_for_download | array<int> | Tipo di dati scaricabile, 1 indica l'esistenza |
start_map
json start_map(std::string mapname="");
Funzione: Avvia l'attività di scansione
Parametro:
nomemappa
Nome mappa personalizzato, facoltativo
Valore di ritorno : Il risultato di avvio in formato JSON, contenente i seguenti campi:
| Nome campo | Tipo | Descrizione |
| result | bool | Risultato della richiesta, true indica successo |
| values.status | int | Stato dell'attività: 0 - Missione interrotta 1 - Stato normale -1 - Inizializzazione non riuscita -2 - Apparecchiatura occupata -4 - Elaborazione dell'attività -6 - Lo spazio di archiviazione della fotocamera Insta è insufficiente |
stop_map
json stop_map();
Funzione: Interrompe l'attività di scansione
Valore restituito : Risultato dell'interruzione in formato JSON, contenente i seguenti campi:
| Nome campo | Tipo | Descrizione |
| result | bool | Risultato della richiesta, true indica successo |
| values.message | string | Descrizione del messaggio |
| values.success | bool | Se l'interruzione è andata a buon fine |
check_device_task
json check_device_task(bool force_check=true);
Funzione: Ottenere o eseguire l'autocontrollo del dispositivo
Parametro:
force_check
Se forzare l'autocontrollo, true indica solo l'ottenimento del risultato, false indica l'esecuzione dell'autocontrollo
Valore di ritorno: Risultato dell'autocontrollo in formato JSON, contenente i seguenti campi:
| Nome campo | Tipo | Descrizione |
| result | bool | Risultato della richiesta, true indica successo |
| values.status | int | Stato del dispositivo: 7 - Tutti i dispositivi sono in buone condizioni 5 - Anomalie del LiDAR |
download_map_data
bool download_map_data(std::string mapname, fjminislam::DownloadDataType type, std::string save_path);
Funzione: Scarica i dati di scansione
Parametri:
nomemappa
- Nome mappa
tipo
- Tipo di dati da scaricare, vedi enumerazione:
DownloadDataType
percorso_salvataggio
- Percorso di salvataggio dei dati, ad es.:
/tmp/
Valore restituito : true indica download riuscito, false indica download non riuscito
time_syn
json time_syn();
Funzione: Sincronizza l'ora con lo scanner
Valore restituito : Risultato della sincronizzazione dell'ora in formato JSON, contenente i seguenti campi:
| Nome campo | Tipo | Descrizione |
| result | bool | Risultato della richiesta, true indica successo |
| values.left_time | int | Tempo rimanente |
| values.status | bool | Stato della sincronizzazione, true indica successo |
check_scanner_connection
bool check_scanner_connection();
Funzione: Controlla lo stato della connessione dello scanner
Valore di ritorno : true indica una connessione normale, false indica una connessione anomala
connect_device
bool connect_device(fjminislam::Device device);
Funzione: Connette al dispositivo specificato
Parametro:
device
Informazioni del dispositivo da connettere
Valore di ritorno : true indica una connessione riuscita, false indica un errore di connessione
get_current_name
std::string get_current_name();
Funzione: Ottiene il nome del dispositivo attualmente connesso
Valore di ritorno : Nome del dispositivo
get_version
std::string get_version();
Funzione: Ottieni la versione SDK
Valore restituito : Numero di versione dell'SDK
Procedura di utilizzo di 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("nessuno scanner trovato\n");
return 1;
}
selected_scanner = devices_list[0];
printf("dispositivo selezionato, 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 non riuscito\n",);
return 2;
}
if (!sdk.check_scanner_connection()) {
printf("check_scanner_connection non riuscito\n");
return 3;
}
json time_syn_result = sdk.time_syn();
printf("risposta time_syn: %s\n", time_syn_result.dump().c_str());
json start_map_result = sdk.start_map("test1");
printf("risposta 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("cur_name: %s\n", cur_name.c_str());
json stop_map_result = sdk.stop_map();
printf("risposta stop_map: %s\n", stop_map_result.dump().c_str());
json get_maplist_result = sdk.get_maplist();
printf("risposta get_maplist: %s\n", get_maplist_result.dump().c_str());
bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
printf("risposta download_map_data: %d\n", download_result);
return 0;
}Prima di utilizzare l'SDK, assicurarsi che il dispositivo sia correttamente connesso alla rete
Mantenere il dispositivo stabile durante il processo di scansione ed evitare movimenti improvvisi
Assicurarsi che ci sia spazio sufficiente nel percorso di archiviazione durante il download dei dati
Si consiglia di controllare lo stato della connessione del dispositivo prima di chiamare l'API
Procedura di utilizzo di 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("nessuno scanner trovato\n");
return 1;
}
selected_scanner = devices_list[0];
printf("dispositivo selezionato, 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 non riuscito\n",);
return 2;
}
if (!sdk.check_scanner_connection()) {
printf("check_scanner_connection non riuscito\n");
return 3;
}
json time_syn_result = sdk.time_syn();
printf("risposta time_syn: %s\n", time_syn_result.dump().c_str());
json start_map_result = sdk.start_map("test1");
printf("risposta 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("cur_name: %s\n", cur_name.c_str());
json stop_map_result = sdk.stop_map();
printf("risposta stop_map: %s\n", stop_map_result.dump().c_str());
json get_maplist_result = sdk.get_maplist();
printf("risposta get_maplist: %s\n", get_maplist_result.dump().c_str());
bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
printf("risposta download_map_data: %d\n", download_result);
return 0;
}Supporto per robot cane FJD Trion S1
Supporto per robot cane FJD Trion S1
Download del pacchetto SDK
Struttura dei dati
Struttura del dispositivo
struct Device
{
std::string serialno; // Numero di serie del dispositivo
std::string ip; // IP del dispositivo
addressstd::string fwversion; // Versione del firmware
};
Classe SDK
Costruttore
Funzione costruttore e distruttore
Variabile membro pubblica
D
Prima di utilizzare l'SDK, assicurarsi che il dispositivo sia correttamente connesso alla rete
Mantenere il dispositivo stabile durante il processo di scansione ed evitare movimenti improvvisi
Assicurarsi che ci sia spazio sufficiente nel percorso di archiviazione durante il download dei dati
Si consiglia di controllare lo stato della connessione del dispositivo prima di chiamare l'API
Come ritagliare e rifinire i dati 3DGS
Tutorial sulle funzionalità del modello FJD Trion
Come utilizzare l'identificazione automatica delle specie arboree
Tutorial sulle funzionalità del modello FJD Trion
Come creare Gaussian Splatting 3D
Tutorial sulle funzionalità del modello FJD Trion
Come utilizzare la funzione HyperDense+
Tutorial sulle funzionalità del modello FJD Trion
Come utilizzare i nuovi strumenti di disegno
Tutorial sulle funzionalità del modello FJD Trion
Come utilizzare gli strumenti di rettifica
Tutorial sulle funzionalità del modello FJD Trion