9.3 DNN 立体深度

Docker 使用参考: 模块 3.7 Docker

Isaac ROS DNN Depth Network 链接:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_dnn_stereo_depth/index.html

概述

视觉深度感知问题在机器人技术的许多领域都很常见,例如在物体操作中估计机械臂的姿态、在自主机器人导航中估计静态或移动目标的距离、在配送机器人中跟踪目标等。Isaac ROS DNN Stereo Depth 适用于两个 Isaac 应用:Isaac Manipulator 和 Isaac Perceptor。在 Isaac Manipulator 应用中,ESS 作为 Isaac ROS 控制包中的插件节点部署,为机械臂运动规划和控制提供深度感知。在此场景中,执行桌面任务的工业机械臂的多摄像头立体流被传递到 ESS 以获取相应的深度流。深度流用于划分机械臂与桌面上相应物体的相对距离;这为避免碰撞和精细颗粒控制提供了信号。同样,Isaac Perceptor 应用使用了多个 Isaac ROS 包,即 Isaac ROS Nova、Isaac ROS Visual Slam、Isaac ROS Stereo Deep (ESS)、Isaac ROS Nvblox 和 Isaac ROS Image Pipeline。

快速开始

为简化开发,我们主要使用 Isaac ROS Dev Docker 镜像并在其上执行影响演示。该演示无需安装任何摄像头设备,通过播放 rosbag 文件来模拟来自摄像头的数据流。

注意:如果您想在自己的设备上安装,或连接摄像头来开发其他功能,请参考 Isaac ROS 官方网站连接指定型号的英伟达摄像头。

打开终端并进入工作空间

bash

cd ${ISAAC_ROS_WS}/src
进入 Isaac ROS Dev Docker 容器
cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下启动命令,其中 Threshold:=0.0 可以在启动时修改为 0.4,会有不同的效果。

bash

ros2 launch isaac_ros_examples isaac_ros_examples.launch.py launch_fragments:=ess_disparity \
engine_file_path:=${ISAAC_ROS_WS:?}/isaac_ros_assets/models/dnn_stereo_disparity/dnn_stereo_disparity_v4.1.0_onnx/ess.engine \
  threshold:=0.0

打开第二个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 bag play -l ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_ess/rosbags/ess_rosbag \
  --remap /left/camera_info:=/left/camera_info_rect /right/camera_info:=/right/camera_info_rect

查看结果

打开第三个终端并进入容器。

bash

cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \
./scripts/run_dev.sh

运行以下命令:

bash

ros2 run isaac_ros_ess isaac_ros_ess_visualizer.py

设置为 0.0 时,显示以下结果:

我不知道。

设置为 0.4 时,结果如下所示: