Инженерный тур. 3 этап
Беспроводная связь стала неотъемлемой частью современных технологий, которые прочно вошли в повседневную жизнь, промышленную и научную сферы. Чтобы информация надежно передавалась на расстоянии, существует множество различных решений, начиная от протоколов и помехоустойчивых кодов, заканчивая слежением за подвижным источником сигнала (например, спутником). Создание протоколов эффективной и надежной передачи данных — фундаментальная проблема связи, решение которой зависит от конкретных условий среды и канала.
На профиле команды столкнутся с комплексом заданий по организации беспроводных каналов связи в разных средах. Участники смогут буквально увидеть и услышать сигнал, поработать с передачей данных и создать свои помехозащищенные протоколы.
Беспроводная связь, столь удобная и привычная, состоит из набора технологий, решающих частные задачи, общая цель которых — надежно и быстро передать данные на расстоянии.
Участникам предлагается решить комплекс задач по организации беспроводных каналов связи в различных средах и условиях. Они выполняются на стендах, предоставляющих настоящий беспроводной канал со своими особенностями и ограничениями. Каждая задача затрагивает свой аспект беспроводной передачи информации — от устойчивой к потерям упаковки данных до настройки слежения за подвижным источником сигнала и борьбы с шумами.
Технологии передачи больших зашифрованных массивов данных, слежение за подвижным источником сигнала применяется в отраслях, где нужна связь с автономным устройством в труднодоступном месте, куда нельзя физически добраться: при ремонте автоматических космических аппаратов, работе с подводными роботами и т. п. У участников есть возможность не просто изучить эти технологии, но даже создать и протестировать собственные протоколы связи.
Навык разработки собственных протоколов — базовый в технологиях связи, огромном растущем рынке в мире с увеличивающимся спросом на специалистов. Дальнейшее развитие беспроводных технологий связи — это не только технологии связи для спутников или подводных аппаратов, но и для домашних устройств, систем сенсоров, сельскохозяйственных дронов и других объектов интернета вещей — все они требуют создания протоколов.
В настоящее время количество различных протоколов связи, количество систем, где их важно проектировать непрерывно растет, но понимание базовых принципов и способность конструировать такие каналы падает из-за усложнения протоколов. Поэтому важно работать, с одной стороны, с максимально современной постановкой задачи, а с другой — с максимальной прозрачностью и возможностью ее увидеть и «пощупать».
Количество участников в команде: 4–5 человек.
Компетенции, которыми должны обладать члены команды:
- Программист — программирование адаптивной системы слежения; работа с протоколами связи.
- Аналитик-исследователь — анализ характеристик шума в каналах; выбор схемы помехоустойчивого кодирования; помехоустойчивое кодирование для оптического канала.
- Аналитик-исследователь — работа с данными и основами корреляционного анализа, с механикой стенда; расшифровка кодов и характеристик стенда.
- Программист — обработка сигналов; работа с данными и владение основами корреляционного анализа.
- Капитан — сбор и анализ решений подзадач от всех специалистов, описанных выше; обсуждение и коррекция полученных результатов для более эффективного решения общей задачи; организация командной работы; капитан должен обладать знаниями по всем основным темам, уметь разбираться в коде.
На инженерном туре команды профиля Технологии беспроводной связи работают со стендами:
- «Узконаправленные низкоэнергетические каналы связи» — УНКС (см. рис. 4.1);
- «Каналы связи и кодирование» — О-БТС (см. рис. 4.2);
- «Турнир Юных Киберфизиков «Акустика» » — ТЮК-А (см. рис. 4.3);
- «Акустический полигон» — А-Полигон (рис. 4.4, 4.5).
Стенды УНКС и О-БТС входят в образовательный комплекс «Беспроводные технологии связи», разработанный компанией ИнСитиЛаб. Они созданы в логике моделирования реальных инженерных задач по созданию протоколов связи. Программно-аппаратная платформа стенда УНКС позволяет работать с адаптивными алгоритмами и точностью передачи сигнала. При создании стенда разработчиками и экспертами выступали специалисты ИСЗФ СО РАН с реальным опытом работы проектирования систем слежения — современных радаров.
Стенд О-БТС стал нововведением в этом году, добавив задачи на оптический канал связи.
При работе с комплектом для проведения турнира юных киберфизиков «Акустика-1», разработанном компанией «ИнСитиЛаб» в рамках Национальной киберфизической платформы, участники взаимодействуют с акустическим каналом связи.
ТЮК-А позволяет наглядно коммуницировать с аналоговыми и цифровыми сигналами в физическом акустическом канале связи, с разными типами модуляции и помехоустойчивым кодированием.
Еще одним нововведением этого года стал комплекс «Акустический полигон» — модификация ТЮК-А с шумоизолированным боксом. Стенд позволяет ставить комплексные задачи на акустическом канале, на которые не повлияет окружающий шум.
На время инженерного тура каждая команда получает по одному комплекту «ТЮК-Акустика» и стенду «Каналы связи и кодирование». Взаимодействие с ними осуществляется на двух компьютерах, предоставленных каждой команде, с предустановленным ПО для соответствующих стендов.
Два стенда «Узконаправленные низкоэнергетические каналы связи» (УНКС) размещены в общем доступе на площадке проведения. Участники эксплуатируют их в порядке живой очереди с ограничением времени сеанса. Взаимодействие со стендом выполняется через рабочую станцию с предустановленным ПО комплекса «Беспроводные технологии связи» с использованием только тех библиотек, которые были предустановлены в среде.
Каждая команда тренировочно работает со своим комплексом. Для обеспечения равенства условий всех команд проверка решений производится на судейских контрольных стендах (одна задача — один стенд).
| Наименование | Описание |
|---|---|
| Стенд «Узконаправленные низкоэнергетические каналы связи» образовательного комплекса «Беспроводные технологии связи» — УНКС | Позволяет моделировать реальную ситуацию для систем связи нового типа между автономными роевыми объектами. Задачи на стенде посвящены установлению слежения движущихся объектов друг за другом и адаптивной дешифрации в реальном времени. Во время работы участники создают свои протоколы передачи данных под конкретные условия шумов, требования к надежности, характеру помех в канале, скорости передачи. |
| Стенд «Каналы связи и кодирование» образовательного комплекса «Беспроводные технологии связи» — О-БТС | Предназначен для обучения работе с аналоговыми и цифровыми сигналами, низкоуровневыми протоколами, современными системами кодирования. На стенде моделируется оптический видимый канал связи с виртуальной и физической модуляцией (яркость света и вращающийся диск), регулируемой пропускаемостью сигнала. Со стендом на примере оптического сигнала можно эффективнее освоить теорию сигналов, двоичные коды, кодирование и декодирование, анализ данных, анализ кода. |
| Комплект «Турнир Юных Киберфизиков “Акустика”» — ТЮК-А | Представляет собой акустический канал связи с передатчиком (излучателем) и двумя микрофонами (приемниками), размещенными на расстоянии друг от друга. Параметры усилителей микрофонов можно настраивать, замыкая участки цепи. На плату передается звуковой файл, воспроизводимый излучателем. Звук с микрофонов передается обратно и записывается в виде двух принятых сигналов как набор измерений АЦП. Со стендом на примере акустического сигнала можно эффективнее освоить теорию сигналов, модуляцию, кодирование и декодирование, анализ данных, анализ кода. |
| Комплекс «Акустический полигон» — А-Полигон | Выполнен на основе модификации ТЮК-А и представляет собой полигон для проверки освоения понятий сигнала и модуляции, а также навыков работы с сигналами и обработкой данных на системе, в основе которой лежат те же принципы, но которая представляет собой принципиально другую систему, чем тренировочная. Комплекс — шумоизолированный бокс, внутрь которого возможно помещать до трех излучателей. Кроме того, возможна установка до четырех микрофонов в разные области бокса. Принцип действия аналогичен ТЮК-А, но одновременно передается несколько звуковых файлов с разных излучателей. Система позволяет выполнять задачи с наложением сигналов (подавление помех, деконволюция) и радиолокацией источника. |
Заключительный этап проходит на комплексе стендов, взаимосвязанных по компетенциям и моделирующих реальную задачу передачи данных по физическому каналу, анализа данных и создания помехозащищенных протоколов. Итогом работы над задачами является набор протоколов передачи данных с учетом физических особенностей среды.
Участникам ставятся задачи в виде:
- описаний моделей;
- интерфейсов взаимодействия с ними;
- критерия оценки успешности решения отдельных задач.
Командам нужно предоставить решение серии задач в указанном формате, который используется для проведения измерения, формирующего результат решения. Ограничения на решения обусловлены моделью, техническими параметрами стендов.
Итог решения задач — успешно декодированное сообщение; набор программ, реализующих протокол или слежение и выполняющих поставленную задачу с заданной точностью.
На заключительном этапе участники должны решить семь задач. В процессе работы они взаимодействуют со следующим оборудованием:
- задачи №№ 1, 2 — стенд УНКС;
- задачи №№ 3, 4 — О-БТС;
- задачи № 5 — связка стендов О-БТС и ТЮК-А;
- задачи №№ 6, 7 — А-Полигоном.
В задаче № 1 рассматриваются вопросы слежения за подвижным источником сигнала с учетом его диаграммы направленности и стабильной передачи данных в канале.
Цель задачи — отработка навыка взаимодействия с техническими устройствами, куда данные приходят с помехами и наводками, а отладка и исправление сбоев в программе усложнены ввиду удаленности прибора. Потери данных происходят как из-за физического заужения апертуры приемника, так и из-за инверсии поступающих из программы слежения команд.
Решение проверяется на выделенном судейском стенде. Конфигурация параметров инверсии на тренировочных и судейском стендах отличается — на первых искажения пропорционально меньше и реже, на втором — одинаковы для всех команд и не меняются на протяжении всего заключительного этапа.
В задаче № 2 участники работают с телеметрией — технологией, необходимой для взаимодействия с такими системами, где нет физического доступа к оборудованию (например, космические аппараты).
Цель задачи заключается в аппроксимации параметров траектории наблюдаемого «Спутника» по телеметрии, состоящей из набора двоичных статусных регистров неподвижного «Радара», которые снимают во время слежения. Телеметрию необходимо преобразовать как в плане перевода данных в обрабатываемый вид (график отклонения от оси визирования), так и содержательно (перевод отклонения в физическое положение «Спутника»).
Для восстановления модели и проверки гипотез участники работают на тренировочных стендах. Решения отправляются через бот. Измерения траекторий осуществляются на закрепленном судейском стенде. Конфигурация траекторий индивидуальна для каждой команды и неизменна на протяжении всего этапа.
Задача № 3: используя различные методы анализа данных, нужно декодировать сообщения на закрытых от участников дисках. Декодирование происходит по полученным данным с измерений на судейском стенде О-БТС.
С помощью тренировочного стенда участники:
- анализируют выданный им диск с таким же кодом, как на закрытых;
- выявляют паттерны;
- учатся находить их на графиках по данным закрытых дисков.
Решения сдаются через бот. Параметры измерений на судейском стенде закреплены и одинаковы для всех закрытых дисков, но неизвестны участникам.
Задача № 4 посвящена деконволюции — разделению одного сигнала от другого. Цель — разгадать все закрытые сообщения на дисках и излучателях.
На судейском стенде удаленно от участников измеряется одновременно диск с одним типом кода (рисунком на диске), а при измерении излучатель передает сообщение собственным световым кодом (подробнее о кодах в документе «Регламент и условия задач.pdf» (https://disk.yandex.ru/i/tMQq2zpRMoMaFg, раздел «Описание кодов»). Таким образом, за одно измерение передается два сообщения.
Для получения измерений участники подают заявку оператору судейского стенда, в которой перечисляются:
- желаемый номер диска;
- номер излучателя;
- цвет излучателя (не влияет на ответ, зависит от того, с каким цветом излучателя участники предпочитают работать на тренировочных стендах).
У каждой команды есть персональный открытый диск для изучения. Решения отправляются через бот.
При решении задачи № 5 финалисты взаимодействуют сразу с двумя каналами связи (оптическим и акустическим), выстроенными в одну систему.
Работа выполняется в следующем порядке:
- команде выдается исходное сообщение в битах;
- участники создают собственные диски, кодируя на них исходное сообщение (способ кодирования — по выбору);
- диск измеряется на стенде О-БТС;
- полученный сигнал проходит через заданный медиаконвертер (converter.py https://disk.yandex.ru/d/CNHl-xabozou0Q/converter.py);
- выходящий из медиаконвертера файл запускается на стенде ТЮК-А;
- выходные данные подаются на вход программе-декодировщику, который участники писали самостоятельно и сдавали оператору в начале сеанса;
- полученное после декодировщика сообщение (биты) сравнивается с исходным сообщением.
Результатом сдачи задания является количество идентичных бит. Для уравнивания условий все измерения проходят на судейском стенде. Цвет излучателя, начальное положение диска О-БТС и параметры усилителей сигнала ТЮК-А участники задают сами.
Задача № 6 посвящена проблеме определения местоположения устройства методом локации. Здесь участники определяют положение излучателя внутри закрытого А-Полигона по измерениям с двух микрофонов, которые команды устанавливали самостоятельно в желаемые позиции.
Сигнал, посылаемый с излучателя, команды также выбирают или пишут самостоятельно и передают оператору А-Полигона при измерении.
В задаче № 7 участники работают над реализацией активного шумоподавления — технологией, распространенной в транспорте и аудиооборудовании.
Команда получает результат приема сигнала-помехи, излученного внутри А-Полигона, и на его основании подбирает звуковой сигнал (посылку для ТЮК-А) для подавления помехи при одновременном излучении. Подбор производится посредством четырех серий до двадцати пробных измерений с дальнейшей передачей посылки для оценочного измерения.
Критерием решения является среднеквадратическое отклонение сигнала от тишины (сигнала без излучения помехи). Принцип формирования сигнала-помехи одинаков для всех команд, но варьируются его свободные параметры как между командами, так и между сеансами решения (после оценочного измерения параметры меняются).
Для всех команд условия заданий формулируются одинаково. Они составлены таким образом, чтобы, с одной стороны, быть независимыми, а с другой — образовывать логическую цепочку, однако сдавать их можно в любой последовательности. Количество одновременно решаемых задач определяет слаженность командной работы.
Разработка больших технических устройств всегда сопряжена с набором проблем, часть которых можно решить с помощью присутствующего рядом инженера. В случае со спутниками и беспилотными системами это невозможно, что обостряет любые возникающие неполадки: их сложнее отладить и исправить.
В этой задаче организован инфракрасный канал связи на стенде УНКС. Среда передачи благоприятная — помех и шумов нет, данные передаются и принимаются без ошибок. Для качественной работы канала связи достаточно лишь организовать точное слежение «Радара» за «Спутником».
При этом существует проблема: протокол управления «Радаром» реализован без учета помех, из-за чего «Радар» управляется нестабильно. А именно, периодически значения смещения оси визирования «Радара» приходят с погрешностью. В некоторые моменты (не зависящие от ранее упомянутых) отправленные команды инвертируются: вместо поворота в одну сторону «Радар» начинает вращаться в обратную, а вместо остановки — вращаться в случайном направлении. Кроме того, скорость в это время тоже приходит с погрешностью.
Задача: реализовать программу слежения (tracker) для «Радара», выполняющую максимально точное слежение за «Спутником» в условиях нестабильного управления. Среда передачи не имеет шумов, передача данных осуществляется без дополнительного кодирования, то есть кодер и декодер встроены и передают данные без изменений.
Программа слежения пишется на C, C++, Java или Python 3 в одном файле tracker.
Примеры трекеров размещены в директории UserExamples в файлах с названием tracker, например, трекер на языке Python находится в файле tracker.py (https://disk.yandex.ru/d/CNHl-xabozou0Q/UserExamples/).
Ниже представлен пример трекера на языке Python 3.
from client2server import client2server
class tracker:
def run(tracklog):
c2s = client2server()
i = 0
while i == 0:
status = c2s.getStatus()
dx = int(status) & 0x0fff
if dx > 2848:
dx = dx - 4096
# tracklog.write(f"{dx}".encode())
if abs(dx) < 500:
if abs(dx) < 10:
c2s.moveStop()
else:
if dx > 0:
c2s.moveLeft(4)
else:
c2s.moveRight(4)
Описание интерфейса управления слежением приведено в файле 0_readme.txt в этой же директории.
Порядок работы:
Команда отрабатывает решение на тренировочных стендах со схожей конфигурацией задачи (частота шума, и траектория отличаются), после чего заявляет зачетную попытку в рамках очередного слота.
Пример заявки:
#заявка з1 к2- Представитель команды приносит оператору программу-трекер на флешке. Файл должен иметь имя
tracker.[расширение], например,tracker.py. Оператор загружает программу на стенд и запускает передачу данных со слежением. - По завершении передачи оператор фиксирует процент слежения в рейтинговой таблице. По запросу команды оператор может скопировать файл журнала на их флешку.
При возникновении ошибки компиляции программы оператор откладывает заявку для исправления проблемы. Отложенная заявка переносится в конец очереди. Если команда не приносит решение после переноса, ее заявка в текущем слоте аннулируется.
Максимальный балл за задачу — 12.
В зачет идет лучшая попытка. Оценивается точность передачи (программным путем). Нижний порог — 25% точности передачи.
Балл за задачу начисляется по формуле \[y = N \cdot \displaystyle\frac{x-k}{100-k},\] где \(N\) — балл за задачу, \(k\) — значение точности передачи при запуске на демонстрационном трекере (нижний порог), \(x\) — процент, показывающий точность переданного файла при запуске на трекере, представленном командой.
Иначе говоря, \(N\) баллов — максимальное количество баллов при 100% точности передачи контрольного файла по каналу связи, а 0 баллов — точность передачи контрольного файла по каналу связи с использованием стандартного трекера.
На тренировочном стенде команда может ознакомиться с упрощенной версией задачи и провести пробные сеансы слежения для установки характера искажений. Для этого необходимо извлечь данные статусного числа в журнал слежения, а затем проанализировать, в первую очередь получив время, отклонение от оси визирования (DX).
Работа с искажением DX строится на реализации слежения, стабильного к резким изменениям, например, за счет фильтрации значений DX.
Инверсия направления вращения фиксируется за счет сохранения отправленного направления и сравнения его со значением регистра статусного числа, отвечающего за направление вращения, и компенсируется ответной инверсией.
Искажение скорости вращения фиксируется через резкое направленное изменение производной DX, компенсируется путем изменения скорости вращения. В общем случае скорость уменьшается для стабилизации вращения.
Дальнейшая работа выполняется алгоритмом слежения, который может строиться на пропорциональном или ПИД-регуляторе, параметры которого подбираются итерационно за счет организованной передачи телеметрии с судейского стенда.
Телеметрия — это технология автоматического наблюдения, сбора и передачи данных, необходимых для организации работы технической системы. В частности, для сбора данных с действующих космических аппаратов и спутников, где нет физического доступа к оборудованию.
Важная часть работы со спутником — это знание траектории его перемещения. Иногда она заведомо известна, но в данном случае возможности ограничены. В распоряжении участников телеметрия, снимаемая с зафиксированного «Радара» в виде набора статусных чисел — 128-битных чисел, в которых закодировано текущее состояние «Радара» (описание формата статусного числа приведено в файле UserExamples/0_readme.txt https://disk.yandex.ru/d/CNHl-xabozou0Q/UserExamples/).
«Радар» не двигается во время снятия траектории, но известно, что при перемещении «Спутник» не покидает область видимости камеры «Радара».
Задача: максимально точно восстановить три траектории «Спутника» по данным телеметрии.
В ответе необходимо указать четыре вещественных числа через пробел:
- большая полуось орбиты планеты, см;
- период вращения планеты, с;
- радиус орбиты спутника, см;
- период вращения спутника, с.
Например, 20,4 15,3 2,2 10,1.
Заведомо известно, что фокусное положение звезды всегда в центре оси.
| Название параметра | Описание |
|---|---|
| Planet_Semimajor_axis(cm) | Большая полуось орбиты планеты \(R\), см |
| Planet_orbital_period(sec) | Период обращения планеты вокруг звезды \(P\), с |
| Planet_Focus(cm) | Фокусное положение звезды относительно центра оси \(f\), см |
| Sputnik_Radius_orbit(cm) | Радиус круговой орбиты спутника вокруг планеты \(r\), см |
| Sputnik_orbital_period(sec) | Период обращения спутника вокруг планеты \(p\), см |
Параметры траектории
На схеме выше «Радар» располагается на значительном удалении от звезды и работает с проекцией траектории на горизонтальную ось.
Порядок работы:
Участники заявляют зачетную попытку в рамках очередного слота и указывают номер траектории для измерения.
Пример заявки:
#заявка з2 к3 т1где
т[номер]— выбранная траектория для измерения.- Оператор запускает слежение и снятие телеметрии. Во время слежения команда может присутствовать рядом со стендом, но использование фото- и видеосъемки категорически запрещено.
- По завершении слежения оператор передает файл телеметрии на флешку, предоставленную командой.
Команда анализирует телеметрию и отправляет ответ через бот-кодоприемник.
Пример сообщения в бот:
o3-1 20.4 15.3 2.2 10.1(шаблонo[номер команды]-[номер траектории] [параметры траектории]).
Максимальный балл за задачу — 8.
Сравнение траектории с эталонном осуществляется по четырем параметрам. При отклонении каждого параметра не более, чем на 1 см или 1 с, траектория засчитывается на полный балл. При отклонении параметров решение отклоняется. У участников по три попытки на каждую траекторию.
Гарантируется, что радиус орбиты планеты всегда больше радиуса орбиты спутника. Если траектория состоит из одной орбиты, укажите 0 во втором радиусе, тогда второй период не будет учитываться при проверке.
Вес первой траектории — 20%, второй и третьей — по 40%.
Файл телеметрии содержит набор 128-битных статусных чисел в двоичном виде, то есть файл делится на пакеты по 16 байт. Согласно описания формата числа, его биты 0–11 содержат знаковое 12-битное целое число — смещение спутника на камере «Радара», которое измеряется в пикселях. Кроме того, 20–36 биты содержат беззнаковое целое время с начала работы «Радара», по которому можно отследить изменение статусного числа и соответственно DX.
При извлечении и сопоставлении двух временных рядов образуется график смещения «Спутника» относительно центральной оси стенда. При этом важно отсечь часть, соответствующую калибровке «Спутника» (в среднем она продолжается до 24 с или около 300 строк). По нему путем аппроксимации (например, оптимизационными методами) восстанавливается период в миллисекундах и амплитуда в пикселях.
Для перевода пикселей в сантиметры необходимо восстановить геометрическую модель стенда. Для этого можно использовать тренировочный стенд, слежение за «Спутником» без вращения и с записью телеметрии, а также измерительные приборы (линейка, рулетка).
Нескольких точек достаточно для определения линейной зависимости геометрического положения «Спутника» от DX: \(x=-0{,}1309\cdot DX+1{,}6778\).
В практике любой компании, существующей длительное время, есть процесс устаревания информации, в том числе программного кода. И если не уделять этому должное внимание, появляется «легаси» — артефакты от прошлых разработчиков, представление о которых имеют только они сами. Часто «легаси» работает, но никто не знает, почему, и это весьма опасно.
Смоделируем ситуацию: существует информационная система, разработанная давно и в целом не требующая к себе внимания. Нужно перенастроить ее под новые стандарты, для чего требуются пароли доступа. Как известно, их нужно хранить в надежном месте.
Прошлые сотрудники записали эти пароли на диски с кодом nto10.t[номер] («Регламент и условия задач.pdf» (https://disk.yandex.ru/i/tMQq2zpRMoMaFg), раздел «Описание кодов») для стенда О-БТС. Но найти удалось только один диск (его экземпляр в распоряжении у каждой команды), и пароль с него не подошел.
К счастью, один из сотрудников сделал резервную копию, измерив все диски на стенде. Сделал он это за один подход, то есть на одном стенде с одинаковыми параметрами. Параметры измерения, включая цвет излучателя, утеряны. Но известно, что на всех дисках используются те же буквы, которые есть на открытом диске.
Задача: с помощью этих измерений восстановить 25 паролей, закодированных на всех закрытых дисках. В распоряжении команды есть открытый диск с примером пароля.
Порядок работы
Участники исследуют выданный команде диск и декодируют данные с закрытых дисков. Закрытые диски лежат на рабочем столе терминала команды в папке «Задача 3 — Закрытые диски». Результаты декодирования передаются в бот-кодоприемник.
Пример сообщения в бот:
t3-12 ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEF
шаблон t[номер команды]-[номер диска] [сообщение с диска].
Максимальный балл за задачу — 13.
Балл за каждое сообщение с закрытых дисков выставляется по результату автоматической проверки сообщения через бот-кодоприемник. Сравнение с правильным ответом осуществляется по расстоянию Левенштейна. Полное совпадение соответствует полному баллу за сообщение (0,52 балла за один полностью решенный диск), каждая единица ошибки отнимает 20% от полного балла за один диск. На каждое сообщение дается по три попытки.
Задача подразумевает выявление и сопоставление паттернов, соответствующим каждой букве. Для их восстановления предназначен открытый диск. Его необходимо измерить на тренировочном стенде, при этом нужно подобрать параметры измерения для получения выраженных паттернов. При подборе необязательно стремиться к тому, чтобы получить параметры, максимально близкие к судейскому стенду, важно именно получение различимых паттернов, соответствующих буквам.
После получения паттернов производится их сопоставление с закрытыми данными. Это можно производить вручную или программно: разделение сигнала на отдельные отрезки тривиально после фильтрации статического шума, сопоставление можно выполнять различными методами (в том числе через отклонения).
В телекоммуникации существует задача разделения каналов, то есть передачи сразу нескольких сигналов по одной линии связи. Инженеры представили много различных вариантов ее решения.
Производится двухпотоковая передача данных по оптическому каналу стенда О-БТС.
Первое сообщение формируется модулирующим диском с кодом nto10.d[номер] («Регламент и условия задач.pdf» (https://disk.yandex.ru/i/tMQq2zpRMoMaFg), раздел «Описание кодов»), который вращается с фиксированной минимальной скоростью («Быстрый старт.pdf» https://disk.yandex.ru/i/lKcWVMK5RoBLcQ).
Второе сообщение формируется изменением яркости излучателя в течение времени согласно коду nto10.e.
Периоды вращения диска и период передачи сообщения излучателем не совпадают. Измерение канала начинается в произвольный момент, снимается 4500 измерений с интервалом в 2 мс.
Задача: восстановить сообщения с дисков и излучателя, используя результаты удаленных двухпотоковых передач. В каждый слот можно запросить до трех передач, в каждой из которых выбрать один из десяти дисков: d1–d10, одно из двадцати сообщений излучателя: e1–e20, и модуль излучателя (красный, желтый, зеленый или синий). Диски и сообщения излучателя закрыты и перемешаны, т. е. у каждой команды под одним номером будет свое сообщение.
Порядок работы
Взаимодействие с судейским стендом осуществляется исключительно оператором, без присутствия участников.
Порядок действий:
Вместе с заявкой на задачу участники передают до трех комбинаций из номера сообщения на излучателе, номера диска и цвета излучателя.
Комбинация имеет вид:
излучатель [номер], диск [номер], [цвет излучателя].Пример заявки с тремя комбинациями:
#заявка з4 к31- излучатель 5, диск 1, желтый;
- излучатель 6, диск 10, зеленый;
- излучатель 7, диск 3, красный.
- Оператор выполняет измерения с фиксированными параметрами: диафрагма 0,5 мм, интервал измерения 2 мс, число измерений 4500, скорость вращения 1, базовая амплитуда блока излучателя сигнала зависит от выбранного цвета (красный — 400, зеленый — 48, синий — 35, желтый — 400). Результаты измерений передаются команде по готовности — оператор вызывает команду в чате инженерной задачи, участник от команды должен подойти к оператору с флешкой.
Команда производит анализ результатов, определяет сообщения и отправляет их в бот-кодоприемник.
Пример сообщения в бот:
e3-1 ABCABCABCABCABCABCABCABCA
шаблоны сообщений:
-[номер сообщения] [сообщение с излучателя];
-[номер сообщения][сообщение с диска].
Максимальный балл за задачу — 14.
Балл за каждое сообщение выставляется по результату автоматической проверки сообщения через бот-кодоприемник. Одна точно декодированная последовательность символов сообщения диска или излучателя дает 0,4667 балла, всего последовательностей 30. Сравнение с правильным ответом осуществляется по расстоянию Левенштейна. Полное совпадение соответствует полному баллу, каждая ошибка отнимает 20% этого балла. На каждое сообщение дается по три попытки.
Первый этап — измерение открытого диска на разных яркостях излучателя и выявление закономерностей изменения яркости в зависимости от уровня заливки диска. Далее производится анализ полученных измерений.
При наложении сообщения излучателя на диск смешиваются два сигнала: четырехуровневый (если считать стартовое условие) и двухуровневый. Умножение двух сигналов дает набор из восьми уровней амплитуды.
Разделение этих уровней на данных измерения выполняется вручную:
- построение восьми горизонталей;
- визуальное выявление переходов;
- разделение двух периодических сигналов;
- снятие сообщения;
или программно:
- поиск пиков производной;
- выявление двух периодических сигналов;
- разделение их уровней;
- снятие сообщения.
Передача данных может выполняться в разных средах, но периодически возникает необходимость организовать канал, переходящий из одной среды в другую, например, из оптоволокна в витую пару. Для этого используются медиаконвертеры.
Дан оптоакустический канал связи, состоящий из О-БТС и ТЮК-А, объединенных программой-медиаконвертером. Иначе говоря, сигнал, заданный диском, передается через акустический канал. Судейские стенды такие же, как и тренировочные. Расстояние от микрофона до излучателей на ТЮК-А составляет 70 см, расстояние между микрофонами — 15 см.
Задача: передать по этому каналу до 40 бит информации так, чтобы полученное сообщение (биты) максимально соответствовало исходному.
Исходное сообщение наносится на диск и измеряется на стенде О-БТС. Результат измерения обрабатывается программой-медиаконвертером, и полученный файл передается по акустическому каналу на А-ТЮК. Принятый сигнал отправляется в программу-декодировщик (декодер), который восстанавливает из сигнала биты. Полученное после декодера сообщение сравнивается с исходным, и результат решения оценивается исходя из количества правильно переданных бит.
Порядок передачи сообщения представлен на схеме работы (см. рис. 5.11).
Для сдачи задания нужно предоставить на флешке оператору свой декодер, после чего оператор выдает исходное сообщение — 40 бит, которое необходимо передать оператору на диске. Изображение выполняется доступными средствами: в распоряжении каждой команды есть диски без изображения (3 шт.), изолента и ножницы, у организаторов можно запросить шесть листов прозрачной пленки для печати на принтере.
Оператор измерит переданный диск на судейском стенде О-БТС с фиксированными параметрами:
- диафрагма 0,5 мм;
- интервал измерения 2 мс;
- число измерений 2000;
- скорость вращения 1;
- интервал измерения 2 мс;
- базовая амплитуда блока излучателя сигнала зависит от выбранного цвета (красный — 400, зеленый — 48, синий — 35, желтый — 400).
Полученный сигнал с помощью функции-медиаконвертера (converter.py https://disk.yandex.ru/d/CNHl-xabozou0Q/converter.py) нормализуется и удлиняется в три раза путем тройного повторения каждого измерения, после чего передается в качестве посылки через ТЮК-А. Результат передачи вводится в ранее сданный декодер.
Восстановленное декодером сообщение сравнивается с исходным, и результат попытки определяется числом корректно переданных бит.
Декодер пишется на C, C++, Java или Python 3 в одном файле sound_decode. Входные данные программа читает из входного потока (stdin), а выходное сообщение — в выходной поток (stdout). Чтение и запись файлов недопустимы. Входные данные представлены в формате CSV-файла ТЮК-А, при этом во входных данных столбец Input будет засекречен: все значения в этом столбце будут равны —1. Выходное сообщение выводится как текстовая последовательность нулей и единиц (например, 0101010110).
Порядок работы:
Участники дают заявку на задачу в очередной слот. В порядке очереди команда приносит оператору программу-декодер и в ответ получает файл с сообщением для передачи.
Пример заявки для сдачи декодера:
#заявка з5 к3При возникновении ошибки компиляции оператор откладывает заявку для исправления проблемы. Отложенная заявка переносится в конец очереди. Если команда не приносит решение после переноса, ее заявка в текущем слоте аннулируется.
- Команда самостоятельно создает на диске изображение, соответствующее сообщению.
- Сдача диска оператору производится в порядке живой очереди, с выбором цвета блока излучателя сигнала и выставлением параметров усилителя ТЮК-А. Команда выставляет диск на судейском стенде, после оператор запускает измерение с фиксированными параметрами из условия задачи. Полученный сигнал автоматически преобразуется с помощью медиаконвертера и передается через ТЮК-А. На полученном сигнале запускается декодер команды. Выходной файл декодера сравнивается с исходным.
- Команда может неограниченно сдавать диски на одном декодере, смена декодера осуществляется в рамках новой попытки и сопровождается генерацией нового сообщения.
Максимальный балл за задачу — 17.
Балл за решение выставляется в результате автоматического сравнения с исходных сообщением по расстоянию Левенштейна. За успешную полную передачу сообщения выставляется полный балл. Каждая ошибка снимает 5% полного балла
Задача проверяет способность переносить сигнал из одной среды в другую. Команда имеет на руках программу-медиаконвертер, за счет чего способна проводить эксперименты с собственным чистым диском, а именно, подбирать паттерн изображения, способный формировать различимый звук, который можно зафиксировать программно.
Оптическая среда О-БТС регистрирует значение уровня, поэтому необходимо создать монохромное изображения. Акустическая среда А-ТЮК регистрирует изменение значения уровня, порождающее звуковую волну. Соответственно, наиболее эффективным будет кодирование сообщения за счет изменений уровня яркости.
Например, создание набора импульсов (щелчков) или воспроизведение широтно-импульсной модуляции. При правильном подборе частоты полос на печатном изображении диска (см. пример ниже) возможно добиться громкого звучания сигнала на А-ТЮК, регистрируемого при амплитудной или частотной демодуляции. Для большей точности декодирования можно использовать разные параметры усилителя.
Нередко для эффективной передачи данных требуется знать положение источника сигнала, в некоторых случаях — активно на него направляться. В этой задаче участникам предстоит определить положение источника звука внутри акустического полигона.
В случайную ячейку поля выставляется излучатель на стойке. Высота излучателя на уровне микрофонных разъемов; погрешность \(\pm 1\) см. Излучатель всегда ориентирован в сторону микрофонов «С-1»–«С-4» («Быстрый старт.pdf» https://disk.yandex.ru/i/lKcWVMK5RoBLcQ).
Задача: восстановить положение излучателя с точностью до ячейки поля.
Посылка длиной 125 мс предоставляется командой оператору. Перед каждой передачей команда выставляет два микрофона в любые два разъема полигона на свое усмотрение. Для передачи сигнала используется такой же ТЮК-А, как и тренировочный. Конфигурация усилителей зафиксирована организаторами и одинакова для обоих микрофонов — установлен джампер x2. Восстановление положения излучателя производится командой на основе измерения двух закрытых передач на комплекте ТЮК-А.
В рамках задачи доступны тренировочные и зачетные попытки.
Для каждой зачетной заявки выставляется новое положение излучателя, и на его определение дается две попытки.
Для тренировочных заявок положение излучателя считается отдельно от зачетных и не меняется, пока команда сама об этом не попросит. Количество попыток на разгадывание тренировочной заявки не ограничено.
В обоих случаях положение излучателя не раскрывается. За один слот можно сделать либо тренировочную заявку, либо зачетную.
Обратите внимание: при передаче сигнала присутствует запаздывание (его значение постоянно, но одинаково между комплектами), а значение скорости звука сложнее, чем обычно дается в справочниках.
Порядок работы
Команды работают на тренировочных комплектах ТЮК-А и заявляют попытки на полигон в рамках слота. Взаимодействие с полигоном осуществляется следующим образом: участники в присутствии оператора устанавливают микрофоны в желаемые позиции. После этого оператор проводит два измерения, результат которых в виде CSV-файлов передается участникам на флешку.
Порядок действий:
Команда делает заявку на попытку и указывают ее тип: тренировочная или зачетная. Вместе с заявкой участники передают посылку и ставят в желаемые позиции два микрофона. Файл посылки передается оператору на флешке. Файл должен иметь имя
input.txtи быть длиной 6000 тактов.Пример тренировочной заявки:
#заявка з6 к3 ТПример зачетной заявки:
#заявка з6 к3 З- После заявки на задачу оператор инициализирует сеанс работы, закрытую для всех участников позицию ставит излучатель в случайное положение (оно записывается на судейском терминале) и производит три передачи посылки. Принятые сигналы передаются команде для изучения.
- Команда анализирует принятые сигналы, формирует ответ и сдает его через оператора в порядке живой очереди. В случае верного решения выставляется балл. В случае ошибки команда может сдать ответ еще раз, после чего попытка закрывается.
- После закрытия попытки необходимо сделать повторную заявку.
Максимальный балл за задачу — 15.
Считается по лучшей попытке. За точное определение позиции излучателя на сетке выставляется полный балл, если ответ дан с первой попытки; 50% — если со второй. После второго неверного ответа выставляется 0%.
Наилучшее положение для измерения — максимально широкая база из микрофонов, стоящих в противоположных стенках А-Полигона друг напротив друга. Положение имеет смысл изменить на противоположное для учета возможной дисторсии при излучении рядом с микрофонами, а также для получения дополнительных точек.
Восстановление позиции излучателя требует максимально точного восстановления модели звука. Фактически решением является выполнение триангуляции, для которой производится преобразование задержки между отправкой и приемом посылки на расстояние от излучателя до микрофона.
Задержка измеряется по смещению характерных пиков сигнала-посылки и сигнала на микрофоне. Смещение измеряется в тиках и переводится в миллисекунды с помощью первого столбца CSV-файла, либо через частоту дискретизации 48 кГц.
Далее необходимо восстановить систематическую задержку и скорость звука. Для этого на тренировочных стендах следует провести серию измерений на разных расстояниях и их дальнейший анализ.
После преобразования расстояний строятся две (или четыре) окружности, пересечение которых указывает на вероятную точку нахождения микрофона.
Передача данных неразрывно связана с обеспечением помехоустойчивости канала связи. К борьбе с шумами можно подходить разными способами, и один из них — активное шумоподавление. Его работу можно ощутить собственными ушами: на рынке существует много наушников с ANC.
Дан канал связи в среде с помехой в виде стороннего сигнала. Этот сигнал детерминирован и обладает определенным законом изменения со свободными параметрами, значение которых неизвестно.
Задавить помеху передатчиком невозможно — его мощность ограничена. Протокол передачи задан за пределами канала связи, поменять его тоже нельзя. Следовательно, для защиты канала связи от помехи нужно прибегнуть к шумоподавлению. Здесь оно представлено в виде посылки, которая отправляется с излучателя одновременно с полезным сигналом. Для настройки шумоподавления полезный сигнал отключен, и вместо него передается тишина (постоянная амплитуда).
Задача: составить такой сигнал шумоподавления для заданной помехи, чтобы получить на приемнике сигнал, максимально близкий к фоновому звуку (сигналу без работы излучателей). Критерием решения задачи будет среднеквадратичное отклонение принятого сигнала от фонового звука.
Внутри акустического полигона установлены два излучателя. Один будет излучать помеху, второй — сигнал шумоподавления. Позиции обоих излучателей зафиксированы на протяжении всего инженерного тура. В задаче используется только один микрофон, его положение также зафиксировано. По запросу команды оператор может открыть А-Полигон и показать конфигурацию поля.
Параметры помехи отличаются для каждой команды и меняются между сеансами работы. Излучатели и микрофоны используются те же самые, что и в А-ТЮК. Частота дискретизации сигнала отличается, она составляет 24 кГц.
Порядок работы
Взаимодействие с полигоном осуществляется исключительно оператором, без присутствия участников. Но по просьбе команды оператор может открыть крышку полигона и дать участникам рассмотреть установку (без использования фото и видеосъемки).
Порядок действий:
Команда делает заявку на задачу в очередной слот.
Пример заявки:
#заявка з7 к3- После заявки на задачу оператор инициализирует сеанс работы и производит три передачи сигнала без шумоподавления. Архив с принятыми сигналами передается команде для изучения.
- Далее команда может выполнить четыре тренировочные серии измерений. Каждая серия представляет собой архив с именем
data_#.zip, где#— номер серии от 1 до 4. Внутри архива находится до двадцати файлов-посылок в формате А-ТЮК, содержащих сигналы шумоподавления для тестирования. Оператор принимает архив, производит передачу серии сигналов и в следующий слот возвращает архив с результатами передачи и значениями метрики. - После тренировочных серий (или раньше) команда передает файл
final.txtв формате А-ТЮК с сигналом шумоподавления для зачетной серии измерений. Сигнал передается двадцать раз, и для расчета результата берется медианное значение метрики. Оператор сообщает команде балл за задачу и возвращает архив с результатом зачетной серии. - После зачетной попытки необходимо оставить новую заявку на задачу. Конфигурация помехи изменится.
Максимальный балл за задачу — 21.
Балл за задачу выставляется по результату автоматической проверки результатов зачетной серии измерений. В качестве метрики сравнения используется среднее квадратичное отклонение сигнала от тишины. За нижний порог берется 70% от метрики для сигнала без шумоподавления. Если полученный сигнал отличается от идеального (полная тишина без помехи) не более, чем на 15%, ставится полный балл. Балл за значение метрики между нижним и верхним порогом рассчитывается пропорционально.
В задаче использовалась следующая конфигурация помехи: несколько импульсов синусоидального сигнала с одинаковой частотой и амплитудой, но разной длительностью и расстоянием между импульсами. Фаза синусоидального сигнала общая для всего сигнала помехи. При этом начало и конец каждого импульса совпадали с половиной фазы (для отсутствия резких скачков уровня и вызываемых ими шумов).
На основе передачи сигнала без шумоподавления восстанавливается частота синусоидального сигнала помехи. Восстановление частоты можно осуществлять различными способами, в т. ч. с помощью обратного преобразования Фурье.
При наличии информации о физической конфигурации излучателя и микрофонов (см. ниже), геометрических параметров установки (она соответствует А-Полигону из задачи № 6 с точностью до 1 см) и параметров прохождения сигнала (систематическая задержка и скорость звука вычисляются в задаче № 6) можно получить начальную оценку смещения и фазы сигнала. Кроме того, за счет экспериментов на тренировочных комплектах можно восстановить характеристику затухания сигнала в зависимости от расстояния и получить более точную начальную оценку амплитуды. Смещения импульсов относительно друг друга вычисляются тривиально, достаточно определить смещение первого импульса.
Далее производятся четыре серии по двадцать измерений, в рамках которых аппроксимируются параметры сигнала шумоподавления. Каждое измерение сопровождается значением метрики, потому можно использовать серии для оптимизации значения параметров.
Одним из возможных подходов будет использовать серии измерений для оптимизации:
- Смещение сигнала (визуальный критерий — полное наложение сигнала шумоподавления и помехи, отсутствие левого «хвоста» из одиночного гармонического сигнала).
- Фаза (критерий — минимизация или максимизация СКО, второе означает попадание в резонанс и требует взятия противофазы).
- Амплитуда (критерий — минимизация СКО, а также сглаживание сигнала).
Четвертая серия используется для итогового уточнения параметров с малым шагом.
Фото конфигурации расположения излучателей приведено в разделе «Оборудование и программное обеспечение» и на рис. 4.5 «А-Полигон внутри».
Курсы от разработчиков профиля ТБС
- Курс «Технологии беспроводной связи» познакомит с базовыми понятиями беспроводной связи и поможет погрузиться в тематику профиля: https://onti.polyus-nt.ru/course/view.php?id=17.
- Курс «Тематические разборы задач профиля ТБС»: https://onti.polyus-nt.ru/course/view.php?id=3. В курсе собраны все задачи второго тура профиля за 2016/2017–2020/2021 гг. по темам.
- Видеоразборы задач сезона 2024–25 приведены в курсе «Разбор задач второго этапа профиля ТБС НТО 24/25»: https://onti.polyus-nt.ru/course/view.php?id=23.
Материал про помехи и шумы
- Статья «Связь и радионавигация. Причины ошибок»: https://cirspb.ru/blog/ustroystvo-sudov/prichiny-oshibok/.
Материалы про деконволюцию
- Статья «Что такое деконволюция?»: https://temchromatinlab.wordpress.com/2016/10/11/что-такое-деконволюция/.
- Статья «Восстановление расфокусированных и смазанных изображений»: https://habr.com/ru/articles/136853/.
- Давыдов А. В. «Цифровая обработка сигналов: Тематические лекции»: https://www.geokniga.org/books/9445.
Материал про сочетание оптического и акустического каналов
- Статья «Оптико-акустический канал»: https://bstudy.net/670914/informatika/optiko_akusticheskiy_kanal.
Материалы про кодирование данных
- Статья «Помехоустойчивое кодирование с использованием различных кодов»: https://habr.com/ru/articles/111336/.
- Статья «Коды Рида — Соломона. Часть 1 — теория простым языком»: https://habr.com/ru/companies/yadro/articles/336286/.
- Статья «Коды Рида — Соломона. Часть 2 — арифметика полей Галуа»: https://habr.com/ru/companies/yadro/articles/341506/.
- Видео «Коды Хэмминга — Григорий Кабатянский»: https://www.youtube.com/watch?v=DycYyYBwb9E.
Статьи про обработку данных
- Статья «Линейная аппроксимация» — при обработке экспериментальных данных часто возникает необходимость аппроксимировать их линейной функцией: https://prog-cpp.ru/mnk/.
- Статья «Аппроксимация функции»: https://libraryno.ru/3-3-approksimaciya-funkcii-matmodosipkina/.
- Статья «Методы сжатия данных»: https://habr.com/ru/articles/251295/.
- Статья «Обзор методов сжатия данных»: https://www.compression.ru/arctest/descript/methods.htm.
Материал про автокорреляционные функции
- Видео «Основы ЦОС: Корреляционная функция»: https://www.youtube.com/watch?v=SR2ettkhmio.
Курсы и статьи по языкам программирования
- «Программирование на Python» — достаточная база, особое внимание урокам 3.8 и 3.9: https://stepik.org/course/67/promo.
- «Программирование на Python для решения олимпиадных задач» — наиболее сбалансирован по глубине, особое внимание третьему модулю: https://stepik.org/course/66634/promo.
- «Python: основы и применение» — затрагивает некоторые глубокие особенности языка, но нет уроков по библиотекам обработки данных: https://stepik.org/course/512/promo.
- Курс «Программирование на языке С++ для решения олимпиадных задач»: https://stepik.org/course/66646/promo.
- Статья «Форматирование чисел и текста в Java»: https://study-java.ru/uroki-java/formatirovanie-chisel-i-texta-v-java/.





















