Isaac ROS深度分割
Isaac ROS深度分割概述快速体验
Isaac ROS深度分割官网链接:https://nvidia-isaac-ros.github.io/repositories_and_packages/isaac_ros_depth_segmentation/index.html
概述
Isaac ROS 深度分割提供了 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 Docke容器
xxxxxxxxxx cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \ ./scripts/run_dev.sh
运行下面启动命令
xxxxxxxxxx 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
打开第二个终端,进入容器
xxxxxxxxxx cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \ ./scripts/run_dev.sh
运行以下命令
xxxxxxxxxx ros2 bag play --loop ${ISAAC_ROS_WS}/isaac_ros_assets/isaac_ros_bi3d/bi3dnode_rosbag
查看运行结果
打开第三个终端,进入容器
xxxxxxxxxx cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \ ./scripts/run_dev.sh
运行以下命令,查看深度分割图
xxxxxxxxxx ros2 run isaac_ros_bi3d isaac_ros_bi3d_visualizer.py --max_disparity_value 30
打开第四个终端,进入容器
xxxxxxxxxx cd ${ISAAC_ROS_WS}/src/isaac_ros_common && \ ./scripts/run_dev.sh
运行以下命令,查看图像
xxxxxxxxxx ros2 run image_view image_view --ros-args -r image:=right/image_rect
