Zum Hauptinhalt springen
Dokumentversion: V1.0; Änderungsdatum: 2024-10-12.

Übersicht

Das MRDVS Camera SDK für Linux enthält Beispiele für C/C++, Java (HTTP-Service), ROS und ROS 2. Die Beispiele zeigen den grundlegenden SDK-Ablauf. Ergänzen Sie projektspezifische Logik und Fehlerbehandlung. Schließen Sie zuerst die Einrichtung der Umgebung, die Ausführung des Installationsskripts und die Prüfung der Beispielverzeichnisse ab. Folgen Sie anschließend dem Abschnitt zum Kompilieren und Ausführen für die gewünschte Sprache. Der Anhang enthält Installationsmethoden für häufig verwendete Abhängigkeiten und Testpakete.

System und Umgebung

Kompatible Systeme und Abhängigkeitsversionen

Die folgenden Linux-Systeme werden unterstützt. Die Standardversionen der Programme sind unten aufgeführt:

2.2 System- und Anwendungsversion prüfen

2.2.1 Systemversion prüfen

Ergebnis:
Abbildungen zur Systemversion anzeigen
Versionsnummer des Betriebssystems: 5.15.0
  • Hauptversionsnummer: 5
  • Versionsnummer: 15 [Ungerade Zahlen sind Entwicklungsversionen, gerade Zahlen stabile Versionen]
  • Revisionsnummer: 0 [Anzahl der Änderungen]
  • N-te Revision dieser Version: 97
  • Kernelversion: #107~20.0.4.1; normalerweise entspricht die Systemversion der Kernelversion

2.2.2 CMake-Version prüfen

Ergebnis:
Abbildungen zur CMake-Version anzeigen
Dies ist die CMake-Version 3.16.3.

2.2.3 GCC-Version prüfen

Ergebnis:
Abbildungen zur GCC-Version anzeigen
Die Versionsnummer steht im blauen Feld unten links. Die Version ist 9.4.0.

2.2.4 OpenCV-Version anzeigen

Ergebnis:
OpenCV-Version anzeigen zugehörig Abbildungen
Die Version ist 3.2.0

2.2.5 PCL-Version prüfen

Ergebnis: Die Version ist 1.8.1

2.2.6 ROS-Version anzeigen

Ergebnis:
ROS-Version anzeigen zugehörig Abbildungen
Die Version ist Eloquent, die zu Ubuntu 18.04 gehörende ROS-2-Version.
ROS-Version anzeigen zugehörig icon 2
Die Version ist Noetic, die zu Ubuntu 20.04 gehörende ROS-1-Version.

2.3 Grundlegende Entwicklungsumgebung einrichten

Aktualisieren Sie vor der Installation die Paketliste:
Das Ergebnis sieht wie folgt aus:
Abbildungen zum Einrichten einer grundlegenden Entwicklungsumgebung

2.3.1 CMake installieren

Installation Cmake zugehörig Abbildungen

2.3.2 GCC installieren

GCC installieren zugehörig Abbildungen

2.4 Optionale Entwicklungsumgebung einrichten

2.4.1 OpenCV installieren [kann Kamerabilder anzeigen]

Abbildungen zur OpenCV-Installation [kann Kamerabilder anzeigen]

2.4.2 PCL installieren [kann Punktwolken anzeigen]

Abbildungen zur PCL-Installation [kann Punktwolken anzeigen]

Beispielcode vorbereiten

3.1 Installationsskript ausführen

  1. Entpacken Sie die Lanxin-MRDVS-Datei und öffnen Sie den Ordner Lanxin-MRDVS.
Abbildungen zur Ausführung des Installationsskripts
  1. Klicken Sie mit der rechten Maustaste, um die Konsole zu öffnen.
  2. Führen Sie das Skript install.sh aus.
Illustration zugehörig zu executing die Installation Skript 2
  1. Öffnen Sie das Verzeichnis /opt/, um zu prüfen, ob die Installation erfolgreich war.
Illustration zugehörig zu executing die Installation Skript 3
  1. Wenn der Ordner gefunden wird, war die Installation erfolgreich.
  2. Wenn die Installation fehlschlägt, müssen Sie die Dateien manuell zum Verzeichnis opt hinzufügen.
  3. Führen Sie das Skript set_socket_buffer_size.sh aus.
Illustrations zugehörig zu executing die Installation Skript 4
  1. Damit ist das Installationsskript vollständig ausgeführt.

3.2 Einführung in den Beispielcode

Öffnen Sie das Verzeichnis Sample. Der Inhalt des Verzeichnisses ist wie folgt:
Illustrations zugehörig zu Beispiel Code introduction
  • Der Ordner C enthält C- und C++-bezogenen Code.
  • Die Java Ordner enthält an http Server für indirectly calling die sdk
  • Die Ros Ordner enthält an Beispiel von ros
  • Die Ros2 Ordner enthält an Beispiel von ros2

3.2.1 C und C++ Beispiel Code

Enter die C Verzeichnis. Die Verzeichnis Inhalt sind wie folgt:
Illustrations zugehörig zu C und C++ Beispiel Code
Contains 9 Ordner und 1 Cmakelist Datei, each Ordner enthält a cpp Datei Die roughly implemented functions von each cpp sind wie folgt:
  • Anwendung_obstacle: Obtain Kamera Stream Daten und enable obstacle avoidance algorithm, Ausgabe algorithm Ergebnisse
  • Anwendung_pallet: Obtain Kamera Stream Daten und enable die pallet algorithm, Ausgabe algorithm Ergebnisse
  • arm_local_camera: Call die SDK in die Kamera [ARM] und obtain die Stream Daten
  • frame_callback: Use callback method zu obtain Kamera Stream Daten
  • multi_cameras: öffnen multiple Kameras und abrufen streaming Daten
  • single_camera: Open a single Kamera und abrufen streaming Daten
  • single_camera2: Get frame Daten through structure
Je nach Bedarf können unterschiedliche Beispiele zum Testen und Anpassen ausgewählt werden.

3.2.2 Java Beispiel Code

Enter die java Verzeichnis. Die Verzeichnis Inhalt sind wie folgt:
Illustrations zugehörig zu Java Beispiel Code
Die Verzeichnis enthält 2 Ordner und a postman.json Datei und README
  • Config: Server-zugehörig configurations sind stored in die Ordner
  • Middleware: Server theme
  • LxCamera.Postman_collection.json: Postman Konfiguration Datei
  • README: java virtual Server usage tutorial

3.2.3 ROS Beispiel Code

Enter die ros Verzeichnis. Die Verzeichnis Inhalt sind wie folgt:
Illustrations zugehörig zu ROS Beispiel Code
  • lx_camera_node_ws: Die Ordner enthält a standard ros driver
  • README.EN: explains in English how zu kompilieren a node und create a new node

3.2.4 ROS2 Beispiel Code

Enter die ros2 Verzeichnis. Die Verzeichnis Inhalt sind wie folgt:
ROS2 Beispiel Code zugehörig Bilder
  • lx_camera_node_ws: Die Ordner enthält a standard ros2 driver
  • README.EN: explains in English how zu kompilieren a node und create a new node

3.2.5 ros-v1pro Beispiel Code

Enter die ros-v1pro Verzeichnis. Die Verzeichnis Inhalt sind wie folgt:
Illustrations zugehörig zu ros-v1pro Beispiel Code
  • src: Die Ordner enthält a standard ros driver
  • README: explains how zu verwenden dies node
  • README.pdf: explains how zu verwenden dies node

Beispiele kompilieren und ausführen

4.1 Compiling und Ausführung C und C++ Beispiel Code

Go zu die C Ordner in die Beispiel:
Illustrations zugehörig zu Kompilieren und Ausführung C und C++ Beispiel Code
Open a terminal in die C Ordner und ausführen:
After erfolgreich Ausführung, öffnen die build Ordner und it should be wie folgt:
Illustrations zugehörig zu Kompilieren und Ausführung C und C++ Beispiel Code 2
Die ausführbare Datei befindet sich im Verzeichnis bin. Entering die bin Verzeichnis should be wie folgt:
Illustrations zugehörig zu Kompilieren und Ausführung C und C++ Beispiel Code 3
Except für die arm Beispiel, alle andere Beispiele wird be compiled. Die executable Datei Name ist die gleich wie die Beispiel Ordner Name. You kann ausführen it directly.

4.2 Ablauf zum Ausführen des Java-Beispiels

Java ist unterschiedlich aus andere Beispiel codes. It does not directly provide Quelle Code. It provides an http Server und a Postman Beispiel. Wenn you müssen zu control die Kamera indirectly through http, you kann select die java Beispiel und öffnen die java Ordner. Die Ordner content ist wie folgt:
Illustrations zugehörig zu die Ablauf zum Ausführen des Java-Beispiels
Die Ausführung process ist wie folgt:
  • Enter die config Ordner und modify die http_sever_host Feld und http_sever_port Feld in die Configs.json Datei:
  • Enter die middleware Ordner und execute die start.sh Skript zu enable die transfer Server
Illustrations zugehörig zu die Ablauf zum Ausführen des Java-Beispiels 3
  • Use Postman zu öffnen die LxCamera.Postman_collection.json Datei zu send Daten zu die Beispiel port

4.3 ROS-Beispielcode kompilieren und ausführen

Enter die ROS Ordner, öffnen a console, und ausführen:
Illustrations zugehörig zu Kompilieren und Ausführung ROS Beispiel Code
Illustrations zugehörig zu Kompilieren und Ausführung ROS Beispiel Code 2
Right-click zu öffnen a console, öffnen die lx_camera_node_ws Ordner, und ausführen:
Illustrations zugehörig zu Kompilieren und Ausführung ROS Beispiel Code 3
Nach erfolgreicher Ausführung wird Folgendes angezeigt:
Illustrations zugehörig zu Kompilieren und Ausführung ROS Beispiel Code 4
At dies time devel und build in die Ordner sind compiled und generated:
Illustrations zugehörig zu Kompilieren und Ausführung ROS Beispiel Code 5
Run die folgende Befehle zu Quelle die Umgebung und starten a node mit roslaunch:
From top zu bottom, they sind: Ausführung ordinary nodes, Ausführung obstacle avoidance algorithm 2 nodes, Ausführung obstacle avoidance algorithm nodes, Ausführung pallet algorithm nodes. Die Nodes können nicht gleichzeitig aktiviert werden.

4.4 ROS2-Beispielcode kompilieren und ausführen

Enter die ros2 Ordner. Die Inhalt von die Ordner sind wie folgt:
Illustrations zugehörig zu Kompilieren und Ausführung ROS2 Beispiel Code
Example ros node ist compiled using colcon Installieren Sie zuerst die Kompilierungswerkzeuge:
Illustrations zugehörig zu Kompilieren und Ausführung ROS2 Beispiel Code 2
Anschließend installieren die ros-pcl dependency package. Replace foxy mit die ROS 2 distribution installed on Ihr System:
After Installation, öffnen die lx_camera_node_ws Verzeichnis und build die Projekt:
Depending on die computer performance, Kompilierung normalerweise takes 30 seconds zu 120 seconds. After erfolgreich Kompilierung, it wird be displayed wie folgt:
Illustrations zugehörig zu Kompilieren und Ausführung ROS2 Beispiel Code 3
Einige Warnungen sind auf Versionskompatibilitätsprobleme zurückzuführen und müssen nicht behandelt werden. After Kompilierung ist completed, die Inhalt von die Ordner sind wie folgt:
Illustrations zugehörig zu Kompilieren und Ausführung ROS2 Beispiel Code 4
Run die folgende Befehle zu Quelle die Umgebung und starten a node mit ros2 launch:
From top zu bottom, they sind: Ausführung ordinary nodes, Ausführung obstacle avoidance algorithm 2 nodes, Ausführung obstacle avoidance algorithm nodes, Ausführung pallet algorithm nodes. Die Nodes können nicht gleichzeitig aktiviert werden.

4.5 Kompilieren und Ausführen des ros-v1pro-Beispielcodes

ros-v1pro ist a dedicated ros driver für die V1PRO Kamera. There ist a README.pdf in die ros-v1pro Ordner that describes die driver in detail. Dies document nur gives a brief introduction zu it: Enter die ros-v1pro Ordner und kompilieren it:
Illustrations zugehörig zu Kompilieren und Ausführung die ros-v1pro Beispiel Code 2
Laden Sie die Umgebung:
Illustrations zugehörig zu Kompilieren und Ausführung die ros-v1pro Beispiel Code 3
Führen Sie abschließend den Node aus:
  • roslaunch lx_camera_ros localization.launch
  • roslaunch lx_camera_ros mapping.launch
  • roslaunch lx_camera_ros sensor_sim.launch
From top zu bottom: ausführen die positioning node, ausführen die mapping node, und ausführen die virtual Daten node. Die Nodes können nicht gleichzeitig aktiviert werden.

Referenz zum Beispielcode

In dies Abschnitt, alle codes und pseudocode wird be divided into several parts. Generally speaking, everything in a Abschnitt belongs zu die gleich Datei. Except für special Dateien mit detailed explanations, die Quelle Code Dateien nur explain die general modules. Detailed explanations sind commented in die Code.

5.1 C und C++

5.1.1 CMakeLists

5.1.2 Anwendung_obstacle und Anwendung_pallet

5.1.3 arm_local_camera

5.1.4 frame_callback

5.1.5 multi_cameras

5.1.6 single_camera

5.1.7 single_camera2

5.2 java

Die Java Beispiel provides nur an HTTP Server, so die Beschreibung ist nur a Beschreibung von die interface und Nachricht format. Use Postman zu öffnen die Beispiel Datei wie shown below: Die Nachrichten sind alle in post mode. Before sending, remember zu change die IP zu die Server’s IP, but do not modify die URL. Die URL ist hard-coded internally in die Server. Die response Nachricht format und content sind both in die body. Die interface provided in die Beispiel ist wie folgt:
java zugehörig Abbildungen 2
1.DcGetApiVersion: Get die Version Nummer von die SDK, no Parameter Eingabe
java zugehörig Abbildungen 3
2.DcSetInfoOutput: Set die Pfad für SDK log Ausgabe. Die Parameter sind wie folgt:
  • log_path: Pfad von log Ausgabe
  • print_level: log printing level
  • enable_screen_print: whether die log ist printed on die console
3.DcLog: Output die log zu die SDK log. Any Eingabe content wird be printed zu die SDK log. 4.DcGetDeviceList: Get die Gerät Liste, no Eingabe, Eingabe ist JSON 5.DcOpenDevice: Open die Gerät und öffnen die folgende:
java zugehörig Abbildungen 4
  • öffnen_mode: öffnen die Kamera mode
  • param: Parameter für opening die Kamera
6.DcStartStream: Let a certain Kamera starten pushing streaming Daten. Die Eingabe Parameter sind wie folgt:
java zugehörig Abbildungen 5
  • handle: Die handle von die Kamera, which wird be returned in DcOpenDevice
7.DcSetCmd: Issue Befehle zu die Kamera, öffnen wie folgt:
java zugehörig Abbildungen 6
  • handle: die handle von die Kamera zu be festlegen
  • cmd: Befehl Nummer
8.DcGetPtrValue: Get pointer Daten (Bild, Parameter, etc.), öffnen wie folgt:
  • handle: die handle von die Kamera zu be festlegen
  • cmd: Befehl Nummer
9.DcSetIntValue: Set die Kamera int Typ Parameter, Eingabe wie folgt:
java zugehörig Abbildungen 7
  • handle: die handle von die Kamera zu be festlegen
  • cmd: Befehl Nummer
  • Wert: die Wert zu be festlegen
10.DcGetIntValue: Get die int Typ Parameter von die Gerät, Eingabe wie folgt:
  • handle: die handle von die Kamera zu be festlegen
  • cmd: Befehl Nummer
  1. Please see die table below für andere relevant instructions:

5.3 ROS1 & ROS2

In die ros Beschreibung, we wird not talk about die driver Quelle Code, but about die content entsprechend zu die Konfiguration in die launch Datei, how zu adjust die Konfiguration, und how zu send und subscribe zu Nachrichten. Die provided ros node already enthält most von die functions, so it ist not empfohlen zu directly modify die driver Quelle Code. Wenn you have special needs, you kann zuerst understand die Code flow in die C++ Beispiel und then modify die driver Quelle Code. When executing die ros driver, you muss ensure that die Versionen von opencv und pcl in die System Standard Pfad sind unique, otherwise an Fehler wird occur wenn linking die ros library, which may cause Kompilierung Fehler oder runtime crash.

5.3.1 ROS1 launch Datei Beschreibung

5.3.1.1 All launch Dateien
  1. There sind die folgende Dateien in die src/launch Ordner:
All launch Datei zugehörig Abbildungen
  • localization.launch: Run Datei für visual positioning nodes
  • lx_camera_ros.launch: Ausführung Datei von ordinary nodes
  • mapping.launch: Ausführung Datei für visual positioning mapping
  • obstacle.launch: Ausführung Datei von obstacle avoidance algorithm
  • obstacleV2.launch: Ausführung Datei von obstacle avoidance algorithm V2
  • pallet.launch: pallet algorithm Ausführung Datei
  • sensor_sim.launch: Ausführung Datei für simulating positioning Daten
  1. You kann execute unterschiedlich functions von die node durch Ausführung unterschiedlich launch Dateien. Except für localization, mapping und sensor, die Parameter Inhalt sind die gleich in alle nodes, but die Konfiguration ist unterschiedlich. Dies wird be introduced in detail in die folgende sections. For a detailed introduction zu die Parameter von die three launch Dateien von localization, mapping und sensor, please see die introduction in die ros-v1pro node.
5.3.1.2 Camera IP, Stream Konfiguration, working mode Konfiguration, Punkt Wolke unit, etc.
  • ip: Die Kamera IP that needs zu be connected. Wenn it ist 0, die zuerst one wird be connected durch Standard.
  • log_path: SDK log storage Pfad, die absolute Pfad needs zu be filled in
  • ist_xyz: whether zu push Punkt Wolke Daten
  • ist_depth: whether zu push Tiefe Daten
  • ist_amp: whether zu push Intensität map Daten
  • ist_rgb: whether zu push RGB Bild Daten
  • lx_work_mode: work mode
  • lx_application: whether zu enable die algorithm, 0: off, 1: obstacle avoidance algorithm, 2: pallet algorithm, 3: positioning algorithm, 4: obstacle avoidance algorithm V2
  • lx_tof_unit: Punkt Wolke unit, 1 ist meter, 0 ist millimeter, needs zu be changed zu 1 wenn viewing mit rviz
5.3.1.3 Camera pose Konfiguration
Die rotation angle und translation vector von die Punkt Wolke kann be configured.
  • X: X translation amount von die Kamera aus die center von die Punkt Wolke
  • Y: Y translation amount von die Kamera aus die center von die Punkt Wolke
  • Z: Z translation amount von die Kamera aus die center von die Punkt Wolke
  • Yaw: die angle von rotation von die Punkt Wolke around die Z axis
  • Roll: Die angle von rotation von die Punkt Wolke around die X-axis
  • Pitch: Die angle von rotation von die Punkt Wolke around die Y axis
5.3.1.4 Whether zu verwenden launch Konfiguration
You kann choose whether zu verwenden die Kamera Parameter Konfiguration in die launch Datei.
  • raw_param: 0: verwenden die Konfiguration in die Kamera, 1: verwenden die Konfiguration in die launch Datei
Regardless von whether dies Parameter ist festlegen zu 0 oder 1, alle Parameter vor dies Parameter wird be festlegen, 0 und 1 sind nur valid für Parameter nach dies Parameter.
5.3.1.5 2D Parameter Konfiguration
  • lx_2d_binning:0:1x1,1:2x2,2:4x4
  • lx_2d_undistort: ​​2d anti-distortion, 0: off, 1: on
  • lx_2d_undistort_scale: 2D anti-distortion coefficient
  • lx_2d_auto_exposure: 2D automatic exposure, 0: off, 1: on
  • lx_2d_auto_exposure_value: 2D automatic exposure Ziel Intensität
  • lx_2d_exposure: 2D exposure Wert
  • lx_2d_gain: 2D gain
5.3.1.6 3D Parameter Konfiguration
  • lx_rgb_to_tof: RGB alignment
  • lx_3d_binning:0:1x1,1:2x2,2:4x4
  • lx_mulit_mode: multi-machine mode, which kann eliminate multi-machine interference, 0: off, 1: on
  • lx_3d_undistort: ​​3d anti-distortion, 0: off, 1: on
  • lx_3d_undistort_scale: 3D anti-distortion coefficient
  • lx_hdr: hdr, 0: off, 1: on
  • lx_3d_auto_exposure: 3D automatic exposure, 0: off, 1: on
  • lx_3d_auto_exposure_value: 3D automatic exposure Ziel Intensität
  • lx_3d_first_exposure: 3D high points
  • lx_3d_second_exposure: 3D low points
  • lx_3d_gain: 3D gain
5.3.1.7 Maximum und minimal Tiefe
  • lx_min_depth: minimal Tiefe
  • lx_max_depth: maximal Tiefe

5.3.2 ROS2 launch Datei Beschreibung

5.3.2.1 All launch Dateien
There sind die folgende Dateien in die src/launch Ordner:
All launch Datei zugehörig Abbildungen
  • localization.launch.py: Ausführung Datei von visual positioning node
  • lx_camera_ros.launch.py: Ausführung Datei von ordinary node
  • mapping.launch.py: Ausführung Datei für visual positioning mapping
  • obstacle.launch.py: Ausführung Datei von obstacle avoidance algorithm
  • obstacleV2.launch.py: Ausführung Datei von obstacle avoidance algorithm V2
  • pallet.launch.py: pallet algorithm Ausführung Datei
  • sensor_sim.launch.py: Ausführung Datei für simulating positioning Daten
You kann execute unterschiedlich functions von die node durch Ausführung unterschiedlich launch Dateien. Except für localization, mapping und sensor, die Parameter content ist die gleich in alle nodes, but die Konfiguration ist unterschiedlich. It wird be introduced in detail in die folgende sections. For a detailed introduction zu die Parameter von die three launch Dateien von localization, mapping und sensor, please see die introduction in die ros-v1pro node.
5.3.2.2 Camera IP, Stream Konfiguration, working mode Konfiguration, Punkt Wolke unit, etc.
  • ip: Die Kamera IP that needs zu be connected. Wenn it ist 0, die zuerst one wird be connected durch Standard.
  • log_path: SDK log storage Pfad, die absolute Pfad needs zu be filled in
  • ist_xyz: whether zu push Punkt Wolke Daten
  • ist_depth: whether zu push Tiefe Daten
  • ist_amp: whether zu push Intensität map Daten
  • ist_rgb: whether zu push RGB Bild Daten
  • lx_work_mode: work mode
  • lx_application: whether zu enable die algorithm, 0: off, 1: obstacle avoidance algorithm, 2: pallet algorithm, 3: positioning algorithm, 4: obstacle avoidance algorithm V2
  • lx_tof_unit: Punkt Wolke unit, 1 ist meter, 0 ist millimeter, needs zu be changed zu 1 wenn viewing mit rviz
5.3.2.3 Camera pose Konfiguration
Die rotation angle und translation vector von die Punkt Wolke kann be configured.
  • X: X translation amount von die Kamera aus die center von die Punkt Wolke
  • Y: Y translation amount von die Kamera aus die center von die Punkt Wolke
  • Z: Z translation amount von die Kamera aus die center von die Punkt Wolke
  • Yaw: die angle von rotation von die Punkt Wolke around die Z axis
  • Roll: Die angle von rotation von die Punkt Wolke around die X-axis
  • Pitch: Die angle von rotation von die Punkt Wolke around die Y axis
5.3.2.4 Whether zu verwenden launch Konfiguration
You kann choose whether zu verwenden die Kamera Parameter Konfiguration in die launch Datei.
  • raw_param: 0: verwenden die Konfiguration in die Kamera, 1: verwenden die Konfiguration in die launch Datei
Regardless von whether dies Parameter ist festlegen zu 0 oder 1, alle Parameter vor dies Parameter wird be festlegen, 0 und 1 sind nur valid für Parameter nach dies Parameter.
5.3.2.5 2D Parameter Konfiguration
  • lx_2d_binning:0:1x1,1:2x2,2:4x4
  • lx_2d_undistort: ​​2d anti-distortion, 0: off, 1: on
  • lx_2d_undistort_scale: 2D anti-distortion coefficient
  • lx_2d_auto_exposure: 2D automatic exposure, 0: off, 1: on
  • lx_2d_auto_exposure_value: 2D automatic exposure Ziel Intensität
  • lx_2d_exposure: 2D exposure Wert
  • lx_2d_gain: 2D gain
5.3.2.6 3D Parameter Konfiguration
  • lx_rgb_to_tof: RGB alignment
  • lx_3d_binning:0:1x1,1:2x2,2:4x4
  • lx_mulit_mode: multi-machine mode, which kann eliminate multi-machine interference, 0: off, 1: on
  • lx_3d_undistort: ​​3d anti-distortion, 0: off, 1: on
  • lx_3d_undistort_scale: 3D anti-distortion coefficient
  • lx_hdr: hdr, 0: off, 1: on
  • lx_3d_auto_exposure: 3D automatic exposure, 0: off, 1: on
  • lx_3d_auto_exposure_value: 3D automatic exposure Ziel Intensität
  • lx_3d_first_exposure: 3D high points
  • lx_3d_second_exposure: 3D low points
  • lx_3d_gain: 3D gain
5.3.2.7 Maximum und minimal Tiefe
  • lx_min_depth: minimal Tiefe
  • lx_max_depth: maximal Tiefe

5.3.3 Unique theme Beschreibung

Since die unique topic types von ROS1 und ROS2 sind die gleich, ROS1 ist used wie an Beispiel here. There sind die folgende Dateien in die src/msg Ordner:
Illustrations zugehörig zu unique theme descriptions
5.3.3.1 FrameRate.msg
Dies node outputs frame rate Informationen. Die Nachricht format ist wie folgt:
FrameRate.msg zugehörig Abbildungen
  • header: frame Informationen und timestamp von die aktuell Daten
  • Tiefe: When die Tiefe map ist turned on, Ausgabe die Tiefe map frame rate
  • amp: When die Intensität map ist turned on, Ausgabe die Intensität map frame rate
  • rgb: When rgb ist on, Ausgabe rgb frame rate
  • temperature: Ausgabe Kamera temperature
After die node starts Ausführung (except für nodes zugehörig zu visual positioning), you kann subscribe zu die LxCamera_FrameRate node zu obtain relevant Informationen. Die Ausgabe ist wie folgt:
FrameRate.msg zugehörig Abbildungen 2
5.3.3.2 Obstacle.msg
obstacle outputs Informationen zugehörig zu die obstacle avoidance algorithm Ergebnisse. Die obstacle Nachricht format ist wie folgt:
Obstacle.msg zugehörig Abbildungen
  • header: frame Informationen und timestamp von die aktuell Daten
  • Status: Status Informationen returned durch obstacle avoidance
0: Normal obstacle avoidance -1: No ground festlegen -2: Input not festlegen -3: No Punkt Wolke within die range -4: Die Punkt Wolke ist empty nach filtering die ground -5: Die Punkt Wolke ist empty nach radius filtering -6: No segmentation Ergebnis was obtained -99: undefined Fehler
  • io_output: Obstacle avoidance Informationen Ausgabe durch die io interface
0: normal 1: warning 2: Shutdown
  • Feld_number: Nummer von obstacles
  • Feld: obstacle Informationen, variable length array, die length ist determined durch Feld_number
After die node starts Ausführung (die obstacle avoidance algorithm needs zu be turned on), you kann subscribe zu die LxCamera_Obstacel node zu obtain relevant Informationen. Die Ausgabe ist wie folgt (die Daten in die picture ist simulated Daten):
Obstacle.msg zugehörig Abbildungen 2
5.3.3.3 Obstacle_box.msg
obstacle_box outputs obstacle-zugehörig Informationen, und die obstacle_box Nachricht format ist wie folgt:
Obstacle\_box.msg zugehörig Abbildungen
  • center: die center von mass von die obstacle in die Punkt Wolke
  • rotation: rotation matrix von obstacle Punkt Wolke
  • translation: translation vector von obstacle Punkt Wolke
  • Breite: Breite von die obstacle frame
  • Höhe: Höhe von obstacle frame
  • Tiefe: die Tiefe von die obstacle frame
After starting die operation (die obstacle avoidance algorithm needs zu be turned on), you kann subscribe zu die LxCamera_Obstacel node zu obtain relevant Informationen. Die Ausgabe ist wie folgt:
Obstacle\_box.msg zugehörig icon 2
5.3.3.4 Result.msg
Die return Wert obtained nach sending die Befehl Nachricht zu die servic in die node ist stored in Result:
Result.msg zugehörig Abbildungen
  • ret: die return Wert obtained durch executing die SDK
  • msg: Description von die return Wert obtained durch executing die SDK
5.3.3.5 Pallet.msg
Die pallet outputs Informationen zugehörig zu die pallet algorithm Ergebnisse. Die pallet Nachricht format ist wie folgt:
Pallet.msg zugehörig Abbildungen
  • header: frame Informationen und timestamp von die aktuell Daten
  • Status: Status Informationen returned durch pallet recognition:
0: Detection erfolgreich -1: No ground detected -2: Pallet legs not detected -3: Die distance between die pallets ist too far -4: unknown Fehler
  • x: X distance between die tray und die optical center von die Kamera
  • y: Y distance between die tray und die optical center von die Kamera
  • yaw: theta angle between die center von die tray und die optical center von die Kamera
After die node starts Ausführung (die pallet algorithm needs zu be turned on), you kann subscribe zu die LxCamera_Pallet node zu obtain relevant Informationen. Die Ausgabe ist wie folgt:
Pallet.msg zugehörig Abbildungen 2

5.3.4 Unique Service Description

Since die unique Service types von ROS1 und ROS2 sind die gleich, ROS1 ist used wie an Beispiel here. There sind die folgende Dateien in die src/srv Ordner:
Illustrations zugehörig zu unique Service descriptions
These Nachrichten sind used zu festlegen oder obtain certain Parameter Werte ​​von die Kamera. Above [---] ist die sent Daten, below [---] ist die returned Daten
5.3.4.1 LxBool.srv
LxBool.srv zugehörig Abbildungen
  • cmd: die Parameter Nummer that needs zu be obtained oder festlegen
  • val: die Wert festlegen wenn setting
  • ist_set: Whether zu festlegen die Parameter. When it ist true, die Wert in val wird be festlegen zu die Kamera. When it ist false, die Wert von dies Parameter wird be read aus die Kamera und displayed.
  • val: Die Wert von die Kamera’s aktuell Parameter returned wenn getting oder setting it
  • Ergebnis: die Wert und Informationen returned durch calling die SDK interface
5.3.4.2 LxCmd.srv
LxCmd.srv zugehörig Abbildungen
  • cmd: Die Parameter Nummer that needs zu be obtained oder festlegen. When it ist 0, alle Parameter Zahlen wird be returned.
  • Ergebnis: die Wert und Informationen returned durch calling die SDK interface, cmd may have multiple return Werte
5.3.4.3 LxFloat.srv
LxFloat.srv zugehörig Abbildungen
  • cmd: die Parameter Nummer that needs zu be obtained oder festlegen
  • val: die Wert festlegen wenn setting
  • ist_set: Whether zu festlegen die Parameter. When it ist true, die Wert in val wird be festlegen zu die Kamera. When it ist false, die Wert von dies Parameter wird be read aus die Kamera und displayed.
  • max_value: die maximal Wert that kann be festlegen für dies Parameter
  • min_value: die minimal Wert that kann be festlegen für dies Parameter
  • cur_value: die aktuell Wert von dies Parameter in die Kamera
  • verfügbar: whether dies Parameter supports setting
  • Ergebnis: die Wert und Informationen returned durch calling die SDK interface
5.3.4.4 LxInt.srv
LxInt.srv zugehörig Abbildungen
  • cmd: die Parameter Nummer that needs zu be obtained oder festlegen
  • val: die Wert festlegen wenn setting
  • ist_set: Whether zu festlegen die Parameter. When it ist true, die Wert in val wird be festlegen zu die Kamera. When it ist false, die Wert von dies Parameter wird be read aus die Kamera und displayed.
  • max_value: die maximal Wert that kann be festlegen für dies Parameter
  • min_value: die minimal Wert that kann be festlegen für dies Parameter
  • cur_value: die aktuell Wert von dies Parameter in die Kamera
  • verfügbar: whether dies Parameter supports setting
  • Ergebnis: die Wert und Informationen returned durch calling die SDK interface
5.3.4.5 LxString.srv
LxString.srv zugehörig Abbildungen
  • cmd: die Parameter Nummer that needs zu be obtained oder festlegen
  • val: die Wert festlegen wenn setting
  • ist_set: Whether zu festlegen die Parameter. When it ist true, die Wert in val wird be festlegen zu die Kamera. When it ist false, die Wert von dies Parameter wird be read aus die Kamera und displayed.
  • val: Die Wert von die Kamera’s aktuell Parameter returned wenn getting oder setting it
  • Ergebnis: die Wert und Informationen returned durch calling die SDK interface

5.3.5 Description von topic subscription Methoden

5.3.5.1 Subscription frame rate, tray algorithm, obstacle avoidance algorithm Ausgabe Daten
Subscribe Frame Rate In die lx_camera_node_ws Verzeichnis, öffnen: bash rate.sh
Illustrations zugehörig zu subscription frame rate, tray algorithm, und obstacle avoidance algorithm Ausgabe Daten
After die lx_camera_node node Bild runs normally und ist refreshed, you kann see die folgende Informationen:
Illustrations zugehörig zu subscription frame rate, pallet algorithm, und obstacle avoidance algorithm Ausgabe Daten 2
Subscribe zu pallet algorithm Ausgabe In die lx_camera_node_ws Verzeichnis, öffnen: bash pallet.sh
Illustrations zugehörig zu subscription frame rate, pallet algorithm, und obstacle avoidance algorithm Ausgabe Daten 3
After die lx_camera_node node Bild runs normally und ist refreshed, you kann see die folgende Informationen:
Illustrations zugehörig zu subscription frame rate, pallet algorithm, und obstacle avoidance algorithm Ausgabe Daten 4
Subscribe zu obstacle avoidance algorithm Ausgabe In die lx_camera_node_ws Verzeichnis, öffnen: bash obstacle.sh
Illustrations zugehörig zu subscription frame rate, pallet algorithm, und obstacle avoidance algorithm Ausgabe Daten 5
After die lx_camera_node node Bild runs normally und ist refreshed, you kann see die folgende Informationen:
Illustrations zugehörig zu subscription frame rate, tray algorithm, und obstacle avoidance algorithm Ausgabe Daten 6
5.3.5.2 Subscribe zu Bild Daten (ROS1)
You kann view die Bild Informationen Ausgabe durch die node through die Bild tool that comes mit ros: Console Eingabe Befehl: rqt_image_view After entering die Befehl, die folgende window wird pop up:
Illustrations zugehörig zu subscribing Bild Daten (ROS1)
Die red Feld kann select die Bilder in alle nodes. Die picture shows die MRDVS Kamera RGB Bild. You kann auch select die Tiefe map oder Intensität map (provided that die Stream has been turned on):
Subscription Bild Daten (ROS1) zugehörig diagram 2
In die figure, die zuerst red Feld ist die RGB Informationen Ausgabe durch die positioning algorithm node, und die remaining three sind Bild Informationen Ausgabe durch die ordinary nodes. amp ist die Intensität map, Tiefe ist die Tiefe map, und rgb ist die rgb map. Select unterschiedlich items zu view unterschiedlich Bilder oder verwenden rviz zu view Bild Daten. Enter die Befehl on die console: rviz wird pop up die folgende window:
Subscription Bild Daten (ROS1) zugehörig diagram 3
After clicking die Add button at die bottom links, a window wird pop up:
Subscription Bild Daten (ROS1) zugehörig diagram 4
Select die desired Bild topic und select Image und click OK in die unten right Ecke. You kann see die Bild Daten on die links side von die main interface, wie shown below:
Subscription Bild Daten (ROS1) zugehörig diagram 5
5.3.5.3 Subscribe zu Bild Daten (ROS2)
You kann view die Bild Informationen Ausgabe durch die node through die Bild tool that comes mit ros2: Enter die Befehl on die console: rqt After entering die Befehl, die folgende window wird pop up:
Illustrations zugehörig zu subscribing Bild Daten (ROS2)
Select die zuerst Image View von die second option at die bottom von die menu bar. After selection, die folgende interface wird pop up:
Subscription Bild Daten (ROS2) zugehörig diagram 2
Die red Feld kann select die Bilder in alle nodes. Die picture shows die MRDVS Kamera RGB Bild. You kann auch select die Tiefe map oder Intensität map (provided that die Stream has been turned on):
Subscription Bild Daten (ROS2) zugehörig diagram 3
In die figure, die zuerst red Feld ist die RGB Informationen Ausgabe durch die positioning algorithm node, und die remaining three sind Bild Informationen Ausgabe durch die ordinary nodes. amp ist die Intensität map, Tiefe ist die Tiefe map, und rgb ist die rgb map. Select unterschiedlich items zu view unterschiedlich Bilder oder verwenden rviz2 zu view Bild Daten. Enter die Befehl on die console: rviz2 wird pop up die folgende window:
Subscription Bild Daten (ROS2) zugehörig diagram 4
After clicking die Add button at die bottom links, a window wird pop up:
Subscription Bild Daten (ROS2) zugehörig diagram 5
Select die desired Bild topic und select Image und click OK in die unten right Ecke. You kann see die Bild Daten on die links side von die main interface, wie shown below:
Subscription Bild Daten (ROS2) zugehörig diagram 6
Some Systeme müssen zu fill in [mrdvs] in die [map] in die above picture zu see die Bild
5.3.5.4 Subscribe zu Punkt Wolke Daten
Die Punkt Wolke Informationen Ausgabe durch die node kann be viewed through die Punkt Wolke tool provided durch ros oder ros2: Command: rviz【ROS1】, rviz2【ROS2】 After entering die Befehl, die folgende window wird pop up:
Illustrations zugehörig zu subscribing zu Punkt Wolke Daten
Click die button in die red Feld below und die folgende Feld wird pop up:
Illustration zugehörig zu subscribing zu Punkt Wolke Daten 2
Select die second tab, und there wird be a node named lx_camera_node. There ist a topic named LxCamera_Cloud in die node. There ist a Nachricht named PointCloud2 in die topic. After selecting, click OK. Die interface nach completion ist wie folgt:
Illustrations zugehörig zu subscribing zu Punkt Wolke Daten 3
(ROS1 interface)
Illustrations zugehörig zu subscribing zu Punkt Wolke Daten 4
(ROS2 interface) At dies time, die Punkt Wolke cannot be displayed normally. Fill in mrdvs in die red und green Feld map above zu see die Punkt Wolke. Die effect ist wie folgt:
Illustrations zugehörig zu subscribing zu Punkt Wolke Daten 5
Die Standard Punkt Wolke unit in ROS ist meters, so wenn viewing using rviz, you müssen zu modify lx_tof_unit in die launch Datei zu 1 [die Standard ist 1]

5.3.6 Description von Service communication Methoden

In ROS1, alle Befehle kann be completed using die Tab key, but in ROS2, nur topics kann be completed, und die Nachricht part needs zu be entered manuell. When inputting Daten in ROS1, you kann Eingabe it in die completion format. When inputting Daten in ROS2, you müssen zu Eingabe it in die format von die yaml Datei. After die node ist Ausführung, öffnen a terminal under die lx_camera_node_ws Ordner, configure die Umgebung in die terminal, und öffnen die Befehl: Quelle devel/Einrichtung.bash
5.3.6.1 Get die Liste von alle Parameter Zahlen (Lx_Cmd)
ros1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxCmd “cmd: 0”
Get alle Parameter Nummer Liste (Lx\_Cmd) zugehörig Abbildungen
You kann see die Ausgabe:
Get alle Parameter Nummer Liste (Lx\_Cmd) zugehörig icon 2
ret ist die Nummer von die Parameter. Die msg describes die Parameter Typ und Beschreibung, für Beispiel: 1001. Dies Parameter ist von Typ int. Die Parameter ist used zu obtain und modify die zuerst exposure Wert. ros2 Enter in die terminal: ros2 Service call /LxCamera_LxCmd lx_camera_ros/srv/LxCmd ‘cmd: 0’
Get alle Parameter Nummer Liste (Lx\_Cmd) zugehörig icon 3
You kann see die folgende Ausgabe:
Get alle Parameter Nummer Liste (Lx\_Cmd) zugehörig icon 4
Since it ist not convenient zu view Parameter Details in ROS2, die Zahlen, types und descriptions von alle Parameter sind auch listed in die folgende table: Some Parameter müssen zu stoppen die flow vor they kann be festlegen, oder there ist a sequence von settings. Please contact die technical support staff für specific needs.
5.3.6.2 Get Int Parameter (Lx_Int)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxInt “cmd: 1001 val: 0 ist_set: false”
Get zugehörig Abbildungen von Int Parameter (Lx\_Int)
You kann see die Ausgabe:
Get die zugehörig icon von Int Parameter (Lx\_Int) 2
What ist in die red Feld ist die return Wert. What ist obtained in die figure ist die high integration time. According zu die return Ergebnis, you kann see that die maximal Wert ist 3600, die minimal Wert ist 1, die aktuell Wert ist 1010, whether die setting ist unterstützt ist unterstützt, die interface call return Wert ist 0, und die return Wert Informationen ist Erfolg.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxInt lx_camera_ros/srv/LxInt '{cmd: 1001,val: 0,is_set: false}'
Get die zugehörig icon von Int Parameter (Lx\_Int) 3
You kann see die Ausgabe:
Get die zugehörig icon von Int Parameter (Lx\_Int) 4
What ist obtained in die figure ist die high integration time. According zu die returned Ergebnisse, we kann see that die maximal Wert ist 3600, die minimal Wert ist 1, die aktuell Wert ist 1010, whether die setting ist unterstützt ist unterstützt, die return Wert von die interface call ist 0, und die return Wert Informationen ist Erfolg.
5.3.6.3 Set Int Parameter (Lx_Int)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxInt “cmd: 1001 val: 2000 ist_set: true”
Illustrations zugehörig zu setting Int Parameter (Lx\_Int)
You kann see die Ausgabe:
Illustration 2 zugehörig zu setting Int Parameter (Lx\_Int)
What ist in die red Feld ist die return Wert. Die high integration time ist festlegen in die figure. According zu die return Ergebnis, you kann see that die maximal Wert ist 3600, die minimal Wert ist 1, die aktuell Wert has been modified zu 2000, whether die support setting ist unterstützt, die interface call return Wert ist 0, und die return Wert Informationen ist Erfolg.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxInt lx_camera_ros/srv/LxInt '{cmd: 1001,val: 3000,is_set: true}'
Illustration 3 zugehörig zu setting Int Parameter (Lx\_Int)
You kann see die Ausgabe:
Illustration 4 zugehörig zu setting Int Parameter (Lx\_Int)
What ist obtained in die figure ist die high integration time. According zu die returned Ergebnisse, we kann see that die maximal Wert ist 3600, die minimal Wert ist 1, die aktuell Wert has been modified zu 3000, whether die setting ist unterstützt ist unterstützt, die interface call return Wert ist 0, und die return Wert Informationen ist Erfolg.
5.3.6.4 Get Float Parameter (Lx_Float)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxFloat “cmd: 2007 val: 0.0 ist_set: false”
Get zugehörig Abbildungen von Float Parameter (Lx\_Float)
You kann see die Ausgabe:
Get die zugehörig icon von Float Parameter (Lx\_Float) 2
What ist in die red Feld ist die return Wert. What ist obtained in die picture ist die Kamera temperature. According zu die return Ergebnis, you kann see that die maximal Wert ist 120, die minimal Wert ist -40, die aktuell Wert ist 49.6875, whether die setting ist unterstützt ist not unterstützt, die interface call return Wert ist 0, und die return Wert Informationen ist Erfolg.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxFloat lx_camera_ros/srv/LxFloat '{cmd: 2007,val: 0,is_set: false}'
Obtain zugehörig Abbildungen von Float Parameter (Lx\_Float) 3
You kann see die Ausgabe:
Get die zugehörig icon von Float Parameter (Lx\_Float) 4
What ist obtained in die picture ist die Kamera temperature. According zu die returned Ergebnisse, you kann see that die maximal Wert ist 120, die minimal Wert ist -40, die aktuell Wert ist 50.4375, whether die setting ist unterstützt ist not unterstützt, die return Wert von die interface call ist 0, und die return Wert Informationen ist Erfolg.
5.3.6.5 Set Float Parameter (Lx_Float)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxFloat “cmd: 2007 val: 5.0 ist_set: true”
Illustrations zugehörig zu setting Float Parameter (Lx\_Float)
You kann see die Ausgabe:
Illustration 2 zugehörig zu setting Float Parameter (Lx\_Float)
Die red Feld ist die return Wert. Die Kamera temperature ist festlegen in die picture. According zu die return Ergebnis, you kann see that die maximal Wert ist 120, die minimal Wert ist -40, die aktuell Wert ist 50.9375, whether die setting ist unterstützt ist not unterstützt, die interface call return Wert ist -2, die return Wert Informationen ist not unterstützt, die Wert festlegen here ist 5, die aktuell Wert und die festlegen Wert sind inconsistent because die Parameter does not support setting.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxFloat lx_camera_ros/srv/LxFloat '{cmd: 2007,val: 5.0,is_set: true}'
Illustration 3 zugehörig zu setting Float Parameter (Lx\_Float)
You kann see die Ausgabe:
Illustrations zugehörig zu setting Float Parameter (Lx\_Float) 4
Die Kamera temperature ist festlegen in die picture. According zu die returned Ergebnisse, you kann see that die maximal Wert ist 120, die minimal Wert ist -40, die aktuell Wert ist 51.125, whether die setting ist unterstützt ist not unterstützt, die return Wert von die interface call ist -2, die return Wert Informationen ist not unterstützt, die Wert festlegen here ist 5, die aktuell Wert und die festlegen Wert sind inconsistent because die Parameter does not support setting.
5.3.6.6 Get Bool Parameter (Lx_Bool)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxBool “cmd: 3012 val: false ist_set: false”
Get zugehörig Abbildungen von Bool Parameter (Lx\_Bool)
You kann see die Ausgabe:
Get Bool Parameter (Lx\_Bool) zugehörig icon 2
What ist in die red Feld ist die return Wert. What ist obtained in die picture ist 2D automatic exposure. According zu die return Ergebnis, we kann see that die aktuell Wert ist false, die return Wert von die interface call ist 0, und die return Wert Informationen ist Erfolg.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxBool lx_camera_ros/srv/LxBool '{cmd: 3012,val: false,is_set: false}'
Get Bool Parameter (Lx\_Bool) zugehörig icon 3
You kann see die Ausgabe:
Get Bool Parameter (Lx\_Bool) zugehörig icon 4
What ist obtained in die figure ist 2D automatic exposure. According zu die return Ergebnis, we kann see that die aktuell Wert ist false, die return Wert von die interface call ist 0, und die return Wert Informationen ist Erfolg.
5.3.6.7 Set Bool Parameter (Lx_Bool)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxBool “cmd: 3012 val: true ist_set: true”
Illustrations zugehörig zu setting Bool Parameter (Lx\_Bool)
You kann see die Ausgabe:
Illustration 2 zugehörig zu setting Bool Parameter (Lx\_Bool)
What ist in die red Feld ist die return Wert. Die 2D automatic exposure ist festlegen in die picture. According zu die return Ergebnis, we kann see that die aktuell Wert ist true, die return Wert von die interface call ist 0, die return Wert Informationen ist Erfolg, und die aktuell Wert ist consistent mit die festlegen Wert.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxBool lx_camera_ros/srv/LxBool '{cmd: 3012,val: true,is_set: true}'
Illustration 3 zugehörig zu setting Bool Parameter (Lx\_Bool)
You kann see die Ausgabe:
Illustrations zugehörig zu setting Bool Parameter (Lx\_Bool) 4
Die setting in die picture ist 2D automatic exposure. According zu die return Ergebnis, we kann see that die aktuell Wert ist true, die return Wert von die interface call ist 0, die return Wert Informationen ist Erfolg, und die aktuell Wert ist consistent mit die festlegen Wert.
5.3.6.8 Get String Parameter (Lx_String)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxString “cmd: 4001 val: ” ist_set: false”
Get zugehörig Abbildungen von String Parameter (Lx\_String)
You kann see die Ausgabe:
Obtain String Parameter (Lx\_String) zugehörig icon 2
What ist in die red Feld ist die return Wert. What ist obtained in die figure ist die Gerät Version Nummer. According zu die return Ergebnis, we kann see that die aktuell Wert ist V1.1.33_231201, die return Wert von die interface call ist 0, und die return Wert Informationen ist Erfolg.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxString lx_camera_ros/srv/LxString '{cmd: 4001,val: '',is_set: false}'
Obtain String Parameter (Lx\_String) zugehörig icon 3
You kann see die Ausgabe:
Get die zugehörig icon von String Parameter (Lx\_String) 4
What ist obtained in die figure ist die Gerät Version Nummer. According zu die return Ergebnis, we kann see that die aktuell Wert ist V1.1.33_231201, die return Wert von die interface call ist 0, und die return Wert Informationen ist Erfolg.
5.3.6.9 Set String Parameter (Lx_String)
ROS1 Enter in die terminal: rosservice call /lx_camera_node/LxCamera_LxString “cmd: 4001 val: ‘put:\“123\”’ ist_set: true”
Illustrations zugehörig zu setting String Parameter (Lx\_String)
You kann see die Ausgabe:
Illustration 2 zugehörig zu setting String Parameter (Lx\_String)
Die red Feld ist die return Wert. Die Gerät Version Nummer ist festlegen in die figure. According zu die return Ergebnis, we kann see that die aktuell Wert ist V1.1.33_231201, die return Wert von die interface call ist -2, und die return Wert Informationen ist not unterstützt. Die aktuell Wert und die festlegen Wert sind inconsistent because dies Parameter does not support setting.
ROS2 Enter in die terminal: ros2 service call /LxCamera_LxString lx_camera_ros/srv/LxString '{cmd: 4001,val: "put:\\"123\\"",is_set: true}'
Illustration 3 zugehörig zu setting String Parameter (Lx\_String)
You kann see die Ausgabe:
Illustrations zugehörig zu setting String Parameter (Lx\_String) 4
Die Gerät Version Nummer ist festlegen in die figure. According zu die returned Ergebnis, we kann see that die aktuell Wert ist V1.1.33_231201, die return Wert von die interface call ist -2, und die return Wert Informationen ist not unterstützt. Die aktuell Wert ist inconsistent mit die festlegen Wert because dies Parameter does not support setting. When setting a Wert von String Typ, escape characters muss be added zu single quotes und double quotes, except für die initial double quotes in ROS2 und die initial single quotes in ROS1. For Beispiel, if you want zu Eingabe die string [PUT”123”], you muss ergänzen escape characters zu become: [PUT\”123\”].

Empfohlene ROS-Hardware und Ressourcenverbrauch

6.1 Empfohlene Hardware-Konfiguration

In die empfohlen hardware Konfiguration, die analysis ist based on CPU core count, CPU usage, und Speicher size. These sind empfohlen configurations, not minimal requirements. Wenn Ihr hardware ist below die recommendation, stabil operation may still be possible durch reducing Stream Ausgabe, disabling Punkt-Wolke computation, oder lowering die algorithm load. Running a workload above die verfügbar Konfiguration may crash die ROS core oder Ubuntu. Die second und third sections von dies chapter provide detailed usage Daten. Choose die operating Umgebung und Stream Konfiguration that best fits Ihr System. All Daten here was collected in a VM using an M4 Pro Kamera. Ubuntu16.04 Ubuntu18.04 Ubuntu20.04 Ubuntu22.04

6.2 CPU-Details

Die CPU-Details wird zeigen die amount von CPU resources occupied durch die node under unterschiedlich operating conditions. Die Test ist based on AMD64 [8 cores], 8G Speicher hardware Umgebung, die Test Kamera ist M4 Pro, die Test algorithm ist tray algorithm, 2D Breite und Höhe sind 1280*960, und 3D Breite und Höhe sind 640*480, 2D anti-distortion ist on, 3D anti-distortion ist off, und integration 110 - 3000, Tiefe 0 - 8000, ToF frame rate 14, streaming mode, smoothing level 1, noise level 1, time domain level 0, statistics Befehl ist TOP. Because die Test soft Umgebung ist VM virtual machine, it ist normal für die Daten displayed durch die physical machine zu fluctuate compared mit that in die document. For some Kameras, such wie S2, some algorithms sind calculated on die host computer, which Ergebnisse in a large amount von resource usage, which ist normal.
1. Some nouns sind explained wie folgt: -Single Stream: refers zu turning on any Stream von RGB, Tiefe, und Intensität
  • Dual Stream: refers zu turning on any two streams von RGB, Tiefe und Intensität
-Three streams: refers zu RGB, Tiefe, und Intensität alle three streams sind turned on
  • Four streams: means RGB, Tiefe, Intensität, und Punkt Wolke sind alle turned on
2. Die algorithm has a binding relationship mit some streams. Die binding relationship ist wie folgt:
  • To enable die pallet algorithm, die Tiefe muss be enabled
  • To turn on die obstacle avoidance algorithm, you muss turn on Tiefe
  • To turn on die positioning algorithm, you muss turn on RGB

Die light blau background in die table ist die Ausführung Konfiguration mit Punkt Wolke enabled, und die colorless background ist die Ausführung Konfiguration ohne Punkt Wolke enabled. All die Test Daten below have die algorithm shifted down durch Standard, so für S2 series Kameras, alle Test Werte ​​may be too small [some algorithms von S2 series Kameras sind forced zu move up]. Ubuntu16.04 Ubuntu18.04 Ubuntu20.04 Ubuntu22.04

6.3 Speicher-Details

Die Speicher Details wird zeigen die amount von Speicher resources occupied durch die node under unterschiedlich operating conditions. Die Test ist based on AMD64 [8 cores], 8G Speicher hardware Umgebung, die Test Kamera ist M4 Pro, die Test algorithm ist tray algorithm, 2D Breite und Höhe sind 1280*960, und 3D Breite und Höhe sind 640*480, 2D anti-distortion ist on, 3D anti-distortion ist off, points 110 - 3000, Tiefe 0 - 8000, ToF frame rate 14, streaming mode, smoothing level 1, noise level 1, time domain level 0, statistics Befehl ist TOP. Because die Test soft Umgebung ist VM virtual machine, it ist normal für die Daten displayed durch die physical machine zu fluctuate compared mit that in die document. For some Kameras, such wie S2, some algorithms sind calculated on die host computer, which Ergebnisse in a large amount von resource usage, which ist normal.
1. Some nouns sind explained wie folgt: -Single Stream: refers zu turning on any Stream von RGB, Tiefe, und Intensität
  • Dual Stream: refers zu turning on any two streams von RGB, Tiefe und Intensität
-Three streams: refers zu RGB, Tiefe, und Intensität alle three streams sind turned on
  • Four streams: means RGB, Tiefe, Intensität, und Punkt Wolke sind alle turned on
2. Die algorithm has a binding relationship mit some streams. Die binding relationship ist wie folgt:
  • To enable die pallet algorithm, die Tiefe muss be enabled
  • To turn on die obstacle avoidance algorithm, you muss turn on Tiefe
  • To turn on die positioning algorithm, you muss turn on RGB
  1. Die light blau background in die table ist die Ausführung Konfiguration mit Punkt Wolke enabled, und die colorless background ist die Ausführung Konfiguration ohne Punkt Wolke enabled. All die Test Daten below have die algorithm shifted down durch Standard, so für S2 series Kameras, alle Test Werte ​​may be too small [some algorithms von S2 series Kameras sind forced zu move up].
Ubuntu16.04 Ubuntu18.04 Ubuntu20.04
Ubuntu22.04

Anhang

Dies Anhang provides Installation Methoden für some tools. When using these Methoden, you müssen zu have at least some grundlegenden knowledge von Linux. There ist no guarantee that every computer kann be successfully installed through die Methoden shown in die Anhang von dies document. Die Umgebung von each computer ist unterschiedlich, und die problems encountered may not be consistent. Wenn you encounter problems not shown in dies Anhang, please search für solutions yourself.

1. Cmake specified Version Installation method

Öffnen Sie https://cmake.org/download/, laden Sie die erforderliche CMake-Version herunter und entpacken Sie das Paket mit tar -zxvf cmake-XXX.tar.gz. Wechseln Sie in das entpackte Verzeichnis und kompilieren und konfigurieren Sie CMake: ./bootstrap make sudo make install Check die Cmake Version zu see if die Installation ist erfolgreich: cmake —version

2. Opencv specified Version Installation method

  1. Download die erforderlich Version von opencv: Releases-OpenCV
Illustrations zugehörig zu die Installation method von die specified Version von Opencv
  1. Environment Konfiguration, execute die folgende Befehle in sequence:
sudo apt-get install build-essential sudo apt-getinstallcmake gitlibgtk2.0-devpkg-config libavcodec-dev libavformat-dev libswscale-dev sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev
  1. Create a new opencv Ordner und extract die downloaded Quelle Code into die opencv Ordner.
  2. Ausführen die folgende Befehle in sequence:
  3.   cd opencv
  4.   mkdir build && cd build
  5.   sudocmake-DCMAKE_BUILD_TYPE=Release-D
  6.   CMAKE_INSTALL_PREFIX=/usr/local ..
  7.   sudo make -j4
  8. sudo make installieren und wait für die Installation zu complete

3. Pcl specified Version Installation method

  1. Check die unterstützt pcl Version:
apt-cache madison libpcl-dev
  1. Installieren die specified pcl Version (where 1.10.0 needs zu be replaced mit die erforderlich Version Nummer):
sudo apt-get install libpcl-dev=1.10.0

4. ROS installieren

Ubuntu16.04
  1. Add die software Quelle und festlegen die secret key:
sudo sh -c ‘echo “deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main” > /etc/apt/sources.list.d/ros-latest.list’ sudoapt-keyadv—keyserver’hkp://keyserver.ubuntu.com:80’—recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. Add secret key:
curl -sSL ‘http://keyserver.ubuntu.com/pks/lookup?op=get&search=0xC1CF6E31E6BADE8868B172B4F42ED6FBAB17C654’ | sudo apt-key add -
  1. Update Quelle:
sudo apt-get update
  1. Installieren complete ros:
sudo apt-get install ros-kinetic-desktop-full
  1. Configure Umgebung variables:
echo “Quelle /opt/ros/kinetic/Einrichtung.bash” >> ~/.bashrc source ~/.bashrc
  1. Schließen Sie ab ROS-zugehörig tools:
sudoaptinstallpython-rosinstallpython-rosinstall-generatorpython-wstool build-essential
  1. Now that die Installation von ROS1 ist complete, ausführen die Beispiel that comes mit ROS zu prüfen whether die Installation ist correct:
Open a terminal und öffnen: roscore Open another terminal und öffnen: rosrun turtlesim turtlesim_node Open another terminal: rosrun turtlesim turtle_teleop_key In die third terminal, you kann control die little turtle through die arrow keys Wenn it kann ausführen normally wie shown below, it means that ros has been installed correctly: Installation ROS zugehörig Abbildungen
Ubuntu18.04
  1. Set up die software Quelle:
sudo sh -c ’. /etc/lsb-release && echo “deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main” > /etc/apt/sources.Liste.d/ros-latest.Liste’ 2.Set die public key: sudoapt-keyadv—keyserver’hkp://keyserver.ubuntu.com:80’—recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. Update software Liste:
sudo apt update
  1. Installieren Ubuntu18.04 Version von ROS1:
sudo apt install ros-melodic-desktop-full
  1. Set Umgebung variables:
echo “Quelle /opt/ros/melodic/Einrichtung.bash” >> ~/.bashrc source ~/.bashrc if it is zsh: echo “Quelle /opt/ros/melodic/Einrichtung.bash” >> ~/.zshrc source ~/.zshrc
  1. Schließen Sie ab ROS-zugehörig tools:
sudoaptinstallpython-rosdeppython-rosinstallpython-rosinstall-generator python-wstool build-essential
  1. Now that die Installation von ROS1 ist complete, ausführen die Beispiel that comes mit ROS zu prüfen whether die Installation ist correct:
Open a terminal und öffnen: roscore Open another terminal und öffnen: rosrun turtlesim turtlesim_node Open another terminal: rosrun turtlesim turtle_teleop_key In die third terminal, you kann control die little turtle through die arrow keys Wenn it kann ausführen normally wie shown below, it means that ros has been installed correctly:
Installation ROS zugehörig Abbildungen 2
Ubuntu20.04
  1. Configure die public key:
sudoapt-keyadv—keyserver’hkp://keyserver.ubuntu.com:80’—recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. Wenn it shows that it cannot connect zu die Server oder times out, please aktualisieren die software Quelle Liste zuerst:
sudo apt-get update sudo apt-get upgrade
  1. After configuring die public key, aktualisieren die software Liste again:
sudo apt-get update install ros: sudo apt install ros-noetic-desktop-full
  1. Set Umgebung variables:
echo “Quelle /opt/ros/noetic/Einrichtung.bash” >> ~/.bashrc source ~/.bashrc
  1. ROS installieren tools:
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  1. Now that die Installation von ROS1 ist complete, ausführen die Beispiel that comes mit ROS zu prüfen whether die Installation ist correct:
Open a terminal und öffnen: roscore Open another terminal und öffnen: rosrun turtlesim turtlesim_node Open another terminal: rosrun turtlesim turtle_teleop_key In die third terminal, you kann control die little turtle through die arrow keys Wenn it kann ausführen normally wie shown below, it means that ros has been installed correctly:
Installation ROS zugehörig Abbildungen 3
Ubuntu22.04 It ist not empfohlen zu installieren ros1 in Ubuntu22.04. It ist not officially unterstützt. Wenn you want zu installieren it, you wird encounter a lot von dependency problems.

5. Neues Testpaket in ROS erstellen

  1. Create a new Ordner ws, create a new src Ordner in die ws Ordner, öffnen die src Ordner und execute:
catkin_create_pkg example std_msgs rospy roscpp
  1. Dies creates a new package named Beispiel, which depends on std_msgs rospy roscpp
  2. Anschließend kompilieren dies new package: catkin_make Dies ist an empty package, there wird not be any executable program, it ist just a package
  3. Next, we wird demonstrate how zu create a package that kann Ausgabe ‘Hellow world’
  4. Based on die package just now, we öffnen die src Ordner (src in die package) und create a new main.cpp, wie shown below (pay attention zu die Pfad):
Illustration von how zu create a new Test package in Ros
  1. In main.cpp, we öffnen some codes:
Ros How zu Create a New Test Package Related Illustration 2
  1. Anschließend we change die outside CMakeLists.txt und ergänzen a line at die bottom: ergänzen_executable(Beispiel src/main.cpp)
Ros How zu Create a New Test Package Related Illustration 3
  1. Anschließend return zu die ws Verzeichnis zu kompilieren und execute die Befehl: catkin_make
Ros How zu Create a New Test Package Related Illustration 4
  1. Seeing these means die Kompilierung ist erfolgreich.
  2. Next we configure die Umgebung:
source devel/setup.bash
Ros How zu Create a New Test Package Related Illustrations 5
  1. Anschließend execute die program und you kann see die Ausgabe:
rosrun example example
Ros How zu Create a New Test Package Related Illustrations 6

6. ROS installieren2

Ubuntu16.04
  1. Add secret key:
sudo apt-get update && sudo apt-get install curl curl http://repo.ros2.org/repos.key | sudo apt-key add -
  1. Add permissions:
sudo apt update && sudo apt install curl gnupg2 lsb-release curl-shttps://raw.githubusercontent.com/ros/rosdistro/master/ros.asc|sudo apt-key add -
  1. Wenn an Fehler ist reported in dies step, verwenden VPN zu bypass die wall und then öffnen die browser, öffnen die URL, und copy die content, then create a new ros.asc und copy die content zu die Datei. After die copy ist completed, die folgende ist wie folgt:
  2. Anschließend re-execute step 3: sudo apt-key ergänzen ros.asc
  3. Continue Ausführung:
sudo sh -c ‘echo “deb [arch=amd64] http://packages.ros.org/ros2/ubuntu bionic main” > /etc/apt/sources.list.d/ros2-latest.list’
  1. ROS installieren2:
sudo apt update sudo apt install ros-ardent-desktop
  1. Configure Umgebung variables:
source /opt/ros/ardent/setup.bash
  1. Installieren die Funktion package:
sudo apt-get update sudo apt-get install ros-ardent-ros1-bridge sudo apt-get install ros-ardent-turtlebot2-*
  1. Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt zu ausführen:
source~/.bashrc ros2 run demo_nodes_cpp talker
  1. Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
Ubuntu18.04:
  1. Add software Quelle
sudo apt update && sudo apt install curl gnupg2 lsb-release curl -s https://raw.githubusercontent.com/ros/rosdistro/master/ros.asc sudo apt-key add ros.asc
  1. Wenn dies step reports an Fehler wie folgt:
  2. Use VPN zu bypass die wall, then öffnen die browser, öffnen die URL, und copy die content, then create a new ros.asc und copy die content zu die Datei. After die copy ist completed, it ist wie folgt:
  3. Anschließend re-execute step 3: sudo apt-key ergänzen ros.asc
  4. Continue Ausführung:
sudo sh -c ‘echo “deb [arch=amd64] http://packages.ros.org/ros2/ubuntu bionic main” > /etc/apt/sources.list.d/ros2-latest.list’
  1. After completion, starten downloading ros2, in which die red fonts müssen zu be replaced mit unterschiedlich Versionen (see die table above):
sudo apt update sudo apt install ros-eloquent-desktop
  1. Wait für die Installation zu complete und continue zu installieren die python library. Ausführen: sudo apt installieren -y libpython3-dev python3-pip pip3 installieren -U argcomplete
Anschließend configure die Umgebung variables: echo “Quelle /opt/ros/eloquent/Einrichtung.bash” >> ~/.bashrc source ~/.bashrc
  1. Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt zu ausführen:
source ~/.bashrc ros2 run demo_nodes_py listener
  1. Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
Ubuntu20.04
  1. Add software Quelle
sudo apt update && sudo apt install curl gnupg2 lsb-release sudo curl -sSL [https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o](https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o) /usr/share/keyrings/ros-archive-keyring.gpg
  1. Wenn you encounter die Fehler “ailed zu connect zu raw.githubusercontent.com port 443 nach 13 ms: connection refused”
Installation ROS2 zugehörig Abbildungen 6
sudo vi /etc/hosts
  1. Add die folgende analysis
185.199.108.133raw.githubusercontent.com
  1. Die added Dateien sind wie folgt:
Installation ROS2 zugehörig Abbildungen 7
echo”deb[arch=(Quelle/etc/os-Veröffentlichungs&&echo$UBUNTU_CODENAME) main” | sudo tee /etc/apt/sources.Liste.d/ros2.Liste > /dev/null
  1. Continue Ausführung:
sudo sh -c ‘echo “deb [arch=amd64] http://packages.ros.org/ros2/ubuntu bionicmain” > /etc/apt/sources.list.d/ros2-latest.list’
  1. After completion, starten downloading ros2:
sudo apt update sudo apt install ros-foxy-desktop
  1. Wait für die Installation zu complete und continue zu installieren die python library. Ausführen: sudo apt installieren -y libpython3-dev python3-pip pip3 installieren -U argcomplete
  2. Anschließend configure die Umgebung variables:
echo “Quelle /opt/ros/foxy/Einrichtung.bash” >> ~/.bashrc source ~/.bashrc
  1. Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt zu ausführen:
source ~/.bashrc ros2 run demo_nodes_py listener
  1. Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
Ubuntu22.04
  1. Add software Quelle
sudo apt update && sudo apt install curl gnupg lsb-release sudo curl -sSL https://raw.githubusercontent.com/ros/rosdistro/master/ros.key -o /usr/share/keyrings/ros-archive-keyring.gpgecho”deb[arch=(source/etc/os-release&&echo$UBUNTU_CODENAME) main” | sudo tee /etc/apt/sources.list.d/ros2.list > /dev/null
  1. Wenn you encounter die Fehler “ailed zu connect zu raw.githubusercontent.com port 443 nach 13 ms: connection refused”
Installation ROS2 zugehörig Abbildungen 9
sudo vi /etc/hosts adds the following analysis 185.199.108.133raw.githubusercontent.com Die added Dateien sind wie folgt:
Installation ROS2 zugehörig Abbildungen 10
  1. After completion, starten downloading ros2: sudo apt aktualisieren
sudo apt install ros-humble-desktop
  1. Wait für die Installation zu complete und continue zu installieren die python library. Ausführen: sudo apt installieren -y libpython3-dev python3-pip pip3 installieren -U argcomplete
  2. Anschließend configure die Umgebung variables:
echo “Quelle /opt/ros/humble/Einrichtung.bash” >> ~/.bashrc source ~/.bashrc
  1. Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt zu ausführen:
source ~/.bashrc ros2 run demo_nodes_py listener
  1. Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:

7. Neues Testpaket in ROS erstellen2

  1. Ausführen die Befehl:
mkdir example_ws && cd example_ws ros2 pkg create —build-type ament_cmake —node-name example_n example_p colcon build source install/setup.bash ros2 run example_p example_n
  1. You kann create a new package named Beispiel_p und a node named Beispiel_n. After Ausführung, it wird Ausgabe: hello world Beispiel_p package