17 February 2015

Система спортивного хронометража — взгляд изнутри

Popular science
Sandbox
Здравствуйте уважаемые читатели. Наверняка, многие из Вас занимались или занимаются спортом. Это отличное хобби и вообще, полезно для здоровья. Я большую часть детства провел на спортивных сборах по спортивному ориентированию. Увы, больших результатов в спорте я не достиг, но расставаться с ним (со спортом) очень не хотелось. И тогда я стал участвовать в организации спортивных соревнований. Сейчас это не работа, а скорее хобби. И сегодня я бы хотел рассказать Вам про мою роль в организации этих соревнований.

В этой статье я расскажу

  • О том, что такое спортивный хронометраж на примере лыжного марафона
  • Немного об используемом нами оборудовании
  • О программном обеспечении для судейства

Так же будет несколько больших фотографий и картинок из гущи событий.
Иногда я буду использовать термин «судейство». Для нас это привычное слово, которое обозначает «контроль хода спортивного состязания». Ничего общего с государственным органом правосудия оно не имеет.

Наша роль — хронометраж





Люди всегда любили соревноваться. Во все века они выясняют кто быстрее, кто сильнее и выносливее.
Для объективного выявления сильнейших всегда нужны три вещи:

  1. Правила или регламент по которому проводятся состязания
  2. Равные условия для всех участников
  3. Независимая и не предвзятая третья сторона — спортивный судья, который фиксирует результаты состязания

Центральное место в судействе многих циклических видов спорта занимает хронометраж, то есть определение времени прохождения дистанции каждым из участников.

Мы проводим спортивные соревнования по разным видам спорта: велогонки, мультиспорт, спортивное ориентирование и даже городские квесты, но всегда наиболее яркие впечатления остаются от организации лыжных гонок (здесь речь идет про беговые лыжи).

С каждым годом массовые лыжные гонки становятся популярнее и собирают все большее количество участников. Несколько тысяч человек из всех уголков России и иногда Европы приезжают на гонку, чтобы на дистанциях в 10, 25 и 50 километров выяснить, кто круче. В России каждый год проходит около 20 крупных лыжных марафонов.


Лыжный марафон «Праздник севера» в Мурманске.

Меня всегда удивляли и восхищали люди, которые летят 10 тысяч километров на самолете, чтобы поучаствовать в такой гонке. Они платят большие деньги за перелет, проживание и за саму гонку.

Именно поэтому качество соревнований и оказываемого сервиса обязано быть высоким, предварительные результаты гонки должны появиться максимально быстро, ошибок в них должно быть минимум. Результаты гонки — это итоговая часть мероприятия и второе (после самой гонки) за чем приезжают спортсмены.

Из всего вышесказанного делаем вывод: хронометраж — одна из важнейших частей спортивного мероприятия. Требуется высокая точность, дисциплина и скорость работы каждого участника команды хронометража.

Что в этом сложного?



Фотография Марии Шальневой с марафона в Дубне 14-02-2015

«Что сложного в том, чтобы замерить время спортсменов и распечатать на принтере итоговую таблицу результатов?» — спросит читатель. Все дело в том, что работа бригады хронометража проходит в достаточно стрессовой обстановке.

Вот несколько тому причин:

  • Все мероприятие очень сжато по времени. Есть всего несколько часов за которые надо успеть очень много дел: построить судейский городок, наладить оборудование, настроить сеть, подготовить базу участников для судейской программы.
  • Все действо происходит на улице, а в случае с лыжными марафонами к тому же на морозе. Вокруг очень громкая музыка и голос комментатора: иногда даже не слышны собственные мысли.
  • Нет позволения на ошибку, поскольку одна маленькая ошибка влечет за собой шквал более серьезных проблем. Если ошибка закралась в начало протокола результатов — медалями и дорогими призами от спонсоров могут наградить не тех участников.
  • В самый неподходящий момент срабатывает закон подлости: ломается роутер, не пингуются ридеры, не заводится/ломается генератор или бензопила или Windows выдает синий экран смерти
  • Идиотское поведение отдельно взятых участников, а иногда и организаторов. Люди считают возможным вмешиваться в работу бригады хронометража, отвлекать вопросами и настаивать на решении собственных проблем.
  • Количество участников гонки частенько зашкаливает за пару тысяч человек. Ошибка в подсчетах результатов повлечет за собой недовольство многих.

Оборудование которое мы используем



Включение антенн в RFID-ридер

Количество участников гонки в две-пять тысяч человек подразумевает обязательное использование электронных средств хронометража. Если мы будем использовать часы, карандаш и бумагу для подсчета результатов, то ждать их придется «как минимум вечность».

Задача звучит так: необходимо автоматически определять точное время прохождения каждого участника через определенную точку на дистанции и сохранять в базу данных пару «номер участника — время пересечения линии финиша».

Изначально мы рассматривали два вариант решения, один из которых тут же отпал из-за своего несовершенства и сложности реализации.

Первый вариант (от которого мы сразу отказались) — распознавание номеров участников на фото или видео, сделанном на точке пересечения, автоматической камерой или фотоаппаратом. Так поступает наша доблестная ГИБДД — снимают, распознают, рассылают письма со штрафами. Пример: лыжник проехал через линию финиша, пересек «лучик», который связан с фотоаппаратом. Фотография тут же автоматически распознается, время и номер с нее попадает в базу данных. Вы можете сами судить о сложности разработки и вероятных проблемах такой системы. при использовании ее на массовых мероприятиях.



Второй вариант (который мы используем) — использование RFID меток, вшитых в майки-номера участников. Принцип работы радиочастотной идентификации, я скопировал с Википедии:
На объект, который необходимо контролировать устанавливается радиочастотная метка. При попадании объекта с меткой в зону действия считывателя, считыватель принимает от метки содержащуюся в ней информацию об объекте и передаёт её в вычислительное устройство.

Схему работы вы можете понять по фотографии ниже:



Участник проезжает мимо антенн, пассивная (т.е. без собственного источника питания) RFID-метка в майке участника улавливает электромагнитные волны считывателя и отправляет ему ответный сигнал. Дальше — дело техники в прямом и переносном смысле. Необходимо выбрать ответ с максимальным уровнем сигнала (этим занимается ПО в ридере) и отправить пакет «время—номер» по сети на сервер.

Технология работает хорошо. Проблема «пропуска» участников связана в основном с «локтями, прижатыми к туловищу» (тело человека экранирует сигнал) и недостаточной мощности пассивных меток (использование активных меток очень дорого для массовых марафонов).

Первым делом мы устанавливаем антенны и ридеры на контрольных точках (обычно это одна промежуточная точка и финиш).


Схема (вид сверху) финишного городка лыжного марафона

Провода приходится закапывать в снег, ведь их могут зацепить лыжами. Чаще всего копать снег лед очень сложно, поэтому в бой вступает бензопила.



Дальше мы тянем провода: все ридеры, IP-камеру, служебные компьютеры, принтер необходимо собрать в одну сеть.



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


Фото с промежуточной отсечки

Программное обеспечение для хронометража и судейства


Основная задача бригады хронометража — по первому требования предоставлять главному судье соревнований актуальные и безошибочные протоколы результатов гонки. Простым языком, протокол результатов — это таблица участников гонки, разделенная на возрастные группы и отсортированная по времени прохождения дистанции. Звучит достаточно просто и кажется можно обойтись одним только Excel-ем для создания такой таблицы.

Некоторые организаторы-старожилы и правда используют Excel для судейства подобных стартов. У них есть шаблоны файлов под каждый тип гонки, отлаженная коллекция макросов, очень строгие и жесткие правила работы. На мой взгляд — это сложно, неудобно и очень ограничивает использование дополнительных плюшек (скажите, как например, разослать через Excel смски с результатами участникам, которые только что финишировали, сделать GPS трансляцию на большой монитор в центре соревнований и он-лайн трансляцию результатов в интернет?)

Мы решили пойти дальше и сделали программу. Точнее даже не программу а веб-приложение. OpenEventor (так мы его назвали) написан на языке PHP (здесь некоторые читатели должны нахмурить брови и слегка покачать головой). Довольно странный выбор для написания узко-специфичного ПО, которое к тому же должно работать с оборудованием, скажут скептики.



Выбор стека технологий для разработки мы выбрали осознанно и вот несколько причин:

  1. Возможностей, которые нам дает PHP, HTML5 и JS — вполне хватает для реализации задуманного.
  2. Не нужно каждый раз компилировать. Увы, но частенько мне приходится править код прямо во время гонки, так сказать на «броне горящего танка». В этот момент возможность дописать 2 строчки кода, и нажатием на F5 в браузере получить результат — очень хорошая возможность
  3. PHP — очень популярен, а это значит, что можно найти дешевого программиста для написания плагинов (об этом ниже).
  4. Не требуется устанавливать софт на каждый компьютер. В тот момент, главный судья соревнований или комментатор хочет «видеть у себя на макбуке как финишируют участники», достаточно включить его в сеть и открыть в браузере нужную страницу. А когда нужно оперативно посадить пятерых девочек на регистрацию новых участников — реализация OpenEventor-а в виде веб-приложения кажется мудрой.
  5. Наши ридеры работают по сети. IP камера, разумеется тоже. Поэтому работать с оборудование мы можем вполне комфортно и на PHP.
  6. Я к сожалению не знаю других языков программирования, так же хорошо как PHP. Возможно мы бы и сделали программу на Java или C#, если бы кто то из нашей команды знал Java или C#.

Для тех кто не осведомлен, что можно «работать в браузере без Интернета», делается это так:

  1. Компьютеры объединяются в одну сеть с помощью свича и витой пары или с помощью Wi-Fi роутера.
  2. На одном из компьютеров мы запускаем веб-сервер (мы используем OpenServer Максима Архипова ArhMax)
  3. Все, кому нужен доступ к программе — просто открывают браузер и вводят там адрес, типа 192.168.1.15 и попадают на главную страницу OpenEventor-а.

Для хранения данных сразу была выбрана база данных SQLite. Для тех кто никогда не использовал SQLite — очень рекомендую взять на вооружение (статья на Хабре). Это очень надежная и весьма быстрая БД. Специальный сервер для нее не нужен.

Для нас концепция SQLite оказалась идеальной: каждое мероприятие (марафон, гонка, или еще что) — это отдельная база данных. Каждая база данных SQLite — это отдельный файл *.db. Старые базы легко архивировать, чтобы не занимали место и не потерялись, а текущие — легко передавать, если есть такая необходимость. Работать с SQLite на PHP- очень просто и безопасно, она поддерживается интерфейсом PDO. Если вдруг приходится сделать что-то сверхсложное, что сделать силами OpenEventor не выходит, можно написать SQL запрос руками.


Сплит монитор (слева) и раздел «Плагины» (справа)

Как я упомянул выше, система расширяется с помощью плагинов.
Сделать универсальную систему для судейства спортивных соревнований — не реально.

Во-первых, у каждого организатора свои пожелания и требования, касательно того, как судить. И если в лыжах есть какие-никакие стандарты, то в таких видах спорта, как например мультигонки — можно придумать только сто тысяч способов по каким параметрам формировать финишный протокол.

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

Именно поэтому в программе реализован лишь основной функционал: базовая работа с участниками, группами, командами и сплитами, а все дополнительные фишки, мы и все желающие могут дописать самостоятельно.

Немного про устройство программы


В системе есть две ключевые сущности:

  • Участник — обладает такими параметрами как пол, год рождения, группа (класс в котором он соревнуется), фамилия, имя, номер (тот который крепится на грудь или на ногу), и еще несколькими.
  • Сплит —это факт и время пересечения определенной точки на дистанции определенным участником

Остальные (команды, группы, дистанции) — являются вторичными и долго рассказывать про них я не стану. На любом спортивном мероприятии, где спортсмены соревнуются индивидуально есть деление на команды (например: по городам или спортивным клубам) и группы (например: по возрасту и полу). Дистанция, в циклическом виде спорта (бег, лыжи, велогонки, ориентирование и т.д.) это правильная последовательность сплитов (см. выше), которую необходимо «собрать» участнику во время гонки.

Пример: Лыжник из возрастной группы М35 (мужчина 35 лет) преодолевает дистанцию в 50 км, которая состоит из 5 кругов. Он пять раз проезжает десятикилометровый круг, 4 раза проезжаю промежуточную отсечку и на пятый раз — финишную отсечку в другом месте трассы. Для лыжника — это просто 50 километров (хотя, это конечно очень не просто :). Для меня, как для хронометражиста — это дистанция lap, lap, lap, lap, finish.

Основная наша работа во время гонки — контролировать работу оборудования и очень быстро исправлять ошибки. Считыватели иногда пропускают участников. Обычно это 3 сплита из 100. Наша задача — определить, «кого не поймало», вычислить время сплита (например посмотреть сохраненное видео с ip камеры, которая 4 часа записывает видео). Иногда даже приходится пользоваться бумажным дублем.


В сплит-мониторе мы сразу видим «проблемных» участников

Решить проблему с пропусками — не сложно. Намного сложнее вовремя определить, что эта проблема есть. Именно для этого мы сделали сплит-монитор: это плагин, в котором отображается самая актуальная информация о сплитах. Плагин анализирует сплиты участника, сравнивания с заданной дистанцией выясняет есть ли проблема. В этот момент еще можно понять, что произошло: лыжник просто случайно закрыл локтями чипы (rfid-метки) и «не поймался» на прошлой промежуточном финише, сошел с дистанции после после второго круга и ошибся поворотом и вместо круга 25 км проехал всего 10. Дальше разобраться будет не реально: он соберет вещи и уедет домой, а потом всю неделю будет ворчать на форуме, что его дисквалифицировали ни за что…



Итогом мероприятия всегда является протокол результатов по которым проходит награждение победителей.


Фотография Марии Шальневой с марафона в Дубне 14-02-2015

Спасибо за внимание


Спасибо всем, кто дочитал до конца. Если статья показалась Вам интересной, я обязательно напишу еще несколько, например про специфику и софт для организации городских квестов, про использование технологий в спортивном ориентировании.
Tags:организация спортивных соревнованийоборудование для спорта
Hubs: Popular science
+20
19.1k 34
Comments 26