Инженерный тур. 1 этап
Необходимо подобрать аккумулятор для квадрокоптера, на котором установлены моторы IFlight Xing (рис. 1.1) с пятью дюймовыми пропеллерами, шаг винта которых 4,3\(^{\prime\prime}\) (дюйма).
Время полета данного коптера должно быть не менее 57 с при полном газе.
Выберите правильный вариант ответа, для расчета используете ток нагрузки:
- 4s 850 mAh 80c,
- 4s 2200 mAh 75с,
- 4s 2600 mAh 45c,
- 4s 2300 mAh 80c,
- 6s 2400 mAh 120c,
- 6s 850 mAh 120c.
Согласно таблице на рис. 1.1 максимальный ток нагрузки на один мотор с пропеллером 5043 (размер 5\(^{\prime\prime}\), шаг винта 4,3\(^{\prime\prime}\)) составляет: 35,48 А.
Для квадрокоптера (четыре мотора): \(35{,}48 \cdot 4=141{,}92 ~\text{А}\).
Максимальный разрядный ток:
- для аккумулятора № 1: \(0{,}85\cdot 80=68~\text{А}\),
- для аккумулятора № 2: 165А,
- для аккумулятора № 3: 117А,
- для аккумулятора № 4: 184А,
- для аккумулятора № 5: 288А,
- для аккумулятора № 6: 102А.
Вариант № 5 не является верным, так как данные моторы не предназначены для использования с 6S аккумулятором.
Время полета с аккумулятором № 2 равно \((2{,}2/141{,}92)\cdot 60\cdot 60=55{,}81\) с.
Время полета с аккумулятором № 4 равно \((2{,}3/141{,}92)\cdot 60\cdot 60=58{,}34\) с.
4.
При сборке коптера стажер подключил сигнальные провода регуляторов оборотов двигателей в пины полетного контроллера COEX PIX по следующей схеме:
- М1 — пины A,
- М2 — пины B,
- М4 — пины C,
- М3 — пины D.
Посмотрите внимательно на рис. 1.2 и отметьте, какие сигнальные провода регуляторов оборотов двигателей НЕВЕРНО подключены в пины полетного контроллера COEX PIX.
Отметьте неверные позиции:
- M1,
- M2,
- M3,
- M4.
Подключение сигнальных проводов регуляторов оборотов двигателей происходит по следующей схеме:
- M1 — пины F,
- M2 — пины E,
- M3 — пины D,
- M4 — пины C.
M1, M2.
На рис. 1.3 изображена распиновка полетного контроллера Pixracer.
Укажите вариант ответа, в котором обозначен разъем для подключения радиоприемника к полетному контроллеру.
Подключение радиоприемника к полетному контроллеру осуществляется в разъем RC IN.
5.
Во время дистанционной работы напарник-стажер сообщил о том, что справился со сборкой и настройкой квадрокоптера и готов к первому полету.
Не допустил ли он ошибку при сборке?
Проверим готовность по фотографии (рис. 1.4).
К полету готов? Отметьте верный вариант.
- Потеряна связь с радиоприемником.
- Тримы газа и крена сбиты в крайнее правое и верхнее положение соответственно.
- Тримы тангажа и рыскания сбиты в крайнее верхнее и правое положение соответственно.
- Тримы тангажа и рыскания сбиты в крайнее верхнее и левое положение соответственно.
- Разрядился источник питания пульта радиоуправления.
- Низкий уровень заряда аккумулятора квадрокоптера.
Для решения задачи необходимо внимательно рассмотреть рис. 1.4. На рисунке можно заметить — что тримы радиоуправления сбиты. Трим рыскания в крайнем правом положении, а трим тангажа — в крайнем верхнем.
3.
Необходимо собрать беспилотник мультироторного типа из деталей, имеющихся на складе (таблица 1).
Существует список компонентов, имеющихся на складе. Используя эти компоненты, необходимо создать особый квадрокоптер для мониторинга линий электропередач, имеющий минимально возможную массу.
Также необходимо иметь возможность установки камеры весом 154 г. Время полета на одном аккумуляторе должно быть максимально возможным.
Временем полета считается зависание беспилотника на месте с полезной нагрузкой. Вес беспилотника принять за вес компонентов в его составе. Учитывать необходимо только компоненты, находящиеся в таблице. Вес рамы не учитывать.
| Двигатель | ESC |
LiPo |
Frame |
|
|---|---|---|---|---|
| A | XING2 1806 FPV Motor 2500kv Количество: 6 шт. |
T-motor CINE55A 8S 8IN1 32BIT Количество: 2 шт. |
Betafpv BT2.0 300mAh 1S 30C Battery Количество: 50 шт. |
![]() |
| B | Betafpv 7x16mm Brushed Motors Количество: 7 шт. |
T-motor MINI F45A 6S 4IN1 Количество: 2 шт. |
Samsung 30Q 18650 3000mah LiIon Количество: 3 шт. |
![]() |
| C | T-motor U15II KV80 Количество: 14 шт. |
T-motor AT 115A 14S Количество: 24 шт. |
GNB 5000mah 11.1 50C Количество: 5 шт. |
![]() |
| D | T-motor P1604 2850 KV Количество: 3 шт. |
BLITZ F411 1S Whoop AIO Количество: 2 шт. |
GNB 3500 mAh 6S 70C Lipo Количество: 9 шт. |
![]() |
В качестве ответа следует выписать буквы, под которыми расположены необходимые компоненты.
Пример ответа: ECAB.
ABDC.
Одной из ключевых задач при создании робототехнической системы является обеспечение точного и своевременного получения данных от различных сенсоров, которые помогают роботу ориентироваться в окружающей среде, избегать препятствий и принимать решения на основе собранной информации.
Импровизированный робот оснащен несколькими датчиками, результаты работы которых можно считать из файлов в директории ./sensors/. Каждый файл в этой директории имеет имя <sensor_name>.value.
Необходимо разработать модуль, который будет считывать данные с датчиков, выполнять минимальную их проверку и передавать основному контроллеру для дальнейшей обработки.
Проверять необходимо формат данных — они должны быть числом (целым или вещественным) и не выходить за пределы \(-1000 \leqslant value \leqslant 1000\). Основной контроллер принимает данные по протоколу HTTP, в формате json.
Формат входных данных
Набор файлов в директории ./sensors/. Каждый файл в этой директории имеет имя <sensor_name>.value, где sensor_name — имя датчика.
Каждый файл содержит единственную строку с показанием датчика.

Файл light_sensor.value:
\(106.346\)
Файл smoke_sensor.value:
\(-74.937\)
Файл carbon_monoxide_sensor.value:
\(-183.213\)
Файл flow_sensor.value:
\(-1538.902\)
Файл tilt_sensor.value:
\(94.346\)
Формат выходных данных
Для каждого датчика необходимо сделать HTTP POST-запрос на сервер.
Расположение сервера:
Host: 127.0.0.1
Port: 8000
Формат POST-запроса:
URL: /sensor/<sensor_name>, где sensor_name — имя датчика;
Headers: обязательно 'Content-Type': 'application/json'
Body:
- в случае успешно пройденной проверки данных {
"status":"ok","value": <sensor_value>}, гдеsensor_value— значение датчика; - в случае НЕ успешно пройденной проверки данных {
"status":"error","message": "invalid fomat"}.
Порядок запросов может быть любым.
POST http://127.0.0.1:8000/sensor/smoke_sensor
Accept-Encoding: gzip, deflate
User-Agent: python-requests/2.11.1
Accept: /
Connection: keep-alive
Content-Length: 34
Content-Type: application/json
{"status": "ok", "value": -74.937}
POST http://127.0.0.1:8000/sensor/light_sensor
Accept-Encoding: gzip, deflate
User-Agent: python-requests/2.11.1
Accept: /
Connection: keep-alive
Content-Length: 34
Content-Type: application/json
{"status": "ok", "value": 106.346}
POST http://127.0.0.1:8000/sensor/tilt_sensor
Accept-Encoding: gzip, deflate
Connection: keep-alive
User-Agent: python-requests/2.11.1
Accept: /
Content-Length: 33
Content-Type: application/json
{"status": "ok", "value": 94.346}
POST http://127.0.0.1:8000/sensor/carbon_monoxide_sensor
Accept-Encoding: gzip, deflate
Connection: keep-alive
User-Agent: python-requests/2.11.1
Accept: /
Content-Length: 35
Content-Type: application/json
{"status": "ok", "value": -183.213}
POST http://127.0.0.1:8000/sensor/flow_sensor
Accept-Encoding: gzip, deflate
Accept: /
Connection: keep-alive
User-Agent: python-requests/2.11.1
Content-Length: 48
Content-Type: application/json
{"status": "error", "message": "invalid format"}
Ниже представлено решение на языке Python.
from pathlib import Path
import requests
p = Path('sensors')
for file in p.glob('*.value'):
with file.open() as f:
value = f.readline()
try:
value = float(value)
except ValueError:
requests.post(f"http://localhost:5000/sensor/{file.stem}", json={"status": "error", "message": "invalid format"})
continue
requests.post(f"http://localhost:5000/sensor/{file.stem}", json={"status": "ok", "value": value})
В современном мире компьютерного зрения алгоритмы детектирования объектов играют важную роль в различных приложениях: от безопасности до автономного вождения. Одной из наиболее популярных и мощных моделей для детектирования объектов является YOLO (You Only Look Once). Эта модель может быстро и точно определять объекты на изображениях и видеопотоках, классифицируя их по заранее изученным классам.
Благодаря библиотеке Ultralytics, работа с моделями YOLO стала значительно проще и интуитивнее. Эта библиотека предоставляет удобный и мощный интерфейс для загрузки, использования и анализа моделей YOLO, что позволяет быстро и эффективно интегрировать их в различные приложения.
Необходимо извлечь из предоставленного .pt файла YOLO модели, обученной с использованием вышеуказанной библиотеки, список всех классов, которые модель может детектировать. Этот список классов будет использоваться для настройки интерфейса пользователя, отображения результатов детектирования и других задач, связанных с классификацией объектов.
Модель: https://disk.yandex.ru/d/wKOcOdHPgGrccA.
Формат входных данных
Список классов, который модель может детектировать в алфавитном порядке через пробел.
Пример: human cat dog.
Ниже представлено решение на языке Python.
from ultralytics import YOLO
model = YOLO("model.pt")
print(",".join(sorted(model.names.values())))









