前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Jetson Xavier NX和大疆无人机做一个野火检测原型

用Jetson Xavier NX和大疆无人机做一个野火检测原型

作者头像
GPUS Lady
发布2021-05-07 10:31:03
2.9K0
发布2021-05-07 10:31:03
举报
文章被收录于专栏:GPUS开发者
这个教程来自:

原文链接:

https://towardsdatascience.com/hermes-wildfire-detection-using-nvidia-jetson-and-ryze-tello-8da123f05c64

项目背景

野火不断增加,吞噬着我们的地球,使我们的星球日趋恶化。仅在2019年和2020年,发生的野火就足以使地球的生态失衡。其中一些事件包括亚马逊野火,加州野火,北极野火和澳大利亚丛林大火。

通过早期发现和缓解,可以减少野火造成的破坏。

为了更好地使我们的一线工作人员受益,我们设计一个由AI驱动的计算机视觉应用程序,可使用侦察无人机帮助早期发现野火。

项目介绍

应用程序包含两个部分。由Deepstream和NVIDIA Jetson Xavier NX和侦察无人机提供动力的智能视频分析管道,为此,我使用了Ryze Tello。NVIDIA的Deepstream SDK旨在帮助开发人员构建更好的Intelligent Video Analytics管道。DJI Ryze Tello是一款使用开源SDK面向开发者的无人机。

该项目是概念验证,试图证明可以使用无人机和机载Jetson平台完成野火的监视和制图。

Deepstrean安装

假设你的Jetson NANO开发套件已经刷好。可以参考:

https://docs.nvidia.com/jetson/jetpack/install-jetpack/index.html

-安装依赖包:

代码语言:javascript
复制
sudo apt install \
libssl1.0.0 \
libgstreamer1.0-0 \
gstreamer1.0-tools \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-plugins-ugly \
gstreamer1.0-libav \
libgstrtspserver-1.0-0 \
libjansson4=2.11-1

-安装Deepstream:

下载DeepStream 5.0.1 Jetson Debian package deepstream-5.0_5.0.1-1_arm64.deb 进入这个命令:

代码语言:javascript
复制
sudo apt-get install ./deepstream-5.0_5.0.1-1_arm64

Ryze Tello设定

1.安装pip包

首先,我们需要安装python依赖项。确保您具有python3.7 / 3.8的有效版本

代码语言:javascript
复制
sudo apt install python3-dev python3-pip

需要的依赖项如下:

代码语言:javascript
复制
djitellopy==1.5
evdev==1.3.0
imutils==0.5.3
numpy==1.19.4
opencv-python==4.4.0.46
pycairo==1.20.0
pygame==2.0.1
PyGObject==3.38.0
pynput==1.7.2
python-xlib==0.29
redis==3.5.3
six==1.15.0

您可以使用pip命令安装它们,也可以使用requirements.txt文件。

代码语言:javascript
复制
# For individial packages
pip3 install <packagename>
# For requirements.txt
pip3 install -r requirements.txt

2. Redis

Redis用于其排队机制,该机制将用于创建Tello相机流的RTSP流。

安装Redis服务器:

代码语言:javascript
复制
sudo apt install redis-server

3.连接特洛

首先,将Jetson设备连接到Tello的WiFi网络。

接下来,运行以下代码以验证连接性

代码语言:javascript
复制
# Importing the Tello Drone Library
from djitellopy import Tello
pkg = Tello()
pkg.connect()

连接成功后,您的输出将如下所示

代码语言:javascript
复制
Send command: command
Response: b'ok'

如果获得以下输出,则可能要检查与无人机的连接

代码语言:javascript
复制
Send command: command
Timeout exceed on command command
Command command was unsuccessful. Message: False

运行应用程序

该应用程序可以在通过一个样本视频输入或无人机流上运行

-clone the repository

这是一个简单的步骤,但是,如果您是git或git-lfs的新手,我建议浏览一下这些步骤。

首先,安装git和git-lfs

代码语言:javascript
复制
sudo apt install git git-lfs

接下来 clone the repository

代码语言:javascript
复制
# Using HTTPS
git clone https://github.com/aj-ames/Hermes-Deepstream.git
# Using SSH
git clone git@github.com:aj-ames/Hermes-Deepstream.git

最后启用lfs,并拉YOLO的权重

代码语言:javascript
复制
git lfs install
git lfs pull

-使用不同的输入源运行

该解决方案的计算机视觉部分可以在多种类型的一个或多个输入源上运行,所有输入源均使用NVIDIA Deepstream。

首先,通过运行以下命令来构建应用程序:

代码语言:javascript
复制
make clean && make -j$(nproc)

这将生成二进制文件hermes-app。这是一次性的步骤,只有在更改源代码时才需要执行此操作。

接下来,创建一个名为的文件,inputsources.txt然后粘贴视频或rtsp url的路径。

代码语言:javascript
复制
file:///home/astr1x/Videos/Wildfire1.mp4
rtsp://admin:admin%40123@192.168.1.1:554/stream

现在,通过运行以下命令来运行该应用程序:

代码语言:javascript
复制
./hermes-app

驾驶无人机

我们利用摄像机的实时流实时检测野火。

由于Tello流通过UDP传输,而Deepstream Hermes应用接受RTSP作为输入,因此我们需要一个中间的UDP-> RTSP转换器。另外,我们需要控制电视的移动。

运行以下命令以启动tello控制脚本:

代码语言:javascript
复制
python3 tello-control.py

该脚本将在以下URL上启动Tello流:

代码语言:javascript
复制
rtsp://127.0.0.1:6969 / hermes

要用键盘控制无人机,请先按左Shift键。

下面是一个键列表及其作用-

代码语言:javascript
复制
Left Shift -> 切换键盘控件
Right Shft -> Take off the drone
Space -> Land drone
Up arrow -> Increase Altitude
Down arrow -> Decrease Altitude
Left arrow -> Pan left
Right arrow -> Pan right
w -> Move forward
a -> Move left
s -> Move down
d -> Move right

最后,在inputsources.txt中添加URL并启动./hermes app。

总结

我的努力和想法一直致力于利用最新技术来改善我们的环境。随着计算机视觉的发展,如果我们愿意的话,新一代支持AI的设备和机器人将使我们的星球变得更美好!:)

这个项目的代码托管在:

https://github.com/aj-ames/Hermes-Deepstream

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-04-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 GPUS开发者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需要的依赖项如下:
相关产品与服务
云数据库 Redis®
腾讯云数据库 Redis®(TencentDB for Redis®)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档