|
Before Width: | Height: | Size: 99 KiB |
|
Before Width: | Height: | Size: 70 KiB |
BIN
docs/assets/coex_pdb/coex-pdb-bottom.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
BIN
docs/assets/coex_pdb/coex-pdb-top.png
Normal file
|
After Width: | Height: | Size: 195 KiB |
BIN
docs/assets/dimensional-drawing/clover-4.2-ws.pdf
Normal file
BIN
docs/assets/dimensional-drawing/clover-4.2.pdf
Normal file
BIN
docs/assets/field.jpg
Normal file
|
After Width: | Height: | Size: 256 KiB |
BIN
docs/assets/field2.jpg
Normal file
|
After Width: | Height: | Size: 139 KiB |
BIN
docs/assets/zerotire/download_1.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
docs/assets/zerotire/download_2.png
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
docs/assets/zerotire/ios_1.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/assets/zerotire/ios_2.png
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
docs/assets/zerotire/ios_3.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
docs/assets/zerotire/ios_4.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/assets/zerotire/ios_5.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/assets/zerotire/linux_1.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/assets/zerotire/login_1.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
docs/assets/zerotire/login_2.png
Normal file
|
After Width: | Height: | Size: 7.3 KiB |
BIN
docs/assets/zerotire/macos_1.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
docs/assets/zerotire/macos_2.png
Normal file
|
After Width: | Height: | Size: 77 KiB |
BIN
docs/assets/zerotire/network_1.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/assets/zerotire/network_2.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/assets/zerotire/network_3.png
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
docs/assets/zerotire/network_4.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
docs/assets/zerotire/network_5.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
BIN
docs/assets/zerotire/network_6.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
docs/assets/zerotire/qgc_1.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
docs/assets/zerotire/qgc_2.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
docs/assets/zerotire/qgc_3.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
docs/assets/zerotire/windows_1.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/assets/zerotire/windows_2.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
docs/assets/zerotire/windows_3.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
docs/assets/zerotire/windows_4.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
docs/assets/zerotire/windows_5.png
Normal file
|
After Width: | Height: | Size: 4.4 KiB |
@@ -55,7 +55,6 @@
|
||||
* [Supplementary materials](supplementary.md)
|
||||
* [COEX Pix](coex_pix.md)
|
||||
* [COEX PDB](coex_pdb.md)
|
||||
* [COEX GPS](coex_gps.md)
|
||||
* [Guide on autonomous flight](auto_setup.md)
|
||||
* [Hostname](hostname.md)
|
||||
* [PX4 Simulation](sitl.md)
|
||||
|
||||
147
docs/en/agriculture.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# Recognition of crop types in mass agricultural production
|
||||
|
||||
## Introduction
|
||||
|
||||
Modern agriculture in many countries is becoming one of the shining examples of the rapid and successful introduction of new technologies. Unmanned aerial vehicles are capable of performing a wide range of tasks, among which monitoring of agricultural land has now become a common tool for increasing the efficiency of agriculture. The goal of my project is to write a code for recognizing crop types in mass agricultural production. In the future, from the recognition results, you can design a map of sown areas.
|
||||
|
||||
## Monitoring
|
||||
|
||||
In agriculture, monitoring is necessary to obtain information on the state of land and crops. Based on the monitoring results, farmers or specialists can understand whether crops are sprouting normally, whether there is a threat from weeds and/or insects - pests, what is the degree of moisture in individual areas or entire areas, etc.
|
||||
|
||||
## Explanation of the code
|
||||
|
||||
Import libraries:
|
||||
|
||||
```python
|
||||
import rospy
|
||||
import cv2
|
||||
from sensor_msgs.msg import Image
|
||||
from cv_bridge import CvBridge
|
||||
import numpy as np
|
||||
```
|
||||
|
||||
Create some variables:
|
||||
|
||||
```python
|
||||
rospy.init_node('computer_vision_sample')
|
||||
|
||||
bridge = CvBridge()
|
||||
|
||||
color = 'undefined'
|
||||
shape = 'undefined'
|
||||
culture = ""
|
||||
```
|
||||
|
||||
To implement computer vision algorithms, it is recommended to use the OpenCV library preinstalled on the Clover image.
|
||||
Create a subscriber for the topic with the image from the main camera for processing using OpenCV:
|
||||
|
||||
```python
|
||||
def image_colback_color(data):
|
||||
global color, shape
|
||||
|
||||
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8') # OpenCV image
|
||||
img_hsv = cv2.cvtColor(cv_image, cv2.COLOR_BGR2HSV) #[118:119,158:159]
|
||||
|
||||
#detected color
|
||||
#print(img_hsv[0][0])
|
||||
```
|
||||
|
||||
Each culture has its unique shade (wheat is golden, buckwheat is light brown).
|
||||
|
||||
<img src="../assets/field.jpg" width="75%">
|
||||
<img src="../assets/field2.jpg" width="75%">
|
||||
|
||||
We describe color ranges for certain crops:
|
||||
|
||||
```python
|
||||
#wheat
|
||||
yellow_orange_low = (38, 110, 150)
|
||||
yellow_orange_high= (52, 110, 150)
|
||||
|
||||
#buckwheat
|
||||
brown_low = (23, 50, 50)
|
||||
brown_high= (37, 50, 50)
|
||||
|
||||
yellow_orange_mask = cv2.inRange(img_hsv, yellow_orange_low, yellow_orange_high)
|
||||
brown_mask = cv2.inRange(img_hsv, brown_low, brown_high)
|
||||
|
||||
if yellow_orange_mask[119][159] == 255:
|
||||
shape = shape_recog(yellow_orange_mask)
|
||||
|
||||
elif brown_mask[119][159] == 255:
|
||||
shape = shape_recog(brown_mask)
|
||||
|
||||
else:
|
||||
shape = 'undefined'
|
||||
color = 'undefined'
|
||||
|
||||
if shape = 'brown':
|
||||
culture = "greshiha"
|
||||
if shape = 'yellow_orange':
|
||||
culture = "pshenitsa"
|
||||
|
||||
image_sub = rospy.Subscriber('main_camera/image_raw', Image, image_colback_color)
|
||||
```
|
||||
|
||||
The script will take up to 100% CPU capacity. To slow down the script artificially, you can use throttling of frames from the camera, for example, at 5 Hz (`main_camera.launch`):
|
||||
|
||||
```xml
|
||||
<node pkg="topic_tools" name="cam_throttle" type="throttle" args="messages main_camera/image_raw 5.0 main_camera/image_raw_throttled"/>
|
||||
```
|
||||
|
||||
The topic for the subscriber, in this case, should be changed for `main_camera/image_raw_throttled`.
|
||||
|
||||
```python
|
||||
print (culture)
|
||||
while not rospy.is_shutdown():
|
||||
print("color: {}".format(color))
|
||||
print("shape: {}".format(shape))
|
||||
rospy.sleep(0.2)
|
||||
```
|
||||
|
||||
This program will recognize the culture by its shade. We can use more color ranges to improve the accuracy of the recognition so the drone can recognize more crops.
|
||||
|
||||
Examples of color ranges for other colors:
|
||||
|
||||
```python
|
||||
red_low1 = (0, 110, 150)
|
||||
red_high1 = (7, 255, 255)
|
||||
|
||||
red_low2 = (172, 110, 150)
|
||||
red_high2 = (180, 255, 255)
|
||||
|
||||
red_orange_low = (8, 110, 150)
|
||||
red_orange_high = (22, 110, 150)
|
||||
|
||||
orange_low = (23, 110, 150)
|
||||
orange_high = (37, 110, 150)
|
||||
|
||||
yellow_orange_low = (38, 110, 150)
|
||||
yellow_orange_high = (52, 110, 150)
|
||||
|
||||
yellow_low = (53, 150, 150)
|
||||
yellow_high = (67, 255, 255)
|
||||
|
||||
yellow_green_low = (68, 150, 150)
|
||||
yellow_green_high = (82, 255, 255)
|
||||
|
||||
green_low = (83, 150, 150)
|
||||
green_high = (97, 255, 255)
|
||||
|
||||
blue_green_low = (98, 150, 150)
|
||||
blue_green_high = (113, 255, 255)
|
||||
|
||||
blue_low = (114, 150, 150)
|
||||
blue_high = (127, 255, 255)
|
||||
|
||||
blue_violet_low = (128, 150, 150)
|
||||
blue_violet_high = (142, 255, 255)
|
||||
|
||||
violet_low = (143, 150, 150)
|
||||
violet_high = (157, 255, 255)
|
||||
|
||||
red_violet_low = (158, 150, 150)
|
||||
red_violet_hugh = (171, 255, 255)
|
||||
```
|
||||
|
||||
Note that there are two ranges for red because red is at the edges of the HSV color space.
|
||||
@@ -1,11 +0,0 @@
|
||||
# COEX GPS
|
||||
|
||||
## Port pinouts
|
||||
|
||||
### Top view
|
||||
|
||||
<img src="../assets/coex_gps/coex-gps-top.png" width=400 class=zoom>
|
||||
|
||||
### Bottom view
|
||||
|
||||
<img src="../assets/coex_gps/coex-gps-bottom.png" width=400 class=zoom>
|
||||
15
docs/en/coex_pdb.md
Normal file
@@ -0,0 +1,15 @@
|
||||
# COEX PDB
|
||||
|
||||
**COEX PDB** is the power distribution board used in [Clover 4 Drone kit](assemble_4_2.md).
|
||||
|
||||
Board size: 35x35 mm.
|
||||
|
||||
## Port pinouts
|
||||
|
||||
### Top view
|
||||
|
||||
<img src="../assets/coex_pdb/coex-pdb-top.png" width=400 class=zoom>
|
||||
|
||||
### Bottom view
|
||||
|
||||
<img src="../assets/coex_pdb/coex-pdb-bottom.png" width=400 class=zoom>
|
||||
183
docs/en/zerotire_vpn.md
Normal file
@@ -0,0 +1,183 @@
|
||||
# Creating a virtual network ZeroTire One and connecting to it
|
||||
|
||||
## Creating and configuring a ZeroTire network
|
||||
|
||||
1. Go to [ZeroTire](https://www.zerotier.com/) website.
|
||||
|
||||
<img src="../assets/zerotire/login_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Sign up on ZeroTire.
|
||||
|
||||
<img src="../assets/zerotire/login_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Go to your account.
|
||||
|
||||
4. Click on the *Create A Network*.
|
||||
|
||||
<img src="../assets/zerotire/network_1.png" width=300 class="zoom border center">
|
||||
|
||||
5. After that, you will see the network you created, its ID and name. Click on the network to configure it.
|
||||
|
||||
<img src="../assets/zerotire/network_2.png" width=300 class="zoom border center">
|
||||
|
||||
6. In the window that appears you can change the network name and connection privacy.
|
||||
|
||||
<img src="../assets/zerotire/network_3.png" width=300 class="zoom border center">
|
||||
|
||||
7. Scroll down to the *Members* column. It will say that there are no users on the network.
|
||||
|
||||
<img src="../assets/zerotire/network_4.png" width=300 class="zoom border center">
|
||||
|
||||
8. Devices connected to the network will be displayed in this column. To allow them to connect to the network, activate the *Auth?* checkbox. The connected device will automatically be given an internal IP address, which will then be used to communicate with this device.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/network_5.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/network_6.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
> **Hint** specify names for new devices, it will help you distinguish them from each other in the future.
|
||||
|
||||
9. Repeat the last step for all the devices that you want to connect.
|
||||
|
||||
> **Info** ZeroTire network supports up to 50 users simultaneously for free use.
|
||||
|
||||
## Setup on Windows
|
||||
|
||||
### Installing the app
|
||||
|
||||
1. Go to the ZeroTire website.
|
||||
|
||||
<img src="../assets/zerotire/download_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Click on the Windows icon.
|
||||
|
||||
<img src="../assets/zerotire/download_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Download and run the `Zero Tare One.msi` file.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/windows_1.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/windows_2.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
### Network connection
|
||||
|
||||
1. Run ZeroTire One.
|
||||
|
||||
2. Click on the ZeroTire One icon in the taskbar.
|
||||
|
||||
3. Click on the *Join Network...* to connect to the network.
|
||||
|
||||
<img src="../assets/zerotire/windows_3.png" width=300 class="zoom border center">
|
||||
|
||||
4. In the window that appears, enter your network ID and click *Join*.
|
||||
|
||||
<img src="../assets/zerotire/windows_4.png" width=300 class="zoom border center">
|
||||
|
||||
5. Allow using the new network.
|
||||
|
||||
## Setup on iOS
|
||||
|
||||
### Installing the app
|
||||
|
||||
1. Go to the ZeroTire website.
|
||||
|
||||
<img src="../assets/zerotire/download_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Click on the iOS icon.
|
||||
|
||||
<img src="../assets/zerotire/download_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Install the *ZeroTire One* app.
|
||||
|
||||
### Network connection
|
||||
|
||||
1. Run ZeroTire One app.
|
||||
|
||||
2. Click on *+* to add a new connection.
|
||||
|
||||
<img src="../assets/zerotire/ios_1.png" width=300 class="zoom border center">
|
||||
|
||||
3. Confirm the privacy policy.
|
||||
|
||||
<img src="../assets/zerotire/ios_2.png" width=300 class="zoom border center">
|
||||
|
||||
4. Enter your network ID and click *Add Network*.
|
||||
|
||||
<img src="../assets/zerotire/ios_3.png" width=300 class="zoom border center">
|
||||
|
||||
5. Confirm adding the new VPN configuration.
|
||||
|
||||
6. Connect to the VPN network by sliding the network activation slider.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/ios_4.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/ios_5.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
## Setup on Linux (PC, Raspberry Pi)
|
||||
|
||||
### Installing the app
|
||||
|
||||
1. Open the console by pressing the keyboard shortcut *ctrl + alt + t* or type *terminal* in the program search bar.
|
||||
|
||||
2. Enter the Zero Tare installation command.
|
||||
|
||||
```bash
|
||||
curl -s https://install.zerotier.com | sudo bash
|
||||
```
|
||||
|
||||
### Network connection
|
||||
|
||||
1. Open the console.
|
||||
|
||||
2. Enter the command `sudo zerotire-cli join network-id`, where `network-id` is your network ID.
|
||||
|
||||
<img src="../assets/zerotire/linux_1.png" width=300 class="zoom border center">
|
||||
|
||||
3. If the connection is successful, the corresponding message will be displayed in the console.
|
||||
|
||||
## Installing and configuring on macOS
|
||||
|
||||
### Installing the app
|
||||
|
||||
1. Go to the ZeroTire website.
|
||||
|
||||
<img src="../assets/zerotire/download_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Click on the macOS icon.
|
||||
|
||||
<img src="../assets/zerotire/download_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Download and run `ZeroTire One.pkg` file.
|
||||
|
||||
4. Install the ZeroTire One app.
|
||||
|
||||
### Network connection
|
||||
|
||||
1. Run ZeroTire One app.
|
||||
|
||||
2. Click on the ZeroTire One icon in the taskbar .
|
||||
|
||||
3. In the window that appears, click on *Join Network...*.
|
||||
|
||||
<img src="../assets/zerotire/macos_1.png" width=300 class="zoom border center">
|
||||
|
||||
4. In the *Enter Network ID* field, enter your network ID.
|
||||
|
||||
<img src="../assets/zerotire/macos_2.png" width=300 class="zoom border center">
|
||||
|
||||
## Connecting to the copter
|
||||
|
||||
1. Make sure that ZeroTire is working and connected to the network on the drone and control device. To do this, make sure that these have an *Online* status.
|
||||
|
||||
<img src="../assets/zerotire/qgc_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Make sure that all devices have local IP addresses - *Managed IPs*.
|
||||
|
||||
3. Open GQC and in the *Comm Links* tab add a TCP connection specifying the IP of the drone. Read more about remote connection [here](gcs_bridge.md).
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/qgc_2.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/qgc_3.png" width=300 class="zoom border">
|
||||
</div>
|
||||
@@ -55,7 +55,6 @@
|
||||
* [Дополнительные материалы](supplementary.md)
|
||||
* [COEX Pix](coex_pix.md)
|
||||
* [COEX PDB](coex_pdb.md)
|
||||
* [COEX GPS](coex_gps.md)
|
||||
* [Гид по автономному полету](auto_setup.md)
|
||||
* [Имя хоста](hostname.md)
|
||||
* [Симулятор](sitl.md)
|
||||
|
||||
147
docs/ru/agriculture.md
Normal file
@@ -0,0 +1,147 @@
|
||||
# Распознавание видов агрокультур в массовом сельском производстве
|
||||
|
||||
## Введение
|
||||
|
||||
Современное сельское хозяйство во многих странах превращается в один из ярких примеров быстрого и успешного внедрения новых технологий. Беспилотные летательные аппараты способны выполнять широкий круг задач, среди которых мониторинг сельскохозяйственных угодий сегодня стал уже почти привычным инструментом повышения эффективности сельских хозяйств. Целью моего проекта является написание кода для распознавания видов агрокультур в массовом сельском производстве. В дальнейшем из результатов распознавания можно спроектировать карту посевных площадей.
|
||||
|
||||
## Мониторинг
|
||||
|
||||
В сельском хозяйстве мониторинг необходим для получения информации о состоянии угодий и посевов. Фермеры или специалисты могут по результатам мониторинга понять, нормально ли всходят культуры, есть ли угроза со стороны сорняков и/или насекомых – вредителей, какова степень увлажненности отдельных участков или целых площадей и т.д.
|
||||
|
||||
## Объяснение кода
|
||||
|
||||
Подключаем библиотеки:
|
||||
|
||||
```python
|
||||
import rospy
|
||||
import cv2
|
||||
from sensor_msgs.msg import Image
|
||||
from cv_bridge import CvBridge
|
||||
import numpy as np
|
||||
```
|
||||
|
||||
Создаём некоторые переменные:
|
||||
|
||||
```python
|
||||
rospy.init_node('computer_vision_sample')
|
||||
|
||||
bridge = CvBridge()
|
||||
|
||||
color = 'undefined'
|
||||
shape = 'undefined'
|
||||
culture = ""
|
||||
```
|
||||
|
||||
Для реализации алгоритмов компьютерного зрения рекомендуется использовать предустановленную на образ Клевера библиотеку OpenCV.
|
||||
Создаём подписчика на топик с изображением с основной камеры для обработки с использованием OpenCV:
|
||||
|
||||
```python
|
||||
def image_colback_color(data):
|
||||
global color, shape
|
||||
|
||||
cv_image = bridge.imgmsg_to_cv2(data, 'bgr8') # OpenCV image
|
||||
img_hsv = cv2.cvtColor(cv_image, cv2.COLOR_BGR2HSV) #[118:119,158:159]
|
||||
|
||||
#detected color
|
||||
#print(img_hsv[0][0])
|
||||
```
|
||||
|
||||
Каждая культура имеет свой неповторимый оттенок(пшеница- золотистая, гречиха - светло-коричневая).
|
||||
|
||||
<img src="../assets/field.jpg" width="75%">
|
||||
<img src="../assets/field2.jpg" width="75%">
|
||||
|
||||
Прописываем диапазоны цветов для определённых культур:
|
||||
|
||||
```python
|
||||
#пшеница
|
||||
yellow_orange_low = (38, 110, 150)
|
||||
yellow_orange_high= (52, 110, 150)
|
||||
|
||||
#гречиха
|
||||
brown_low = (23, 50, 50)
|
||||
brown_high= (37, 50, 50)
|
||||
|
||||
yellow_orange_mask = cv2.inRange(img_hsv, yellow_orange_low, yellow_orange_high)
|
||||
brown_mask = cv2.inRange(img_hsv, brown_low, brown_high)
|
||||
|
||||
if yellow_orange_mask[119][159] == 255:
|
||||
shape = shape_recog(yellow_orange_mask)
|
||||
|
||||
elif brown_mask[119][159] == 255:
|
||||
shape = shape_recog(brown_mask)
|
||||
|
||||
else:
|
||||
shape = 'undefined'
|
||||
color = 'undefined'
|
||||
|
||||
if shape = 'brown':
|
||||
culture = "greshiha"
|
||||
if shape = 'yellow_orange':
|
||||
culture = "pshenitsa"
|
||||
|
||||
image_sub = rospy.Subscriber('main_camera/image_raw', Image, image_colback_color)
|
||||
```
|
||||
|
||||
Скрипт будет занимать 100% процессора. Для искусственного замедления работы скрипта можно запустить throttling кадров с камеры, например, в 5 Гц (`main_camera.launch`):
|
||||
|
||||
```xml
|
||||
<node pkg="topic_tools" name="cam_throttle" type="throttle" args="messages main_camera/image_raw 5.0 main_camera/image_raw_throttled"/>
|
||||
```
|
||||
|
||||
Топик для подписчика в этом случае необходимо поменять на: `main_camera/image_raw_throttled`.
|
||||
|
||||
```python
|
||||
print (culture)
|
||||
while not rospy.is_shutdown():
|
||||
print("color: {}".format(color))
|
||||
print("shape: {}".format(shape))
|
||||
rospy.sleep(0.2)
|
||||
```
|
||||
|
||||
Данная программа будет определять культуру по её оттенку. Для повышения точности определения можно использовать больше цветовых диапазонов и дрон сможет распознавать большее колличество культур.
|
||||
|
||||
Вот примеры цветовых диапазонов:
|
||||
|
||||
```python
|
||||
red_low1 = (0, 110, 150)
|
||||
red_high1 = (7, 255, 255)
|
||||
|
||||
red_low2 = (172, 110, 150)
|
||||
red_high2 = (180, 255, 255)
|
||||
|
||||
red_orange_low = (8, 110, 150)
|
||||
red_orange_high = (22, 110, 150)
|
||||
|
||||
orange_low = (23, 110, 150)
|
||||
orange_high = (37, 110, 150)
|
||||
|
||||
yellow_orange_low = (38, 110, 150)
|
||||
yellow_orange_high = (52, 110, 150)
|
||||
|
||||
yellow_low = (53, 150, 150)
|
||||
yellow_high = (67, 255, 255)
|
||||
|
||||
yellow_green_low = (68, 150, 150)
|
||||
yellow_green_high = (82, 255, 255)
|
||||
|
||||
green_low = (83, 150, 150)
|
||||
green_high = (97, 255, 255)
|
||||
|
||||
blue_green_low = (98, 150, 150)
|
||||
blue_green_high = (113, 255, 255)
|
||||
|
||||
blue_low = (114, 150, 150)
|
||||
blue_high = (127, 255, 255)
|
||||
|
||||
blue_violet_low = (128, 150, 150)
|
||||
blue_violet_high = (142, 255, 255)
|
||||
|
||||
violet_low = (143, 150, 150)
|
||||
violet_high = (157, 255, 255)
|
||||
|
||||
red_violet_low = (158, 150, 150)
|
||||
red_violet_hugh = (171, 255, 255)
|
||||
```
|
||||
|
||||
Обратите внимание, что для красного цвета используется два диапазона т. к. красный цвет находится на границах цветового пространства HSV.
|
||||
@@ -1,11 +0,0 @@
|
||||
# COEX GPS
|
||||
|
||||
## Схемы расположения контактов
|
||||
|
||||
### Вид сверху
|
||||
|
||||
<img src="../assets/coex_gps/coex-gps-top.png" width=400 class=zoom>
|
||||
|
||||
### Вид снизу
|
||||
|
||||
<img src="../assets/coex_gps/coex-gps-bottom.png" width=400 class=zoom>
|
||||
185
docs/ru/zerotire_vpn.md
Normal file
@@ -0,0 +1,185 @@
|
||||
# Создание виртуальной сети ZeroTire и подключение к ней
|
||||
|
||||
## Создание и настройка сети ZeroTire
|
||||
|
||||
1. Зайдите на сайт [ZeroTire](https://www.zerotier.com/).
|
||||
|
||||
<img src="../assets/zerotire/login_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Зарегистрируйтесь в ZeroTire.
|
||||
|
||||
<img src="../assets/zerotire/login_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Зайдите в свой аккаунт.
|
||||
|
||||
4. Нажмите кнопку *Create A Network*.
|
||||
|
||||
<img src="../assets/zerotire/network_1.png" width=300 class="zoom border center">
|
||||
|
||||
5. После этого вы увидите созданную вами сеть, ее ID и название. Для настройки сети нажмите на нее.
|
||||
|
||||
<img src="../assets/zerotire/network_2.png" width=300 class="zoom border center">
|
||||
|
||||
6. В открывшемся окне можно изменить имя сети и приватность подключения.
|
||||
|
||||
<img src="../assets/zerotire/network_3.png" width=300 class="zoom border center">
|
||||
|
||||
7. Пролистайте ниже, до графы *Members*. В ней будет написано о том, что в сети нету пользователей.
|
||||
|
||||
<img src="../assets/zerotire/network_4.png" width=300 class="zoom border center">
|
||||
|
||||
8. Устройства подключенные к сети будут отображаться в данной графе, для того, чтобы позволить им подключиться к сети, активируйте чекбокс *Auth?*. При этом, подключенному устройству автоматически выдастся внутренний IP адрес, в дальнейшем он будет использоваться для связи с данным устройством.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/network_5.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/network_6.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
> **Hint** Указывайте имена для новых устройств, этом поможет вам в дальнейшем отличать их друг от друга.
|
||||
|
||||
9. Повторите последний шаг для всех подключаемых устройств.
|
||||
|
||||
> **Info** Сеть ZeroTire в случае бесплатного использования поддерживает до 50 пользователей одновременно.
|
||||
|
||||
## Настройка на Windows
|
||||
|
||||
### Установка приложения
|
||||
|
||||
1. Перейдите на сайт ZeroTire.
|
||||
|
||||
<img src="../assets/zerotire/download_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Нажмите на иконку Windows.
|
||||
|
||||
<img src="../assets/zerotire/download_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Скачайте и запустите файл `ZeroTire One.msi`.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/windows_1.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/windows_2.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
### Подключение к сети
|
||||
|
||||
1. Запустите ZeroTire One.
|
||||
|
||||
2. Нажмите на иконку ZeroTire One в панели задач.
|
||||
|
||||
3. Нажмите на кнопку *Join Network...* для подключения к сети.
|
||||
|
||||
<img src="../assets/zerotire/windows_3.png" width=300 class="zoom border center">
|
||||
|
||||
4. В появившемся окне введите ID вашей сети и нажмите кнопку *Join*.
|
||||
|
||||
<img src="../assets/zerotire/windows_4.png" width=300 class="zoom border center">
|
||||
|
||||
5. Разрешите использование новой сети.
|
||||
|
||||
<img src="../assets/zerotire/windows_5.png" width=300 class="zoom border center">
|
||||
|
||||
## Настройка на iOS
|
||||
|
||||
### Установка приложения
|
||||
|
||||
1. Перейдите на сайт ZeroTire.
|
||||
|
||||
<img src="../assets/zerotire/download_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Нажмите на иконку iOS.
|
||||
|
||||
<img src="../assets/zerotire/download_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Установите приложение *ZeroTire One*.
|
||||
|
||||
### Подключение к сети
|
||||
|
||||
1. Запустите приложение *ZeroTire One*.
|
||||
|
||||
2. Нажмите на *+* для добавления нового подключения.
|
||||
|
||||
<img src="../assets/zerotire/ios_1.png" width=300 class="zoom border center">
|
||||
|
||||
3. Подтвердите политику конфиденциальности.
|
||||
|
||||
<img src="../assets/zerotire/ios_2.png" width=300 class="zoom border center">
|
||||
|
||||
4. Введите ID вашей сети и нажмите кнопку *Add Network*.
|
||||
|
||||
<img src="../assets/zerotire/ios_3.png" width=300 class="zoom border center">
|
||||
|
||||
5. Подтвердите добавление новой конфигурации VPN.
|
||||
|
||||
6. Подключитесь к VPN сети, сдвинув ползунок активации сети.
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/ios_4.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/ios_5.png" width=300 class="zoom border">
|
||||
</div>
|
||||
|
||||
## Настройка на Linux (PC, Raspberry Pi)
|
||||
|
||||
### Установка приложения
|
||||
|
||||
1. Откройте консоль, для этого нажмите сочетание клавиш *Ctrl* + *Alt* + *T* или в строке поиска программ введите *Terminal*
|
||||
|
||||
2. Введите команду установки ZeroTire.
|
||||
|
||||
```bash
|
||||
curl -s https://install.zerotier.com | sudo bash
|
||||
```
|
||||
|
||||
### Подключение к сети
|
||||
|
||||
1. Откройте консоль.
|
||||
|
||||
2. Введите команду `sudo zerotire-cli join network-id`, где `netwirk-id` это ID вашей сети.
|
||||
|
||||
<img src="../assets/zerotire/linux_1.png" width=300 class="zoom border center">
|
||||
|
||||
3. При успешном подключении, в консоль будет выведено соответствующее сообщение.
|
||||
|
||||
## Установка и настройка на macOS
|
||||
|
||||
### Установка приложения
|
||||
|
||||
1. Перейдите на сайт ZeroTire.
|
||||
|
||||
<img src="../assets/zerotire/download_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Нажмите на иконку macOS.
|
||||
|
||||
<img src="../assets/zerotire/download_2.png" width=300 class="zoom border center">
|
||||
|
||||
3. Скачайте и запустите файл `ZeroTire One.pkg`.
|
||||
|
||||
4. Установите приложение ZeroTire One.
|
||||
|
||||
### Подключение к сети
|
||||
|
||||
1. Запустите приложение ZeroTire One.
|
||||
|
||||
2. В панеле задач нажмите на иконку ZeroTire One.
|
||||
|
||||
3. В открывшемся окне нажмите *Join Network...*.
|
||||
|
||||
<img src="../assets/zerotire/macos_1.png" width=300 class="zoom border center">
|
||||
|
||||
4. В поле *Enter Network ID* введите ID вашей сети.
|
||||
|
||||
<img src="../assets/zerotire/macos_2.png" width=300 class="zoom border center">
|
||||
|
||||
## Подключение к коптеру
|
||||
|
||||
1. Убедитесь, что ZeroTire работает и имеет соединение с сетью на дроне и управляющем устройстве. Для этого убедитесь, что интересующие вас устройства имеют статус *Online*.
|
||||
|
||||
<img src="../assets/zerotire/qgc_1.png" width=300 class="zoom border center">
|
||||
|
||||
2. Убедитесь, что у всех устройств есть локальные IP адреса - *Managed IPs*.
|
||||
|
||||
3. Откройте GQC и во вкладке *Comm Links* добавьте TCP подключение, указав IP дрона. Подробнее про удаленное подключение читайте [тут](gcs_bridge.md).
|
||||
|
||||
<div class="image-group">
|
||||
<img src="../assets/zerotire/qgc_2.png" width=300 class="zoom border">
|
||||
<img src="../assets/zerotire/qgc_3.png" width=300 class="zoom border">
|
||||
</div>
|
||||