ROS / ROS2的深度学习节点-->Jetson Nano / TX1 / TX2 / Xavier NX / AGX Xavier


包含ROS / ROS2的深度学习推理节点和相机/视频流节点,并支持Jetson Nano / TX1 / TX2 / Xavier NX / AGX Xavier和TensorRT。

节点使用jetson-inference库和NVIDIA Hello AI World教程中的图像识别,对象检测和语义分割DNN ,它们带有几个内置的预训练网络,用于分类,检测和分割,并能够加载定制的用户训练模型。

摄像机/视频流节点支持以下输入/输出接口:

MIPI CSI相机
V4L2相机
RTP / RTSP
影片和图片
图像序列
OpenGL视窗
支持ROS Melodic和ROS2 Eloquent,并建议使用最新版本的JetPack。

一、安装

1.jetson-inference

安装
首先,在您的Jetson上安装最新版本的JetPack。

然后,按照以下步骤在Jetson上安装所需的组件。

jetson -inference
这些ROS节点使用jetson-inference项目中的DNN对象(aka Hello AI World)。要构建和安装jetson-inference,请参阅此页面https://github.com/dusty-nv/jetson-inference/blob/master/docs/building-repo-2.md.
或运行以下命令:

$ cd ~
$ sudo apt-get install git cmake
$ git clone --recursive https://github.com/dusty-nv/jetson-inference
$ cd jetson-inference
$ mkdir build
$ cd build
$ cmake ../
$ make -j$(nproc)
$ sudo make install
$ sudo ldconfig

在继续之前,值得jetson-inference遵循“ Hello AI World”教程的这一步骤来测试您的系统上是否正常工作:
https://github.com/dusty-nv/jetson-inference/blob/master/docs/imagenet-console-2.md.

2.ros/ros2

请按照以下说明在您的Jetson上安装ros-melodic-ros-base或ros-eloquent-ros-base软件包:

ROS Melodic-- ROS安装说明.
ROS2 Eloquent-- ROS2安装说明
安装说明
根据您使用的ROS版本,安装一些其他依赖项并创建一个工作区:

ROS Melodic

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

对于ROS Melodic,请~/ros_workspace使用以下步骤创建一个Catkin工作区()
创建工作空间参考请点这里

ROS Eloquent

sudo apt-get install ros-eloquent-vision-msgs \
                       ros-eloquent-launch-xml \
                       ros-eloquent-launch-yaml \
                       python3-colcon-common-extensions

对于ROS Eloquent,创建一个工作区(~/ros_workspace)以使用:

mkdir -p ~/ros2_example_ws/src

3.ros_deeping_learning

接下来,导航到ROS工作区的src目录并进行克隆ros_deep_learning:

cd ~/ros_workspace/src
git clone https://github.com/dusty-nv/ros_deep_learning

然后构建它-如果您正在使用ROS Melodic,请使用catkin_make。如果您使用的是ROS2 Eloquent,请使用colcon build:

 cd ~/ros_workspace/

现在应已构建节点并准备使用它们。切记如上所示获取叠加层,以便ROS可以找到节点。

二、测试

在继续之前,如果您使用的是ROS Melodic,请确保roscore先运行它:

roscore

如果您使用的是ROS2,则不再需要运行核心服务

1.Video Viewer(相机捕获工具)

video-viewer
首先,建议您测试是否可以使用video_source和video_output节点流式传输视频供稿。见摄像机流媒体和多媒体的有效输入/输出流,并替换你想要的input和output下面的说法。例如,您可以将视频文件用于输入或输出,或者使用V4L2摄像机代替MIPI CSI摄像机。您还可以通过网络使用RTP / RTSP流。

# ROS Melodic
$ roslaunch ros_deep_learning video_viewer.ros1.launch input:=csi://0 output:=display://0


#这里我用的是usb摄像头
$ roslaunch ros_deep_learning video_viewer.ros1.launch input:=v4l2:///dev/video0 output:=display://

运行效果在这里插入图片描述

# ROS2 Eloquent
$ ros2 launch ros_deep_learning video_viewer.ros2.launch input:=csi://0 output:=display://0

2.imagenet Node(图像分类网络节点)

您可以使用以下命令启动分类演示-将所需的摄像机或视频路径替换为以下input参数(有关有效输入/输出流,请参见此处)。

请注意,该imagenet节点还将imagenet/classification在vision_msgs/Detection2DArray消息中的主题上发布分类元数据-有关更多信息,请参见下面的“主题和参数”部分。

# ROS Melodic
$ roslaunch ros_deep_learning imagenet.ros1.launch input:=csi://0 output:=display://


#这里我用的是usb摄像头
$ roslaunch ros_deep_learning imagenet.ros1.launch input:=v4l2:///dev/video0 output:=display://

运行效果
在这里插入图片描述

# ROS2 Eloquent
$ ros2 launch ros_deep_learning imagenet.ros2.launch input:=csi://0 output:=display://0

3.detectnet Node(检测网络节点)

detectnet节点
要启动对象检测演示,请将所需的摄像机或视频路径替换为以下input参数(有关有效输入/输出流,请参见此处)。请注意,该detectnet节点还会在vision_msgs/Detection2DArray消息中发布元数据-有关更多信息,请参见下面的“主题和参数”部分。

# ROS Melodic
$ roslaunch ros_deep_learning detectnet.ros1.launch input:=csi://0 output:=display://

#这里我用的是usb摄像头
$ roslaunch ros_deep_learning detectnet.ros1.launch input:=v4l2:///dev/video0 output:=display://

运行效果
在这里插入图片描述

# ROS2 Eloquent
$ ros2 launch ros_deep_learning detectnet.ros2.launch input:=csi://0 output:=display://0

4.segnet Node(分割网络节点)

要启动语义分段演示,请将所需的摄像机或视频路径替换为以下input参数(有关有效输入/输出流,请参见此处)。请注意,该segnet节点还会将原始细分结果发布到该segnet/class_mask主题-有关更多信息,请参见下面的“主题和参数”部分。

# ROS Melodic
$ roslaunch ros_deep_learning segnet.ros1.launch input:=csi://0 output:=display://0

# ROS2 Eloquent
$ ros2 launch ros_deep_learning segnet.ros2.launch input:=csi://0 output:=display://0

三、主题和参数

1.imagenet Node(图像分类网络节点)

以下是每个节点实现的消息主题和参数。
在这里插入图片描述

2.detectnet Node(检测网络节点)

在这里插入图片描述

3.segnet Node(分割网络节点)

在这里插入图片描述
在这里插入图片描述

4.video_source Node(相机输入节点)

在这里插入图片描述

5.video_output Node(相机输出节点)

在这里插入图片描述

参考引用

ros_deep_learning.

相机流媒体和多媒体

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值