Zum Hauptinhalt springen

Übersicht

Diese Seite beschreibt die ROS2-Topics und -Services, die lx_camera_ros im V2-Lokalisierungsmodul bereitstellt.

Kompilieren

Installiere die Qt5-Komponenten Core und Network. Die Installationsbefehle unterscheiden sich je nach Linux-Distribution. Das folgende Beispiel verwendet Ubuntu:
Lade den Quellcode von libzip von der Downloadseite von libzip herunter und kompiliere ihn gemäß der offiziellen Anleitung. Führe den folgenden Befehl aus /lx_camera_ros aus:

Ausführen

Kompiliere das Projekt nach Änderungen an der YAML-Konfigurationsdatei neu. Änderungen werden erst nach einer erneuten Kompilierung des Projekts wirksam.

ROS2-Topic-Schnittstellen

Schalte die Kamera vor dem Testen einer Schnittstelle ein, warte etwa 30 Sekunden und starte den ROS2-SDK-Node.

Lokalisierungspose empfangen

ROS2 empfängt fortlaufend die Werte x, y und theta der Kamera, veröffentlicht die Werte sowie das aus theta umgerechnete Quaternion auf LxCamera_LocationPoseResult und überträgt die Pose über TF.

Lokalisierungsstatus empfangen

ROS2 empfängt den Lokalisierungsstatus der Kamera (true oder false) mit 1 Hz und veröffentlicht ihn als std_msgs::msg::Bool auf LxCamera_LocationResult.

Kameraspeichernutzung empfangen

ROS2 empfängt das Speichernutzungsverhältnis der Kamera mit 2 Hz und veröffentlicht es als std_msgs::msg::Float32 auf LxCamera_Capacity_Status.

Namen des fehlerhaften Moduls empfangen

ROS2 empfängt den Namen eines fehlerhaften Moduls von der Kamera und veröffentlicht ihn als std_msgs::msg::String auf LxCamera_Module_Error.

Kartierungsfortschritt empfangen

Nach dem Start der Kartierung veröffentlicht ROS2 den Fortschritt (0–100) als std_msgs::msg::Int32 auf LxCamera_Mapping_Progress.

Kartierungsstatus empfangen

Nach dem Start der Kartierung veröffentlicht ROS2 den Kartierungsstatus als std_msgs::msg::Bool auf LxCamera_MappingState.

Parameter setzen

Veröffentliche eine std_msgs::msg::String-Nachricht auf LxCamera_SetParam. Die Nachricht enthält neun durch Kommas getrennte Gleitkommawerte: x,y,z,yaw,pitch,roll,x,y,yaw. Die ersten sechs Werte definieren die Kamerapose, die letzten drei die LiDAR-Pose. Nach einer erfolgreichen Aktualisierung werden die entsprechenden Werte in den Abschnitten [Laser1] und [Camera1] von /home/fr1511b/hontai/params/config_install_FL21500HAF.ini aktualisiert.

Karten wechseln

Veröffentliche eine std_msgs::msg::String-Nachricht mit dem Namen einer fertiggestellten Karte auf LxCamera_SwitchMap. Aktualisiere die Weboberfläche der Kamera. Wenn sich der angezeigte Kartenname ändert, war der Wechsel erfolgreich.

Karte herunterladen

  1. Veröffentliche eine std_msgs::msg::String-Nachricht auf LxCamera_DownloadMap.
  2. Die Nachricht enthält zwei Felder: save_path, einen absoluten Pfad auf dem Hostcomputer, und mapname, den .zip-Dateinamen einer fertiggestellten Karte auf der Kamera.
  3. Nach einem erfolgreichen Download enthält der angegebene Hostpfad das Kartenarchiv. Entpacke es, um eine PGM-Kartendatei und eine YAML-Konfigurationsdatei zu erhalten.

Odometrie hochladen

Veröffentliche nav_msgs::msg::Odometry-Daten auf /sim/odom (das Topic kann geändert werden).

Relokalisierung durchführen

  1. Veröffentliche Daten vom Typ geometry_msgs::msg::PoseWithCovarianceStamped auf LxCamera_UploadReloc.
  2. Die Pose enthält die LiDAR-Pose: x, y und yaw.
  3. Die Relokalisierung ist erfolgreich, wenn die in der Weboberfläche der Kamera angezeigte Position auf die gesendete Pose aktualisiert wird.
Quaternions sind eingeschränkt und dürfen nicht beliebig ausgefüllt werden. Verwende den Konverter von Euler- zu Quaternion-Werten, um einen Winkel Euler yaw in Quaternionwerte xyzw umzuwandeln.

Nachrichtenpräfixe

Der Hostcomputer kommuniziert über UDP mit der Kamera. Die ersten vier Bytes jeder Nachricht identifizieren den Datentyp der Schnittstelle:

ROS2-Service-Schnittstellen

Kartierung, Kartenwechsel, Kartendownload und Relokalisierung sind auch über ROS2-Services verfügbar. Eine Serviceantwort true bedeutet Erfolg, false bedeutet Fehler.
Verwende ros2 service call für die folgenden Befehle. Kartennamen dürfen nicht mit einer Zahl beginnen und höchstens 30 Zeichen lang sein.

Karte erstellen

Servicename: /LxCamera_Mapping_srv Servicedefinition:
Service aufrufen:

Karten wechseln

Servicename: /LxCamera_SwitchMap_srv Servicedefinition:
Service aufrufen:

Karte herunterladen

Servicename: /LxCamera_DownloadMap_srv Servicedefinition:
Service aufrufen:

Relokalisierung durchführen

Servicename: /LxCamera_UploadReloc_srv Servicedefinition:
Service aufrufen:

Aktuellen Kartennamen abrufen

Servicename: /LxCamera_GetCurMapname_srv Servicedefinition:
Service aufrufen:

Aktuelle Kartenliste abrufen

Servicename: /LxCamera_GetMapList_srv Servicedefinition:
Service aufrufen:

Kartierung beenden

Servicename: /LxCamera_ExitMapping_srv Servicedefinition:
Service aufrufen:

Karte löschen

Servicename: /LxCamera_EraseMap_srv Servicedefinition:
Service aufrufen:

Heatmap herunterladen

Servicename: /LxCamera_DownloadHeatMap_srv Servicedefinition:
Service aufrufen:

Inkrementelle Kartierung

Servicename: /LxCamera_IncMapping_srv Servicedefinition:
Service aufrufen: