ROS深度学习集成
注意:本文只适用于装载Jetson Nano的Kerloud无人机产品
为开发机器人应用,我们可以参照官方资源库(参考链接为https://github.com/dusty-nv/ros_deep_learning)来整合英伟达深度学习功能和ROS。 该代码包括一些ROS节点,可用来基于已安装的 jetson inference libraries进行网络部署。
代码结构
ROS深度学习库的主目录列举如下:
launch/: 启动文件,用于部署深度学习任务所需的ROS节点
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’。
如何运行
在继续之前,如果您使用的是ROS Melodic,请确保roscore首先运行。
启动视频播放器,检查视频流是否正常:
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
启动用于视频识别的imagenet节点
cd ~/ros_workspace
source devel/setup.bash
roslaunch ros_deep_learning imagenet.ros1.launch input:=csi://0 output:=display://0
启动用于物体检测的detectnet节点
cd ~/ros_workspace
source devel/setup.bash
roslaunch ros_deep_learning detectnet.ros1.launch input:=csi://0 output:=display://0
启动用于图像分割的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。