ФАЙЛ "MAIN.PY"

Файл "Main.py" является основным файлом для дальнейшего управления всеми файлами.

Задачи файла "MAIN.PY"

1. Установка соединения с различными сервисами (RTSP, YOLO, ArUco и т.д.).

2. Загрузка и обработка данных (карты ArUco и видеопотока).

3. Обнаружение маркеров и объектов на видеоизображении.

4. Управление состоянием ровера (перемещение к маркерам, управление светом и т.д.).

5. Корректное завершение работы (закрытие соединений и остановка потоков).

ИНИЦИАЛИЗАЦИЯ БИБЛИОТЕК

import asyncio
import contextlib
import socket
import threading
import aiofiles
import logging
from contextlib import suppress
from Server_Controller import Attachments, Site_run
from queue import SimpleQueue
from Contact_state import ContactState
import plotly.graph_objs as go
from Contact_controller import SimulationController, RoverController
from video_processing import Connect_aruco, Connect_yolo

- asyncio: Модуль для асинхронного программирования.

- contextlib: Модуль для управления контекстными менеджерами.

- socket: Модуль для сетевого взаимодействия.

- threading: Модуль для работы с потоками.

- aiofiles: Библиотека для асинхронной работы с файлами.

- logging: Модуль для ведения логов.

- Server_Controller: Импортирует классы Attachments и Site_run для управления внешними устройствами и веб-сервером.

- queue.SimpleQueue: Простая очередь для межпоточной коммуникации.

- Contact_state: Импортирует класс ContactState для представления состояния ровера.

- plotly.graph_objs: Библиотека для создания интерактивных графиков и визуализаций.

- Contact_controller: Импортирует классы SimulationController и RoverController для управления ровером.

- video_processing: Импортирует классы Connect_aruco и Connect_yolo для обработки видео.

КОНФИГУРАЦИЯ ПОДКЛЮЧЕНИЯ

Этот блок кода задает настройки подключения, такие как IP-адреса, порты и токен аутентификации. Обратите внимание! Ваши данные могут отличаться от данных в примере, пропишите правильные данные.

СОЗДАНИЕ СОБЫТИЙ И ОЧЕРЕДЕЙ

Здесь создаются объекты для событий, очередей и начальное состояние ровера. Эти объекты помогают координировать работу различных частей программы.

ФУНКЦИЯ ЗАГРУЗКИ КАРТЫ ARUCO

Эта асинхронная функция загружает карту маркеров ArUco из файла. Она считывает файл построчно и извлекает идентификаторы маркеров и их координаты.

ОСНОВНАЯ ФУНКЦИЯ

Эта функция координирует работу всех компонентов системы, включая загрузку карты ArUco, управление состоянием ровера, обработку видео, обнаружение маркеров и объектов, а также управление ровером или симулятором. Функция включает опциональное использование симулятора и управления светом на ровере.

ЗАПУСК ПРОГРАММЫ

Этот блок кода запускает основную функцию main и обеспечивает корректное завершение работы программы, включая остановку потоков и закрытие событий.

Процесс подготовки кода:

  1. Создайте файл с названием main.py

Файл "main.py" в иерархии
  1. Поэтапно копируйте код в свой файл

Окно программирования файла main.py. Часть 1
Окно программирования файла main.py. Часть 2
Окно программирования файла main.py. Часть 3
Окно программирования файла main.py. Часть 4
Окно программирования файла main.py. Часть 5
  1. Установите необходимые библиотеки: в данном случае не предустановлены библиотеки: aiofiles и plotly. В случае, если они у вас не установлены, выполните следующие действия:

    1. Откройте терминал VS Code (Terminal -> New Termial или комбинацией Ctrl + Shift + `)

    2. В терминале поочередно введите и запустите следующие команды: pip install aiofiles; pip install plotly

    Так же в инициализации библиотек имеются такие библиотеки, как: Server_controller, Contact_state, Contact_controller и video_processing. Это не библиотеки файлов, это файлы, которые вызываются в main. Для того, чтобы код работал корректно, в окне иерархии должны быть эти файлы.

Последнее обновление