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

- 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

2.2.3 GCC-Version prüfen

2.2.4 OpenCV-Version anzeigen

2.2.5 PCL-Version prüfen
2.2.6 ROS-Version anzeigen


2.3 Grundlegende Entwicklungsumgebung einrichten
Aktualisieren Sie vor der Installation die Paketliste:
2.3.1 CMake installieren

2.3.2 GCC installieren

2.4 Optionale Entwicklungsumgebung einrichten
2.4.1 OpenCV installieren [kann Kamerabilder anzeigen]
![Abbildungen zur OpenCV-Installation [kann Kamerabilder anzeigen]](https://mintcdn.com/mrdvs/tL-WJIR2I7zXpd8i/images/developers/camera-sdk-linux-examples-install-opencv-can-display-camera-images.avif?fit=max&auto=format&n=tL-WJIR2I7zXpd8i&q=85&s=2d198482de6242a7b996cf46e67a11e5)
2.4.2 PCL installieren [kann Punktwolken anzeigen]
![Abbildungen zur PCL-Installation [kann Punktwolken anzeigen]](https://mintcdn.com/mrdvs/tL-WJIR2I7zXpd8i/images/developers/camera-sdk-linux-examples-install-pcl-can-display-point-cloud.avif?fit=max&auto=format&n=tL-WJIR2I7zXpd8i&q=85&s=d3a7769cccce429095b1c579bfee93b1)
Beispielcode vorbereiten
3.1 Installationsskript ausführen
- Entpacken Sie die Lanxin-MRDVS-Datei und öffnen Sie den Ordner Lanxin-MRDVS.

- Klicken Sie mit der rechten Maustaste, um die Konsole zu öffnen.
- Führen Sie das Skript install.sh aus.

- Öffnen Sie das Verzeichnis /opt/, um zu prüfen, ob die Installation erfolgreich war.

- Wenn der Ordner gefunden wird, war die Installation erfolgreich.
- Wenn die Installation fehlschlägt, müssen Sie die Dateien manuell zum Verzeichnis opt hinzufügen.
- Führen Sie das Skript set_socket_buffer_size.sh aus.

- 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:
- 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:
- 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
3.2.2 Java Beispiel Code
Enter die java Verzeichnis. Die Verzeichnis Inhalt sind wie folgt:
- 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:
- 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:
- 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:
- 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:


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:
- 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

- 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:

lx_camera_node_ws Ordner, und ausführen:



roslaunch:
4.4 ROS2-Beispielcode kompilieren und ausführen
Enter die ros2 Ordner. Die Inhalt von die Ordner sind wie folgt:

ros-pcl dependency package. Replace foxy mit die ROS 2 distribution installed on Ihr System:
lx_camera_node_ws Verzeichnis und build die Projekt:


ros2 launch:
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 dieros-v1pro Ordner und kompilieren it:


- roslaunch lx_camera_ros localization.launch
- roslaunch lx_camera_ros mapping.launch
- roslaunch lx_camera_ros sensor_sim.launch
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:

- log_path: Pfad von log Ausgabe
- print_level: log printing level
- enable_screen_print: whether die log ist printed on die console

- öffnen_mode: öffnen die Kamera mode
- param: Parameter für opening die Kamera

- handle: Die handle von die Kamera, which wird be returned in DcOpenDevice

- handle: die handle von die Kamera zu be festlegen
- cmd: Befehl Nummer
- handle: die handle von die Kamera zu be festlegen
- cmd: Befehl Nummer

- handle: die handle von die Kamera zu be festlegen
- cmd: Befehl Nummer
- Wert: die Wert zu be festlegen
- handle: die handle von die Kamera zu be festlegen
- cmd: Befehl Nummer
- 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
- There sind die folgende Dateien in die src/launch Ordner:

- 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
- 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
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:
- 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
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
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:
5.3.3.1 FrameRate.msg
Dies node outputs frame rate Informationen. Die Nachricht format ist wie folgt:
- 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

5.3.3.2 Obstacle.msg
obstacle outputs Informationen zugehörig zu die obstacle avoidance algorithm Ergebnisse. Die obstacle Nachricht format ist wie folgt:
- header: frame Informationen und timestamp von die aktuell Daten
- Status: Status Informationen returned durch obstacle avoidance
- io_output: Obstacle avoidance Informationen Ausgabe durch die io interface
- Feld_number: Nummer von obstacles
- Feld: obstacle Informationen, variable length array, die length ist determined durch Feld_number

5.3.3.3 Obstacle_box.msg
obstacle_box outputs obstacle-zugehörig Informationen, und die obstacle_box Nachricht format ist wie folgt:
- 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

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:
- 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:
- header: frame Informationen und timestamp von die aktuell Daten
- Status: Status Informationen returned durch pallet recognition:
- 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

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:
5.3.4.1 LxBool.srv

- 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

- 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

- 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

- 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

- 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





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:




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:





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:




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.bash5.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”



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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxInt lx_camera_ros/srv/LxInt '{cmd: 1001,val: 0,is_set: false}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxInt lx_camera_ros/srv/LxInt '{cmd: 1001,val: 3000,is_set: true}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxFloat lx_camera_ros/srv/LxFloat '{cmd: 2007,val: 0,is_set: false}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxFloat lx_camera_ros/srv/LxFloat '{cmd: 2007,val: 5.0,is_set: true}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxBool lx_camera_ros/srv/LxBool '{cmd: 3012,val: false,is_set: false}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxBool lx_camera_ros/srv/LxBool '{cmd: 3012,val: true,is_set: true}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxString lx_camera_ros/srv/LxString '{cmd: 4001,val: '',is_set: false}'


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”

ROS2 Enter in die terminal:
ros2 service call /LxCamera_LxString lx_camera_ros/srv/LxString '{cmd: 4001,val: "put:\\"123\\"",is_set: true}'


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
- Four streams: means RGB, Tiefe, Intensität, und Punkt Wolke sind alle turned on
- 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
- Four streams: means RGB, Tiefe, Intensität, und Punkt Wolke sind alle turned on
- 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].
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 mittar -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
- Download die erforderlich Version von opencv: Releases-OpenCV

- Environment Konfiguration, execute die folgende Befehle in sequence:
- Create a new opencv Ordner und extract die downloaded Quelle Code into die opencv Ordner.
- Ausführen die folgende Befehle in sequence:
- cd opencv
- mkdir build && cd build
- sudocmake-DCMAKE_BUILD_TYPE=Release-D
- CMAKE_INSTALL_PREFIX=/usr/local ..
- sudo make -j4
- sudo make installieren und wait für die Installation zu complete
3. Pcl specified Version Installation method
- Check die unterstützt pcl Version:
- Installieren die specified pcl Version (where 1.10.0 needs zu be replaced mit die erforderlich Version Nummer):
4. ROS installieren
Ubuntu16.04- Add die software Quelle und festlegen die secret key:
- Add secret key:
- Update Quelle:
- Installieren complete ros:
- Configure Umgebung variables:
- Schließen Sie ab ROS-zugehörig tools:
- Now that die Installation von ROS1 ist complete, ausführen die Beispiel that comes mit ROS zu prüfen whether die Installation ist correct:

Ubuntu18.04
- Set up die software Quelle:
- Update software Liste:
- Installieren Ubuntu18.04 Version von ROS1:
- Set Umgebung variables:
- Schließen Sie ab ROS-zugehörig tools:
- Now that die Installation von ROS1 ist complete, ausführen die Beispiel that comes mit ROS zu prüfen whether die Installation ist correct:

- Configure die public key:
- Wenn it shows that it cannot connect zu die Server oder times out, please aktualisieren die software Quelle Liste zuerst:
- After configuring die public key, aktualisieren die software Liste again:
- Set Umgebung variables:
- ROS installieren tools:
- Now that die Installation von ROS1 ist complete, ausführen die Beispiel that comes mit ROS zu prüfen whether die Installation ist correct:

5. Neues Testpaket in ROS erstellen
- Create a new Ordner ws, create a new src Ordner in die ws Ordner, öffnen die src Ordner und execute:
- Dies creates a new package named Beispiel, which depends on std_msgs rospy roscpp
- 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
- Next, we wird demonstrate how zu create a package that kann Ausgabe ‘Hellow world’
- 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):

- In main.cpp, we öffnen some codes:

- Anschließend we change die outside CMakeLists.txt und ergänzen a line at die bottom: ergänzen_executable(Beispiel src/main.cpp)

- Anschließend return zu die ws Verzeichnis zu kompilieren und execute die Befehl: catkin_make

- Seeing these means die Kompilierung ist erfolgreich.
- Next we configure die Umgebung:

- Anschließend execute die program und you kann see die Ausgabe:

6. ROS installieren2
Ubuntu16.04- Add secret key:
- Add permissions:
- 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:
- Anschließend re-execute step 3: sudo apt-key ergänzen ros.asc
- Continue Ausführung:
- ROS installieren2:
- Configure Umgebung variables:
- Installieren die Funktion package:
- Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
- Open another interrupt zu ausführen:
- Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
- Add software Quelle
- Wenn dies step reports an Fehler wie folgt:
- 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:
- Anschließend re-execute step 3: sudo apt-key ergänzen ros.asc
- Continue Ausführung:
- After completion, starten downloading ros2, in which die red fonts müssen zu be replaced mit unterschiedlich Versionen (see die table above):
- 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
- Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
- Open another interrupt zu ausführen:
- Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
- Add software Quelle
- Wenn you encounter die Fehler “ailed zu connect zu raw.githubusercontent.com port 443 nach 13 ms: connection refused”

- Add die folgende analysis
- Die added Dateien sind wie folgt:

- Continue Ausführung:
- After completion, starten downloading ros2:
- 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:
- Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
- Open another interrupt zu ausführen:
- Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
- Add software Quelle
- Wenn you encounter die Fehler “ailed zu connect zu raw.githubusercontent.com port 443 nach 13 ms: connection refused”


- After completion, starten downloading ros2: sudo apt aktualisieren
- 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:
- Try Ausführung die Beispiel program, öffnen a terminal und ausführen:
- Open another interrupt zu ausführen:
- Die folgende terminal Ausgabe proves that die Installation ist erfolgreich:
7. Neues Testpaket in ROS erstellen2
- Ausführen die Befehl:
- 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