原文链接:
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
-安装依赖包:
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 进入这个命令:
sudo apt-get install ./deepstream-5.0_5.0.1-1_arm64
Ryze Tello设定
1.安装pip包
首先,我们需要安装python依赖项。确保您具有python3.7 / 3.8的有效版本
sudo apt install python3-dev python3-pip
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文件。
# For individial packages
pip3 install <packagename>
# For requirements.txt
pip3 install -r requirements.txt
2. Redis
Redis用于其排队机制,该机制将用于创建Tello相机流的RTSP流。
安装Redis服务器:
sudo apt install redis-server
3.连接特洛
首先,将Jetson设备连接到Tello的WiFi网络。
接下来,运行以下代码以验证连接性
# Importing the Tello Drone Library
from djitellopy import Tello
pkg = Tello()
pkg.connect()
连接成功后,您的输出将如下所示
Send command: command
Response: b'ok'
如果获得以下输出,则可能要检查与无人机的连接
Send command: command
Timeout exceed on command command
Command command was unsuccessful. Message: False
运行应用程序
该应用程序可以在通过一个样本视频输入或无人机流上运行
-clone the repository
这是一个简单的步骤,但是,如果您是git或git-lfs的新手,我建议浏览一下这些步骤。
首先,安装git和git-lfs
sudo apt install git git-lfs
接下来 clone the repository
# 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的权重
git lfs install
git lfs pull
-使用不同的输入源运行
该解决方案的计算机视觉部分可以在多种类型的一个或多个输入源上运行,所有输入源均使用NVIDIA Deepstream。
首先,通过运行以下命令来构建应用程序:
make clean && make -j$(nproc)
这将生成二进制文件hermes-app。这是一次性的步骤,只有在更改源代码时才需要执行此操作。
接下来,创建一个名为的文件,inputsources.txt然后粘贴视频或rtsp url的路径。
file:///home/astr1x/Videos/Wildfire1.mp4
rtsp://admin:admin%40123@192.168.1.1:554/stream
现在,通过运行以下命令来运行该应用程序:
./hermes-app
驾驶无人机
我们利用摄像机的实时流实时检测野火。
由于Tello流通过UDP传输,而Deepstream Hermes应用接受RTSP作为输入,因此我们需要一个中间的UDP-> RTSP转换器。另外,我们需要控制电视的移动。
运行以下命令以启动tello控制脚本:
python3 tello-control.py
该脚本将在以下URL上启动Tello流:
rtsp://127.0.0.1:6969 / hermes
要用键盘控制无人机,请先按左Shift键。
下面是一个键列表及其作用-
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