Zum Inhalt springen
Entwicklerhandbuch für

FJD Trion SLAM SDK

Schnellstart
Öffentliche Methoden
Anwendungsbeispiel
Vorsichtsmaßnahmen

Übersicht

Das SLAM SDK ist eine C++-Bibliothek zur Kommunikation mit S2/P2/P1-Geräten und bietet Funktionen wie Geräteerkennung, Kartenscannen und Daten-Download.

Namensraum

namespace fjminislam

Konstantendefinition

Portkonfiguration 

KonstantennameWertBeschreibung
BROADCAST_PORT29527Broadcast-Port des Geräts
PORT9090Geräte-Kommunikationsports

Aufzählung der Datentypen zum Herunterladen

enum DownloadDataType
{
    FJDSLAM = 1,   // Daten im FJDSLAM-Format
    PLY     = 2,   // Punktwolkendaten im PLY-Format
    PTS     = 3,   // Punktwolkendaten im PTS-Format
    LAS     = 5,   // Punktwolkendaten im LAS-Format
    FJDRTK  = 6,   // Daten im FJDRTK-Format
    RTCM    = 9,   // Daten im RTCM-Format
    INSV    = 99,  // Daten im INSV-Format
};

Gerätestruktur

struct Device
{
std::string serialno; // Seriennummer des Geräts
std::string ip; // IP-Adresse des Geräts
std::string fwversion; // Firmware-Version
};

SDK-Klasse

Konstruktor- und Destruktorfunktion

SDK(); // Standardkonstruktor
~SDK(); // Destruktor

Öffentliche Member-Variable

std::vector<fjminislam::Device> device_list; // Geräteliste

get_available_devices 

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

Funktion: Nach verfügbaren Geräten suchen

Parameter

search_time

Suchdauer, Einheit: Sekunden, Standard: 3 Sekunden

Rückgabewert : Geräteliste 

get_maplist 

json get_maplist(); 

Funktion: Informationen zur Kartenliste abrufen

Rückgabewert : Karteninformationen im JSON-Format, die die folgenden Felder enthalten: 

FeldnameTypBeschreibung
resultboolAnfrageergebnis, true bedeutet Erfolg
values.has_cameraarray<int>Ob eine Kamera vorhanden ist oder nicht, 1 bedeutet ja und 0 bedeutet nein
values.maplistarray<string>Liste der Kartennamen
values.match_statusarray<int>Ob das Scannen an einem Haltepunkt fortgesetzt werden soll, 1 bedeutet ja, 0 bedeutet nein
values.rtk_locked_percentarray<int>RTK-Sperrprozentsatz
values.slam_dis_in_marray<int>Missionskilometerstand, Einheit Meter
values.task_time_in_secarray<int>Aufgabenzeit, in Sekunden
values.vec_data_types_for_downloadarray<int>Herunterladbarer Datentyp, 1 zeigt Vorhandensein an

start_map 

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

Funktion: Scan-Aufgabe starten

Parameter

Kartenname

Benutzerdefinierter Kartenname, optional

Rückgabewert : Das Startergebnis im JSON-Format, das die folgenden Felder enthält: 

FeldnameTypBeschreibung
resultboolAnfrageergebnis, true bedeutet Erfolg
values.statusintAufgabenstatus:
0 - Mission abgebrochen
1 - Normaler Status
-1 - Initialisierung fehlgeschlagen
-2 - Gerät beschäftigt
-4 - Aufgabenverarbeitung
-6 - Insta-Kameraspeicher ist unzureichend

stop_map 

json stop_map();

Funktion: Scan-Aufgabe stoppen

Rückgabewert : Stoppergebnis im JSON-Format, das die folgenden Felder enthält: 

FeldnameTypBeschreibung
resultboolAnfrageergebnis, true bedeutet Erfolg
values.messagestringNachrichtenbeschreibung
values.successboolOb das Stoppen erfolgreich war

check_device_task 

json check_device_task(bool force_check=true); 

Funktion: Geräte-Selbstprüfung abrufen oder ausführen

Parameter

force_check

Ob die Selbstprüfung erzwungen werden soll; true bedeutet, dass nur das Ergebnis abgerufen wird, false bedeutet, dass die Selbstprüfung durchgeführt wird

Rückgabewert: Ergebnis der Selbstprüfung im JSON-Format, das die folgenden Felder enthält:

FeldnameTypBeschreibung
resultboolAnfrageergebnis, true bedeutet Erfolg
values.statusintGerätestatus:
7 - Alle Geräte sind in Ordnung
5 - LiDAR-Anomalien

download_map_data 

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

Funktion: Scandaten herunterladen

Parameter

Kartenname
  • Kartenname
Typ
  • Datentyp zum Herunterladen, siehe Aufzählung:
DownloadDataType
save_path 
  • Pfad zum Speichern der Daten, z. B.: 
/tmp/

Rückgabewert : true bedeutet erfolgreicher Download, false bedeutet fehlgeschlagener Download 

time_syn 

json time_syn();

Funktion: Zeit mit dem Scanner synchronisieren

Rückgabewert : Ergebnis der Zeitsynchronisierung im JSON-Format, enthält die folgenden Felder: 

FeldnameTypBeschreibung
resultboolAnfrageergebnis, true bedeutet Erfolg
values.left_timeintVerbleibende Zeit
values.statusboolSynchronisationsstatus, true zeigt Erfolg an

check_scanner_connection 

bool check_scanner_connection();

Funktion: Überprüfen des Verbindungsstatus des Scanners

Rückgabewert : true zeigt eine normale Verbindung an, false zeigt eine abnormale Verbindung an 

connect_device 

bool connect_device(fjminislam::Device device); 

Funktion: Verbindung mit dem angegebenen Gerät herstellen

Parameter

device

 Informationen des zu verbindenden Geräts

Rückgabewert : true zeigt eine erfolgreiche Verbindung an, false zeigt einen Verbindungsfehler an 

get_current_name 

std::string get_current_name();

Funktion: Namen des aktuell verbundenen Geräts abrufen

Rückgabewert : Gerätename 

get_version 

std::string get_version();

Funktion: SDK-Version abrufen

Rückgabewert : SDK-Versionsnummer 


Grundlegender Nutzungsablauf 

#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("kein Scanner gefunden\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("ausgewähltes Gerät, Seriennr.:%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 fehlgeschlagen\n",);
        return 2;
    }

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

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

    json start_map_result = sdk.start_map("test1");
    printf("start_map Antwort: %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 Antwort: %s\n", stop_map_result.dump().c_str());

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

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


  1. Bitte stellen Sie vor der Verwendung des SDK sicher, dass das Gerät ordnungsgemäß mit dem Netzwerk verbunden ist 

  2. Bitte halten Sie das Gerät während des Scanvorgangs stabil und vermeiden Sie plötzliche Bewegungen

  3. Bitte stellen Sie beim Herunterladen von Daten sicher, dass im Speicherpfad ausreichend Platz vorhanden ist

  4. Es wird empfohlen, den Verbindungsstatus des Geräts vor dem Aufruf der API zu überprüfen 


Grundlegender Nutzungsablauf 

#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("kein Scanner gefunden\n");
        return 1;
    }
    selected_scanner = devices_list[0];
    printf("ausgewähltes Gerät, Seriennr.:%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 fehlgeschlagen\n",);
        return 2;
    }

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

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

    json start_map_result = sdk.start_map("test1");
    printf("start_map Antwort: %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 Antwort: %s\n", stop_map_result.dump().c_str());

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

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

FJD Trion S1 Roboterhund-Halterung

Angetrieben von einem führenden SLAM-Algorithmus erstellt der S1 Ihre Realität während des Scannens, damit Ihnen kein Detail entgeht.
Produktbild

FJD Trion S1 Roboterhund-Halterung

Angetrieben von einem führenden SLAM-Algorithmus erstellt der S1 Ihre Realität während des Scannens, damit Ihnen kein Detail entgeht.
Produktbild

Datenstruktur

Gerätestruktur

struct Device
{
std::string serialno; // Geräteseriennummer
std::string ip; // Geräte-IP
addressstd::string fwversion; // Firmware-Version
};

SDK-Klasse

Konstruktor

Konstruktor- und Destruktorfunktion

Öffentliche Member-Variable

D

  1. Bitte stellen Sie vor der Verwendung des SDK sicher, dass das Gerät ordnungsgemäß mit dem Netzwerk verbunden ist 

  2. Bitte halten Sie das Gerät während des Scanvorgangs stabil und vermeiden Sie plötzliche Bewegungen

  3. Bitte stellen Sie beim Herunterladen von Daten sicher, dass im Speicherpfad ausreichend Speicherplatz vorhanden ist

  4. Es wird empfohlen, den Verbindungsstatus des Geräts zu überprüfen, bevor die API aufgerufen wird 

Mehr lesen

So schneiden und trimmen Sie 3DGS-Daten zu

Tutorial zu den Funktionen des FJD Trion Modells

Mehr lesen

So verwenden Sie die automatische Baumartenidentifizierung

Tutorial zu den Funktionen des FJD Trion Modells

Mehr lesen

So erstellen Sie 3D Gaussian Splatting

Tutorial zu den Funktionen des FJD Trion Modells

Mehr lesen

So verwenden Sie die HyperDense+-Funktion

Tutorial zu den Funktionen des FJD Trion Modells

Mehr lesen

So verwenden Sie neue Zeichenwerkzeuge

Tutorial zu den Funktionen des FJD Trion Modells

Mehr lesen

So verwenden Sie Rektifizierungswerkzeuge

Tutorial zu den Funktionen des FJD Trion Modells

Erweitern

FJD Trion S1 Roboterhund-Halterung

Angetrieben von einem führenden SLAM-Algorithmus erstellt der S1 Ihre Realität während des Scannens, damit Ihnen kein Detail entgeht.
Produktbild

FJD Trion S1 Roboterhund-Halterung

Angetrieben von einem führenden SLAM-Algorithmus erstellt der S1 Ihre Realität während des Scannens, damit Ihnen kein Detail entgeht.
Produktbild
FJD Trion SLAM SDK