185282-11516937085b2ed4ea7e36b


По будням, я уже 17 лет занимаюсь разработкой корпоративного софта, у меня было много разных хобби, но в итоге нашёл то, что держит уже 5 лет и не собирается отпускать. С 2013 года большую часть свободного времени я посвящаю мотокроссу и эндуро на внедорожных мотоциклах, в том числе регулярно участвовал в любительских соревнованиях. После неудачного дропа в июне 2017 года я оказался в больнице с полным переломом правой плечевой кости. Вышел из больницы, пришёл в себя и стало ясно, что ездить не получится ещё месяца два — три, а привычка к активной деятельности осталась. Тогда и решил, что надо попробовать самому организовать гонку для своих друзей. С технической точки зрения меня интересовал хронометраж, о том как я делаю собственную систему и провожу гонки читайте под катом.


В течение месяца вечерами написал первую версию судейской программы. Для реализации использовал C# и WPF, просто потому что их я лучше знаю и не нужно тратить время на изучение документации. В программе можно было записать участников со стартовыми номерами, разбить на классы и заезды. Во время гонки нужно было успевать руками вбивать номер участника, который едет через финишную черту. Всё работало хорошо, а учитывая небольшое количество участников в первой гонке (около 40 человек) посчитать всех руками было несложно.


Однако, как программисту мне хотелось большей автоматизации, не люблю ручную рутинную работу, к тому же записать руками заезд с сотней участников уже довольно трудно. В итоге в 2017 году провел ещё один этап, где было уже 3 отдельных класса и более ста участников, мероприятие прошло достаточно успешно и было принято решение к следующему сезону использовать электронную засечку.


_racelog01


На рисунке современная версия программы с поддержкой RFID и дистанционного управления со смартфона. В первой версии было гораздо меньше элементов.


Выбор оборудования


Конечно эта тема не новая, есть много готовых вариантов, но большинство из них не очень устраивало по цене. Например, профессиональная система гоночного хронометража от итальянской фирмы AMB стоит примерно 13000€ и имеет в комплекте 20 прокатных транспондеров. Каждый дополнительный чип стоит 100€ и они одноразовые, то есть через 3-5 лет, когда в них умрет аккумулятор, его не заменить штатным способом. В остальном система отличная, используется на всех мировых гонках, имеет точность до тысячных долей секунды и так далее. Для хоббиста, который организует гонки для друзей в свободное время эта система не подходит. Также я нашел много готовых систем хронометража марафонов, триатлонов и других подобных соревнований. Системы использовали RFID метки. Но там смущала специфика — люди финишируют марафон в лучшем случае на скорости 20км/ч, а в мотокроссе принято давать финиш по самому большому трамплину, на который заходят на скорости 70-80км/ч. Зато цена RFID метки около 11 рублей за штуку позволяла раздавать их в любом количестве.


Используем RFID


Вообще, RFID технология изначально не предназначена для засечки гонок, если почитать спецификации чипов и ридеров, можно найти ограничения по скорости движения чипа относительно антенны в несколько метров в секунду. Но я знал, что подобная система уже много лет успешно применяется в известной гоночной серии xsr-moto.ru, в которой я сам много раз участвовал и имел на шлеме их RFID метки. Сергей Миндин — организатор той серии любезно поделился информацией и указал мне на сайт motosponder.com, где он приобрел свою засечку.




Это помогло определиться с выбором первого ридера — Alien Technology F800, потому что я точно знал, что он будет работать в нужных мне условиях. Кроме Alien я рассматривал Imping Speedway Revolution R420 и глядя на качество SDK и документации собирался купить его. Но в итоге остановился на F800 как заведомо проверенном решении.


Ридер обошёлся мне примерно в 1600$, покупал в Москве, сразу докупил две антенны и 5 метровые ВЧ кабели к ним. Неприятным сюрпризом оказалась цена ВЧ кабелей. 10 метровый кабель будет стоить дороже самой антенны, а ещё его легко сломать, например перегнуть или раздавить ногой.


Решение: покупать готовый комплект оборудования и софта от motosponder за 3500$ дорого и не спортивно. Надо купить только оборудование, которое обошлось примерно в 2200$, а софт написать самому. Чего там сложного может быть? :)


Глядя на цены выше возникает закономерный вопрос: а нельзя ли было сэкономить? Купить китайский ридер, цены на которые начинаются от 200$ Такие мысли были, но ещё была мысль, что у меня сильно ограничено время, и важна стабильность итоговой конструкции и простота разработки. До этого я не имел никакого практического опыта работы с RFID и не представлял с какими физическими ограничениями могу столкнуться. Поэтому мысль о китайских ридерах была отложена, но не позабыта.


Обзор вариантов RFID


RFID — это общее название целого семейства технологий различающихся по частоте и протоколу обмена данными.


  • LF RFID — килогерцовый диапазон, низкая дальность и скорость чтения.
  • HF 14 Мгц — обычно это “магнитные” пропуска в здание, домофонные ключи, бесконтактные платежные карты, NFC в телефонах. В общем, очень распространенная частота, но радиус связи до одного метра. Опять же не подходит для моего случая. Однако я знаю одну отлично работающую систему хронометража построенную на смартфонах и карточках от метро. Только для отметки гонщика он должен остановиться и судья должен приложить телефон к метке.
  • UHF ~840 — 930 MHz — диапазон, на котором построены все системы  хронометража массовых мероприятий. В оптимальных условиях метки читаются на расстоянии более 10 метров, скорости передачи данных достаточно, чтобы считывать метки по 50 и более раз в секунду, волны этих частот не настолько сильно поглощаются водой, как у следующего диапазона.
  • UHF 2.4 GHz — возможно я плохо искал, но я сделал вывод, что эта частота является изобретением китайцев, потому что такие ридеры я не нашел у брендовых производителей. В любом случае, я решил не использовать эту частоту, потому что она слишком хорошо глушится водой, грязью, туманом и другими помехами.

Чуть более подробно описание частот и стандартов можно почитать по следующей ссылке rfidcenter.ru/page/frequencies-ranges


UHF RFID


И так, я сделал вывод, что лучший вариант для моего применения — это диапазон UHF в зависимости от региональных ограничений это будут частоты примерно от 840 до 930 МГц и количество каналов от 2 до 30.


Мой F800 предназначен для европейского региона и настроен на работу в диапазоне 865-867 Мгц. Вместе с ридером я купил несколько разных меток, все они имели характеристики дальнобойных по описанию производителя, конкретная дальность и скорость чтения обычно нигде не пишется, т.к. сильно зависит от условий. Я провёл довольно много экспериментов чтения разных меток, в разном количестве и конфигурации антенн. Вот сжатые выводы:


  • На открытой местности если точно сориентировать метку на антенну, вполне реально получить стабильное чтение на расстоянии 10 метров.
  • Форма поля у антенны похожа на каплю, поэтому самое уверенное чтение получается на расстоянии 3-5 метров от антенны — в самой широкой части капли. Конечно форма диаграммы направленности зависит от модели антенны, я применял плоские панельные антенны с заявленным усилением 10dbi, 60/65° antenna31.ru/?product=rfid-panelnaya-antenna-pa868-10-rhcp
  • Антенны бывают круговой и линейной поляризации. При линейной поляризации дальность чтения значительно выше, но ориентация метки должна совпадать с ориентацией антенны.
  • Все “дальнобойные” метки работают примерно одинаково. Тут нужно уточнить, что я использовал метки одного бренда — Alien, возможно они все на одном чипе.
  • Включить максимальную мощность передачи далеко не всегда оптимальное решение. Дома в небольшой комнате из-за переотражений скорость чтения очень сильно падала. Тоже самое может случиться на открытом пространстве, если две антенны смотрят друг на друга, они будут работать как зеркала.
  • Вообще с RFID больше проблем случается от слишком большой мощности и дальности чтения, чем наоборот. Если «светить» в поле на максимальной мощности можно получить много случайных чтений с большой площади (десятки квадратных метров). Поэтому важно регулировать мощность и расположение антенн таким образом, чтобы чтение проводилось на наименьшей площади.
  • Скорость чтения меток зависит от их количества в поле зрения ридера. Капитанское заявление, но я изменил конкретные цифры для оптимальных условий:
    • Одна метка — 50-70/сек
    • 5 и более меток — 250-280/сек
    • Примерно 280 чтений в секунду — это предел для любого количества меток в поле, и конечно, если меток будет несколько десятков, скорость сильно упадёт из-за коллизий
  • Метка на реальном мотоцикле движущемся со скоростью более 80 км/ч читается, но не в любом положении, желательно, чтобы метка и антенна были ориентированы таким образом, чтобы смотреть немного друг на друга. Например антенна слегка направлена в сторону гонщика, а метка наклеена где-то на передней части мотоцикла. При меньших скоростях метка и антенна могут быть строго перпендикулярно трассе.

На данном этапе всё выглядело неплохо, 50 чтений в секунду, означали, что среднее время между чтениями 20 миллисекунд, но это тоже нужно было проверить. Программа для сбора статистики была дополнена расчетом разницы времени между чтениями, она выводила худшее, лучшее время и восемь долей измеренных в миллисекундах. Тут выяснилось, что читает ридер далеко не равномерно. Это объясняется протоколом, по нему ридер обязан прекращать вещание хотя бы на 10 миллисекунд каждые несколько секунд. Вот так выглядел тест для двух меток в поле:


_alien-rfid-tag-stat


  • 44 мс — худшее
  • 20 мс — десятый дециль
  • 1 мс — лучшее
  • 3.2 мс — среднее время
  • 104 чтения в секунду

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


Конфигурация линии финиша


Одно дело считывать метки с антенной на столе, а другое в реальном заезде с гонщиков. Я рассматривал два основных варианта конфигурации линии финиша.


Первый — антенны расположены на штативах по бокам от трассы. В идеальном варианте, антенны вообще стоят только с одной стороны и “светят” поперек трассы. Но при этом расположение меток на гонщиках становится несимметричным, нельзя, например запустить заезд в обратную сторону. К тому же чтение только с одной стороны не так надёжно. Тогда нужно ставить антенны с обеих сторон трассы, чтобы они “светили” друг на друга. Это уже требует сооружения рамки над трассой, по которой будут проложены ВЧ кабели и даже в такой конфигурации остаётся проблема ширины трассы. Бывает так, что трасса шириной 8-10 метров, а с учётом запаса на установку штативов может получиться и 12-13 метров. На таком расстоянии легко могут случаться сбои чтения.


Второй вариант, проверенный за много лет motosponder и xsr-moto — установка антенн на рамке над трассой и направление их вниз. Метки нужно клеить на шлемы гонщиков или верхнюю часть туловища. В итоге получается, что расстояние от антенны до метки всегда будет не больше 1.5 метра ( высота рамки 3 метра, но гонщик редко проходит финишную черту со шлемом на уровне земли). А большую ширину трассы можно немного урезать самой рамкой.


_rfid_frame


На данный момент я использую рамку шириной 6 метров с тремя антеннами, ее ширину можно увеличить дополнительной секцией до 8-9 метров. После этого потребуется уже 4 антенны, расположенные немного шире. По опыту двух гонок в 2018 году ширины в 6 метров вполне достаточно, если установить рамку на медленном участке трассы. Это же повышает вероятность чтения меток — убиваем сразу двух зайцев.


Засекаем время


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


Почти так, но сигналы от ридера нужно фильтровать, ведь когда метка находится в поле зрения ридера, она считывается до пятидесяти раз в секунду. Также нужно учесть, что в редких случаях метки всё таки не читаются, поэтому программа засечки должна уметь получать данные в реальном времени от ридера, от оператора, который вводит номера вручную и позволять редактировать отметки уже после окончания заезда.


Данные, которые даёт ридер и оператор проходят через фильтр для дедупликации и превращается в дорожку номеров. Это одномерный массив номеров гонщиков, в том порядке в каком они пересекали линию финиша. Например: [1, 2, 3, 2, 3, 1]. Из такой дорожки можно увидеть, что гонщики прошли два круга, на первом круге позиции гонщиков были 1, 2, 3. Но на втором круге у номера первого случилась проблема и он оказался в конце. В итоге победил номер два, за ним номер три и потом номер один. Для расчёта финишного протокола используется именно порядок, а не временные метки. Это сделано для совместимости с классическим ручным хронометражём, когда судьи записывают дорожку номеров в тетрадку. Хотя такой функции пока нет, но легко внедрить загрузку дорожки номеров от дополнительного судьи. В результате подсчёта получается следующая таблица:

_session_rating


Заключение


Эта статья описывает только небольшой кусочек опыта, который я получил за последние 1.5 года. Дальше хотелось бы рассказать о создании сайта для регистрации гонщиков и публикации результатов в режиме Live, разработке второй версии аппаратного комплекса засечки на базе китайского RFID модуля и Orange Pi, процессе подготовки трассы, организации массового мероприятия и о многом другом. Если тема интересна, оставляйте комментарии.


Проект открытый, значительная часть кода опубликована на github.com/maxbl4 остальное тоже скоро будет, надо только подчистить пароли и ключи API из кода :-) Если Вам интересно помочь развитию проекта, узнать что-то новое, например научиться гонять на мотоциклах, писать на .Net Core и Angular, обращайтесь. Стэк технологий на данный момент .Net 4.7, .Net Core 2.2, Docker, Angular 7.1, MySql 10.3


На данный момент в открытом доступе весь код для работы с двумя типами RFID ридеров, которые я использую: github.com/maxbl4/RfidDotNet
.Net Standard 2.0 библиотека, полная реализация протоколов, внешняя зависимость только на SerialPorlStream для работы с последовательным портом на Линуксе.


Посмотреть систему в действии, пообщаться и отлично провести время на спортивном мотофестивале можно 16 февраля поблизости от Сергиева Посада vk.com/event74123582 на этом мероприятии я обеспечиваю хронометраж

Комментарии (28)


  1. skymal4ik
    07.01.2019 16:31

    Спасибо!

    Скажите, а какова точность такой системы? Насколько далеко должны быть друг от друга гонщики, чтобы система уверенно определила кто из них лидер?

    Не будет ли такого, что мотоциклы идут ноздря в ноздрю, но выйграет тот, кто наклонился ниже и его шлем оказался ближе к переднему колесу?
    Не правильнее ли клеить метку на переднее крыло?

    Не в теме радиометок и мотоспорта, извиняюсь за ненаучные вопросы)


    1. maxbl4 Автор
      07.01.2019 16:50

      Вопросы вполне логичные, я их сам себе задавал в начале разработки :)
      Во первых, крайне редко случается так что лидеры едут ноздря в ноздрю. Всегда есть одна оптимальная траектория, по которой едет тот кто впереди. Чтобы обогнать, нужно выйти на альтернативную траекторию. Ворота засечки довольно узкие и через неё просто нет двух траекторий.
      Также, на случай любых споров ведётся видеозапись, плюс к этому на финишном створе стоит судья, который глазами видит кто в каком порядке приехал. Всё это важно для тройки лидеров. Если где-то в конце заезда поменяются местами 50й и 51й участники, это не так уж важно.
      На практике достаточно 50см для уверенного различения гонщиков.
      По расположению метки нужно учитывать, что гонки проходят по грунтовой трассе и дождь не является причиной для отмены заезда :) поэтому бывает и такое



      Нижняя сторона козырька шлема обычно самая чистая и сохраняется больше шансов на чтение.


      1. infrapro
        08.01.2019 18:11

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


        1. maxbl4 Автор
          08.01.2019 18:51
          +1

          Видимо имеются в виду дорожные велосипеды? Думаю там правда могут быть проблемы. Можно поискать на прокат профессиональную систему mylaps, она очень точная


          1. infrapro
            08.01.2019 19:11

            Да, имел ввиду групповые гонки на шоссейных велосипедах. В других дисциплинах, например триатлоне, таких проблем нет ввиду большей распределенности спортсменов по трассе


            1. maxbl4 Автор
              08.01.2019 19:31

              Думаю, что для велосипедов можно сделать систему компьютерного зрения. Например камера смотрит вниз на гонщиков, у них на шлемах номера. Гонка чистая, проходит в светлое время, так что должно хорошо читаться.


  1. slavius
    07.01.2019 18:56

    Метки должны быть на транспортных средствах — это точнее и не зависит от того, что кто-то просто прибежал. Ну и узкие рамки — запрет на фотофиниш 3 гонщикам.
    Фотофиксацию отменили?;) А разбор уже потом…


    1. maxbl4 Автор
      07.01.2019 19:18

      Кто читает эти статьи? :))
      Конечно ведётся видеозапись финишного створа и все споры могут быть разрешены.
      По расположению меток, не всё так просто. Я уже упоминал, что грязь и вода очень сильно ослабляют чтение, также на чтение радикально влияет близость металлических объектов. Поэтому расположить метку на мотоцикле так, чтобы она надёжно читалась и крепилась одинаково на всех мотоциклах пока не представляется возможным. А объяснять каждому из 150 участников, где именно на его мотоцикле лучше разместить метку займет слишком много времени


  1. loginov
    07.01.2019 19:46

    Отличный опыт, интересная статья, спасибо! Добавьте, пожалуйста, ссылки на репозитории в конец статьи.


    1. maxbl4 Автор
      07.01.2019 20:07

      Ссылка на мой гитхаб профиль есть в статье, пока открытый репозиторий с кодом системы только один https://github.com/maxbl4/RfidDotNet
      Это .net standard 2.0 библиотека для работы с двумя типами rfid ридеров, которые я использую. Полная реализация протоколов, внешняя зависимость только на SerialPortStream для работы с последовательным портом под линуксом.


  1. vconst
    07.01.2019 22:53

    Очень интересно!

    В порядке бреда. Можно ли сделать систему на основе GPS с локальным репером? Там вообще до сантиметров точность может быть. На каждый мот по небольшой платке с ардуино и писать трек. И можно дополнить датчиком ускорения, чтобы точно засекать момент старта. Хотя… Для эндуро это не актуально, но все-же?


    1. maxbl4 Автор
      07.01.2019 23:12

      С этим есть несколько проблем:
      1. Сложность в установке и дороговизна локального GPS маяка, который должен давать точные координаты.
      2. Одного маяка не хватит, ведь GPS работает в прямой видимости, а трасса эндуро идёт по лесу и бывает от 2-3 до нескольких десятков километров.
      3. Стоимость каждого устройства. RFID метки стоят 11-60 рублей за штуку, я их выдаю участникам и просто прошу не выкидывать, т.к. они пригодятся на следующем этапе.
      4. Дорогие метки нужно не только выдать, но и собрать после гонки. За метки нужно взять залог, а потом его вернуть. И повторить это для 100-200 участников. При этом, в сложных гонках, бывает так, что половина участников сошли с заезда и хотят расстроенные и уставшие просто уехать домой, а им нужно ждать, чтобы вернуть метки… А те кто остался хотят узнать результат, но его не будет, пока я не скачаю трек со всех меток…
      5. Момент старта не нужно засекать, старт даётся общий по команде судьи. Для защиты от фальстарта в мотокроссе есть стартовые машины. В длинных эндуро заездах фальстарт на 0.1 секунды обычно мало влияет на результат. А больший отрыв судья увидит глазами и назначит рестарт.

      Но идея с GPS не тупиковая. Есть программы для смартфонов, которые умеют записывать трек и по нему считать круги, это очень удобно для тренировки, когда гоняешься сам с собой и анализируешь как едешь трассу. В своём проекте, я хочу создать подобную программу, только попроще, которая будет записывать трек и передавать его на центральный сервер. Тогда, я могу выдать дешёвые телефоны с программой не всем, а нескольким известным успешным гонщикам и показывать их трек в реальном времени на сайте для интереса зрителей.


      1. vconst
        07.01.2019 23:35

        Если точность нужна только на старте и финише, то можно обойтись одним маком.
        Десятки устройств, это проблема…
        В эндуро старт не очень актуален, а кто гоняет на треке — для личного контроля важный параметр.
        Много дешёвых смартов будут иметь те же проблемы — выдать /забрать, а стоить дороже ардуино с парой датчиков.


        1. maxbl4 Автор
          07.01.2019 23:50

          Для личного пользования есть готовые, бесплатные программы для смартфонов. Они работают великолепно.
          Я не хочу выдавать много смартфонов, буквально 3-5 штук людям, которых я хорошо знаю лично, а не всем подряд. Эти люди будут передавать трек в реальном времени, его можно отображать на сайте для зрелищности.


          1. vconst
            08.01.2019 17:59

            Если немного — тогда можно смартами ограничиться. Но у недорогих смартов GPS очень фиговый, прям совсем совсем. Настоятельно рекомендую протестировать в разных условиях, прежде чем покупать партию.


  1. maxbl4 Автор
    07.01.2019 23:19

    Добавил в конец статьи ссылку на ближайшее мероприятие, которое я буду считать vk.com/event74123582


  1. kolxo3nick
    07.01.2019 23:35

    отличный востребованный продукт. спасибо за внятную статью!


    пара вопросов:


    1. какова вероятность срабатывания (или несрабатывания) метки? в сухих условиях, в условиях дождя и грязи?
    2. одинаково ли хорошо работают метки, наклеенные на поверхности разных материалов?
    3. при расчете итоговых результатов проводится ли проверка на полноту и непротиворечивость последовательности засечек? например, если одно или несколько пересечений финишного створа не были зафиксированы? или если гонщик застрял в поле действия антенн, и система зафиксировала лишние прохождения?
    4. как организован процесс привязки в системе гонщика к выданной ему метке? метки имеют какой-то явный идентификатор, или нужно сканировать каждую метку при выдаче?
    5. проводились ли сравнительные тесты rfid-меток разных конфигураций?


    1. maxbl4 Автор
      08.01.2019 00:12

      1. Это зависит от многих факторов. Лучше всего после выдачи метки проверить как она читается. Обычно, если с меткой всё хорошо, она будет читаться 50-70 раз в секунду в любой ориентации. Если метка битая или плохо установлена, чтения будут реже и будут сильно зависеть от ориентации метки относительно антенны.
        Вода сильно влияет на чтение, в сильный туман я не проверял лично, но слышал, что чтение становится гораздо хуже. Тоже самое когда очень много грязи. В таких случаях приходится подключать судей людей с карандашом и бумажкой, потому что возможны массовые пропуски чтения.
      2. Нет, никакие метки не могут работать на поверхности металла, карбонового волокна и других проводящих материалов. Чтобы метка начала работать, нужно отделить ее от металла на 3-5мм. Есть готовые метки в корпусах, которые обеспечивают это расстояние. Либо можно просто наклеить кусок пенки, а потом метку.
      3. Защита от лишних прохождений заложена во входном фильтре, система агрегирует все метки внутри интервала минимального круга. Например, я знаю, что лучшее время лидера на трассе одна минута, тогда я ставлю минимальный круг на 40 секунд и знаю, что никто не повторит чтение, даже если остановится под рамкой. Также судья, который всегда стоит у рамки будет прогонять стоящего участника и может записать его номер, чтобы потом исправить ошибку.
        Факт недостающего круга фиксируется либо визуально судьей (он на смартфоне в реальном времени видит считанные метки и может вручную вбить пропущенный номер), либо по жалобе участника и тогда разбираем видео.
      4. Rfid метки с завода чаще всего имеют уникальный номер epc id. Но я также покупал и чистые метки, все забитые нулями. В любом случае свои метки я кодирую последовательными номерами и пишу этот же номер на метке. Можно заказать печать меток, тогда перед продажей их закодируют нужными номерами и напечатают на каждой любой текст, но эта услуга как и оборудование довольно дорого стоит, потому пока я покупаю чистые метки и кодирую сам.
        Например motosponder продает метки с уникальным кодом, который напечатан на метке по 1$, я покупаю чистые метки по 0.22$
        Дальше во время выдачи метки участнику я просто сканирую её и уникальный номер попадает в поле ввода на форме регистрации.
      5. Проводил. На моих простых тестах на коленке я не заметил разницы. Общий принцип: чем больше размер метки, тем она лучше будет читаться. Я пробовал метки разных производителей и конструкций, но все они рекламировались как дальнобойные и имели размеры примерно 8х1.5см. измеримой разницы в качестве чтения я не заметил.

      Вы задаёте очень конкретные вопросы, есть опыт?


      1. kolxo3nick
        08.01.2019 01:31

        Благодарю за развернутые ответы! Опыт есть — я в течение нескольких лет обслуживал систему motosponder в составе судейской бригады xsr-moto.ru. Идея написания собственного софта под готовое оборудование впервые посетила нас на 2 или 3 год работы с американской системой — в период интенсивной её кастомизации под нужны нашего кантрикросса. Отрадно видеть, что хорошая идея нашла прямые руки;)


        1. Жаль, что и у вас не 100% результат. Когда мы только внедряли систему в наш процесс, "мечта" была включить ноутбук с программой и курить бамбук.
        2. Установка метки через прокладку — отличный workaround!
        3. При большом количестве участников и/или плохих погодных условиях даже визуальный контроль не всегда позволяет зафиксировать все прохождения. Пропущенные засечки в 80% случаев выявляются через поиск времени круга +- кратного среднему времени круга гонщика.
        4. Метки от motosponder имеют одно отличительное свойство — на них нанесен штрихкод, который можно считывать сканером штрихкодов. Это удобно во время регистрации. Я связывался со многими продавцами меток в России, никто не взялся изготавливать метки с таким принтом. Собственный rfid-принтер слишком дорог для объемов мотогонок — тут я с Вами согласен.


        1. maxbl4 Автор
          08.01.2019 08:14

          Для улучшения точности есть много идей, нужно время и силы. Например можно с помощью компьютерного зрения считать количество проезжающих участников и сравнивать сколько меток считалось. Если есть разница — отмечать это место и давать возможность судье посмотреть видео этого момента. Технически всё это несложно сделать, нужно только в эту сторону покопать.
          Да, среднее время круга я тоже использую и есть план сделать сигнализацию о пропущенных кругах на основе этих данных. Но я уже сталкивался с ситуацией, когда человек упал и лежал ровно время одного круга :)
          Чтобы удобно читать метки во время регистрации, я купил маленький настольный rfid ридер с usb. В феврале буду в первый раз пробовать с ним регистрацию, по идее должно быть гораздо удобнее, чем с большой антенной


        1. maxbl4 Автор
          08.01.2019 18:54

          Ещё можно рассмотреть battery assisted метки, это обычные пассивные метки, но с батарейкой. За счёт этого не тратится время на заряд конденсатора и запуск процессора метки, по идее они должны читаться более уверенно. Но я пока не покупал образцы.
          Ещё один вариант это active rfid, там метки сами постоянно передают сигнал, как транспондеры, но цена значительно выше и протокол другой, нужен другой ридер


  1. v0id
    08.01.2019 15:37

    Отсечка срабатывает за какое-то расстояние до ворот — т.е. не в момент пересечения створа? На лыжных соревнованиях закапывается петля — там не rfid метки, другая технология?


    1. maxbl4 Автор
      08.01.2019 19:26

      А как выглядят метки?
      Если это коробочки, где вероятно стоит батарейка, то у вас система с транспондерами. Петля это пассивная антенна, которая ловит сигнал транспондера и выдает чтение, когда транспондер между частей петли. Так работает mylaps.
      Для марафонов и других забегов есть антенны в виде плоских ковриков, они модульные можно любую ширину сделать, но их не закапывают и метки используют пассивные в виде наклеек, манишек или на ногу/шнурки браслетики всякие


      1. v0id
        09.01.2019 03:57

        Да, система с траспондерами российская alt-timing. Интересно, можно самому сделать аналог с траспондерами и сколько будет стоить?

        Можно дополнительно фиксировать момент проезда через створ с помощью датчика пересечения луча, ик — если не сработала метка, то брать время с луча.


        1. maxbl4 Автор
          09.01.2019 08:38

          Интересно узнать какое у них оборудование.
          Если rfid, то метки с батарейкой стоят от 15$ штука.
          Пересечение луча будет работать только для одного гонщика и оно позволит лишь зафиксировать факт, что метка не считалась. Ведь луч не выдаст номер гонщика :)


    1. maxbl4 Автор
      08.01.2019 19:28

      В моей системе я считаю первое считывание метки, это может произойти в 50-80см от створа ворот. Как я уже отмечал выше, на практике в мотогонках крайне редко бывают плотные финишны, так что нет проблемы различения двух гонщиков рядом


      1. kolxo3nick
        10.01.2019 11:04

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


        1. maxbl4 Автор
          10.01.2019 11:56

          В первой версии я брал, наоборот последнее срабатывание. Но из-за этого стало очень неудобно мониторить работу засечки. Получается, что обновление рейтинга случалось с задержкой в 2-3 секунды после проезда гонщика. После одной гонки в таком режиме, я перевернул логику, обновление рейтинга стало происходить моментально и удобно для отслеживания. В целом, я просто принял как факт, что точность засечки основанной на RFID не лучше одной секунды. Есть очень много причин, почему два человека внутри одной секунды могут поменяться местами при чтении меток.