diff --git a/docs/assets/race_timing_sys_copterhack/diagram.jpg b/docs/assets/race_timing_sys_copterhack/diagram.jpg new file mode 100644 index 00000000..d5c1d27e Binary files /dev/null and b/docs/assets/race_timing_sys_copterhack/diagram.jpg differ diff --git a/docs/assets/race_timing_sys_copterhack/set_noise.jpg b/docs/assets/race_timing_sys_copterhack/set_noise.jpg new file mode 100644 index 00000000..d2d45768 Binary files /dev/null and b/docs/assets/race_timing_sys_copterhack/set_noise.jpg differ diff --git a/docs/assets/race_timing_sys_copterhack/system_work.png b/docs/assets/race_timing_sys_copterhack/system_work.png new file mode 100644 index 00000000..c98d3315 Binary files /dev/null and b/docs/assets/race_timing_sys_copterhack/system_work.png differ diff --git a/docs/en/copterhack2021.md b/docs/en/copterhack2021.md index 06d2af28..0bc9227c 100644 --- a/docs/en/copterhack2021.md +++ b/docs/en/copterhack2021.md @@ -15,3 +15,4 @@ All information about the event can be found on the official website: https://co |Drones to fight Corona|[Drones to fight Corona](anticorona_drones.md)| |Zaural Viking|[Программируемый летающий автомобиль](../ru/zaural_viking.html)| |Quadrotor|[Дрон-Агроном](../ru/drone-agronom.html)| +|Atomic Ferrets|[Система засечки для дронов](../ru/race_timing_sys_copterhack.html)| diff --git a/docs/ru/SUMMARY.md b/docs/ru/SUMMARY.md index bd22292d..391ba7f9 100644 --- a/docs/ru/SUMMARY.md +++ b/docs/ru/SUMMARY.md @@ -113,6 +113,7 @@ * [Генератор ArUco карт](arucogenmap.md) * [Модель аэротакси в городе](bigchallenges.md) * [Шаровая защита коптера](shield.md) + * [Система засечки для дронов](race_timing_sys_copterhack.md) * [Дрон для 3D-сканирования человека](3dscan.md) * [Распознавание лиц](face_recognition.md) * [Управление дроном силой мысли](control_emotions.md) diff --git a/docs/ru/copterhack2021.md b/docs/ru/copterhack2021.md index 5cb92f72..9d8e1b41 100644 --- a/docs/ru/copterhack2021.md +++ b/docs/ru/copterhack2021.md @@ -11,6 +11,7 @@ CopterHack 2021 – это командный конкурс по разраб |D-drone|[Граффити-коптер](ddrone.md)| |Зауральский Викинг|[Программируемый летающий автомобиль](zaural_viking.md)| |Quadrotor|[Дрон-Агроном](drone-agronom.md)| +|Atomic Ferrets|[Система засечки для дронов](race_timing_sys_copterhack.md)| |ADDI|[3D-printed generative design frame](../en/generative_design_frame.html)| |Bennie and the Jetson TX2|[Retail Drone](../en/bennie.html)| |DroMap|[The Indoor Mapping Drone](../en/dromap.html)| diff --git a/docs/ru/race_timing_sys_copterhack.md b/docs/ru/race_timing_sys_copterhack.md new file mode 100644 index 00000000..e8dcf1db --- /dev/null +++ b/docs/ru/race_timing_sys_copterhack.md @@ -0,0 +1,94 @@ +# Система засечки (хронометража) для дронов + +[CopterHack-2021](copterhack2021.md), команда **Atomic Ferrets**. + +Наша команда состоит из двух человек - Стецкий Сергей и Давлетшин Денис. + +По всем вопросам обращаться на почту (bashirianboy@gmail.com) или [Телеграм](https://t.me/DenisNoLimit). + +## Идея + +На сегодняшний день существует множество засечек для дронов, но тех, которые производят в России, мало, а таких, которые бы имели приемлемую цену, еще меньше. Поэтому было решено сделать собственную систему засечки, которая давала бы весь нужный функционал, и производство которого было бы не столь затратным. + +Ознакомиться с кодом проекта вы можно через репозиторий: https://github.com/stinger000/CopterHack2020_IR_LED. + +## Принцип работы + +Прелесть нашей системы в том, что ее концепция проста - использование чувствительного фотодатчика - фотодиода, и светодиода. Фотодатчик и ИК светодиод крепятся на ворота друг напротив друга, и светодиод все время направлен на датчик. Когда дрон пролетает через ворота, он на какое-то время перекрывает собой светодиод, и показания на датчике тут же меняются. На этом и основан принцип работы. Остается только подключить датчик к схеме, способной считывать световой поток, падающий на него, и затем отправлять сигнал о детектировании пролета на компьютер. Для наших целей мы использовали Arduino. + +Для Arduino написан код, который обрабатывает постоянно поступающие на него сигналы с фотодиода. Затем используется имитация фильтра низких частот, сглаживающий шумы, которые по сравнению с реальным сигналами более низкочастотные. Фильтрация шумов помогает в том случае, когда датчик и светодиод разнесены далеко друг от друга, и световой поток в этом случае может смешаться с шумом. + +На рисунке ниже изображена типичная временная диаграмма сигнала. "Ямы" образуются во время пролета через засечку. Синим цветом показан "сырой" сигнал, а красным - обработанный с помощью low-pass фильтра. Подбором параметров фильтра можно добиться того, чтобы принципиальный вид сигнала не менялся, а шумы сглаживались. + +![diagram example](../assets/race_timing_sys_copterhack/diagram.jpg) + +Алгоритм работает так, что пролет засчитывается поле того, как будет обнаружен спад и последующий подъем сигнала, а также амплитуда сигнала должна больше некоторого выставленного вручную минимума (зависит от шумов собранной системы). + +Затем по Serial-порту Arduino отправляет специальный символ, который обозначает обнаружение пролета. + +Компьютер, к которому подключена засечка, может считывать этот сигнал, и затем выводить на любой интерфейс. + +## Результат работы + +Вы можете посмотреть короткую видеопрезентацию: + + + +## Использование + +Данный проект можно использовать для любых квадрокоптеров достаточно больших размеров. Условие, которое необходимо выполнить, это то, чтобы дрон при пролете перекрывал собой светодиод. То есть дрон должен попадать в довольно узкий диапазон. Это наглядно проиллюстрировано на рисунке ниже: + +![system work](../assets/race_timing_sys_copterhack/system_work.png) + +Для начала работы скачайте репозиторий с кодом обработки пролетов и репозиторий с пользовательским интерфейсом: + +```bash +git clone https://github.com/stinger000/CopterHack2020_IR_LED +git clone https://github.com/stinger000/CopterHack2020_IR_LED_Desktop_GUI +``` + +Зайдите в папку Signal_handler репозитория `CopterHack2020_IR_LED` и откройте в Arduino IDE файл `AnalogReadSerial_filtered_v2.ino`. + +Надо раскомментировать строки: + +```cpp +//debug in plotter +//Serial.print(sensorValue); // uncomment this 4 rows +//Serial.print(" "); +//Serial.println(value); +//... +``` + +и закомментировать строку вывода символа в Serial-порт: + +```cpp +// ... +if ( rising_edge & falling_edge ) +{ + // ... + // Send time by serial port to GUI + Serial.println(millis()); //comment this line + //... +} +``` + +Перепрошейте ваше Arduino этим файлом. Затем проверьте сигнал в плоттере. + +![set noise](../assets/race_timing_sys_copterhack/set_noise.jpg) + +По нему задать величину шума, получившуюся для вашей системы: за это отвечает переменная `noise`. + +Например на рисунке ниже величина шумов (для отфильтрованного красного сигнала) достигает 10 единиц. + +Затем закомментируйте и раскомментируйте обратно строки кода и перепрошейте Arduino. + +В терминале запустите файл с графическим интерфейсом (# такой то файл): + +```bash +cd CopterHack2020_IR_LED_Desktop_GUI +python main.py +``` + +Затем подключите Arduino через USB-кабель в ваш компьютер и нажмите "Connect". + +Начало и конец отсчета замеров производится кнопками "start" и "stop".