Vai al contenuto principale
Versione del documento: V1.0; dati di revisione: 2024-10-12.

Panoramica

MRDVS Camera SDK per Linux includono esempi per C/C++, Java (server HTTP), ROS e ROS 2. Gli esempi mostrano il flusso di lavoro di base dell’SDK; aggiungi la logica specifica dell’applicazione e la gestione degli errori del tuo progetto. Completa prima la configurazione dell’ambiente, lo script di installazione e i controlli delle directory degli esempi. Segui quindi la sezione relativa alla compilazione e all’esecuzione per il linguaggio scelto. L’appendice elenca i metodi di installazione per le dipendenze e i pacchetti di test comuni.

Sistema e ambiente

Sistemi compatibili e versioni delle dipendenze

Sono supportati i seguenti sistemi Linux. Le versioni predefinite dei programmi sono elencate di seguito:

2.2 Controllare la versione del sistema e dell’applicazione

2.2.1 Controllare la versione del sistema

Risultato:
Immagini relative alla versione del sistema
Numero di versione del sistema operativo: 5.15.0
  • Numero di versione principale: 5
  • Numero di versione: 15 [I numeri dispari indicano versioni di sviluppo, quelli pari versioni stabili]
  • Numero di revisione: 0 [Numero di modifiche]
  • N-esima revisione di questa versione: 97
  • Versione del kernel: #107~20.0.4.1; normalmente la versione del sistema corrisponde alla versione del kernel

2.2.2 Controllare la versione di CMake

risultato:
View Cmake versione correlato immagini
Indica la versione di CMake 3.16.3.

2.2.3 Controllare la versione di GCC

risultato:
Immagini relative alla versione di GCC
Il numero di versione si trova nel riquadro blu in basso a sinistra. La versione è 9.4.0.

2.2.4 Visualizzare la versione di OpenCV

risultato:
Visualizzare la versione di OpenCV correlato immagini
La versione è 3.2.0

2.2.5 Controllare la versione di PCL

risultato: La versione è 1.8.1

2.2.6 Visualizzare la versione di ROS

risultato:
Visualizzare la versione di ROS correlato immagini
La versione è eloquent, corrispondente alla versione ROS 2 di Ubuntu 18.04.
Visualizzare la versione di ROS correlato icon 2
La versione è noetic, corrispondente alla versione ROS 1 di Ubuntu 20.04.

2.3 Configurare un ambiente di sviluppo di base

Prima dell’installazione è necessario aggiornare l’elenco dei pacchetti:
Il risultato è il seguente:
Immagini relative alla configurazione dell’ambiente di sviluppo di base

2.3.1 Installare CMake

Installation Cmake correlato immagini

2.3.2 Installare GCC

Installare GCC correlato immagini

2.4 Configurare un ambiente di sviluppo opzionale

2.4.1 Installare OpenCV [può visualizzare le immagini della fotocamera]

Immagini relative all’installazione di OpenCV [può visualizzare le immagini della fotocamera]

2.4.2 Installare PCL [può visualizzare la nuvola di punti]

Immagini relative all’installazione di PCL [può visualizzare la nuvola di punti]

Preparare il codice di esempio

3.1 Eseguire lo script di installazione

  1. Decomprimi il file Lanxin-MRDVS e accedi alla cartella Lanxin-MRDVS.
Immagini relative all’esecuzione dello script di installazione
  1. Fai clic con il pulsante destro del mouse per aprire la console.
  2. Esegui lo script install.sh.
Illustration correlato a executing il installazione script 2
  1. Accedi alla directory /opt/ per verificare che l’installazione sia riuscita.
Illustration correlato a executing il installazione script 3
  1. Se la cartella è presente, l’installazione è riuscita.
  2. Se l’installazione non riesce, aggiungi manualmente i file alla directory opt.
  3. Esegui lo script set_socket_buffer_size.sh.
Illustrations correlato a executing il installazione script 4
  1. A questo punto lo script di installazione è stato eseguito completamente.

3.2 Introduzione al codice di esempio

Accedi alla directory Sample. Il contenuto della directory è il seguente:
Illustrations correlato a esempio codice introduction
  • La cartella C contiene codice relativo a C e C++.
  • Il Java cartella contiene an http server per indirectly calling il sdk
  • Il Ros cartella contiene an esempio di ros
  • Il Ros2 cartella contiene an esempio di ros2

3.2.1 C e C++ esempio codice

Enter il C directory. Il directory contenuto sono come segue:
Illustrations correlato a C e C++ esempio codice
Contains 9 cartelle e 1 Cmakelist file, each cartella contiene a cpp file Il roughly implemented functions di each cpp sono come segue:
  • applicazione_obstacle: Obtain fotocamera stream dati e enable obstacle avoidance algorithm, output algorithm risultati
  • applicazione_pallet: Obtain fotocamera stream dati e enable il pallet algorithm, output algorithm risultati
  • arm_local_camera: Call il SDK in il fotocamera [ARM] e obtain il stream dati
  • frame_callback: Use callback method a obtain fotocamera stream dati
  • multi_cameras: aprire multiple fotocamere e ottenere streaming dati
  • single_camera: Open a single fotocamera e ottenere streaming dati
  • single_camera2: Get frame dati through structure
In base alle esigenze, puoi scegliere esempi diversi per il test e la modifica.

3.2.2 Java esempio codice

Enter il java directory. Il directory contenuto sono come segue:
Illustrations correlato a Java esempio codice
Il directory contiene 2 cartelle e a postman.json file e README
  • Config: Server-correlato configurations sono stored in il cartella
  • Middleware: server theme
  • LxCamera.Postman_collection.json: Postman configurazione file
  • README: java virtual server usage tutorial

3.2.3 ROS esempio codice

Enter il ros directory. Il directory contenuto sono come segue:
Illustrations correlato a ROS esempio codice
  • lx_camera_node_ws: Il cartella contiene a standard ros driver
  • README.EN: explains in English how a compilare a node e create a new node

3.2.4 ROS2 esempio codice

Enter il ros2 directory. Il directory contenuto sono come segue:
ROS2 esempio codice correlato immagini
  • lx_camera_node_ws: Il cartella contiene a standard ros2 driver
  • README.EN: explains in English how a compilare a node e create a new node

3.2.5 ros-v1pro esempio codice

Enter il ros-v1pro directory. Il directory contenuto sono come segue:
Illustrations correlato a ros-v1pro esempio codice
  • src: Il cartella contiene a standard ros driver
  • README: explains how a utilizzare questo node
  • README.pdf: explains how a utilizzare questo node

Compilare ed eseguire gli esempi

4.1 Compiling e esecuzione C e C++ esempio codice

Go a il C cartella in il esempio:
Illustrations correlato a compilazione e esecuzione C e C++ esempio codice
Open a terminal in il C cartella e eseguire:
After riuscita esecuzione, accedi il build cartella e it should be come segue:
Illustrations correlato a compilazione e esecuzione C e C++ esempio codice 2
Il file eseguibile si trova nella directory bin. Entering il bin directory should be come segue:
Illustrations correlato a compilazione e esecuzione C e C++ esempio codice 3
Except per il arm esempio, tutti altri esempi sarà be compiled. Il executable file nome è il stesso come il esempio cartella nome. You può eseguire it directly.

4.2 Procedura di esecuzione dell’esempio Java

Java è diverso da altri esempio codes. It does not directly provide sorgente codice. It provides an http server e a Postman esempio. Se you devi a control il fotocamera indirectly through http, you può select il java esempio e accedi il java cartella. Il cartella content è come segue:
Illustrations correlato a il Procedura di esecuzione dell’esempio Java
Il esecuzione process è come segue:
  • Enter il config cartella e modify il http_sever_host campo e http_sever_port campo in il Configs.json file:
  • Enter il middleware cartella e execute il start.sh script a enable il transfer server
Illustrations correlato a il Procedura di esecuzione dell’esempio Java 3
  • Use Postman a aprire il LxCamera.Postman_collection.json file a send dati a il esempio port

4.3 Compilare ed eseguire il codice di esempio ROS

Enter il ROS cartella, aprire a console, e eseguire:
Illustrations correlato a compilazione e esecuzione ROS esempio codice
Illustrations correlato a compilazione e esecuzione ROS esempio codice 2
Right-click a aprire a console, accedi il lx_camera_node_ws cartella, e eseguire:
Illustrations correlato a compilazione e esecuzione ROS esempio codice 3
Dopo l’esecuzione corretta verrà visualizzato quanto segue:
Illustrations correlato a compilazione e esecuzione ROS esempio codice 4
At questo time devel e build in il cartella sono compiled e generated:
Illustrations correlato a compilazione e esecuzione ROS esempio codice 5
Run il seguente comandi a sorgente il ambiente e avviare a node con roslaunch:
From top a bottom, they sono: esecuzione ordinary nodes, esecuzione obstacle avoidance algorithm 2 nodes, esecuzione obstacle avoidance algorithm nodes, esecuzione pallet algorithm nodes. Non è possibile attivare più nodi contemporaneamente.

4.4 Compilare ed eseguire il codice di esempio ROS2

Enter il ros2 cartella. Il contenuto di il cartella sono come segue:
Illustrations correlato a compilazione e esecuzione ROS2 esempio codice
Example ros node è compiled using colcon Per prima cosa installa gli strumenti di compilazione:
Illustrations correlato a compilazione e esecuzione ROS2 esempio codice 2
Quindi installare il ros-pcl dependency package. Replace foxy con il ROS 2 distribution installed on tuo sistema:
After installazione, accedi il lx_camera_node_ws directory e build il progetto:
Depending on il computer performance, compilazione generalmente takes 30 seconds a 120 seconds. After riuscita compilazione, it sarà be displayed come segue:
Illustrations correlato a compilazione e esecuzione ROS2 esempio codice 3
Alcuni avvisi sono dovuti a problemi di compatibilità delle versioni e non richiedono interventi. After compilazione è completed, il contenuto di il cartella sono come segue:
Illustrations correlato a compilazione e esecuzione ROS2 esempio codice 4
Run il seguente comandi a sorgente il ambiente e avviare a node con ros2 launch:
From top a bottom, they sono: esecuzione ordinary nodes, esecuzione obstacle avoidance algorithm 2 nodes, esecuzione obstacle avoidance algorithm nodes, esecuzione pallet algorithm nodes. Non è possibile attivare più nodi contemporaneamente.

4.5 Compilazione ed esecuzione del codice di esempio ros-v1pro

ros-v1pro è a dedicated ros driver per il V1PRO fotocamera. There è a README.pdf in il ros-v1pro cartella that describes il driver in detail. Questo document solo gives a brief introduction a it: Enter il ros-v1pro cartella e compilare it:
Illustrations correlato a compilazione e esecuzione il ros-v1pro esempio codice 2
Carica l’ambiente:
Illustrations correlato a compilazione e esecuzione il ros-v1pro esempio codice 3
Infine esegui il nodo:
  • roslaunch lx_camera_ros localization.launch
  • roslaunch lx_camera_ros mapping.launch
  • roslaunch lx_camera_ros sensor_sim.launch
From top a bottom: eseguire il positioning node, eseguire il mapping node, e eseguire il virtual dati node. Non è possibile attivare più nodi contemporaneamente.

Riferimento al codice di esempio

In questo sezione, tutti codes e pseudocode sarà be divided into several parts. Generally speaking, everything in a sezione belongs a il stesso file. Except per special file con detailed explanations, il sorgente codice file solo explain il general modules. Detailed explanations sono commented in il codice.

5.1 C e C++

5.1.1 CMakeLists

5.1.2 applicazione_obstacle e applicazione_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

Il Java esempio provides solo an HTTP server, so il descrizione è solo a descrizione di il interface e messaggio format. Use Postman a aprire il esempio file come shown below: Il messaggi sono tutti in post mode. Before sending, remember a change il IP a il server’s IP, but do not modify il URL. Il URL è hard-coded internally in il server. Il response messaggio format e content sono both in il body. Il interface provided in il esempio è come segue:
java correlato immagini 2
1.DcGetApiVersion: Get il versione numero di il SDK, no parametro input
java correlato immagini 3
2.DcSetInfoOutput: Set il percorso per SDK log output. Il parametri sono come segue:
  • log_path: percorso di log output
  • print_level: log printing level
  • enable_screen_print: whether il log è printed on il console
3.DcLog: Output il log a il SDK log. Any input content sarà be printed a il SDK log. 4.DcGetDeviceList: Get il dispositivo elenco, no input, input è JSON 5.DcOpenDevice: Open il dispositivo e accedi il seguente:
java correlato immagini 4
  • aprire_mode: aprire il fotocamera mode
  • param: parametri per opening il fotocamera
6.DcStartStream: Let a certain fotocamera avviare pushing streaming dati. Il input parametri sono come segue:
java correlato immagini 5
  • handle: Il handle di il fotocamera, which sarà be returned in DcOpenDevice
7.DcSetCmd: Issue comandi a il fotocamera, accedi come segue:
java correlato immagini 6
  • handle: il handle di il fotocamera a be impostare
  • cmd: comando numero
8.DcGetPtrValue: Get pointer dati (immagine, parametri, etc.), accedi come segue:
  • handle: il handle di il fotocamera a be impostare
  • cmd: comando numero
9.DcSetIntValue: Set il fotocamera int tipo parametri, input come segue:
java correlato immagini 7
  • handle: il handle di il fotocamera a be impostare
  • cmd: comando numero
  • valore: il valore a be impostare
10.DcGetIntValue: Get il int tipo parametro di il dispositivo, input come segue:
  • handle: il handle di il fotocamera a be impostare
  • cmd: comando numero
  1. Please see il table below per altri relevant instructions:

5.3 ROS1 & ROS2

In il ros descrizione, we sarà not talk about il driver sorgente codice, but about il content corrispondente a il configurazione in il launch file, how a adjust il configurazione, e how a send e subscribe a messaggi. Il provided ros node already contiene most di il functions, so it è not consigliato a directly modify il driver sorgente codice. Se you have special needs, you può prima understand il codice flow in il C++ esempio e then modify il driver sorgente codice. When executing il ros driver, you deve ensure that il versioni di opencv e pcl in il sistema predefinito percorso sono unique, otherwise an errore sarà occur quando linking il ros library, which may cause compilazione errore o runtime crash.

5.3.1 ROS1 launch file descrizione

5.3.1.1 All launch file
  1. There sono il seguente file in il src/launch cartella:
All launch file correlato immagini
  • localization.launch: Run file per visual positioning nodes
  • lx_camera_ros.launch: esecuzione file di ordinary nodes
  • mapping.launch: esecuzione file per visual positioning mapping
  • obstacle.launch: esecuzione file di obstacle avoidance algorithm
  • obstacleV2.launch: esecuzione file di obstacle avoidance algorithm V2
  • pallet.launch: pallet algorithm esecuzione file
  • sensor_sim.launch: esecuzione file per simulating positioning dati
  1. You può execute diverso functions di il node da esecuzione diverso launch file. Except per localization, mapping e sensor, il parametro contenuto sono il stesso in tutti nodes, but il configurazione è diverso. Questo sarà be introduced in detail in il seguente sections. For a detailed introduction a il parametri di il three launch file di localization, mapping e sensor, please see il introduction in il ros-v1pro node.
5.3.1.2 Camera IP, stream configurazione, working mode configurazione, punto nuvola unit, etc.
  • ip: Il fotocamera IP that needs a be connected. Se it è 0, il prima one sarà be connected da predefinito.
  • log_path: SDK log storage percorso, il absolute percorso needs a be filled in
  • è_xyz: whether a push punto nuvola dati
  • è_depth: whether a push profondità dati
  • è_amp: whether a push intensità map dati
  • è_rgb: whether a push RGB immagine dati
  • lx_work_mode: work mode
  • lx_application: whether a enable il algorithm, 0: off, 1: obstacle avoidance algorithm, 2: pallet algorithm, 3: positioning algorithm, 4: obstacle avoidance algorithm V2
  • lx_tof_unit: punto nuvola unit, 1 è meter, 0 è millimeter, needs a be changed a 1 quando viewing con rviz
5.3.1.3 Camera pose configurazione
Il rotation angle e translation vector di il punto nuvola può be configured.
  • X: X translation amount di il fotocamera da il center di il punto nuvola
  • Y: Y translation amount di il fotocamera da il center di il punto nuvola
  • Z: Z translation amount di il fotocamera da il center di il punto nuvola
  • Yaw: il angle di rotation di il punto nuvola around il Z axis
  • Roll: Il angle di rotation di il punto nuvola around il X-axis
  • Pitch: Il angle di rotation di il punto nuvola around il Y axis
5.3.1.4 Whether a utilizzare launch configurazione
You può choose whether a utilizzare il fotocamera parametro configurazione in il launch file.
  • raw_param: 0: utilizzare il configurazione in il fotocamera, 1: utilizzare il configurazione in il launch file
Regardless di whether questo parametro è impostare a 0 o 1, tutti parametri prima questo parametro sarà be impostare, 0 e 1 sono solo valid per parametri dopo questo parametro.
5.3.1.5 2D parametro configurazione
  • 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 scelto intensità
  • lx_2d_exposure: 2D exposure valore
  • lx_2d_gain: 2D gain
5.3.1.6 3D parametro configurazione
  • lx_rgb_to_tof: RGB alignment
  • lx_3d_binning:0:1x1,1:2x2,2:4x4
  • lx_mulit_mode: multi-machine mode, which può 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 scelto intensità
  • lx_3d_first_exposure: 3D high points
  • lx_3d_second_exposure: 3D low points
  • lx_3d_gain: 3D gain
5.3.1.7 Maximum e minimo profondità
  • lx_min_depth: minimo profondità
  • lx_max_depth: massimo profondità

5.3.2 ROS2 launch file descrizione

5.3.2.1 All launch file
There sono il seguente file in il src/launch cartella:
All launch file correlato immagini
  • localization.launch.py: esecuzione file di visual positioning node
  • lx_camera_ros.launch.py: esecuzione file di ordinary node
  • mapping.launch.py: esecuzione file per visual positioning mapping
  • obstacle.launch.py: esecuzione file di obstacle avoidance algorithm
  • obstacleV2.launch.py: esecuzione file di obstacle avoidance algorithm V2
  • pallet.launch.py: pallet algorithm esecuzione file
  • sensor_sim.launch.py: esecuzione file per simulating positioning dati
You può execute diverso functions di il node da esecuzione diverso launch file. Except per localization, mapping e sensor, il parametro content è il stesso in tutti nodes, but il configurazione è diverso. It sarà be introduced in detail in il seguente sections. For a detailed introduction a il parametri di il three launch file di localization, mapping e sensor, please see il introduction in il ros-v1pro node.
5.3.2.2 Camera IP, stream configurazione, working mode configurazione, punto nuvola unit, etc.
  • ip: Il fotocamera IP that needs a be connected. Se it è 0, il prima one sarà be connected da predefinito.
  • log_path: SDK log storage percorso, il absolute percorso needs a be filled in
  • è_xyz: whether a push punto nuvola dati
  • è_depth: whether a push profondità dati
  • è_amp: whether a push intensità map dati
  • è_rgb: whether a push RGB immagine dati
  • lx_work_mode: work mode
  • lx_application: whether a enable il algorithm, 0: off, 1: obstacle avoidance algorithm, 2: pallet algorithm, 3: positioning algorithm, 4: obstacle avoidance algorithm V2
  • lx_tof_unit: punto nuvola unit, 1 è meter, 0 è millimeter, needs a be changed a 1 quando viewing con rviz
5.3.2.3 Camera pose configurazione
Il rotation angle e translation vector di il punto nuvola può be configured.
  • X: X translation amount di il fotocamera da il center di il punto nuvola
  • Y: Y translation amount di il fotocamera da il center di il punto nuvola
  • Z: Z translation amount di il fotocamera da il center di il punto nuvola
  • Yaw: il angle di rotation di il punto nuvola around il Z axis
  • Roll: Il angle di rotation di il punto nuvola around il X-axis
  • Pitch: Il angle di rotation di il punto nuvola around il Y axis
5.3.2.4 Whether a utilizzare launch configurazione
You può choose whether a utilizzare il fotocamera parametro configurazione in il launch file.
  • raw_param: 0: utilizzare il configurazione in il fotocamera, 1: utilizzare il configurazione in il launch file
Regardless di whether questo parametro è impostare a 0 o 1, tutti parametri prima questo parametro sarà be impostare, 0 e 1 sono solo valid per parametri dopo questo parametro.
5.3.2.5 2D parametro configurazione
  • 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 scelto intensità
  • lx_2d_exposure: 2D exposure valore
  • lx_2d_gain: 2D gain
5.3.2.6 3D parametro configurazione
  • lx_rgb_to_tof: RGB alignment
  • lx_3d_binning:0:1x1,1:2x2,2:4x4
  • lx_mulit_mode: multi-machine mode, which può 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 scelto intensità
  • lx_3d_first_exposure: 3D high points
  • lx_3d_second_exposure: 3D low points
  • lx_3d_gain: 3D gain
5.3.2.7 Maximum e minimo profondità
  • lx_min_depth: minimo profondità
  • lx_max_depth: massimo profondità

5.3.3 Unique theme descrizione

Since il unique topic types di ROS1 e ROS2 sono il stesso, ROS1 è used come an esempio here. There sono il seguente file in il src/msg cartella:
Illustrations correlato a unique theme descriptions
5.3.3.1 FrameRate.msg
Questo node outputs frame rate informazioni. Il messaggio format è come segue:
FrameRate.msg correlato immagini
  • header: frame informazioni e timestamp di il corrente dati
  • profondità: When il profondità map è turned on, output il profondità map frame rate
  • amp: When il intensità map è turned on, output il intensità map frame rate
  • rgb: When rgb è on, output rgb frame rate
  • temperature: output fotocamera temperature
After il node starts esecuzione (except per nodes correlato a visual positioning), you può subscribe a il LxCamera_FrameRate node a obtain relevant informazioni. Il output è come segue:
FrameRate.msg correlato immagini 2
5.3.3.2 Obstacle.msg
obstacle outputs informazioni correlato a il obstacle avoidance algorithm risultati. Il obstacle messaggio format è come segue:
Obstacle.msg correlato immagini
  • header: frame informazioni e timestamp di il corrente dati
  • stato: stato informazioni returned da obstacle avoidance
0: Normal obstacle avoidance -1: No ground impostare -2: Input not impostare -3: No punto nuvola within il range -4: Il punto nuvola è empty dopo filtering il ground -5: Il punto nuvola è empty dopo radius filtering -6: No segmentation risultato was obtained -99: undefined errore
  • io_output: Obstacle avoidance informazioni output da il io interface
0: normal 1: warning 2: Shutdown
  • riquadro_number: numero di obstacles
  • riquadro: obstacle informazioni, variable length array, il length è determined da riquadro_number
After il node starts esecuzione (il obstacle avoidance algorithm needs a be turned on), you può subscribe a il LxCamera_Obstacel node a obtain relevant informazioni. Il output è come segue (il dati in il picture è simulated dati):
Obstacle.msg correlato immagini 2
5.3.3.3 Obstacle_box.msg
obstacle_box outputs obstacle-correlato informazioni, e il obstacle_box messaggio format è come segue:
Obstacle\_box.msg correlato immagini
  • center: il center di mass di il obstacle in il punto nuvola
  • rotation: rotation matrix di obstacle punto nuvola
  • translation: translation vector di obstacle punto nuvola
  • larghezza: larghezza di il obstacle frame
  • altezza: altezza di obstacle frame
  • profondità: il profondità di il obstacle frame
After starting il operation (il obstacle avoidance algorithm needs a be turned on), you può subscribe a il LxCamera_Obstacel node a obtain relevant informazioni. Il output è come segue:
Obstacle\_box.msg correlato icon 2
5.3.3.4 Result.msg
Il return valore obtained dopo sending il comando messaggio a il servic in il node è stored in Result:
Result.msg correlato immagini
  • ret: il return valore obtained da executing il SDK
  • msg: Description di il return valore obtained da executing il SDK
5.3.3.5 Pallet.msg
Il pallet outputs informazioni correlato a il pallet algorithm risultati. Il pallet messaggio format è come segue:
Pallet.msg correlato immagini
  • header: frame informazioni e timestamp di il corrente dati
  • stato: stato informazioni returned da pallet recognition:
0: Detection riuscita -1: No ground detected -2: Pallet legs not detected -3: Il distance between il pallets è too far -4: unknown errore
  • x: X distance between il tray e il optical center di il fotocamera
  • y: Y distance between il tray e il optical center di il fotocamera
  • yaw: theta angle between il center di il tray e il optical center di il fotocamera
After il node starts esecuzione (il pallet algorithm needs a be turned on), you può subscribe a il LxCamera_Pallet node a obtain relevant informazioni. Il output è come segue:
Pallet.msg correlato immagini 2

5.3.4 Unique Service Description

Since il unique service types di ROS1 e ROS2 sono il stesso, ROS1 è used come an esempio here. There sono il seguente file in il src/srv cartella:
Illustrations correlato a unique service descriptions
These messaggi sono used a impostare o obtain certain parametro valori ​​di il fotocamera. Above [---] è il sent dati, below [---] è il returned dati
5.3.4.1 LxBool.srv
LxBool.srv correlato immagini
  • cmd: il parametro numero that needs a be obtained o impostare
  • val: il valore impostare quando setting
  • è_set: Whether a impostare il parametro. When it è true, il valore in val sarà be impostare a il fotocamera. When it è false, il valore di questo parametro sarà be read da il fotocamera e displayed.
  • val: Il valore di il fotocamera’s corrente parametro returned quando getting o setting it
  • risultato: il valore e informazioni returned da calling il SDK interface
5.3.4.2 LxCmd.srv
LxCmd.srv correlato immagini
  • cmd: Il parametro numero that needs a be obtained o impostare. When it è 0, tutti parametro numeri sarà be returned.
  • risultato: il valore e informazioni returned da calling il SDK interface, cmd may have multiple return valori
5.3.4.3 LxFloat.srv
LxFloat.srv correlato immagini
  • cmd: il parametro numero that needs a be obtained o impostare
  • val: il valore impostare quando setting
  • è_set: Whether a impostare il parametro. When it è true, il valore in val sarà be impostare a il fotocamera. When it è false, il valore di questo parametro sarà be read da il fotocamera e displayed.
  • max_value: il massimo valore that può be impostare per questo parametro
  • min_value: il minimo valore that può be impostare per questo parametro
  • cur_value: il corrente valore di questo parametro in il fotocamera
  • disponibile: whether questo parametro supports setting
  • risultato: il valore e informazioni returned da calling il SDK interface
5.3.4.4 LxInt.srv
LxInt.srv correlato immagini
  • cmd: il parametro numero that needs a be obtained o impostare
  • val: il valore impostare quando setting
  • è_set: Whether a impostare il parametro. When it è true, il valore in val sarà be impostare a il fotocamera. When it è false, il valore di questo parametro sarà be read da il fotocamera e displayed.
  • max_value: il massimo valore that può be impostare per questo parametro
  • min_value: il minimo valore that può be impostare per questo parametro
  • cur_value: il corrente valore di questo parametro in il fotocamera
  • disponibile: whether questo parametro supports setting
  • risultato: il valore e informazioni returned da calling il SDK interface
5.3.4.5 LxString.srv
LxString.srv correlato immagini
  • cmd: il parametro numero that needs a be obtained o impostare
  • val: il valore impostare quando setting
  • è_set: Whether a impostare il parametro. When it è true, il valore in val sarà be impostare a il fotocamera. When it è false, il valore di questo parametro sarà be read da il fotocamera e displayed.
  • val: Il valore di il fotocamera’s corrente parametro returned quando getting o setting it
  • risultato: il valore e informazioni returned da calling il SDK interface

5.3.5 Description di topic subscription metodi

5.3.5.1 Subscription frame rate, tray algorithm, obstacle avoidance algorithm output dati
Subscribe Frame Rate In il lx_camera_node_ws directory, accedi: bash rate.sh
Illustrations correlato a subscription frame rate, tray algorithm, e obstacle avoidance algorithm output dati
After il lx_camera_node node immagine runs normally e è refreshed, you può see il seguente informazioni:
Illustrations correlato a subscription frame rate, pallet algorithm, e obstacle avoidance algorithm output dati 2
Subscribe a pallet algorithm output In il lx_camera_node_ws directory, accedi: bash pallet.sh
Illustrations correlato a subscription frame rate, pallet algorithm, e obstacle avoidance algorithm output dati 3
After il lx_camera_node node immagine runs normally e è refreshed, you può see il seguente informazioni:
Illustrations correlato a subscription frame rate, pallet algorithm, e obstacle avoidance algorithm output dati 4
Subscribe a obstacle avoidance algorithm output In il lx_camera_node_ws directory, accedi: bash obstacle.sh
Illustrations correlato a subscription frame rate, pallet algorithm, e obstacle avoidance algorithm output dati 5
After il lx_camera_node node immagine runs normally e è refreshed, you può see il seguente informazioni:
Illustrations correlato a subscription frame rate, tray algorithm, e obstacle avoidance algorithm output dati 6
5.3.5.2 Subscribe a immagine dati (ROS1)
You può view il immagine informazioni output da il node through il immagine tool that comes con ros: Console input comando: rqt_image_view After entering il comando, il seguente window sarà pop up:
Illustrations correlato a subscribing immagine dati (ROS1)
Il red riquadro può select il immagini in tutti nodes. Il picture shows il MRDVS fotocamera RGB immagine. You può anche select il profondità map o intensità map (provided that il stream has been turned on):
Subscription immagine dati (ROS1) correlato diagram 2
In il figure, il prima red riquadro è il RGB informazioni output da il positioning algorithm node, e il remaining three sono immagine informazioni output da il ordinary nodes. amp è il intensità map, profondità è il profondità map, e rgb è il rgb map. Select diverso items a view diverso immagini o utilizzare rviz a view immagine dati. Enter il comando on il console: rviz sarà pop up il seguente window:
Subscription immagine dati (ROS1) correlato diagram 3
After clicking il Add button at il bottom sinistro, a window sarà pop up:
Subscription immagine dati (ROS1) correlato diagram 4
Select il desired immagine topic e select Image e click OK in il basso right angolo. You può see il immagine dati on il sinistro side di il main interface, come shown below:
Subscription immagine dati (ROS1) correlato diagram 5
5.3.5.3 Subscribe a immagine dati (ROS2)
You può view il immagine informazioni output da il node through il immagine tool that comes con ros2: Enter il comando on il console: rqt After entering il comando, il seguente window sarà pop up:
Illustrations correlato a subscribing immagine dati (ROS2)
Select il prima Image View di il second option at il bottom di il menu bar. After selection, il seguente interface sarà pop up:
Subscription immagine dati (ROS2) correlato diagram 2
Il red riquadro può select il immagini in tutti nodes. Il picture shows il MRDVS fotocamera RGB immagine. You può anche select il profondità map o intensità map (provided that il stream has been turned on):
Subscription immagine dati (ROS2) correlato diagram 3
In il figure, il prima red riquadro è il RGB informazioni output da il positioning algorithm node, e il remaining three sono immagine informazioni output da il ordinary nodes. amp è il intensità map, profondità è il profondità map, e rgb è il rgb map. Select diverso items a view diverso immagini o utilizzare rviz2 a view immagine dati. Enter il comando on il console: rviz2 sarà pop up il seguente window:
Subscription immagine dati (ROS2) correlato diagram 4
After clicking il Add button at il bottom sinistro, a window sarà pop up:
Subscription immagine dati (ROS2) correlato diagram 5
Select il desired immagine topic e select Image e click OK in il basso right angolo. You può see il immagine dati on il sinistro side di il main interface, come shown below:
Subscription immagine dati (ROS2) correlato diagram 6
Some sistemi devi a fill in [mrdvs] in il [map] in il above picture a see il immagine
5.3.5.4 Subscribe a punto nuvola dati
Il punto nuvola informazioni output da il node può be viewed through il punto nuvola tool provided da ros o ros2: Command: rviz【ROS1】, rviz2【ROS2】 After entering il comando, il seguente window sarà pop up:
Illustrations correlato a subscribing a punto nuvola dati
Click il button in il red riquadro below e il seguente riquadro sarà pop up:
Illustration correlato a subscribing a punto nuvola dati 2
Select il second tab, e there sarà be a node named lx_camera_node. There è a topic named LxCamera_Cloud in il node. There è a messaggio named PointCloud2 in il topic. After selecting, click OK. Il interface dopo completion è come segue:
Illustrations correlato a subscribing a punto nuvola dati 3
(ROS1 interface)
Illustrations correlato a subscribing a punto nuvola dati 4
(ROS2 interface) At questo time, il punto nuvola cannot be displayed normally. Fill in mrdvs in il red e green riquadro map above a see il punto nuvola. Il effect è come segue:
Illustrations correlato a subscribing a punto nuvola dati 5
Il predefinito punto nuvola unit in ROS è meters, so quando viewing using rviz, you devi a modify lx_tof_unit in il launch file a 1 [il predefinito è 1]

5.3.6 Description di service communication metodi

In ROS1, tutti comandi può be completed using il Tab key, but in ROS2, solo topics può be completed, e il messaggio part needs a be entered manualmente. When inputting dati in ROS1, you può input it in il completion format. When inputting dati in ROS2, you devi a input it in il format di il yaml file. After il node è esecuzione, aprire a terminal under il lx_camera_node_ws cartella, configure il ambiente in il terminal, e accedi il comando: sorgente devel/configurazione.bash
5.3.6.1 Get il elenco di tutti parametro numeri (Lx_Cmd)
ros1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxCmd “cmd: 0”
Get tutti parametro numero elenco (Lx\_Cmd) correlato immagini
You può see il output:
Get tutti parametro numero elenco (Lx\_Cmd) correlato icon 2
ret è il numero di il parametro. Il msg describes il parametro tipo e descrizione, per esempio: 1001. Questo parametro è di tipo int. Il parametro è used a obtain e modify il prima exposure valore. ros2 Enter in il terminal: ros2 service call /LxCamera_LxCmd lx_camera_ros/srv/LxCmd ‘cmd: 0’
Get tutti parametro numero elenco (Lx\_Cmd) correlato icon 3
You può see il seguente output:
Get tutti parametro numero elenco (Lx\_Cmd) correlato icon 4
Since it è not convenient a view parametro dettagli in ROS2, il numeri, types e descriptions di tutti parametri sono anche listed in il seguente table: Some parametri devi a arrestare il flow prima they può be impostare, o there è a sequence di settings. Please contact il technical support staff per specific needs.
5.3.6.2 Get Int parametro (Lx_Int)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxInt “cmd: 1001 val: 0 è_set: false”
Get correlato immagini di Int parametri (Lx\_Int)
You può see il output:
Get il correlato icon di Int parametro (Lx\_Int) 2
What è in il red riquadro è il return valore. What è obtained in il figure è il high integration time. According a il return risultato, you può see that il massimo valore è 3600, il minimo valore è 1, il corrente valore è 1010, whether il setting è supportato è supportato, il interface call return valore è 0, e il return valore informazioni è successo.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxInt lx_camera_ros/srv/LxInt '{cmd: 1001,val: 0,is_set: false}'
Get il correlato icon di Int parametro (Lx\_Int) 3
You può see il output:
Get il correlato icon di Int parametro (Lx\_Int) 4
What è obtained in il figure è il high integration time. According a il returned risultati, we può see that il massimo valore è 3600, il minimo valore è 1, il corrente valore è 1010, whether il setting è supportato è supportato, il return valore di il interface call è 0, e il return valore informazioni è successo.
5.3.6.3 Set Int parametri (Lx_Int)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxInt “cmd: 1001 val: 2000 è_set: true”
Illustrations correlato a setting Int parametri (Lx\_Int)
You può see il output:
Illustration 2 correlato a setting Int parametri (Lx\_Int)
What è in il red riquadro è il return valore. Il high integration time è impostare in il figure. According a il return risultato, you può see that il massimo valore è 3600, il minimo valore è 1, il corrente valore has been modified a 2000, whether il support setting è supportato, il interface call return valore è 0, e il return valore informazioni è successo.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxInt lx_camera_ros/srv/LxInt '{cmd: 1001,val: 3000,is_set: true}'
Illustration 3 correlato a setting Int parametri (Lx\_Int)
You può see il output:
Illustration 4 correlato a setting Int parametri (Lx\_Int)
What è obtained in il figure è il high integration time. According a il returned risultati, we può see that il massimo valore è 3600, il minimo valore è 1, il corrente valore has been modified a 3000, whether il setting è supportato è supportato, il interface call return valore è 0, e il return valore informazioni è successo.
5.3.6.4 Get Float parametri (Lx_Float)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxFloat “cmd: 2007 val: 0.0 è_set: false”
Get correlato immagini di Float parametri (Lx\_Float)
You può see il output:
Get il correlato icon di Float parametro (Lx\_Float) 2
What è in il red riquadro è il return valore. What è obtained in il picture è il fotocamera temperature. According a il return risultato, you può see that il massimo valore è 120, il minimo valore è -40, il corrente valore è 49.6875, whether il setting è supportato è not supportato, il interface call return valore è 0, e il return valore informazioni è successo.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxFloat lx_camera_ros/srv/LxFloat '{cmd: 2007,val: 0,is_set: false}'
Obtain correlato immagini di Float parametri (Lx\_Float) 3
You può see il output:
Get il correlato icon di Float parametro (Lx\_Float) 4
What è obtained in il picture è il fotocamera temperature. According a il returned risultati, you può see that il massimo valore è 120, il minimo valore è -40, il corrente valore è 50.4375, whether il setting è supportato è not supportato, il return valore di il interface call è 0, e il return valore informazioni è successo.
5.3.6.5 Set Float parametri (Lx_Float)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxFloat “cmd: 2007 val: 5.0 è_set: true”
Illustrations correlato a setting Float parametri (Lx\_Float)
You può see il output:
Illustration 2 correlato a setting Float parametri (Lx\_Float)
Il red riquadro è il return valore. Il fotocamera temperature è impostare in il picture. According a il return risultato, you può see that il massimo valore è 120, il minimo valore è -40, il corrente valore è 50.9375, whether il setting è supportato è not supportato, il interface call return valore è -2, il return valore informazioni è not supportato, il valore impostare here è 5, il corrente valore e il impostare valore sono inconsistent because il parametro does not support setting.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxFloat lx_camera_ros/srv/LxFloat '{cmd: 2007,val: 5.0,is_set: true}'
Illustration 3 correlato a setting Float parametri (Lx\_Float)
You può see il output:
Illustrations correlato a setting Float parametri (Lx\_Float) 4
Il fotocamera temperature è impostare in il picture. According a il returned risultati, you può see that il massimo valore è 120, il minimo valore è -40, il corrente valore è 51.125, whether il setting è supportato è not supportato, il return valore di il interface call è -2, il return valore informazioni è not supportato, il valore impostare here è 5, il corrente valore e il impostare valore sono inconsistent because il parametro does not support setting.
5.3.6.6 Get Bool parametri (Lx_Bool)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxBool “cmd: 3012 val: false è_set: false”
Get correlato immagini di Bool parametri (Lx\_Bool)
You può see il output:
Get Bool parametro (Lx\_Bool) correlato icon 2
What è in il red riquadro è il return valore. What è obtained in il picture è 2D automatic exposure. According a il return risultato, we può see that il corrente valore è false, il return valore di il interface call è 0, e il return valore informazioni è successo.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxBool lx_camera_ros/srv/LxBool '{cmd: 3012,val: false,is_set: false}'
Get Bool parametro (Lx\_Bool) correlato icon 3
You può see il output:
Get Bool parametro (Lx\_Bool) correlato icon 4
What è obtained in il figure è 2D automatic exposure. According a il return risultato, we può see that il corrente valore è false, il return valore di il interface call è 0, e il return valore informazioni è successo.
5.3.6.7 Set Bool parametri (Lx_Bool)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxBool “cmd: 3012 val: true è_set: true”
Illustrations correlato a setting Bool parametri (Lx\_Bool)
You può see il output:
Illustration 2 correlato a setting Bool parametri (Lx\_Bool)
What è in il red riquadro è il return valore. Il 2D automatic exposure è impostare in il picture. According a il return risultato, we può see that il corrente valore è true, il return valore di il interface call è 0, il return valore informazioni è successo, e il corrente valore è consistent con il impostare valore.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxBool lx_camera_ros/srv/LxBool '{cmd: 3012,val: true,is_set: true}'
Illustration 3 correlato a setting Bool parametri (Lx\_Bool)
You può see il output:
Illustrations correlato a setting Bool parametri (Lx\_Bool) 4
Il setting in il picture è 2D automatic exposure. According a il return risultato, we può see that il corrente valore è true, il return valore di il interface call è 0, il return valore informazioni è successo, e il corrente valore è consistent con il impostare valore.
5.3.6.8 Get String parametro (Lx_String)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxString “cmd: 4001 val: ” è_set: false”
Get correlato immagini di String parametri (Lx\_String)
You può see il output:
Obtain String parametro (Lx\_String) correlato icon 2
What è in il red riquadro è il return valore. What è obtained in il figure è il dispositivo versione numero. According a il return risultato, we può see that il corrente valore è V1.1.33_231201, il return valore di il interface call è 0, e il return valore informazioni è successo.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxString lx_camera_ros/srv/LxString '{cmd: 4001,val: '',is_set: false}'
Obtain String parametro (Lx\_String) correlato icon 3
You può see il output:
Get il correlato icon di String parametro (Lx\_String) 4
What è obtained in il figure è il dispositivo versione numero. According a il return risultato, we può see that il corrente valore è V1.1.33_231201, il return valore di il interface call è 0, e il return valore informazioni è successo.
5.3.6.9 Set String parametri (Lx_String)
ROS1 Enter in il terminal: rosservice call /lx_camera_node/LxCamera_LxString “cmd: 4001 val: ‘put:\“123\”’ è_set: true”
Illustrations correlato a setting String parametri (Lx\_String)
You può see il output:
Illustration 2 correlato a setting String parametri (Lx\_String)
Il red riquadro è il return valore. Il dispositivo versione numero è impostare in il figure. According a il return risultato, we può see that il corrente valore è V1.1.33_231201, il return valore di il interface call è -2, e il return valore informazioni è not supportato. Il corrente valore e il impostare valore sono inconsistent because questo parametro does not support setting.
ROS2 Enter in il terminal: ros2 service call /LxCamera_LxString lx_camera_ros/srv/LxString '{cmd: 4001,val: "put:\\"123\\"",is_set: true}'
Illustration 3 correlato a setting String parametri (Lx\_String)
You può see il output:
Illustrations correlato a setting String parametri (Lx\_String) 4
Il dispositivo versione numero è impostare in il figure. According a il returned risultato, we può see that il corrente valore è V1.1.33_231201, il return valore di il interface call è -2, e il return valore informazioni è not supportato. Il corrente valore è inconsistent con il impostare valore because questo parametro does not support setting. When setting a valore di String tipo, escape characters deve be added a single quotes e double quotes, except per il initial double quotes in ROS2 e il initial single quotes in ROS1. For esempio, if you want a input il string [PUT”123”], you deve aggiungi escape characters a become: [PUT\”123\”].

Hardware ROS consigliato e utilizzo delle risorse

6.1 Configurazione hardware consigliata

In il consigliato hardware configurazione, il analysis è based on CPU core count, CPU usage, e memoria size. These sono consigliato configurations, not minimo requirements. Se tuo hardware è below il recommendation, stabili operation may still be possible da reducing stream output, disabling punto-nuvola computation, o lowering il algorithm load. Running a workload above il disponibile configurazione may crash il ROS core o Ubuntu. Il second e third sections di questo chapter provide detailed usage dati. Choose il operating ambiente e stream configurazione that best fits tuo sistema. All dati here was collected in a VM using an M4 Pro fotocamera. Ubuntu16.04 Ubuntu18.04 Ubuntu20.04 Ubuntu22.04

6.2 Dettagli CPU

Il Dettagli CPU sarà mostrano il amount di CPU resources occupied da il node under diverso operating conditions. Il test è based on AMD64 [8 cores], 8G memoria hardware ambiente, il test fotocamera è M4 Pro, il test algorithm è tray algorithm, 2D larghezza e altezza sono 1280*960, e 3D larghezza e altezza sono 640*480, 2D anti-distortion è on, 3D anti-distortion è off, e integration 110 - 3000, profondità 0 - 8000, ToF frame rate 14, streaming mode, smoothing level 1, noise level 1, time domain level 0, statistics comando è TOP. Because il test soft ambiente è VM virtual machine, it è normal per il dati displayed da il physical machine a fluctuate compared con that in il document. For some fotocamere, such come S2, some algorithms sono calculated on il host computer, which risultati in a large amount di resource usage, which è normal.
1. Some nouns sono explained come segue: -Single stream: refers a turning on any stream di RGB, profondità, e intensità
  • Dual stream: refers a turning on any two streams di RGB, profondità e intensità
-Three streams: refers a RGB, profondità, e intensità tutti three streams sono turned on
  • Four streams: means RGB, profondità, intensità, e punto nuvola sono tutti turned on
2. Il algorithm has a binding relationship con some streams. Il binding relationship è come segue:
  • To enable il pallet algorithm, il profondità deve be enabled
  • To turn on il obstacle avoidance algorithm, you deve turn on profondità
  • To turn on il positioning algorithm, you deve turn on RGB

Il light blu background in il table è il esecuzione configurazione con punto nuvola enabled, e il colorless background è il esecuzione configurazione senza punto nuvola enabled. All il test dati below have il algorithm shifted down da predefinito, so per S2 series fotocamere, tutti test valori ​​may be too small [some algorithms di S2 series fotocamere sono forced a move up]. Ubuntu16.04 Ubuntu18.04 Ubuntu20.04 Ubuntu22.04

6.3 Dettagli della memoria

Il memoria dettagli sarà mostrano il amount di memoria resources occupied da il node under diverso operating conditions. Il test è based on AMD64 [8 cores], 8G memoria hardware ambiente, il test fotocamera è M4 Pro, il test algorithm è tray algorithm, 2D larghezza e altezza sono 1280*960, e 3D larghezza e altezza sono 640*480, 2D anti-distortion è on, 3D anti-distortion è off, points 110 - 3000, profondità 0 - 8000, ToF frame rate 14, streaming mode, smoothing level 1, noise level 1, time domain level 0, statistics comando è TOP. Because il test soft ambiente è VM virtual machine, it è normal per il dati displayed da il physical machine a fluctuate compared con that in il document. For some fotocamere, such come S2, some algorithms sono calculated on il host computer, which risultati in a large amount di resource usage, which è normal.
1. Some nouns sono explained come segue: -Single stream: refers a turning on any stream di RGB, profondità, e intensità
  • Dual stream: refers a turning on any two streams di RGB, profondità e intensità
-Three streams: refers a RGB, profondità, e intensità tutti three streams sono turned on
  • Four streams: means RGB, profondità, intensità, e punto nuvola sono tutti turned on
2. Il algorithm has a binding relationship con some streams. Il binding relationship è come segue:
  • To enable il pallet algorithm, il profondità deve be enabled
  • To turn on il obstacle avoidance algorithm, you deve turn on profondità
  • To turn on il positioning algorithm, you deve turn on RGB
  1. Il light blu background in il table è il esecuzione configurazione con punto nuvola enabled, e il colorless background è il esecuzione configurazione senza punto nuvola enabled. All il test dati below have il algorithm shifted down da predefinito, so per S2 series fotocamere, tutti test valori ​​may be too small [some algorithms di S2 series fotocamere sono forced a move up].
Ubuntu16.04 Ubuntu18.04 Ubuntu20.04
Ubuntu22.04

Appendice

Questo appendice provides installazione metodi per some tools. When using these metodi, you devi a have at least some di base knowledge di Linux. There è no guarantee that every computer può be successfully installed through il metodi shown in il appendice di questo document. Il ambiente di each computer è diverso, e il problems encountered may not be consistent. Se you encounter problems not shown in questo appendice, please search per solutions yourself.

1. Cmake specified versione installazione method

Apri https://cmake.org/download/, scarica la versione richiesta di CMake ed estrai il pacchetto con tar -zxvf cmake-XXX.tar.gz. Entra nella directory estratta, quindi compila e configura CMake: ./bootstrap make sudo make install Check il Cmake versione a see if il installazione è riuscita: cmake —version

2. Opencv specified versione installazione method

  1. Download il richiesto versione di opencv: Releases-OpenCV
Illustrations correlato a il installazione method di il specified versione di Opencv
  1. Environment configurazione, execute il seguente comandi 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 cartella e extract il downloaded sorgente codice into il opencv cartella.
  2. Esegui il seguente comandi 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 installare e wait per il installazione a complete

3. Pcl specified versione installazione method

  1. Check il supportato pcl versione:
apt-cache madison libpcl-dev
  1. Installa il specified pcl versione (where 1.10.0 needs a be replaced con il richiesto versione numero):
sudo apt-get install libpcl-dev=1.10.0

4. Installare ROS

Ubuntu16.04
  1. Add il software sorgente e impostare il 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 sorgente:
sudo apt-get update
  1. Installa complete ros:
sudo apt-get install ros-kinetic-desktop-full
  1. Configure ambiente variables:
echo “sorgente /opt/ros/kinetic/configurazione.bash” >> ~/.bashrc source ~/.bashrc
  1. Completa ROS-correlato tools:
sudoaptinstallpython-rosinstallpython-rosinstall-generatorpython-wstool build-essential
  1. Now that il installazione di ROS1 è complete, eseguire il esempio that comes con ROS a controllare whether il installazione è correct:
Open a terminal e accedi: roscore Open another terminal e accedi: rosrun turtlesim turtlesim_node Open another terminal: rosrun turtlesim turtle_teleop_key In il third terminal, you può control il little turtle through il arrow keys Se it può eseguire normally come shown below, it means that ros has been installed correctly: Installation ROS correlato immagini
Ubuntu18.04
  1. Set up il software sorgente:
sudo sh -c ’. /etc/lsb-release && echo “deb http://mirrors.ustc.edu.cn/ros/ubuntu/ `lsb_release -cs` main” > /etc/apt/sources.elenco.d/ros-latest.elenco’ 2.Set il public key: sudoapt-keyadv—keyserver’hkp://keyserver.ubuntu.com:80’—recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. Update software elenco:
sudo apt update
  1. Installa Ubuntu18.04 versione di ROS1:
sudo apt install ros-melodic-desktop-full
  1. Set ambiente variables:
echo “sorgente /opt/ros/melodic/configurazione.bash” >> ~/.bashrc source ~/.bashrc if it is zsh: echo “sorgente /opt/ros/melodic/configurazione.bash” >> ~/.zshrc source ~/.zshrc
  1. Completa ROS-correlato tools:
sudoaptinstallpython-rosdeppython-rosinstallpython-rosinstall-generator python-wstool build-essential
  1. Now that il installazione di ROS1 è complete, eseguire il esempio that comes con ROS a controllare whether il installazione è correct:
Open a terminal e accedi: roscore Open another terminal e accedi: rosrun turtlesim turtlesim_node Open another terminal: rosrun turtlesim turtle_teleop_key In il third terminal, you può control il little turtle through il arrow keys Se it può eseguire normally come shown below, it means that ros has been installed correctly:
Installation ROS correlato immagini 2
Ubuntu20.04
  1. Configure il public key:
sudoapt-keyadv—keyserver’hkp://keyserver.ubuntu.com:80’—recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
  1. Se it shows that it cannot connect a il server o times out, please aggiornare il software sorgente elenco prima:
sudo apt-get update sudo apt-get upgrade
  1. After configuring il public key, aggiornare il software elenco again:
sudo apt-get update install ros: sudo apt install ros-noetic-desktop-full
  1. Set ambiente variables:
echo “sorgente /opt/ros/noetic/configurazione.bash” >> ~/.bashrc source ~/.bashrc
  1. Installare ROS tools:
sudo apt install python3-rosinstall python3-rosinstall-generator python3-wstool build-essential
  1. Now that il installazione di ROS1 è complete, eseguire il esempio that comes con ROS a controllare whether il installazione è correct:
Open a terminal e accedi: roscore Open another terminal e accedi: rosrun turtlesim turtlesim_node Open another terminal: rosrun turtlesim turtle_teleop_key In il third terminal, you può control il little turtle through il arrow keys Se it può eseguire normally come shown below, it means that ros has been installed correctly:
Installation ROS correlato immagini 3
Ubuntu22.04 It è not consigliato a installare ros1 in Ubuntu22.04. It è not officially supportato. Se you want a installare it, you sarà encounter a lot di dependency problems.

5. Creare un nuovo pacchetto di test in ROS

  1. Create a new cartella ws, create a new src cartella in il ws cartella, accedi il src cartella e execute:
catkin_create_pkg example std_msgs rospy roscpp
  1. Questo creates a new package named esempio, which depends on std_msgs rospy roscpp
  2. Quindi compilare questo new package: catkin_make Questo è an empty package, there sarà not be any executable program, it è just a package
  3. Next, we sarà demonstrate how a create a package that può output ‘Hellow world’
  4. Based on il package just now, we accedi il src cartella (src in il package) e create a new main.cpp, come shown below (pay attention a il percorso):
Illustration di how a create a new test package in Ros
  1. In main.cpp, we accedi some codes:
Ros How a Create a New Test Package Related Illustration 2
  1. Quindi we change il outside CMakeLists.txt e aggiungi a line at il bottom: aggiungi_executable(esempio src/main.cpp)
Ros How a Create a New Test Package Related Illustration 3
  1. Quindi return a il ws directory a compilare e execute il comando: catkin_make
Ros How a Create a New Test Package Related Illustration 4
  1. Seeing these means il compilazione è riuscita.
  2. Next we configure il ambiente:
source devel/setup.bash
Ros How a Create a New Test Package Related Illustrations 5
  1. Quindi execute il program e you può see il output:
rosrun example example
Ros How a Create a New Test Package Related Illustrations 6

6. Installare ROS2

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. Se an errore è reported in questo step, utilizzare VPN a bypass il wall e then aprire il browser, accedi il URL, e copy il content, then create a new ros.asc e copy il content a il file. After il copy è completed, il seguente è come segue:
  2. Quindi re-execute step 3: sudo apt-key aggiungi ros.asc
  3. Continue esecuzione:
sudo sh -c ‘echo “deb [arch=amd64] http://packages.ros.org/ros2/ubuntu bionic main” > /etc/apt/sources.list.d/ros2-latest.list’
  1. Installare ROS2:
sudo apt update sudo apt install ros-ardent-desktop
  1. Configure ambiente variables:
source /opt/ros/ardent/setup.bash
  1. Installa il funzione package:
sudo apt-get update sudo apt-get install ros-ardent-ros1-bridge sudo apt-get install ros-ardent-turtlebot2-*
  1. Try esecuzione il esempio program, aprire a terminal e eseguire:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt a eseguire:
source~/.bashrc ros2 run demo_nodes_cpp talker
  1. Il seguente terminal output proves that il installazione è riuscita:
Ubuntu18.04:
  1. Add software sorgente
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. Se questo step reports an errore come segue:
  2. Use VPN a bypass il wall, then aprire il browser, accedi il URL, e copy il content, then create a new ros.asc e copy il content a il file. After il copy è completed, it è come segue:
  3. Quindi re-execute step 3: sudo apt-key aggiungi ros.asc
  4. Continue esecuzione:
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, avviare downloading ros2, in which il red fonts devi a be replaced con diverso versioni (see il table above):
sudo apt update sudo apt install ros-eloquent-desktop
  1. Wait per il installazione a complete e continue a installare il python library. Esegui: sudo apt installare -y libpython3-dev python3-pip pip3 installare -U argcomplete
Quindi configure il ambiente variables: echo “sorgente /opt/ros/eloquent/configurazione.bash” >> ~/.bashrc source ~/.bashrc
  1. Try esecuzione il esempio program, aprire a terminal e eseguire:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt a eseguire:
source ~/.bashrc ros2 run demo_nodes_py listener
  1. Il seguente terminal output proves that il installazione è riuscita:
Ubuntu20.04
  1. Add software sorgente
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. Se you encounter il errore “ailed a connect a raw.githubusercontent.com port 443 dopo 13 ms: connection refused”
Installation ROS2 correlato immagini 6
sudo vi /etc/hosts
  1. Add il seguente analysis
185.199.108.133raw.githubusercontent.com
  1. Il added file sono come segue:
Installation ROS2 correlato immagini 7
echo”deb[arch=(sorgente/etc/os-rilascio&&echo$UBUNTU_CODENAME) main” | sudo tee /etc/apt/sources.elenco.d/ros2.elenco > /dev/null
  1. Continue esecuzione:
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, avviare downloading ros2:
sudo apt update sudo apt install ros-foxy-desktop
  1. Wait per il installazione a complete e continue a installare il python library. Esegui: sudo apt installare -y libpython3-dev python3-pip pip3 installare -U argcomplete
  2. Quindi configure il ambiente variables:
echo “sorgente /opt/ros/foxy/configurazione.bash” >> ~/.bashrc source ~/.bashrc
  1. Try esecuzione il esempio program, aprire a terminal e eseguire:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt a eseguire:
source ~/.bashrc ros2 run demo_nodes_py listener
  1. Il seguente terminal output proves that il installazione è riuscita:
Ubuntu22.04
  1. Add software sorgente
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. Se you encounter il errore “ailed a connect a raw.githubusercontent.com port 443 dopo 13 ms: connection refused”
Installation ROS2 correlato immagini 9
sudo vi /etc/hosts adds the following analysis 185.199.108.133raw.githubusercontent.com Il added file sono come segue:
Installation ROS2 correlato immagini 10
  1. After completion, avviare downloading ros2: sudo apt aggiornare
sudo apt install ros-humble-desktop
  1. Wait per il installazione a complete e continue a installare il python library. Esegui: sudo apt installare -y libpython3-dev python3-pip pip3 installare -U argcomplete
  2. Quindi configure il ambiente variables:
echo “sorgente /opt/ros/humble/configurazione.bash” >> ~/.bashrc source ~/.bashrc
  1. Try esecuzione il esempio program, aprire a terminal e eseguire:
source ~/.bashrc ros2 run demo_nodes_cpp talker
  1. Open another interrupt a eseguire:
source ~/.bashrc ros2 run demo_nodes_py listener
  1. Il seguente terminal output proves that il installazione è riuscita:

7. Creare un nuovo pacchetto di test in ROS2

  1. Esegui il comando:
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 può create a new package named esempio_p e a node named esempio_n. After esecuzione, it sarà output: hello world esempio_p package