Zum Hauptinhalt springen

Kompilieren

Installiere die Qt5-Komponenten Core und Network. Die Installationsbefehle unterscheiden sich je nach Linux-Distribution. Das folgende Beispiel verwendet Ubuntu:
Lade libzip von der Downloadseite von libzip herunter und kompiliere es gemäß der offiziellen Anleitung. Kompiliere das ROS-Paket aus /V2-ROS-SDK-service, das sich auf derselben Ebene wie src befindet:

Ausführen

Wenn auf der Kamera ROS-Master-/Slave-Einstellungen aktiviert sind, deaktiviere sie vor dem Ausführen des ROS-Beispiels. Schalte die Kamera ein und warte etwa 20 Sekunden, bevor du das Beispiel startest.
Führe die folgenden Befehle aus home/username/V2_ROS_SDK aus, das sich auf derselben Ebene wie src befindet:

ROS-Topic-Schnittstellen

Schalte die Kamera vor dem Testen einer Schnittstelle ein und warte etwa 30 Sekunden, bis das integrierte Programm gestartet ist. Starte anschließend den ROS-SDK-Node.

Lokalisierungspose empfangen

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

Lokalisierungsstatus empfangen

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

Kameraspeichernutzung empfangen

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

Namen des fehlerhaften Moduls empfangen

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

Kartierungsstatus empfangen

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

Kartierungsfortschritt empfangen

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

Parameter setzen

Veröffentliche eine std_msgs/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/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.

Odometrie hochladen

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

Konturkarte herunterladen

  1. Veröffentliche eine std_msgs/String-Nachricht auf LxCamera_DownloadMap.
  2. Die Nachricht enthält einen absoluten Hostpfad und einen durch Komma getrennten Kartennamen. Der Kartenname ist der .zip-Dateiname 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.

ZIP-Kartendatei hochladen (neu)

  1. Veröffentliche eine std_msgs/String-Nachricht auf LxCamera_UploadMapZip.
  2. Die Nachricht enthält den Pfad zum hochzuladenden Kartenarchiv, zum Beispiel /home/fr1511b/map.zip. Verwende ein über die Kartendownload-Schnittstelle heruntergeladenes Archiv.
  3. Wenn die Karte gefunden wird, sendet das SDK sie an die Kamera. Die Kamera entpackt sie nach /home/fr1511b/hontai/map/.

Relokalisierung durchführen

  1. Veröffentliche geometry_msgs::PoseWithCovarianceStamped-Daten 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.

ROS-Service-Schnittstellen

Kartierung, Kartenwechsel, Kartendownload und Relokalisierung sind auch über ROS-Services verfügbar. Eine Serviceantwort true bedeutet Erfolg, false bedeutet Fehler. Verwende für Vorgänge, die eine Bestätigung erfordern, bevorzugt die Service-Schnittstelle.
Verwende rosservice call für die folgenden Befehle. Kartennamen dürfen nicht mit einer Zahl beginnen und höchstens 30 Zeichen lang sein.

Karte erstellen

Servicename: /lx_localization_node/LxCamera_Mapping_srv Servicedefinition:
Service aufrufen:

Karten wechseln

Servicename: /lx_localization_node/LxCamera_SwitchMap_srv Servicedefinition:
Service aufrufen:

Karte herunterladen

Servicename: /lx_localization_node/LxCamera_DownloadMap_srv Servicedefinition:
Service aufrufen:

Relokalisierung durchführen

Servicename: /lx_localization_node/LxCamera_UploadReloc_srv Servicedefinition:
Service aufrufen:

Aktuellen Kartennamen abrufen

Servicename: /lx_localization_node/LxCamera_GetCurMapname_srv Servicedefinition:
Service aufrufen:

Aktuelle Kartenliste abrufen

Servicename: /lx_localization_node/LxCamera_GetMapList_srv Servicedefinition:
Service aufrufen:

Kartierung beenden (benutzerdefinierte Schnittstelle)

Servicename: /lx_localization_node/LxCamera_ExitMapping_srv Servicedefinition:
Service aufrufen:

Karte löschen

Servicename: /lx_localization_node/LxCamera_EraseMap_srv Servicedefinition:
Service aufrufen:

Heatmap herunterladen

Servicename: /lx_localization_node/LxCamera_DownloadMap_srv Servicedefinition:
Service aufrufen:

Inkrementelle Kartierung

Servicename: /lx_localization_node/LxCamera_IncMapping_srv Servicedefinition:
Service aufrufen: