Ü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
| Konstantenname | Wert | Beschreibung |
| BROADCAST_PORT | 29527 | Broadcast-Port des Geräts |
| PORT | 9090 | Gerä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:
| Feldname | Typ | Beschreibung |
| result | bool | Anfrageergebnis, true bedeutet Erfolg |
| values.has_camera | array<int> | Ob eine Kamera vorhanden ist oder nicht, 1 bedeutet ja und 0 bedeutet nein |
| values.maplist | array<string> | Liste der Kartennamen |
| values.match_status | array<int> | Ob das Scannen an einem Haltepunkt fortgesetzt werden soll, 1 bedeutet ja, 0 bedeutet nein |
| values.rtk_locked_percent | array<int> | RTK-Sperrprozentsatz |
| values.slam_dis_in_m | array<int> | Missionskilometerstand, Einheit Meter |
| values.task_time_in_sec | array<int> | Aufgabenzeit, in Sekunden |
| values.vec_data_types_for_download | array<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:
| Feldname | Typ | Beschreibung |
| result | bool | Anfrageergebnis, true bedeutet Erfolg |
| values.status | int | Aufgabenstatus: 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:
| Feldname | Typ | Beschreibung |
| result | bool | Anfrageergebnis, true bedeutet Erfolg |
| values.message | string | Nachrichtenbeschreibung |
| values.success | bool | Ob 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:
| Feldname | Typ | Beschreibung |
| result | bool | Anfrageergebnis, true bedeutet Erfolg |
| values.status | int | Gerä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:
| Feldname | Typ | Beschreibung |
| result | bool | Anfrageergebnis, true bedeutet Erfolg |
| values.left_time | int | Verbleibende Zeit |
| values.status | bool | Synchronisationsstatus, 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;
}Bitte stellen Sie vor der Verwendung des SDK sicher, dass das Gerät ordnungsgemäß mit dem Netzwerk verbunden ist
Bitte halten Sie das Gerät während des Scanvorgangs stabil und vermeiden Sie plötzliche Bewegungen
Bitte stellen Sie beim Herunterladen von Daten sicher, dass im Speicherpfad ausreichend Platz vorhanden ist
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
FJD Trion S1 Roboterhund-Halterung
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
Bitte stellen Sie vor der Verwendung des SDK sicher, dass das Gerät ordnungsgemäß mit dem Netzwerk verbunden ist
Bitte halten Sie das Gerät während des Scanvorgangs stabil und vermeiden Sie plötzliche Bewegungen
Bitte stellen Sie beim Herunterladen von Daten sicher, dass im Speicherpfad ausreichend Speicherplatz vorhanden ist
Es wird empfohlen, den Verbindungsstatus des Geräts zu überprüfen, bevor die API aufgerufen wird
So schneiden und trimmen Sie 3DGS-Daten zu
Tutorial zu den Funktionen des FJD Trion Modells
So verwenden Sie die automatische Baumartenidentifizierung
Tutorial zu den Funktionen des FJD Trion Modells
So erstellen Sie 3D Gaussian Splatting
Tutorial zu den Funktionen des FJD Trion Modells
So verwenden Sie die HyperDense+-Funktion
Tutorial zu den Funktionen des FJD Trion Modells
So verwenden Sie neue Zeichenwerkzeuge
Tutorial zu den Funktionen des FJD Trion Modells
So verwenden Sie Rektifizierungswerkzeuge
Tutorial zu den Funktionen des FJD Trion Modells