Contact Us:





Ventus

Getting Started

Note: The build tutorial is a work in progress, but you can still download the project files on my GitHub.
Other note: This guide is written for the way I set the original system up, but you can modify things as you see fit. Also, note that I had 3 normal drones, and one leader drone (more on this later.)


Overview:


This guide was written for the way I set up my system. Note that I tried to make it as comprehensive as possible, but if you significantly deviate from the recommended setup procedure, you may encounter difficulties not discussed here.

In other words, don't expect fully comprehensive support, especially if you modify the project files.

Sections:

Terminology:

Due to the extent of the project, I've put some terminology I use below so that things don't have to be explained each time they're used.

Drones:
There are two main classes of drones: leaders, and followers. The leader class has a single drone, whereas the follower class can have multiple depending on your configuration. If you're using a similar configuration to the one I use, then your follower class will have two sub classes: co-leaders, and actual followers. Details on classes and sub-classes are below.

• Leader/Leader drone/Primary drone - this is the drone that is equipped with cameras and a basic networking thing. It sends captured footage to the other (Follower) drones for classification.

• Co-leader/Co-leader drone/Secondary drone - In reality, these drones actually have the most authority over the fleet. The co-leader is a single drone equipped with classification technology as well as a GPS RTK module. This is critical in determining the approximate location of any people found. The co-leader also handles fleet management. If any updates are sent with regards to the formation of the fleet, or instructions to go to a certain place, the co-leader makes sure all of the drones know what to do. It is considered the co-leader however since it is still capable of classifying images, and doesn't have the camera equipment the leader drone has. If you are going to change the local WiFi network's host, make the co-leader do it.

• Followers/Follower drones/Tertiary drones - These drones only have classification and networking technology on board (Jetson, Raspberry Pi, LoRa gear.) If desired, when a person is found, a follower can be dispatched from the fleet to investigate further. Note that this requires the follower drones to have cameras sufficient at getting an image of a person so that they can follow that person. These are not called followers because they can be configured to follow people, but rather because they follow the leader/co-leader.


Misc: • Home server/Base station - This refers to the computer you will use as your primary interface for the project. This device runs all management software, and communicates with the drones. I used a Raspberry Pi 4 Model B with 8 GB of RAM for this, but you could use any computer you wish, just don't expect everything to be plug and play. Note that this is also your source of GPS RTK correction data. While it is the interface for the system, you can connect a seperate device to it if putting it in a fairly remote location is necessary for your setup. I.e. on some big pole in a savannah, and you'd rather run a cable or ssh into it than head over to it with peripherals every time you want to use the system.


What you'll need:

Use the buttons below to sort the list of materials. The buttons also affect the format of the downloadable CSV, but not the Excel spreadsheet. (Currently not implemented)


Click here to download a CSV file with all needed materials, pricing information, and links to purchase them.
Alternatively, click here to download a comprehensive Excel spreadsheet with cost calculators. This is a much nicer view of the materials needed than the CSV.

Most items in the list link to a place to purchase that item. These are not affiliate links, and I do not receive any compensation if you buy these products from the linked websites.
Project Files (software)
Project Files (hardware), link not yet active
DJI Mavic 3 Enterprise Thermal (DJI Mavic 3T)
• Drones that can carry one kilo | min. 2, max however many will connect to leader's local WiFi network (recommended 4-5)
Nvidia Jetson Nano x3
• Raspberry Pi 4 Model B or newer, min 4 GB RAM x3
• Raspberry Pi 4 Model B or newer, min 8 GB RAM x1 (or any other computer that can be constantly be running several python scripts, just generally easier w/ a Raspberry Pi due to things that need to connect.)
• Raspberry Pi Small (zero?) - the best small one you can find
• Raspberry Pi Battery thing
• GPS RTK Module thing x2
• LoRa Networking Stuff (each drone needs an antenna, plus one for your base station, each kit has two)
• A lot of screws, McMaster-Carr is fantastic (details on screw specifics coming soon)
• Other hardware things (standoffs, washers, rubber tubing, again more details later)
• SparkFun QWIIC stuff, or another way to connect different boards to one another
• Three power banks (details coming soon)
• Three 1ft USB type A to USB type C cables, 0.5m works too
• Three 0.5ft USB type A to Micro USB cables, 0.5m works here as well
• Access to a 3D printer, or a way of building fairly precise lightweight custom parts
• A small plastic bag, or two if you want to be safe (these may need fairly frequent replacing)
Micro SD Cards x8 (64gb+ recommended, I used 256gb, min 32gb)

Hardware Setup:

In this section, we'll set up our Jetsons, Raspberry Pis, LoRa networking equipment, and drones.

Raspberry Pi Setup:
You'll need to do this for every drone you have, as well as one aditional time if you're using a Raspberry Pi as your home server.
First, flash one MicroSDXC card with the Raspberry Pi OS for each Raspberry Pi you have. This can be done with Raspberry Pi Imager found here.
Next, insert the MicroSDXC cards into each Raspberry Pi, and follow this tutorial. IMPORTANT: You may need to connect the Raspberry Pis to a WiFi network during setup. Even though you'll eventually make them use a custom local WiFi network, if you need to connect them to WiFi, it's fine.
After that, you can power down each Raspberry Pi, and set them aside. If you want to get ahead, put all of the files in the follower folder onto each Raspberry Pi (except for the Pi Zero, and your home server.)


Nvidia Jetson Setup:
Similar to above, you'll need to repeat this process for every drone you have.
First, use a etching software to flash a MicroSDXC card for each Jetson. You'll want to use some distribution of Linux, the exact version doesn't really matter so long as it works with everything else.
Next, go through the setup process for each Jetson by booting them up, either connecting via ssh for a headless setup or using peripherals for a desktop setup, and set them aside. You can also get ahead here by downloading the files in the Follower-Classification folder.


Other hardware setup:
LoRa GPS RTK

Hardware Assembly:

This section features a lot of images, and rough sketches. These are going to be your main source of guidance, as I found the original text based instructions to be somewhat useless when trying to get others to set up the project.

Also, if you haven't already downloaded the 3D files for the project, download them here (link not yet active). You'll need these for making the enclosures for the equipment on board the drones. The rest of the guide assumes you have all of the equipment and supplies needed, and have already printed the provided 3D files for enclosures, and have completed the hardware setup section.

Follower drone hardware assembly:
You'll use this basic setup for all of the drones except for the leader. So, counting the secondary drone (co-leader), repeat this for each follower drone you have.

Secondary drone additional assembly:
You may have noticed that the secondary drone's hardware setup is currently identical to the other followers. It follows that this needs a little more work.
Start by locating one of your ZED-F9P GPS RTK2 boards, as well as one of your GNSS Multi-Band Magnetic Mount Antennas. To start, you'll attact the GPS RTK board to the top of the enclosure as shown in the diagram below. Note that when the lid is put on the enclosure, your GPS-RTK board should be facing downwards. This is shown in the second diagram.
Insert diagrams here
Next, connect the Qwiic cables to the boards as shown in the images below.
Insert images here

Primary drone assembly:
Find your Raspberry Pi Zero 2W, and your PiJuice Hat. Connect the PiJuice Hat battery to the Raspberry Pi Zero 2W as shown below.
You may want to consider soldering headers to the Pi Zero, though in principle it isn't necessary (you really should given this will be put on a drone).

Insert images here

Next, put the assembly into a plastic bag (this is how it will be protected when on the drone.)

Software Setup:

Software setup placeholder text

Usage:

Assuming you haven't modified anything, Ventus is fairly easy to use. The setup tool will walk you through the majority of the setup, and once everything is ready, you can run init.py on your home server to get everything going. This will require a user. It is highly recommended to not use Ventus unsupervised. This could potentially be catestrophic if a drone were to hit someone, start a fire, etc. Note that by using Ventus, you are completely liable for anything that arises as a result of its usage, and that I hold no responsibility whatsoever.
If you've either moved the system (namely the position of the home server's GNSS antenna), or are using it for the first time, run setup.py to get everything ready. The setup process requires that all drones are powered on and in close proximity, so make sure you're ready before starting the setup process. If anything fails, all configuration will be reset to default. If you'd like to change the default configuration, edit defaults.json. However, it is recommended to make a copy of defaults.json before altering it in the event that your default configuration is problematic. If you don't, you can always download the original from the GitHub repo.

Setup:
As previously stated, the setup tool will walk you through the majority of the setup. However, there are some hardware setup things you need to do. The previous setup steps had you making the equipment assemblies and getting all of the software set up. Now, we need to actually set up the base station, and make sure that everything knows where it is. First, you'll want a big pole, rooftop, or other tall thing you can put stuff on that has an unobstructed view of the sky. This is where you'll put the GNSS antenna for your base station. Note that the antenna's cable is only 5 meters, so you'll have to put your base station fairly close to the antenna. While you could extend the SMA cable, you lose signal strength with longer cables, so if you absolutely have to use an extension, don't use a very long one. The antenna should be placed on top of its metal grounding plate. It has a very strong magnet, but you can bolt it down if necessary. You'll want to attach the base plate to something that won't move with its threaded mount. It's critical that it stays in one place and doesn't move much as you need your correction data to be as accurate as possible.

While you're mounting the antenna, you will also want to find a place for the LoRa antenna. This isn't waterproof, so you could put it in a plastic bag, or make your own enclosure. Unless you want your base station to be right next to the two antennas, find a USB-C Thunderbolt cable that will be long enough to get from the LoRa antenna to your base station. It's generally hard to find thunderbolt cables over about three meters, and you'll probably want a five meter cable (which would be the same length as the GNSS antenna's cable.) You may have to look at active cables (these have signal boosters as opposed to just being a bundle of wires and shielding) so that the signal isn't lost.

Next, reconnect the GNSS antenna's SMA cable to the base station's SMA to U.FL adapter, and your USB-C Thunderbolt cable to the base station. Try not to put too much strain on the adapter, it's quite fragile.

Troubleshooting:

Due to the nature of the project, several things can easily go wrong, and it can be hard to track down the issue. The goal of this section is to aid in troubleshooting as best as possible. However, note that this won't cover every possible issue, primarily the ones I ran into while creating the project, and ones others ran into when I was testing it. Subsections:
• Hardware
• Raspberry Pi Things
• Jetson Things
• LoRa Things
• GPS RTK Things

• Software
• General/Shared
• Setup (setup.py)
• Software Configuration (config.py)
• Request validation (requests.txt, skutils -> getRequest())
• Networking (vts-lora.py, vts-network.py skutils.py)
• GPS (vts-rtk.py)
• I/O (interface.py)
• Readouts (vts-lcd.py)

• Server Side
• Server (init.py)
• Status updates (status.py)
• Flight Manager (flightmanager.py)
• Flight Maps (flightdata.vtsx, config.py, setup.py)

• Client Side
• Client (vts-client.py)
• Target location stuff (vts-locate.py)
• Image preparation (vts-clean.py)

• VTSX (Data stuff, see readme.)
• Structures
• Loose Structures
• Strict Structures
• Data Types
• Map
• Matrix
• Space
• Utils
• Subtrack
• Anchor
• Drop
• Update
• Storage Regions
• Assembly Agents
• Process Relegation

Modification Guidelines:

Feel free to modify any of the project files as you see fit, however, note that the terms under the "Legal Information" section below still apply, regardless of the extent of the modifications you make.
As far as modifying hardware, there are a few things to consider: • The reason I use a Jetson and Raspberry Pi on each drone is so the Raspberry Pi can receive the image from the leader drone, process the image, and send it over to the Jetson for classification. Since the only thing running on the Jetson is the model, nearly all of its proccessing power is used for image classification. You could ditch the Raspberry Pi, and just use the Jetson, but note that you'd need to configure things such that the Jetson can handle the model, and all of the I/O with various accessories such as the LoRa antennas or the GPS RTK modules. The project doesn't natively support this configuration, so you'd have to do a bit of work to make everything work as expected. • The carrying capacity on the leader drone I used is very low (116 grams or so). The equipment I've fitted to it is below that weight limit coming in around 96 grams. If you are going to modify this, I'd highly recommend just making one of the other drones handle WiFi/local networking, and just not using anything on the leader.

Liability:
I hold no liability whatsoever for anything that comes as a result of you or anyone else using Ventus. As an open source project, all distributions must include the license below:

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
Neither the name of the University nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED ''AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.

Using the MIT License. (C) 2023 Dylan Buchanan

Privacy:
Ventus does not collect any user data, and no information is required to use be able to use Ventus. Ventus does use GPS RTK, however, this data is local to your system unless you choose to export it. With regards to the people captured on video, what you do with the video footage afterwards depends on your local laws. Never use Ventus on a property that is not your own.

FAQs:

Legal FAQs:
Q: Something bad happened while I was using Ventus (drone hit person, drone started fire, etc.), what can I do?
A: Call your local authorities, but note that whatever happens, regardless of it being a hardware, software, or user error, it isn't my problem. If you think the error was a result of a bug or a hardware issue, submit a pull request on the GitHub repo.

Q: Can I use this as a normal security system, e.g. in place of a home security system or a commercial security system?
A: You'd have to check your local laws, it may not be legal to fly drones around your property, or could be considered an invasion of privacy to people nearby. You may also need a license to operate drones in your area. Ventus is not intended to serve as a security system, but rather a system that enables people to better protect environmentally sensitive areas. Misuse of Ventus is highly discouraged.

Q: Is Ventus a security system?
A: Ventus is not a security system, it is a monitoring system designed to alert users of potential tresspassers. It should not be used as a security system.

Q: Once my Ventus system is set up and running, do I have to monitor it?
A: Yes, so long as it is active and there are drones in the air, someone should always be monitoring it to ensure that if something does go wrong, the appropriate response can be carried out as quickly as possible.

Q: Do users require any training to use a Ventus system?
A: Any user should know how Ventus works, and should have the capacity to disable any process, recall drones, etc.


Other FAQs:
Q: What's the point of this?
A: This is mostly a proof of concept, but is a deployable drone security system aimed at making the protection of environmentally sensitive areas (nature preserves, wildlife reserves, etc.) easier by providing an accessible, modular, and robust monitoring solution.

Q: What advantage does this provide over having rangers or other authorities monitoring the area?
A: In general, Ventus is less disruptive as it is an aerial monitoring system, and over time will generally prove to be more cost effective than hiring employees.

Q: Why doesn't it work?
A: I don't know. Have you tried the troubleshooting section yet?

Q: I tried the troubleshooting section and it still doesn't work. What can I do?
A: That's unfortunate, and I still don't know.

Q: Can I fork the repo and turn this into my own project?
A: Yes, as long as you give me sufficient credit (see below), and follow the terms of the MIT license.

Q: What is considered sufficient credit when modifying or otherwise distributing the project?
A: Credit should be given to myself and any other applicable authors when distributing or modifying the project. To credit me, including my name (Dylan Buchanan) and website (djhbuchanan.com) is sufficient.















Contact:

contact@djhbuchanan.com

Or, send a message