ROS深度学习集成

注意:本文只适用于装载Jetson Nano的Kerloud无人机产品

为开发机器人应用,我们可以参照官方资源库(参考链接为https://github.com/dusty-nv/ros_deep_learning)来整合英伟达深度学习功能和ROS。 该代码包括一些ROS节点,可用来基于已安装的 jetson inference libraries进行网络部署。

代码结构

ROS深度学习库的主目录列举如下:

  1. launch/: 启动文件,用于部署深度学习任务所需的ROS节点

  2. src/: ROS节点的源代码

node_detectnet:用于部署detectnet网络以实现物体定位的ROS节点;

node_imagenet:用于部署imagenet网络以实现视觉识别的ROS节点;

node_segment:用于部署segnet网络以实现图像分割的ROS节点;

node_video_source:处理视频输入和图像输出的ROS节点;

node_video_output:使用叠加图像创建动态视频的ROS节点;

image_converter.cpp: 用于将图像转换成各种ROS信息的类。

如何安装

用户需安装jetson-inference libraries、ROS并创建ros_deep_learning 工作区。官网指南如下:https://github.com/dusty-nv/ros_deep_learning#installation。 关于jetson-inference的安装,请参考前节内容。

对于ROS melodic,我们需预先安装:

sudo apt-get install ros-melodic-image-transport ros-melodic-vision-msgs

然后位于~/ros_workspace目录下的工作区运行’catkin_make’。

如何运行

  1. 在继续之前,如果您使用的是ROS Melodic,请确保roscore首先运行。

  2. 启动视频播放器,检查视频流是否正常:

cd ~/ros_workspace
source devel/setup.bash
roslaunch ros_deep_learning video_viewer.ros1.launch input:=csi://0 output:=display://0

关于输入、输出的设置细节,请参考: https://github.com/dusty-nv/jetson-inference/blob/master/docs/aux-streaming.md

  1. 启动用于视频识别的imagenet节点

cd ~/ros_workspace
source devel/setup.bash
roslaunch ros_deep_learning imagenet.ros1.launch input:=csi://0 output:=display://0
  1. 启动用于物体检测的detectnet节点

cd ~/ros_workspace
source devel/setup.bash
roslaunch ros_deep_learning detectnet.ros1.launch input:=csi://0 output:=display://0
  1. 启动用于图像分割的segnet节点

cd ~/ros_workspace
source devel/setup.bash
roslaunch ros_deep_learning segnet.ros1.launch input:=csi://0 output:=display://0

在使用之前,确保已经下载、安装了jetson-inference必要的网络结构。如果没有,可以考虑参照如下链接中的指令进行手动处理,链接为: https://github.com/dusty-nv/jetson-inference/releases