Vai al contenuto principale

Compilazione

Installa i componenti Qt5 Core e Network. I comandi di installazione variano in base alla distribuzione Linux; l’esempio seguente usa Ubuntu:
Scarica e compila libzip dalla pagina di download di libzip seguendo le istruzioni ufficiali. Compila il pacchetto ROS da /V2-ROS-SDK-service, che si trova allo stesso livello di src:

Esecuzione

Se sulla camera sono abilitate le impostazioni master/slave di ROS, disabilitale prima di eseguire l’esempio ROS. Dopo aver acceso la camera, attendi circa 20 secondi prima di avviare l’esempio.
Da home/username/V2_ROS_SDK, che si trova allo stesso livello di src, esegui:

Interfacce dei topic ROS

Prima di testare un’interfaccia, accendi la camera e attendi circa 30 secondi che il programma integrato si avvii. Quindi avvia il nodo dell’SDK ROS.

Ricevi la posa di localizzazione

ROS riceve continuamente i valori x, y e theta della camera, pubblica questi valori e il quaternione convertito da theta su LxCamera_LocationPoseResult e diffonde la posa tramite TF.

Ricevi lo stato della localizzazione

ROS riceve lo stato della localizzazione della camera (true o false) a 1 Hz e lo pubblica come std_msgs::Bool su LxCamera_LocationResult.

Ricevi l’utilizzo dello spazio di archiviazione della camera

ROS riceve il rapporto di utilizzo dello spazio di archiviazione della camera a 2 Hz e lo pubblica come std_msgs::Float32 su LxCamera_Capacity_Status.

Ricevi il nome del modulo guasto

ROS riceve dalla camera il nome di un modulo guasto e lo pubblica come std_msgs::String su LxCamera_Module_Error.

Ricevi lo stato della mappatura

Dopo l’avvio della mappatura, ROS pubblica lo stato della mappatura come std_msgs::Bool su LxCamera_MappingState.

Ricevi l’avanzamento della mappatura

Dopo l’avvio della mappatura, ROS pubblica l’avanzamento della mappatura (0–100) come std_msgs::Int32 su LxCamera_Mapping_Progress.

Imposta i parametri

Pubblica un messaggio std_msgs/String su LxCamera_SetParam. Il messaggio contiene nove valori in virgola mobile separati da virgole: x,y,z,yaw,pitch,roll,x,y,yaw. I primi sei valori definiscono la posa della camera; gli ultimi tre definiscono la posa del LiDAR. Dopo un aggiornamento riuscito, i valori corrispondenti nelle sezioni [Laser1] e [Camera1] di /home/fr1511b/hontai/params/config_install_FL21500HAF.ini vengono aggiornati.

Cambia mappa

Pubblica un messaggio std_msgs/String contenente il nome di una mappa completata su LxCamera_SwitchMap. Aggiorna l’interfaccia web della camera. Se il nome della mappa visualizzato cambia, il cambio è riuscito.

Carica l’odometria

  1. Pubblica i dati nav_msgs::Odometry su /sim/odom (il topic può essere cambiato).

Scarica la mappa di contorno

  1. Pubblica un messaggio std_msgs/String su LxCamera_DownloadMap.
  2. Il messaggio contiene un percorso host assoluto e un nome mappa, separati da una virgola. Il nome della mappa è il nome del file .zip di una mappa completata sulla camera.
  3. Dopo un download riuscito, il percorso host specificato contiene l’archivio della mappa. Estrailo per ottenere un file di mappa PGM e un file di configurazione YAML.

Carica un file ZIP di mappa (nuovo)

  1. Pubblica un messaggio std_msgs/String su LxCamera_UploadMapZip.
  2. Il messaggio contiene il percorso dell’archivio della mappa da caricare, ad esempio /home/fr1511b/map.zip. Usa un archivio scaricato tramite l’interfaccia di download delle mappe.
  3. Se la mappa viene trovata, l’SDK la invia alla camera. La camera la estrae in /home/fr1511b/hontai/map/.

Esegui la rilocalizzazione

  1. Pubblica i dati geometry_msgs::PoseWithCovarianceStamped su LxCamera_UploadReloc.
  2. La posa contiene la posa del LiDAR: x, y e yaw.
  3. La rilocalizzazione riesce quando la posizione mostrata nell’interfaccia web della camera si aggiorna alla posa inviata.
I quaternioni sono vincolati e non devono essere compilati arbitrariamente. Usa il convertitore da Eulero a quaternione per convertire un angolo Euler yaw nei valori del quaternione xyzw.

Interfacce dei servizi ROS

La mappatura, il cambio di mappa, il download delle mappe e la rilocalizzazione sono disponibili anche tramite i servizi ROS. Una risposta del servizio true indica il successo; false indica un errore. Per le operazioni che richiedono conferma, preferisci l’interfaccia del servizio.
Usa rosservice call per i comandi seguenti. I nomi delle mappe non devono iniziare con un numero e non possono superare i 30 caratteri.

Crea una mappa

Nome del servizio: /lx_localization_node/LxCamera_Mapping_srv Definizione del servizio:
Chiama il servizio:

Cambia mappa

Nome del servizio: /lx_localization_node/LxCamera_SwitchMap_srv Definizione del servizio:
Chiama il servizio:

Scarica una mappa

Nome del servizio: /lx_localization_node/LxCamera_DownloadMap_srv Definizione del servizio:
Chiama il servizio:

Esegui la rilocalizzazione

Nome del servizio: /lx_localization_node/LxCamera_UploadReloc_srv Definizione del servizio:
Chiama il servizio:

Ottieni il nome della mappa corrente

Nome del servizio: /lx_localization_node/LxCamera_GetCurMapname_srv Definizione del servizio:
Chiama il servizio:

Ottieni l’elenco delle mappe correnti

Nome del servizio: /lx_localization_node/LxCamera_GetMapList_srv Definizione del servizio:
Chiama il servizio:

Esci dalla mappatura (interfaccia personalizzata)

Nome del servizio: /lx_localization_node/LxCamera_ExitMapping_srv Definizione del servizio:
Chiama il servizio:

Elimina una mappa

Nome del servizio: /lx_localization_node/LxCamera_EraseMap_srv Definizione del servizio:
Chiama il servizio:

Scarica una mappa termica

Nome del servizio: /lx_localization_node/LxCamera_DownloadMap_srv Definizione del servizio:
Chiama il servizio:

Mappatura incrementale

Nome del servizio: /lx_localization_node/LxCamera_IncMapping_srv Definizione del servizio:
Chiama il servizio: