Vai al contenuto principale

Panoramica

Questa pagina descrive i topic e i servizi ROS2 forniti da lx_camera_ros nel modulo di localizzazione V2.

Compilazione

Installa i componenti Qt5 Core e Network. I comandi di installazione variano in base alla distribuzione Linux; l’esempio seguente usa Ubuntu:
Scarica il codice sorgente di libzip dalla pagina di download di libzip e compilalo seguendo le istruzioni ufficiali. Esegui il comando seguente da /lx_camera_ros:

Esecuzione

Ricompila dopo aver modificato il file di configurazione YAML. Le modifiche non diventano effettive finché il progetto non viene ricompilato.

Interfacce dei topic ROS2

Prima di testare un’interfaccia, accendi la camera, attendi circa 30 secondi e avvia il nodo dell’SDK ROS2.

Ricevi la posa di localizzazione

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

Ricevi lo stato della localizzazione

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

Ricevi l’utilizzo dello spazio di archiviazione della camera

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

Ricevi il nome del modulo guasto

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

Ricevi l’avanzamento della mappatura

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

Ricevi lo stato della mappatura

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

Imposta i parametri

Pubblica un messaggio std_msgs::msg::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::msg::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.

Scarica una mappa

  1. Pubblica un messaggio std_msgs::msg::String su LxCamera_DownloadMap.
  2. Il messaggio contiene due campi: save_path, un percorso assoluto sul computer host, e mapname, 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 l’odometria

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

Esegui la rilocalizzazione

  1. Pubblica i dati geometry_msgs::msg::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.

Prefissi dei tipi di messaggio

Il computer host comunica con la camera tramite UDP. I primi quattro byte di ogni messaggio identificano il tipo di dati dell’interfaccia:

Interfacce dei servizi ROS2

La mappatura, il cambio di mappa, il download delle mappe e la rilocalizzazione sono disponibili anche tramite i servizi ROS2. Una risposta del servizio true indica il successo; false indica un errore.
Usa ros2 service 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: /LxCamera_Mapping_srv Definizione del servizio:
Chiama il servizio:

Cambia mappa

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

Scarica una mappa

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

Esegui la rilocalizzazione

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

Ottieni il nome della mappa corrente

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

Ottieni l’elenco delle mappe correnti

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

Esci dalla mappatura

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

Elimina una mappa

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

Scarica una mappa termica

Nome del servizio: /LxCamera_DownloadHeatMap_srv Definizione del servizio:
Chiama il servizio:

Mappatura incrementale

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