Descripción general
SLAM SDK es una biblioteca de C++ para comunicarse con dispositivos S2/P2/P1, que proporciona funciones como descubrimiento de dispositivos, escaneo de mapas y descarga de datos.
Espacio de nombres
namespace fjminislam
Definición de constantes
Configuración del puerto
| Nombre de la constante | Valor | Descripción |
| BROADCAST_PORT | 29527 | Puerto de difusión del dispositivo |
| PORT | 9090 | Puertos de comunicación del dispositivo |
Descargar enumeración de tipos de datos
enum DownloadDataType
{
FJDSLAM = 1, // Datos en formato FJDSLAM
PLY = 2, // Datos de nube de puntos en formato PLY
PTS = 3, // Datos de nube de puntos en formato PTS
LAS = 5, // Datos de nube de puntos en formato LAS
FJDRTK = 6, // Datos en formato FJDRTK
RTCM = 9, // Datos en formato RTCM
INSV = 99, // Datos en formato INSV
};Estructura del dispositivo
struct Device
{
std::string serialno; // Número de serie del dispositivo
std::string ip; // Dirección IP del dispositivo
std::string fwversion; // Versión del firmware
};
Clase SDK
Función de constructor y destructor
SDK(); // Constructor predeterminado
~SDK(); // Destructor
Variable miembro pública
std::vector<fjminislam::Device> device_list; // Lista de dispositivos
get_available_devices
std::vector<fjminislam::Device> get_available_devices(int search_time=3);
Función: Buscar dispositivos disponibles
Parámetro:
search_time
Duración de la búsqueda, unidad: segundos, valor predeterminado: 3 segundos
Valor de retorno : Lista de dispositivos
get_maplist
json get_maplist();
Función: Obtener información de la lista de mapas
Valor de retorno : Información del mapa en formato JSON, que contiene los siguientes campos:
| Nombre del campo | Tipo | Descripción |
| resultado | bool | Resultado de la solicitud, true indica éxito |
| values.has_camera | array<int> | Con o sin cámara, 1 significa sí y 0 significa no |
| values.maplist | array<string> | Lista de nombres de mapas |
| values.match_status | array<int> | Si se continúa el escaneo desde un punto de interrupción, 1 significa sí, 0 significa no |
| values.rtk_locked_percent | array<int> | Porcentaje de bloqueo RTK |
| values.slam_dis_in_m | array<int> | Kilometraje de la misión, unidad metros |
| values.task_time_in_sec | array<int> | Tiempo de la tarea, en segundos |
| values.vec_data_types_for_download | array<int> | Tipo de datos descargable, 1 indica existencia |
start_map
json start_map(std::string mapname="");
Función: Iniciar tarea de escaneo
Parámetro:
nombre_mapa
Nombre de mapa personalizado, opcional
Valor de retorno : El resultado del inicio en formato JSON, que contiene los siguientes campos:
| Nombre del campo | Tipo | Descripción |
| resultado | bool | Resultado de la solicitud, true indica éxito |
| values.status | int | Estado de la tarea: 0 - Misión abortada 1 - Estado normal -1 - Error de inicialización -2 - Equipo ocupado -4 - Tarea en procesamiento -6 - El almacenamiento de la cámara Insta es insuficiente |
stop_map
json stop_map();
Función: Detener la tarea de escaneo
Valor de retorno : Resultado de la detención en formato JSON, que contiene los siguientes campos:
| Nombre del campo | Tipo | Descripción |
| resultado | bool | Resultado de la solicitud, true indica éxito |
| values.message | string | Descripción del mensaje |
| values.success | bool | Si la detención se realizó correctamente |
check_device_task
json check_device_task(bool force_check=true);
Función: Obtener o ejecutar la autocomprobación del dispositivo
Parámetro:
force_check
Si se debe forzar la autocomprobación; true indica solo obtener el resultado y false indica realizar la autocomprobación
Valor de retorno: Resultado de la autocomprobación en formato JSON, que contiene los siguientes campos:
| Nombre del campo | Tipo | Descripción |
| resultado | bool | Resultado de la solicitud, true indica éxito |
| values.status | int | Estado del dispositivo: 7 - Todos los dispositivos están bien 5 - Anomalías en el LiDAR |
download_map_data
bool download_map_data(std::string mapname, fjminislam::DownloadDataType type, std::string save_path);
Función: Descargar datos de escaneo
Parámetros:
nombre_mapa
- Nombre del mapa
tipo
- Tipo de datos de descarga, consulte la enumeración:
TipoDeDatosDeDescarga
ruta_guardado
- Ruta de guardado de datos, p. ej.:
/tmp/
Valor de retorno : true indica una descarga correcta, false indica un fallo en la descarga
sincronización_hora
json sincronización_hora();
Función: Sincronizar la hora con el escáner
Valor de retorno : Resultado de la sincronización de hora en formato JSON, que contiene los siguientes campos:
| Nombre del campo | Tipo | Descripción |
| resultado | bool | Resultado de la solicitud, true indica éxito |
| values.left_time | int | Tiempo restante |
| values.status | bool | Estado de sincronización, true indica éxito |
check_scanner_connection
bool check_scanner_connection();
Función: Comprobar el estado de conexión del escáner
Valor de retorno : true indica una conexión normal, false indica una conexión anómala
connect_device
bool connect_device(fjminislam::Device device);
Función: Conectar al dispositivo especificado
Parámetro:
device
Información del dispositivo que se va a conectar
Valor de retorno : true indica conexión correcta, false indica fallo de conexión
get_current_name
std::string get_current_name();
Función: Obtener el nombre del dispositivo conectado actualmente
Valor de retorno : Nombre del dispositivo
get_version
std::string get_version();
Función: Obtener la versión del SDK
Valor de retorno : Número de versión del SDK
Proceso básico de uso
#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("no scanner found\n");
return 1;
}
selected_scanner = devices_list[0];
printf("selectd device,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 failed\n",);
return 2;
}
if (!sdk.check_scanner_connection()) {
printf("check_scanner_connection failed\n");
return 3;
}
json time_syn_result = sdk.time_syn();
printf("time_syn response: %s\n", time_syn_result.dump().c_str());
json start_map_result = sdk.start_map("test1");
printf("start_map response: %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 response: %s\n", stop_map_result.dump().c_str());
json get_maplist_result = sdk.get_maplist();
printf("get_maplist response: %s\n", get_maplist_result.dump().c_str());
bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
printf("download_map_data response: %d\n", download_result);
return 0;
}Antes de usar el SDK, asegúrese de que el dispositivo esté correctamente conectado a la red
Mantenga el dispositivo estable durante el proceso de escaneo y evite movimientos bruscos
Asegúrese de que haya suficiente espacio en la ruta de almacenamiento al descargar datos
Se recomienda comprobar el estado de conexión del dispositivo antes de llamar a la API
Proceso básico de uso
#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("no scanner found\n");
return 1;
}
selected_scanner = devices_list[0];
printf("selectd device,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 failed\n",);
return 2;
}
if (!sdk.check_scanner_connection()) {
printf("check_scanner_connection failed\n");
return 3;
}
json time_syn_result = sdk.time_syn();
printf("time_syn response: %s\n", time_syn_result.dump().c_str());
json start_map_result = sdk.start_map("test1");
printf("start_map response: %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 response: %s\n", stop_map_result.dump().c_str());
json get_maplist_result = sdk.get_maplist();
printf("get_maplist response: %s\n", get_maplist_result.dump().c_str());
bool download_result = sdk.download_map_data(cur_name, fjminislam::DownloadDataType::LAS, "./");
printf("download_map_data response: %d\n", download_result);
return 0;
}Soporte para perro robot FJD Trion S1
Soporte para perro robot FJD Trion S1
Descarga del paquete SDK
Estructura de datos
Estructura del dispositivo
struct Device
{
std::string serialno; // Número de serie del dispositivo
std::string ip; // IP del dispositivo
addressstd::string fwversion; // Versión del firmware
};
Clase SDK
Constructor
Función de constructor y destructor
Variable miembro pública
D
Antes de usar el SDK, asegúrese de que el dispositivo esté correctamente conectado a la red
Mantenga el dispositivo estable durante el proceso de escaneo y evite movimientos bruscos
Asegúrese de que haya suficiente espacio en la ruta de almacenamiento al descargar datos
Se recomienda comprobar el estado de conexión del dispositivo antes de llamar a la API
Cómo recortar y ajustar datos 3DGS
Tutorial de las funciones del modelo FJD Trion
Cómo usar la identificación automática de especies de árboles
Tutorial de las funciones del modelo FJD Trion
Cómo crear Gaussian Splatting 3D
Tutorial de las funciones del modelo FJD Trion
Cómo usar la función HyperDense+
Tutorial de las funciones del modelo FJD Trion
Cómo usar las nuevas herramientas de dibujo
Tutorial de las funciones del modelo FJD Trion
Cómo usar las herramientas de rectificación
Tutorial de las funciones del modelo FJD Trion