9.2 Tiefen-Segmentierung
Docker-Nutzungsreferenz: Modul 3.7 Docker
Offizieller Isaac ROS Depth Segmentation-Link: https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_depth_segmentation/index.html
Übersicht

Isaac ROS Depth Segmentation bietet ein beschleunigtes NVIDIA-Tief-Partitionspaket. Das isaac ros bi3d-Paket verwendet ein optimiertes Bi3D DNN-Modell, um eine Stereo-Tiefenschätzung durch Binarisierung bereitzustellen, und wird für die Tiefentrennung verwendet. Tiefenpartitionen können verwendet werden, um zu bestimmen, ob die Barriere in einem benachbarten Bereich liegt, und um Kollisionen mit der Barriere während der Navigation zu vermeiden.
Bi3D wird für Knotendiagramme verwendet, die zeitlich synchronisiert aus rechts-rechts Stereobild-Eingaben in der Tiefe getrennt werden. Bi3D-Bilder müssen korrigiert und in der Größe angepasst werden, um die geeignete Eingabeauflösung zu erhalten. Das Breitenverhältnis des Bildes muss beibehalten werden; daher kann es notwendig sein, zuzuschneiden und die Größe zu ändern, um das Eingabebreitenverhältnis beizubehalten. Der DNN-Code, das DNN-Reasoning und die DNN-Dekodierung sind Teil des Bi3D-Knotens. Das Reasoning wird mit TensorRT ausgeführt, da das Bi3D DNN-Modell so konzipiert ist, dass es mit TensorRT-Unterstützung optimiert wird.
Im Vergleich zu anderen Stereo-Vision-Funktionen sagt die Tiefen-Segmentierung voraus, ob sich die Barriere in einem benachbarten Bereich befindet (statt in kontinuierlicher Tiefe), und sagt gleichzeitig den freien Raum in einem Abstand vom Boden voraus, was andere Funktionen normalerweise nicht bieten. Darüber hinaus, im Gegensatz zu anderen Stereo-Vision-Funktionen in Isaac ROS, wird die Tiefe auf dem NVIDIA DLA (Deep Learning Accelerator) getrennt, der unabhängig von der GPU ist.
Schnellstart
Um die Entwicklung zu vereinfachen, verwenden wir hauptsächlich Isaac ROS Dev Docker-Images und führen darauf Auswirkungs-Demonstrationen durch. Die Demonstration erfordert nicht die Installation eines Kameragerätes, um Datenströme von der Kamera durch Abspielen der rosbag-Datei zu simulieren.
Wenn Sie planen, den Workflow auf echter Hardware oder mit einer angeschlossenen Kamera auszuführen, beziehen Sie sich auf die offizielle Isaac ROS-Dokumentation für unterstützte Kamera-Setups.
Öffnen Sie ein Terminal und wechseln Sie in den Arbeitsbereich
cd ${ISAAC_ROS_WS}/src
Betreten Sie den Isaac ROS Dev Docker-Container
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shFühren Sie den folgenden Startbefehl aus:
Hinweis: Das Ausführen eines offiziellen Beispiels kann wissenschaftlichen Zugriff erfordern, um sicherzustellen, dass Ihre Netzwerkumgebung regelmäßigen Zugriff auf GitHub hat
cd /workspaces/isaac_ros-dev/src
# Beispiel-Repository (bietet Quickstart-Launches wie isaac_ros_examples.launch.py)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_examples.git
# Repository für Bi3D (Tiefen-Segmentierung / Bi3D)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_depth_segmentation.git
# Allgemeines Utility-Repository (run_dev, Skripte und gemeinsame Abhängigkeiten/Konfiguration)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git
cd /workspaces/isaac_ros-dev
# Stellen Sie sicher, dass rosdep verfügbar ist (normalerweise im Dev-Container vorinstalliert)
sudo apt-get update
rosdep update
# Workspace-Abhängigkeiten installieren
rosdep install --from-paths src --ignore-src -r -y
# Build
colcon build --symlink-install
ros2 launch isaac_ros_examples isaac_ros_examples.launch.py \
launch_fragments:=bi3d \
interface_specs_file:=${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/rosbag_quickstart_interface_specs.json \
featnet_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/bi3d_proximity_segmentation/featnet.plan \
segnet_engine_file_path:=${ISAAC_ROS_WS}/isaac_ros_assets/models/bi3d_proximity_segmentation/segnet.plan \
max_disparity_values:=10Öffnen Sie ein zweites Terminal und betreten Sie den Container.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shFühren Sie den folgenden Befehl aus:
ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/bi3dnode_rosbagErgebnis anzeigen
Öffnen Sie das dritte Terminal und betreten Sie den Container.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shFühren Sie den folgenden Befehl aus, um die Tiefenpartition anzuzeigen

ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30Öffnen Sie das vierte Terminal und betreten Sie den Container.
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.shFühren Sie den folgenden Befehl aus, um Bilder anzuzeigen

ros2 run image_view image_view --ros-args -r image:=right/image_rect