9.2 深度分割
Docker 使用参考: 模块 3.7 Docker
Isaac ROS Depth Segmentation 官方链接:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_depth_segmentation/index.html
概述

Isaac ROS Depth Segmentation 提供加速的 NVIDIA 深度分区软件包。isaac ros bi3d 软件包使用经过优化的 Bi3D DNN 模型,通过二值化提供立体深度估计,用于深度分离。深度分区可用于判断障碍物是否位于相邻区域,并在导航过程中避免与障碍物发生碰撞。
Bi3D 用于从时间同步输入的左右立体图像中进行深度分离的节点图。Bi3D 图像需要校正并调整大小以适应合适的输入分辨率。需要保持图像的宽高比;因此,可能需要裁剪和调整大小以保持输入宽高比。DNN 编码、DNN 推理和 DNN 解码都是 Bi3D 节点的一部分。推理使用 TensorRT 执行,因为 Bi3D DNN 模型旨在使用 TensorRT 支持进行优化。
与其他立体视觉功能相比,深度分割预测障碍物是否位于相邻区域(而非连续深度),并同时预测距离地面一定距离的自由空间,而其他功能通常不提供此功能。此外,与 Isaac ROS 中的其他立体视觉功能不同,深度分割在 NVIDIA DLA(深度学习加速器)上执行,该加速器独立于 GPU。
快速开始
为简化开发,我们主要使用 Isaac ROS Dev Docker 镜像并在其上执行影响演示。该演示无需安装任何摄像头设备,通过播放 rosbag 文件来模拟来自摄像头的数据流。
如果您计划在真实硬件或连接的摄像头上运行此工作流,请参考 Isaac ROS 官方文档以获取受支持的摄像头设置。
打开终端并进入工作空间
cd ${ISAAC_ROS_WS}/src
进入 Isaac ROS Dev Docker 容器
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh运行以下启动命令:
注意:运行官方示例可能需要科学上网,请确保您的网络环境能够正常访问 GitHub
cd /workspaces/isaac_ros-dev/src
# 示例仓库(提供如 isaac_ros_examples.launch.py 等快速启动文件)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_examples.git
# Bi3D 仓库(深度分割 / Bi3D)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_depth_segmentation.git
# 通用工具仓库(run_dev、脚本和共享依赖/配置)
git clone -b release-3.2 https://github.com/NVIDIA-ISAAC-ROS/isaac_ros_common.git
cd /workspaces/isaac_ros-dev
# 确保 rosdep 可用(通常在开发容器中已预安装)
sudo apt-get update
rosdep update
# 安装工作空间依赖
rosdep install --from-paths src --ignore-src -r -y
# 构建
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打开第二个终端并进入容器。
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh运行以下命令:
ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/bi3dnode_rosbag查看结果
打开第三个终端并进入容器。
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh运行以下命令:查看深度分区

ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30打开第四个终端并进入容器。
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh运行以下命令:查看图像

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